local CharacterData = class("CharacterData") local LuaConst=LuaConst local FP=FP local LuaConst_CharacterType_Hero = LuaConst.CharacterType.Hero local LuaConst_CharacterType_Adjutant = LuaConst.CharacterType.Adjutant local LuaConst_CharacterType_Illusion = LuaConst.CharacterType.Illusion local LuaConst_CharacterType_Monster = LuaConst.CharacterType.Monster local LuaConst_CharacterType_NPC = LuaConst.CharacterType.NPC function CharacterData:initialize(characterID, characterType, adjutantOriginID, AdaptiveType, AdaptiveParam) --TODO 需要整理 --local characterData = {} if characterType == LuaConst_CharacterType_Hero or characterType == LuaConst_CharacterType_Adjutant or characterType == LuaConst_CharacterType_Illusion then-- hero local data = DataSheetManager.HeroData:GetDataByID(characterID) if data then for k in DataSheetManager.HeroData:GetPropertyEnumerator() do -- 一定要注意,这是浅拷贝,如果设置定点数的话一定要new一个新的,不要Reset self[k]=data[k] end else logging.error(LTAG.ERROR, "HYW : 找不到Hero数据,ID : ", characterID) end self.Camp = LuaConst.STANDALONE_PLAYER_CAMP; self.AwsOpenAI = true; self.ShowRange = 0; self.PatrolRange = 0; self.WeakLoopTime = 0; self.DeadNotHide = true; self.DeadBodyReserveTime = FP.newV1(-1) self.IsNotSlowAI = true --hero、副将AI都每帧刷新 self.DriveParamID = 0 if characterType == LuaConst_CharacterType_Adjutant then self.AIID = data.FuJiangAI self.CantBeAim = true -- 不能被锁定为目标 end if characterType == LuaConst_CharacterType_Illusion then self.DeadNotHide = false self.WarnRange = FP.newV1(2500) -- 分身的警戒范围50米 end local find if characterType == LuaConst_CharacterType_Adjutant then find,self.HeroNumData = DataSheetManager.HeroNum:TryGetDataByID(adjutantOriginID) else find,self.HeroNumData = DataSheetManager.HeroNum:TryGetDataByID(characterID) end --self.HeroNumData为nil是正常的,访问HeroNumData时也得判空! elseif characterType == LuaConst_CharacterType_Monster then -- monster local data = DataSheetManager.MonsterData:GetDataByID(characterID); if data then for k in DataSheetManager.MonsterData:GetPropertyEnumerator() do self[k]=data[k] end else logging.error(LTAG.ERROR, "HYW : 找不到Monster数据,ID :", characterID) end self.DefaultPriorityRide = 0; self.RebornSkill = -1; elseif characterType == LuaConst_CharacterType_NPC then --NPC local data = DataSheetManager.NpcData:GetDataByID(characterID) if data then for k in DataSheetManager.NpcData:GetPropertyEnumerator() do self[k]=data[k] end else logging.error(LTAG.ERROR, "HYW : 找不到NPC数据,ID :", characterID) end self.Camp = LuaConst.STANDALONE_NPC_CAMP self.AwsOpenAI = true; self.ShowRange = 0; self.PatrolRange = 0; self.WeakLoopTime = 0; self.DefaultPriorityRide = 0; self.DeadNotHide = true; self.DeadBodyReserveTime = FP.newV1(-1); self.AngleSpeedRide = FP.newV1(0) self.RebornSkill = -1 self.DriveParamID = 0 end if AdaptiveType then self.AdaptiveType = AdaptiveType end if AdaptiveParam then self.AdaptiveParam = AdaptiveParam end --return self end return CharacterData