📄 reader.java
字号:
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 + -