⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reader.java

📁 liu7788414
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package staticdata;

/**
 * <p>Title: Reader.java</p>
 * <p>Description: read and convert xml file</p>
 * <p>Copyright: Gameloft 2004</p>
 * <p>Company: Gameloft Shanghai</p>
 * @author Yi Wen Hu
 * @version 1.0
 */

import javax.xml.parsers.*;
import org.w3c.dom.*;

import java.util.Vector;
import java.io.*;

public class Reader {
  public Element m_root;

  public Model[] m_models;
  public Ball[] m_balls;
  public Player[] m_players;
  //public Coin[] m_coins;
  public Bg[] m_bgs;
  public Bonus[] m_bonuses;
  public CoinLevel[] m_coinLevels;




//  public StoryStage[] m_storyStages;
  public StoryMode[] m_storyModes;

  public String m_stringFile;

  public static final String XML_ROOT = "StaticData";

  public static final String XML_SET_MODELS = "Models";
  public static final String XML_SET_BALLS = "Balls";
  public static final String XML_SET_PLAYERS = "Players";
  public static final String XML_SET_BGS = "Bgs";
  public static final String XML_SET_COINS = "Coins";
  public static final String XML_SET_BONUSES = "Bonuses";

  public static final String XML_ITEM_MODEL = "Model";
  public static final String XML_ITEM_BALL = "Ball";
  public static final String XML_ITEM_PLAYER = "Player";
  public static final String XML_ITEM_BG = "Bg";
  public static final String XML_ITEM_COIN = "Coin";
  public static final String XML_ITEM_BONUS = "Bonus";

  public static final String XML_MODEL_ID = "ID";
  public static final String XML_MODEL_NAME = "Name";
  public static final String XML_MODEL_FILE = "File";

  public static final String XML_BALL_ID = "ID";
  public static final String XML_BALL_NAME = "Name";
  public static final String XML_BALL_WEIGHT = "Weight";
  public static final String XML_BALL_TEXTURE = "TextureFile";

  public static final String XML_PLAYER_ID = "ID";
  public static final String XML_PLAYER_NAME = "Name";
  public static final String XML_PLAYER_POWER = "Power";
  public static final String XML_PLAYER_PRECISION = "Precision";
  public static final String XML_PLAYER_ROTATION = "Rotation";
  public static final String XML_PLAYER_MENTATION = "Mentation";
  public static final String XML_PLAYER_BALL = "Ball";
  public static final String XML_PLAYER_MODEL = "Model";
  public static final String XML_PLAYER_BALLTRACE = "BallTraceFile";

  public static final String XML_ACTIONTABLE = "Action";
  public static final String XML_ACTIONTABLE_START = "Start";
  public static final String XML_ACTIONTABLE_END = "End";
  public static final String XML_ACTIONTABLE_INTERVAL="Interval";
   public static final String XML_ACTIONTABLE_KEEP = "Keep";


  public static final String XML_BONUS_ID = "ID";
  public static final String XML_BONUS_STATE = "State";

  public static final String[] XML_BALL_WEIGHT_VALUE = {
      "LIGHT", "MEDIUM", "HEAVY"};
  public static final String[] XML_PLAYER_MENTATION_VALUE = {
      "YES", "NO"};
  public static final String[] XML_COIN_TYPE_VALUE = {
      "BALL", "BONUS", "REVERSE", "FREEZE"};

  /*
    public static final String[] XML_COIN_TYPE_VALUE = {
        "BONUS_BALL", "BONUS_GAME", "REVERSE_ROTATION",
        "HIDE_COIN", "HIDE_PINS", "UNIDENTIFIED"};
   */


//// story mode static ////
  public static final String XML_SET_STORYMODE = "StoryMode";
  public static final String XML_ITEM_STORYSTAGE = "Stage";
  public static final String XML_SSTAGE_ID = "id";
  public static final String XML_SSTAGE_COMPETITOR = "competitor";
  public static final String XML_SSTAGE_PLACE = "place";
  public static final String XML_WINWORD = "WinWord";
  public static final String XML_LOSEWORD = "LoseWord";
  public static final String XML_CONTENT = "content";


