/// <summary> /// 创建独有角色数据 /// </summary> /// <param name="characterId"></param> /// <returns></returns> private RoleData CreateUniqueRoleData(int characterId) { Character character = GetOrCreateCharacter(characterId); if (character == null) { return(null); } Class cls = GetOrCreateClass(character.info.classId); if (cls == null) { return(null); } RoleData self = new RoleData(); self.characterId = characterId; self.classId = character.info.classId; self.level = Mathf.Clamp(character.info.level, 0, SettingVars.maxLevel); self.exp = 0; self.fightProperties = FightProperties.Clamp( character.info.fightProperties + cls.info.fightProperties, cls.info.maxFightProperties); self.hp = self.fightProperties.hp; self.mp = self.fightProperties.mp; self.luk = Mathf.Clamp(character.info.luk, 0, SettingVars.maxLuk); //self.money = character.info.money; self.movePoint = cls.info.movePoint; self.holding = false; return(self); }
/// <summary> /// 获取或创建杂兵模板 /// </summary> /// <param name="classId"></param> /// <returns></returns> public RoleData GetOrCreateFollowingTemplate(int classId) { Class cls = GetOrCreateClass(classId); if (cls == null || cls.info == null) { return(null); } ClassInfo info = cls.info; RoleData data; if (!m_FollowingTemplates.TryGetValue(info.id, out data)) { data = new RoleData(); data.classId = info.id; data.level = 1; data.exp = 0; data.fightProperties = FightProperties.Clamp( cls.info.fightProperties, cls.info.maxFightProperties); data.hp = data.fightProperties.hp; data.mp = data.fightProperties.mp; data.luk = 0; //data.money = character.info.money; data.movePoint = cls.info.movePoint; data.holding = false; // TODO 计算公式,计算npc出生数据 m_FollowingTemplates.Add(data.classId, data); } return(data); }
public static FightProperties Clamp(FightProperties value, FightProperties max) { FightProperties fight = new FightProperties { hp = Mathf.Clamp(value.hp, 1, SettingVars.maxHp), mp = Mathf.Clamp(value.mp, 0, SettingVars.maxMp), str = Mathf.Clamp(value.str, 0, max.str), mag = Mathf.Clamp(value.mag, 0, max.mag), skl = Mathf.Clamp(value.skl, 0, max.skl), spd = Mathf.Clamp(value.spd, 0, max.spd), def = Mathf.Clamp(value.def, 0, max.def), mdf = Mathf.Clamp(value.mdf, 0, max.mdf) }; return(fight); }
public static FightProperties operator *(FightProperties lhs, int rhs) { FightProperties fight = new FightProperties { hp = lhs.hp * rhs, mp = lhs.mp * rhs, str = lhs.str * rhs, mag = lhs.mag * rhs, skl = lhs.skl * rhs, spd = lhs.spd * rhs, def = lhs.def * rhs, mdf = lhs.mdf * rhs, }; return(fight); }
public static FightProperties operator +(FightProperties lhs, int rhs) { FightProperties fight = new FightProperties { hp = lhs.hp + rhs, mp = lhs.mp + rhs, str = lhs.str + rhs, mag = lhs.mag + rhs, skl = lhs.skl + rhs, spd = lhs.spd + rhs, def = lhs.def + rhs, mdf = lhs.mdf + rhs, }; return(fight); }
public static FightProperties operator /(FightProperties lhs, int rhs) { if (rhs == 0) { return(lhs); } FightProperties fight = new FightProperties { hp = lhs.hp / rhs, mp = lhs.mp / rhs, str = lhs.str / rhs, mag = lhs.mag / rhs, skl = lhs.skl / rhs, spd = lhs.spd / rhs, def = lhs.def / rhs, mdf = lhs.mdf / rhs, }; return(fight); }