package com.rpsg.rpg.object.hero;
import java.io.Serializable;
import com.badlogic.gdx.utils.JsonValue;
import com.rpsg.rpg.core.File;
import com.rpsg.rpg.core.Game;
import com.rpsg.rpg.core.Path;
import com.rpsg.rpg.object.game.GrowableTarget;
import com.rpsg.rpg.object.game.Target;
import com.rpsg.rpg.object.game.Targetable;
import com.rpsg.rpg.object.item.Equipment;
import com.rpsg.rpg.object.map.MapSprite;
/**
* GDX-RPG Hero<br>
* Hero为游戏里的玩家角色,他从[assets/script/data/hero/]中读取相应的JSON信息
*/
public class Hero implements Targetable, Serializable{
private static final long serialVersionUID = 1L;
public int id;
/**Hero的数值数据*/
private GrowableTarget target;
/**hero在地图上的行走精灵*/
public MapSprite sprite;
/**hero名称*/
public String name;
/**hero日文名*/
public String jname;
/**hero的类型解释(如“人类”、“妖怪”)*/
public String tag;
/**hero的立绘文件夹路径*/
public String fg;
/**hero的颜色hex值(UI用)*/
public String color;
public Hero(int id) {
this(id, File.readJSON(Path.SCRIPT_DATA_HERO + id + ".grd"));
}
public Hero(int id, JsonValue json) {
this.id = id;
name = json.getString("name");
jname = json.getString("jname");
fg = json.getString("fg");
color = json.getString("color");
tag = json.getString("tag");
sprite = new MapSprite(0, 0, 0, 4, Path.WALK_HERO + json.getString("spriteImage"));
target = new GrowableTarget(json.get("prop"), json.get("grow"));
//初始化装备
for(JsonValue equip : json.get("equip"))
target.setEquipment(Equipment.Parts.valueOf(equip.name), equip.isNull() ? null : Game.item.get(equip.asInt(), Equipment.class));
}
public Target getTarget() {
return target;
}
public boolean equals(Object obj) {
return obj instanceof Hero && ((Hero)obj).id == id;
}
}