  public static final String[] XML_SSTAGE_TYPE_VALUE = {
      "INTRODUCTION", "PRE TALK", "LEVEL", "BONUS","BOSS LEVEL"};
//  public static final String[] XML_SSTAGE_PERSON_VALUE = {
//      "ROSSE", "KOMANN", "LEE", "ROCK", "NICO", "RAY"};
  public static final String[] XML_SSTAGE_PLACE_VALUE = {
      "RAGEFEVER", "BLUEHAZE", "HELLFIRE"};


  public static final String XML_STORYMODE_CHARACTER = "character";
  public static final String XML_ITEM_WORDS = "Words";
  public static final String XML_WORDS_PERSON = "person";
  public static final String XML_WORDS_STRING = "string";
  public static final String XML_ITEM_COINDELIVERY = "CoinDelivery";
  public static final String XML_COINDELIVERY_COINID = "coinId";
  public static final String XML_COINDELIVERY_POSX = "posX";
  public static final String XML_COINDELIVERY_POSY = "posY";

//  public String
  public static final String XML_STRINGFILE = "StringFile";
  public static final String XML_STRINGFILE_NAME = "name";

// coin deliverys info
  public static final String XML_COINDELIVERY="CoinDeliveryInfo";
  public static final String XML_COIN_LEVEL="Level";
  public static final String XML_COIN_LEVEL_ROUNDCOUNT="roundCount";
  public static final String XML_COIN_LEVEL_ROUND="Round";
  public static final String XML_COIN_COIN="Coin";
  public static final String XML_COIN_ID = "ID";
  public static final String XML_COIN_TYPE = "Type";
  public static final String XML_COIN_INFO = "Info";
  public static final String XML_COIN_POSITION = "Position";


// player cloth
  public static final String XML_PLAYER_CLOTH="Cloth";
  public static final String XML_PLAYER_CLOTH_FILENAME="FileName";
  //Qiu Li, add decoration flag, 2005/2/2
  public static final String XML_PLAYER_DECOR_FLAG="Decor";
  //Qiu Li end

  public Reader() {
  }

  public boolean open(String filename) {
    try {
      FileInputStream fin = new FileInputStream(filename);
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      Document document = builder.parse(fin);
      m_root = document.getDocumentElement();

//      System.out.println(m_root.toString());

      fin.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }

    return true;
  }

