📄 levelmanager.java
字号:
package pushbook.core;
import java.io.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
import org.xml.sax.helpers.*;
import java.util.Vector;
/**
* <p>Title: 推箱子</p>
* <p>Description: 关卡数据管理类</p>
* <p>Copyright: 无版权</p>
* <p>Company: 吉林省前郭尔罗斯蒙古族自治县第五高级中学</p>
* @author not attributable
* @version 1.0
*/
public class LevelManager extends DefaultHandler
{
//操作控制中心的对象
private ControlCenter controlCenter = null;
//保存地图的临时变量
private Vector mainMap = new Vector();
private Vector activeMap = new Vector();
public void endDocument () throws SAXException
{
int tempx=-1, tempy=-1;
String line = null;
String activeline = null;
String[] elementlist = null;
String[] activelist = null;
GameElement nge = null;
GameElement templet = null;
for(int i=0;i<mainMap.size();i++)
{
line = (String)mainMap.get(i);
activeline = (String)activeMap.get(i);
elementlist = line.split(",");
activelist = activeline.split(",");
if(tempx == -1 || tempy == -1)
{
controlCenter.mapWidth = elementlist.length * Invariable.unitSize;
controlCenter.mapHeight = mainMap.size() * Invariable.unitSize;
tempx = (Invariable.gameAreaWidth-controlCenter.mapWidth)/2 +
Invariable.gameAreaX;
tempy = (Invariable.gameAreaHeight-controlCenter.mapHeight)/2 +
Invariable.gameAreaY;
}
for(int j=0;j<elementlist.length;j++)
{
templet =
(GameElement)controlCenter.gameTemplet.get(elementlist[j]);
nge = new GameElement(tempx,tempy,templet.img);
nge.canMove = templet.canMove;
nge.active = templet.active;
nge.canOvercast = templet.canOvercast;
nge.isDestination = templet.isDestination;
nge.templetName = elementlist[j];
if(nge.img != null) controlCenter.haveImageElement++;
controlCenter.gameElements.add(0,nge);
if(templet.isDestination) controlCenter.destinationElements.add(nge);
templet =
(GameElement)controlCenter.gameTemplet.get(activelist[j]);
if(templet.canMove)
{
nge = new GameElement(tempx, tempy, templet.img);
nge.canMove = templet.canMove;
nge.active = templet.active;
nge.canOvercast = templet.canOvercast;
nge.templetName = activelist[j];
controlCenter.activeElement ++;
controlCenter.gameElements.add(nge);
}
tempx += Invariable.unitSize;
}
tempx = (Invariable.gameAreaWidth-controlCenter.mapWidth)/2 +
Invariable.gameAreaX;
tempy += Invariable.unitSize;
}
}
public void startElement(String namespaceURI, String localName,
String qName, Attributes attr)
throws SAXException
{
if("element".equals(qName))
{
boolean cm,co,act,isdes;
GameElement tge = new GameElement();
String img = attr.getValue("img");
String ID = attr.getValue("ID");
cm = "true".equals(attr.getValue("canMove"));
co = "true".equals(attr.getValue("canOvercast"));
act = "true".equals(attr.getValue("active"));
isdes = "true".equals(attr.getValue("isDestination"));
tge.canMove = cm;
tge.canOvercast = co;
tge.active = act;
tge.img = img;
tge.isDestination = isdes;
tge.templetName = ID;
controlCenter.gameTemplet.put(ID,tge);
}
else if("mainMap".equals(qName))
{
mainMap.add(attr.getValue("dataline"));
}
else if("activeMap".equals(qName))
{
activeMap.add(attr.getValue("dataline"));
}
else if("title".equals(qName))
{
Invariable.mainTitle = attr.getValue("value");
controlCenter.gameTitle = attr.getValue("value");
}
else if("music".equals(qName))
{
controlCenter.gameMusic = attr.getValue("value");
}
else if("unitSize".equals(qName))
{
String temp = attr.getValue("value");
Invariable.unitSize = Integer.parseInt(temp);
}
else if("celebrate".equals(qName))
{
controlCenter.gameCelebrate = attr.getValue("value");
}
}
public void loadLevelData(ControlCenter cc,String levelfile)
{
if(cc != null)
{
controlCenter = cc;
try
{
String resource =
getClass().getResource(levelfile).toString();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxparser = spf.newSAXParser();
saxparser.parse(resource, this);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -