package com.rpsg.rpg.object.game; import com.rpsg.rpg.object.item.BaseItem; import com.rpsg.rpg.object.map.MapSprite; import com.rpsg.rpg.util.Position; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.*; /** * GDX-RPG 游戏存档<br> * 所有初始化的内容,都是从js脚本里读取的,js脚本的位置在 assets/script/system/archive.js */ public class Archive implements Serializable{ private static final long serialVersionUID = 1L; /**地图*/ public String mapName = ""; /** * 地图里的精灵<br> * 这里用了些下三滥的方法<br> * 当游戏是读档的,本变量将会有数据,否则永远都是null的,当{@link #getMapSprites() 访问}这个变量一次后,该变量将重新变为null,直到下次存档时候再次写入<br> * 以此来判断当前档案是正在游玩中的,还是刚读档进来的(这样就可以根据判断选择当前精灵是从地图数据里载入,还是从存档里载入了) * * 总之别管了,要想访问地图里当前的精灵,请访问{@link com.rpsg.rpg.controller.MapController#mapSprites} * */ private List<MapSprite> mapSprites = null; /**背包内的所有物品*/ public List<BaseItem> items = new ArrayList<>(); /**当前游戏内所有英雄*/ public Party party = new Party(); /**自定义状态*/ Map<String, Boolean> flags = new HashMap<>(); /**当前所在地图的相对坐标(1相对坐标 = 48像素)*/ public Position position = new Position(); /**身上的金币*/ public long gold; /**添加一个状态*/ public void set(String id, boolean flag){ flags.put(id, flag); } /**maybe null*/ public Boolean get(String id){ return flags.get(id); } public List<MapSprite> getMapSprites() { List<MapSprite> list = mapSprites; mapSprites = null; return list; } public void setMapSprites(List<MapSprite> mapSprites) { this.mapSprites = mapSprites; } /**存档已进行时间(ms)**/ public long time; private static final SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); static{format.setTimeZone(TimeZone.getTimeZone("UTF-0"));} public String time(){ // return null; return format.format((Object)time); } }