  public void save(String filename) {
    try {
      FileOutputStream fos = new FileOutputStream(filename);

      int count;
      byte[] data;

      // models
      Reader.WriteShort( (short) m_models.length, fos);
      for (int i = 0; i < m_models.length; i++)
        m_models[i].save(fos);

        // balls
      count = m_balls.length;
      Reader.WriteShort( (short) count, fos);
      for (int i = 0; i < count; i++)
        m_balls[i].save(fos);

        // players
      count = m_players.length;
      Reader.WriteShort( (short) count, fos);
      for (int i = 0; i < count; i++)
        m_players[i].save(fos);

        // bgs
      count = m_bgs.length;
      Reader.WriteShort( (short) count, fos);
      for (int i = 0; i < count; i++)
        m_bgs[i].save(fos);

        // bonuses
      count = m_bonuses.length;
      Reader.WriteShort( (short) count, fos);
      for (int i = 0; i < count; i++)
        m_bonuses[i].save(fos);


      // coin delivery info
      count = m_coinLevels.length;
      Reader.WriteShort( (short) count, fos);
      for (int i = 0; i < count; i++)
        m_coinLevels[i].save(fos);




      // story mode
      count = m_storyModes.length;
      Reader.WriteShort( (short) count, fos);
//      fos.write((byte)count);
      for (int i = 0; i < count; i++)
        m_storyModes[i].save(fos);

      int talkWords = 0;
      //Qiu Li, calculate strings length in byte including string count, 2005-1-31
      int resStringLength = 0;
      //Qiu Li end

      for (int i = 0; i < m_storyModes.length; i++)
        for (int j = 0; j < m_storyModes[i].m_storyStages.length; j++) {
          if (m_storyModes[i].m_storyStages[j].m_words != null)
          {
            talkWords += m_storyModes[i].m_storyStages[j].m_words.length;
            //Qiu Li, calculate strings length in byte including string count, 2005-1-31
            for(int k = 0; k < m_storyModes[i].m_storyStages[j].m_words.length; k++ )
              resStringLength += m_storyModes[i].m_storyStages[j].m_words[k].string.length()+1;
            //Qiu Li end
          }
        }

      //Qiu Li, calculate strings length in byte including string count, 2005-1-31
      for (int i = 0; i < resStringCount; i++)
         resStringLength += resStringValue[i].length()+1;
      //Qiu Li end

      // string
      WriteShort( (short) (resStringCount + talkWords), fos);
      //Qiu Li, calculate strings length in byte including string count, 2005-1-31
      WriteShort( (short) (resStringLength), fos);
      //Qiu Li end
      for (int i = 0; i < resStringCount; i++)
        WriteString(resStringValue[i], fos);

      for (int i = 0; i < m_storyModes.length; i++)
        for (int j = 0; j < m_storyModes[i].m_storyStages.length; j++) {
          if (m_storyModes[i].m_storyStages[j].m_words != null)
            for (int k = 0; k < m_storyModes[i].m_storyStages[j].m_words.length;
                 k++) {
              WriteString(m_storyModes[i].m_storyStages[j].m_words[k].string,
                          fos);
            }
        }

      fos.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void read() {
    Element m_staticData;
    Element m_setRoot;
    Element m_current;
    NodeList m_nodeList;
    int count;

    try {
//      m_staticData = (Element) m_root.getElementsByTagName(XML_ROOT).item(0);
      m_staticData = m_root;

      // models
      m_setRoot = (Element) m_staticData.getElementsByTagName(XML_SET_MODELS).
          item(0);
      m_nodeList = m_setRoot.getElementsByTagName(XML_ITEM_MODEL);
      count = m_nodeList.getLength();
      m_models = new Model[count];
      for (int i = 0; i < count; i++) {
        m_current = (Element) m_nodeList.item(i);
        m_models[i] = new Model(m_current);
      }

      // balls
      m_setRoot = (Element) m_staticData.getElementsByTagName(XML_SET_BALLS).
          item(0);
      m_nodeList = m_setRoot.getElementsByTagName(XML_ITEM_BALL);
      count = m_nodeList.getLength();
      m_balls = new Ball[count];
      for (int i = 0; i < count; i++) {
        m_current = (Element) m_nodeList.item(i);
        m_balls[i] = new Ball(m_current);
      }

      // players
      m_setRoot = (Element) m_staticData.getElementsByTagName(XML_SET_PLAYERS).
          item(0);
      m_nodeList = m_setRoot.getElementsByTagName(XML_ITEM_PLAYER);
      count = m_nodeList.getLength();
      m_players = new Player[count];
      for (int i = 0; i < count; i++) {
        m_current = (Element) m_nodeList.item(i);
        m_players[i] = new Player(m_current);
      }

      // bgs
      m_setRoot = (Element) m_staticData.getElementsByTagName(XML_SET_BGS).
          item(0);
      m_nodeList = m_setRoot.getElementsByTagName(XML_ITEM_BG);
      count = m_nodeList.getLength();
      m_bgs = new Bg[count];
      for (int i = 0; i < count; i++) {
        m_current = (Element) m_nodeList.item(i);
        m_bgs[i] = new Bg(m_current);
      }

      // coins
/*      m_setRoot = (Element) m_staticData.getElementsByTagName(XML_SET_COINS).
          item(0);
      m_nodeList = m_setRoot.getElementsByTagName(XML_ITEM_COIN);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -