📄 gamedata.java
字号:
package src;
import javax.microedition.lcdui.Image;
public abstract class GameData {
protected int missionID;
private static GameData instance = new GameDataSimple();
public static GameData getInstance(){
return instance;
}
/**
* 关卡ID
* @return 返回 missionID。
*/
public final int getMissionID() {
return missionID;
}
/**
* @param missionID 要设置的 missionID。
*/
public final void setMissionID(int missionID) {
if(this.getTotalMission() <= missionID || missionID <=0){
throw new IllegalArgumentException("Mission id error: " + missionID);
}
this.missionID = missionID;
this.loadCurrentMission();
}
public final void nextMission(){
if(missionID < this.getTotalMission()){
this.setMissionID(missionID+1);
}
}
/**
* 加载当前关卡的数据,本方法由抽象类隐式调用
*/
protected abstract void loadCurrentMission();
/**
* 获得运行游戏使用的分辨率
* @return 返回仅有两个元素的无符号整型数组,数组第一个元素是X轴分辨率,第二个元素是Y轴分辨率
*/
public abstract int[] getResolvingPower();
/**
* 获取游戏颜色数
* @return
*/
public abstract int getTotalColor();
/**
* 获取游戏类型
* @return
*/
public abstract int getGameType();
/**
* 获取关卡数总计
* @return
*/
public abstract int getTotalMission();
////下面的方法全部针对当前关卡操作
/**
* 获取当前关卡的字符串属性。
* 每个属性含意由具体实现定义
* @return
*/
public abstract String[] getMissionProperties();
/**
* 获取当前关卡地图的大小,以像素为单位,返回数组第一个元素为X轴大小,第二个元素为Y轴大小
* @return
*/
public abstract int[][][] getMapSize();
/**
* 获取可通行区域地图数组。第一维表示高度,第二维表示宽度,以贴图为单位
* 数组元素中true代表可通过,false代表不可通过
* @return
*/
public abstract boolean[][] getBarrierData();
/**
* 获取可通行区域地图数组中每个单元格的宽度,以像素为单位
* @return
*/
public abstract int getBarrierWidth();
/**
* 获取可通行区域地图数组中每个单元格的高度,以像素为单位
* @return
*/
public abstract int getBarrierHeight();
/**
* 获取地面贴图的索引数组。数组元素为贴图的图片索引值,以贴图为单位;
* 假设地面横向由m个贴图组成,纵向由n个贴图组成,则返回int[n][m]
* @return
*/
public abstract short[][] getTilesIndex();
/**
* 获取地面贴图的图片宽度,以像素为单位
* @return
*/
public abstract int getTileWidth();
/**
* 获取地面贴图的图片高度,以像素为单位
* @return
*/
public abstract int getTileHeight();
/**
* 获取地图上的精灵索引。
* <pre>
* 假设地图中有n个精灵,
* 则返回数组:int[n][6]
* 第n个精灵的数据:
* int[n][0] = 精灵的初始化X坐标
* int[n][1] = 精灵初始化Y坐标
* int[n][2] = 精灵的帧宽度
* int[n][3] = 精灵的帧高度
* int[n][4] = 精灵图片的索引值
* int[n][5] = 精灵类型(ITEM=0x01, NPC=0x02, Tree & Structure=0x03, Other=0xFF)
* <pre>
* @return 返回二维整型数组
*/
public abstract int[][][] getSpritesData();
/**
* 返回玩家角色的基本数据
* int[0] = 图片索引ID
* int[1] = 帧宽度
* int[2] = 帧高度
* int[3] = 检测盒左上角X坐标,相对于角色位置的相对坐标,以像素为单位
* int[4] = 检测盒左上角Y坐标,相对于角色位置的相对坐标,以像素为单位
* int[5] = 检测盒高度
* int[6] = 检测盒宽度
* @return int[7]
*/
public abstract int[] getPlayerInfo();
/**
* 获取玩家角色的附加数值属性。
* 这里的属性个数不定,但均按预先设定的顺序保存,即开发者可通过事先约定的索引值获取特定属性;
* 属性含意由具体业务逻辑解析,本类中不对属性内容解析处理
* @return
*/
public abstract int[] getPlayerNumProp();
/**
* 获取玩家角色的附加字符串属性。
* 这里的属性个数不定,但均按预先设定的顺序保存,即开发者可通过事先约定的索引值获取特定属性;
* 属性含意由具体业务逻辑解析,本类中不对属性内容解析处理
* @return
*/
public abstract String[] getPlayerStrProp();
/**
* 获取图片
* @param id
* @return
*/
public abstract Image findImage(int id);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -