--加载需要的模块 local Entity = require "Battle/Logic/Entity/Entity" --战斗逻辑轮询管理器 local EntityFactory = {} local private = {} --仅查看使用 local ParamsList = { "BornItemID", "CharacterType", "IsPlayerSelf", "NeedSyncInfo", "Pos", "Forward", "AttrTable", "CampID", "PlayerID", "EntityID", "Name", "AttrID", "InitHP", "RenderEntity", "MonsterID", "MasterEntity", "HeroBreakNums", "IsActiveMagicWeapon", "IsTest", "CartQuality", "AdaptiveType", "AdaptiveParam", } local createParams = {} local LuaConst=LuaConst function EntityFactory.SetOneParam(key, value) createParams[key] = value end function EntityFactory.SetParams(...) local params = {...} for i = 1, #params, 2 do EntityFactory.SetOneParam(params[i], params[i+1]) end end function EntityFactory.SetPos_Dir(pos, dir) EntityFactory.SetOneParam("Pos", pos) EntityFactory.SetOneParam("Forward", dir) end function EntityFactory.SetAttrTable_ID(attrTable, attrID) EntityFactory.SetOneParam("AttrTable", attrTable) EntityFactory.SetOneParam("AttrID", attrID) end function EntityFactory.SetType_ID(type, id) EntityFactory.SetOneParam("CharacterType", type) EntityFactory.SetOneParam("MonsterID", id) end function EntityFactory.SetGroupMonsterModelPos_Dir(posAndDirList) EntityFactory.SetOneParam("GroupMonsterModelPosAndDir", posAndDirList) end function EntityFactory.SetSelf_Sync(isPlayerSelf, needSyncInfo) EntityFactory.SetOneParam("IsPlayerSelf", isPlayerSelf) EntityFactory.SetOneParam("NeedSyncInfo", needSyncInfo) end function EntityFactory.SetEffectBreak_Weapon(heroBreakNums, isActiveMagicWeapon,weaponBreak) EntityFactory.SetOneParam("HeroBreakNums", heroBreakNums) EntityFactory.SetOneParam("IsActiveMagicWeapon", isActiveMagicWeapon) EntityFactory.SetOneParam("WeaponBreak", weaponBreak) end function EntityFactory.SetPet_Info(petID, petStage, petName, petSkillId) EntityFactory.SetOneParam("PetID", petID) EntityFactory.SetOneParam("PetStage", petStage) EntityFactory.SetOneParam("PetName", petName) EntityFactory.SetOneParam("PetSkillId", petSkillId) end function EntityFactory.SetPet_TitleInfo(isLineUp, runeSkillLevelSum, aptitudeSum) EntityFactory.SetOneParam("PetIsLineUp", isLineUp) EntityFactory.SetOneParam("PetRuneSkillLevelSum", runeSkillLevelSum) EntityFactory.SetOneParam("PetAptitudeSum", aptitudeSum) end function EntityFactory.SetHorse_ID(horseID,horseAppearanceId) EntityFactory.SetOneParam("HorseID", horseID) EntityFactory.SetOneParam("HorseAppearanceID", horseAppearanceId) end function EntityFactory.SetLightEffect_ID(lightEffectIds) EntityFactory.SetOneParam("LightEffectIDs", lightEffectIds) end function EntityFactory.SetWeaponSoulInfo(weaponSoulInfo) EntityFactory.SetOneParam("WeaponSoulInfo", weaponSoulInfo) end function EntityFactory.SetHeroAppearance_ID(fashionID) if fashionID and fashionID > 0 then EntityFactory.SetOneParam("HeroAppearance", fashionID) end end function EntityFactory.SetWeaponAppearance_ID(magicWeaponID) if magicWeaponID and magicWeaponID > 0 then EntityFactory.SetOneParam("MagicWeaponID", magicWeaponID) end end function EntityFactory.SetDyeAppearanceList(dyeAppearances) if dyeAppearances then EntityFactory.SetOneParam("DyeList", dyeAppearances) end end function EntityFactory.SetCart_Quality(cartQuality) EntityFactory.SetOneParam("CartQuality", cartQuality) end function EntityFactory.SetTitle_ID(titleID) EntityFactory.SetOneParam("TitleID", titleID) end function EntityFactory.SetAcid(acid) EntityFactory.SetOneParam("Acid", acid) end function EntityFactory.DoCreateEntity() EntityFactory.SetSelf_Sync(false, false) createParams.Pos = createParams.Pos:cloneV2() createParams.Forward = createParams.Forward:cloneV2() local entity = private.NewEntity(createParams,createParams.EntityID) private.ResetParamData() return entity end function EntityFactory.DoCreatePlayerEntity() createParams.CharacterType = LuaConst.CharacterType.Hero createParams.Pos = createParams.Pos:cloneV2() createParams.Forward = createParams.Forward:cloneV2() --new createParams.IsPreload = true local entity = private.NewEntity(createParams, createParams.EntityID) private.ResetParamData() return entity end function EntityFactory.DoCreateIllusionEntity() createParams.Pos = createParams.Pos:cloneV2() createParams.Forward = createParams.Forward:cloneV2() --new createParams.IsPreload = true local entity = private.NewEntity(createParams, createParams.EntityID) private.ResetParamData() return entity end function EntityFactory.DoCreateSyncMoveEntity() createParams.CharacterType = LuaConst.CharacterType.Hero createParams.IsPlayerSelf = false createParams.NeedSyncInfo = false createParams.IsSyncMove = true createParams.Pos = createParams.Pos:cloneV2() createParams.Forward = createParams.Forward:cloneV2() local entity = private.NewEntity(createParams) private.ResetParamData() return entity end function EntityFactory.DoCreateAdjutantEntity(masterEntity) local masterInitData = masterEntity._logicInitData local comp_MasterMove = masterEntity.components.move createParams.AdjutantOriginID = createParams.MonsterID local originData = DataSheetManager.HeroData:GetDataByID(createParams.MonsterID) if originData and originData.FuJiangRelate > 0 then createParams.MonsterID = originData.FuJiangRelate end createParams.CharacterType = LuaConst.CharacterType.Adjutant createParams.IsPlayerSelf = false createParams.NeedSyncInfo = false createParams.Pos = comp_MasterMove.LogicPos:cloneV2() createParams.Forward = comp_MasterMove.LogicMoveDir:cloneV2() createParams.BornItemID = masterEntity._logicInitData.BornItemID createParams.CampID = masterInitData.EntityCampID createParams.MasterEntity = masterEntity createParams.IsPreload = true local adjutantEntity = private.NewEntity(createParams) masterEntity.components.adjutant:SetAdjutantEntity(adjutantEntity) -- 主仆绑定 -- ↓ Check副将技 -- if adjutantEntity then -- for i,v in ipairs(adjutantEntity.components.skillBase.CurSkillDataList) do -- if v.Type == LuaConst.SkillType.AdjutantMusou then -- if v.SkillCD > FP.Const.Zero then -- logging.error(LTAG.ERROR, "HYW : [策划注意!] 副将技 : " , v.ID , "的CD大于0了,这是不允许的。副将技的CD必须小于0 !") -- end -- end -- end -- end --↑ private.ResetParamData() end function private.NewEntity(paramData,entityID) local entity = Entity:new(paramData,entityID) CampManager.OnEntityCreated(entity) return entity end function private.ResetParamData() for k in pairs(createParams) do createParams[k] = nil end end return EntityFactory