static public int set_gohomerange(IntPtr l) { try { TableConfig.Actor self = (TableConfig.Actor)checkSelf(l); System.Single v; checkType(l, 2, out v); self.gohomerange = v; pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
static public int set_x2007(IntPtr l) { try { TableConfig.Actor self = (TableConfig.Actor)checkSelf(l); System.Int32 v; checkType(l, 2, out v); self.x2007 = v; pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
public EntityInfo AddEntity(int unitId, int camp, TableConfig.Actor cfg, int ai, params string[] aiParams) { EntityInfo entity = NewEntityInfo(); entity.SceneContext = m_SceneContext; entity.LoadData(unitId, camp, cfg, ai, aiParams); // born entity.IsBorning = true; entity.BornTime = 0; entity.SetAIEnable(false); entity.SetStateFlag(Operate_Type.OT_AddBit, CharacterState_Type.CST_Invincible); m_Entities.AddLast(entity.GetId(), entity); return(entity); }
static public int WriteToBinary(IntPtr l) { try { TableConfig.Actor self = (TableConfig.Actor)checkSelf(l); GameFramework.BinaryTable a1; checkType(l, 2, out a1); self.WriteToBinary(a1); pushValue(l, true); return(1); } catch (Exception e) { return(error(l, e)); } }
public EntityInfo AddEntity(int id, int unitId, int camp, TableConfig.Actor cfg, string ai, params string[] aiParams) { if (m_Entities.Contains(id)) { LogSystem.Warn("duplicate entity {0} !!!", id); return(null); } EntityInfo entity = NewEntityInfo(id); entity.SceneContext = m_SceneContext; entity.LoadData(unitId, camp, cfg, ai, aiParams); entity.IsBorning = true; entity.BornTime = 0; entity.SetAIEnable(false); m_Entities.AddLast(entity.GetId(), entity); return(entity); }
internal EntityInfo CreateEntity(int objId, int unitId, float x, float y, float z, float dir, int camp, int linkId, int ai, params string[] aiParams) { TableConfig.Actor cfg = TableConfig.ActorProvider.Instance.GetActor(linkId); if (null != cfg) { EntityInfo entity = m_EntityManager.AddEntity(objId, unitId, camp, cfg, ai, aiParams); if (null != entity) { entity.GetMovementStateInfo().SetPosition(x, y, z); entity.GetMovementStateInfo().SetFaceDir(dir); EntityViewModelManager.Instance.CreateEntityView(entity.GetId()); OnCreateEntity(entity); return(entity); } } return(null); }
static public int ReadFromBinary(IntPtr l) { try { TableConfig.Actor self = (TableConfig.Actor)checkSelf(l); GameFramework.BinaryTable a1; checkType(l, 2, out a1); System.Int32 a2; checkType(l, 3, out a2); var ret = self.ReadFromBinary(a1, a2); pushValue(l, true); pushValue(l, ret); return(2); } catch (Exception e) { return(error(l, e)); } }
public int CreateEntity(int unitId, float x, float y, float z, float dir, int camp, int linkId, string ai, params string[] aiParams) { int objId = 0; TableConfig.Actor cfg = TableConfig.ActorProvider.Instance.GetActor(linkId); if (null != cfg) { EntityInfo entity = m_EntityMgr.AddEntity(unitId, camp, cfg, ai, aiParams); if (null != entity) { entity.GetMovementStateInfo().SetPosition(x, y, z); entity.GetMovementStateInfo().SetFaceDir(dir); objId = entity.GetId(); OnCreateEntity(entity); } } return(objId); }
public void EnterScene(User newUser) { Msg_LR_RoomUserInfo lobbyUserData = newUser.LobbyUserData; if (null == lobbyUserData) { return; } TableConfig.Actor cfg = TableConfig.ActorProvider.Instance.GetActor(lobbyUserData.Hero); EntityInfo info = m_EntityMgr.AddEntity(0, lobbyUserData.Camp, cfg, string.Empty); info.SetUnitId(EntityInfo.c_StartUserUnitId + info.GetId()); info.GetMovementStateInfo().FormationIndex = 0; if (null != m_SceneConfig) { info.GetMovementStateInfo().SetPosition2D(m_SceneConfig.EnterX + (Helper.Random.NextFloat() - 0.5f) * m_SceneConfig.EnterRadius, m_SceneConfig.EnterY + (Helper.Random.NextFloat() - 0.5f) * m_SceneConfig.EnterRadius); } newUser.Info = info; AttrCalculator.Calc(info); if (newUser.HaveHpArmor) { info.Hp = newUser.Hp; info.Energy = newUser.Energy; } else { info.Hp = newUser.Info.HpMax; info.Energy = newUser.Info.EnergyMax; } info.SceneContext = m_SceneContext; AddCareList(info); if (newUser.IsEntered) { var args = m_StorySystem.NewBoxedValueList(); args.Add(info.GetId()); args.Add(info.GetUnitId()); args.Add(info.GetCampId()); args.Add(info.GetMovementStateInfo().PositionX); args.Add(info.GetMovementStateInfo().PositionZ); m_StorySystem.SendMessage("user_enter_scene", args); } }
internal int CreateEntity(int unitId, float x, float y, float z, float dir, int camp, int linkId) { int objId = 0; TableConfig.Actor cfg = TableConfig.ActorProvider.Instance.GetActor(linkId); if (null != cfg) { EntityInfo entity = m_EntityManager.AddEntity(unitId, camp, cfg, 0); if (null != entity) { entity.GetMovementStateInfo().SetPosition(x, y, z); entity.GetMovementStateInfo().SetFaceDir(dir); EntityViewModelManager.Instance.CreateEntityView(entity.GetId()); objId = entity.GetId(); OnCreateEntity(entity); } } return(objId); }
private void LoadObjects() { LogSys.Log(LOG_TYPE.DEBUG, "Scene {0} start Running.", m_SceneResId); m_GameTime.Start(); m_SceneContext.StartTime = m_GameTime.StartTime; for (int campId = (int)CampIdEnum.Friendly; campId <= (int)CampIdEnum.Red; ++campId) { int key = this.SceneResId * 10 + campId; List <TableConfig.LevelMonster> monsters; if (TableConfig.LevelMonsterProvider.Instance.TryGetValue(key, out monsters)) { for (int i = 0; i < monsters.Count; ++i) { TableConfig.LevelMonster monster = monsters[i]; if (null != monster) { TableConfig.Actor actor = TableConfig.ActorProvider.Instance.GetActor(monster.actorID); if (null != actor) { int unitId = campId * 10000 + i; EntityInfo npc = EntityManager.AddEntity(unitId, campId, actor, (int)AiStateLogicId.Entity_General); if (null != npc) { npc.IsPassive = monster.passive; npc.LevelMonsterData = monster; npc.SetLevel(monster.level); npc.GetMovementStateInfo().SetPosition2D(monster.x, monster.y); npc.GetMovementStateInfo().SetFaceDir(Geometry.DegreeToRadian(monster.dir)); } } } } } } ServerStorySystem.ThreadInitMask(); m_StorySystem.ClearStoryInstancePool(); m_StorySystem.PreloadSceneStories(); m_StorySystem.StartStory("local_main"); m_StorySystem.StartStory("story_main"); }
private void AddSkillButton(int actorID, int objID, int skillId) { try { TableConfig.Actor actCfg = TableConfig.ActorProvider.Instance.GetActor(actorID); if (null != actCfg) { TableConfig.Skill skillCfg = TableConfig.SkillProvider.Instance.GetSkill(skillId); if (null == skillCfg) { skillCfg = TableConfig.SkillProvider.Instance.GetSkill(actCfg.skill4); } if (null != skillCfg) { SkillBar.SkillInfo skill = skillBar.AddSkill(objID, skillCfg.id, skillCfg.icon, 0); skill.SetMp(PluginFramework.Instance.GetNpcMp(objID)); } } } catch (System.Exception ex) { Debug.LogErrorFormat("exception:{0}\n{1}", ex.Message, ex.StackTrace); } }
internal void ReloadObjects() { if (m_PreparedReloadMonsterCount > 0) { for (int i = 0; i < m_PreparedReloadMonsterCount; ++i) { TableConfig.LevelMonster monster = m_PreparedReloadMonsters[i]; if (null != monster) { int campId = monster.camp; TableConfig.Actor actor = TableConfig.ActorProvider.Instance.GetActor(monster.actorID); if (null != actor) { int unitId = campId * 10000 + i; EntityInfo npc = EntityManager.AddEntity(unitId, campId, actor, (int)AiStateLogicId.Entity_General); if (null != npc) { npc.IsPassive = monster.passive; npc.LevelMonsterData = monster; npc.SetLevel(monster.level); npc.GetMovementStateInfo().SetPosition2D(monster.x, monster.y); npc.GetMovementStateInfo().SetFaceDir(monster.dir); Msg_RC_CreateNpc msg = DataSyncUtility.BuildCreateNpcMessage(npc); NotifyAllUser(RoomMessageDefine.Msg_RC_CreateNpc, msg); Msg_RC_SyncProperty msg2 = DataSyncUtility.BuildSyncPropertyMessage(npc); NotifyAllUser(RoomMessageDefine.Msg_RC_SyncProperty, msg2); } } } } m_PreparedReloadMonsterCount = 0; } while (m_ReloadMonstersQueue.Count > 0 && m_PreparedReloadMonsterCount < c_MaxReloadMonsterNum) { m_PreparedReloadMonsters[m_PreparedReloadMonsterCount++] = m_ReloadMonstersQueue.Dequeue(); } }
internal void EnterScene(User newUser) { Msg_LR_RoomUserInfo lobbyUserData = newUser.LobbyUserData; if (null == lobbyUserData) { return; } TableConfig.Actor cfg = TableConfig.ActorProvider.Instance.GetActor(lobbyUserData.Hero); EntityInfo info = m_EntityMgr.AddEntity(0, lobbyUserData.Camp, cfg, (int)AiStateLogicId.Entity_Leader); info.SetUnitId(EntityInfo.c_StartUserUnitId + info.GetId()); info.GetMovementStateInfo().FormationIndex = 0; if (null != m_SceneConfig) { info.GetMovementStateInfo().SetPosition2D(m_SceneConfig.EnterX + (Helper.Random.NextFloat() - 0.5f) * m_SceneConfig.EnterRadius, m_SceneConfig.EnterY + (Helper.Random.NextFloat() - 0.5f) * m_SceneConfig.EnterRadius); } newUser.Info = info; AttrCalculator.Calc(info); if (newUser.HaveHpArmor) { info.SetHp(Operate_Type.OT_Absolute, newUser.Hp); info.SetEnergy(Operate_Type.OT_Absolute, newUser.Energy); } else { info.SetHp(Operate_Type.OT_Absolute, newUser.Info.GetActualProperty().HpMax); info.SetEnergy(Operate_Type.OT_Absolute, newUser.Info.GetActualProperty().EnergyMax); } info.SceneContext = m_SceneContext; AddCareList(info); if (newUser.IsEntered) { m_StorySystem.SendMessage("user_enter_scene", info.GetId(), info.GetUnitId(), info.GetCampId(), info.GetMovementStateInfo().PositionX, info.GetMovementStateInfo().PositionZ); } }
public void LoadData(TableConfig.Actor cfg) { m_ConfigData = cfg; SetLinkId(cfg.id); SetModel(cfg.avatar); EntityType = cfg.type; m_Radius = cfg.size; float maxAttackRange = 0; if (cfg.skill0 > 0) { SkillInfo info = new SkillInfo(cfg.skill0); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) maxAttackRange = info.ConfigData.distance; m_NormalSkillId = cfg.skill0; m_AutoSkillIds.Add(cfg.skill0); } if (cfg.skill1 > 0) { SkillInfo info = new SkillInfo(cfg.skill1); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) maxAttackRange = info.ConfigData.distance; m_AutoSkillIds.Add(cfg.skill1); } if (cfg.skill2 > 0) { SkillInfo info = new SkillInfo(cfg.skill2); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) maxAttackRange = info.ConfigData.distance; m_AutoSkillIds.Add(cfg.skill2); } if (cfg.skill3 > 0) { SkillInfo info = new SkillInfo(cfg.skill3); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) maxAttackRange = info.ConfigData.distance; m_AutoSkillIds.Add(cfg.skill3); } if (cfg.skill4 > 0) { SkillInfo info = new SkillInfo(cfg.skill4); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) maxAttackRange = info.ConfigData.distance; m_ManualSkillId = cfg.skill4; //m_AutoSkillIds.Add(cfg.skill4); } if (cfg.skill5 > 0) { SkillInfo info = new SkillInfo(cfg.skill5); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill5); } if (cfg.skill6 > 0) { SkillInfo info = new SkillInfo(cfg.skill6); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill6); } if (cfg.skill7 > 0) { SkillInfo info = new SkillInfo(cfg.skill7); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill7); } if (cfg.skill8 > 0) { SkillInfo info = new SkillInfo(cfg.skill8); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill8); } if (cfg.bornskill > 0) { SkillInfo info = new SkillInfo(cfg.bornskill); GetSkillStateInfo().AddSkill(info); m_BornSkillId = cfg.bornskill; } if (cfg.deadskill > 0) { SkillInfo info = new SkillInfo(cfg.deadskill); GetSkillStateInfo().AddSkill(info); m_DeadSkillId = cfg.deadskill; } ViewRange = cfg.viewrange; GohomeRange = cfg.gohomerange; GetBaseProperty().SetRps(Operate_Type.OT_Absolute, 1); GetBaseProperty().SetAttackBase(Operate_Type.OT_Absolute, cfg.attack); GetBaseProperty().SetDefenceBase(Operate_Type.OT_Absolute, cfg.defence); GetBaseProperty().SetAttackRange(Operate_Type.OT_Absolute, maxAttackRange); GetBaseProperty().SetHpMax(Operate_Type.OT_Absolute, cfg.hp); GetBaseProperty().SetEnergyMax(Operate_Type.OT_Absolute, cfg.mp); GetBaseProperty().SetMoveSpeed(Operate_Type.OT_Absolute, cfg.speed); AttrCalculator.Calc(this); SetHp(Operate_Type.OT_Absolute, GetActualProperty().HpMax); SetEnergy(Operate_Type.OT_Absolute, GetActualProperty().EnergyMax); }
public void LoadData(TableConfig.Actor cfg) { m_ConfigData = cfg; SetLinkId(cfg.id); SetModel(cfg.avatar); EntityType = cfg.type; m_Radius = cfg.size; float maxAttackRange = 0; if (cfg.skill0 > 0) { SkillInfo info = new SkillInfo(cfg.skill0); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) { maxAttackRange = info.ConfigData.distance; } m_NormalSkillId = cfg.skill0; m_AutoSkillIds.Add(cfg.skill0); } if (cfg.skill1 > 0) { SkillInfo info = new SkillInfo(cfg.skill1); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) { maxAttackRange = info.ConfigData.distance; } m_AutoSkillIds.Add(cfg.skill1); } if (cfg.skill2 > 0) { SkillInfo info = new SkillInfo(cfg.skill2); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) { maxAttackRange = info.ConfigData.distance; } m_AutoSkillIds.Add(cfg.skill2); } if (cfg.skill3 > 0) { SkillInfo info = new SkillInfo(cfg.skill3); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) { maxAttackRange = info.ConfigData.distance; } m_AutoSkillIds.Add(cfg.skill3); } if (cfg.skill4 > 0) { SkillInfo info = new SkillInfo(cfg.skill4); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.distance) { maxAttackRange = info.ConfigData.distance; } m_ManualSkillId = cfg.skill4; //m_AutoSkillIds.Add(cfg.skill4); } if (cfg.skill5 > 0) { SkillInfo info = new SkillInfo(cfg.skill5); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill5); } if (cfg.skill6 > 0) { SkillInfo info = new SkillInfo(cfg.skill6); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill6); } if (cfg.skill7 > 0) { SkillInfo info = new SkillInfo(cfg.skill7); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill7); } if (cfg.skill8 > 0) { SkillInfo info = new SkillInfo(cfg.skill8); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill8); } if (cfg.bornskill > 0) { SkillInfo info = new SkillInfo(cfg.bornskill); GetSkillStateInfo().AddSkill(info); m_BornSkillId = cfg.bornskill; } if (cfg.deadskill > 0) { SkillInfo info = new SkillInfo(cfg.deadskill); GetSkillStateInfo().AddSkill(info); m_DeadSkillId = cfg.deadskill; } ViewRange = cfg.viewrange; GohomeRange = cfg.gohomerange; GetBaseProperty().SetRps(Operate_Type.OT_Absolute, 1); GetBaseProperty().SetAttackBase(Operate_Type.OT_Absolute, cfg.attack); GetBaseProperty().SetDefenceBase(Operate_Type.OT_Absolute, cfg.defence); GetBaseProperty().SetAttackRange(Operate_Type.OT_Absolute, maxAttackRange); GetBaseProperty().SetHpMax(Operate_Type.OT_Absolute, cfg.hp); GetBaseProperty().SetEnergyMax(Operate_Type.OT_Absolute, cfg.mp); GetBaseProperty().SetMoveSpeed(Operate_Type.OT_Absolute, cfg.speed); AttrCalculator.Calc(this); SetHp(Operate_Type.OT_Absolute, GetActualProperty().HpMax); SetEnergy(Operate_Type.OT_Absolute, GetActualProperty().EnergyMax); }
private void LoadEditedSkills(int targetId) { PlayerPrefs.SetInt("TargetId", targetId); PlayerPrefs.Save(); SaveEditedSkills(HomePath.GetAbsolutePath("../../../edit_skills_bak.txt")); CopyTableAndDslFiles(); PluginFramework.LoadTableConfig(); PredefinedSkill.Instance.ReBuild(); GfxSkillSystem.Instance.Reset(); GfxSkillSystem.Instance.ClearSkillInstancePool(); SkillSystem.SkillConfigManager.Instance.Clear(); GameObject actor = GameObject.Find("Editor_ActorRecord"); GameObject skills = GameObject.Find("Editor_SkillRecords"); if (null != actor && null != skills) { ActorRecord actorRecord = actor.GetComponent <ActorRecord>(); SkillRecords skillRecords = skills.GetComponent <SkillRecords>(); if (null != actorRecord && null != skillRecords) { List <int> args = new List <int>(); int actorId = actorRecord.id; if (actorRecord.skill0 > 0) { args.Add(actorRecord.skill0); } if (actorRecord.skill1 > 0) { args.Add(actorRecord.skill1); } if (actorRecord.skill2 > 0) { args.Add(actorRecord.skill2); } if (actorRecord.skill3 > 0) { args.Add(actorRecord.skill3); } if (actorRecord.skill4 > 0) { args.Add(actorRecord.skill4); } if (actorRecord.skill5 > 0) { args.Add(actorRecord.skill5); } if (actorRecord.skill6 > 0) { args.Add(actorRecord.skill6); } if (actorRecord.skill7 > 0) { args.Add(actorRecord.skill7); } if (actorRecord.skill8 > 0) { args.Add(actorRecord.skill8); } RebuildVisualSkillInfo(actorId); bool isValid = true; if (string.IsNullOrEmpty(actorRecord.avatar)) { Debug.LogErrorFormat("actor avatar is empty !!!"); isValid = false; } foreach (int skillId in args) { CheckEditedSkill(skillId, skillRecords.records, ref isValid); } if (isValid) { TableConfig.Actor actorInfo = TableConfig.ActorProvider.Instance.GetActor(actorId); if (null == actorInfo) { actorInfo = new TableConfig.Actor(); actorInfo.id = actorId; TableConfig.ActorProvider.Instance.ActorMgr.GetData().Add(actorId, actorInfo); } actorRecord.CopyTo(actorInfo); foreach (SkillRecords.SkillRecord record in skillRecords.records) { TableConfig.Skill skillInfo = TableConfig.SkillProvider.Instance.GetSkill(record.id); if (null == skillInfo) { skillInfo = new TableConfig.Skill(); skillInfo.id = record.id; TableConfig.SkillProvider.Instance.SkillMgr.GetData().Add(record.id, skillInfo); } record.CopyTo(skillInfo); } if (args.Count > 1) { GfxStorySystem.Instance.SendMessage("reload", actorId, targetId, BoxedValue.From(args)); } } } UnityEditor.EditorUtility.DisplayDialog("提示", "编辑英雄与技能加载完毕", "ok"); } }
private void LoadViewedSkills(object[] fargs) { if (null != fargs && fargs.Length == 2) { int actorId = (int)fargs[0]; int targetId = (int)fargs[1]; PlayerPrefs.SetInt("ActorId", actorId); PlayerPrefs.SetInt("TargetId", targetId); PlayerPrefs.Save(); if (UnityEditor.EditorUtility.DisplayDialog("关键信息", "从文件加载数据将同时覆盖正在编辑的数据,继续吗?(如果之前的数据没有保存到表格文件里,请利用剪贴板拷到表格文件!)", "我确定要继续", "不要继续,我还没保存呢")) { SaveEditedSkills(HomePath.GetAbsolutePath("../../../edit_skills_bak.txt")); CopyTableAndDslFiles(); m_CameraController.OnLevelWasLoaded(null); PluginFramework.LoadTableConfig(); PredefinedSkill.Instance.ReBuild(); GfxSkillSystem.Instance.Reset(); GfxSkillSystem.Instance.ClearSkillInstancePool(); SkillSystem.SkillConfigManager.Instance.Clear(); GameObject actor = GameObject.Find("Editor_ActorRecord"); GameObject skills = GameObject.Find("Editor_SkillRecords"); if (null != actor && null != skills) { ActorRecord actorRecord = actor.GetComponent <ActorRecord>(); SkillRecords skillRecords = skills.GetComponent <SkillRecords>(); if (null != actorRecord && null != skillRecords) { TableConfig.Actor actorInfo = TableConfig.ActorProvider.Instance.GetActor(actorId); if (null != actorInfo) { List <int> args = new List <int>(); if (actorInfo.skill0 > 0) { args.Add(actorInfo.skill0); } if (actorInfo.skill1 > 0) { args.Add(actorInfo.skill1); } if (actorInfo.skill2 > 0) { args.Add(actorInfo.skill2); } if (actorInfo.skill3 > 0) { args.Add(actorInfo.skill3); } if (actorInfo.skill4 > 0) { args.Add(actorInfo.skill4); } if (actorInfo.skill5 > 0) { args.Add(actorInfo.skill5); } if (actorInfo.skill6 > 0) { args.Add(actorInfo.skill6); } if (actorInfo.skill7 > 0) { args.Add(actorInfo.skill7); } if (actorInfo.skill8 > 0) { args.Add(actorInfo.skill8); } RebuildVisualSkillInfo(actorId); actorRecord.CopyFrom(actorInfo); skillRecords.records.Clear(); foreach (int skillId in args) { AddViewedSkill(skillId, skillRecords.records); } GfxStorySystem.Instance.SendMessage("reload", actorId, targetId, BoxedValue.From(args)); } } } UnityEditor.EditorUtility.DisplayDialog("提示", "从文件加载英雄与技能完毕", "ok"); } } }
private void LoadEditedSkills(int targetId) { PlayerPrefs.SetInt("TargetId", targetId); PlayerPrefs.Save(); SaveEditedSkills(HomePath.GetAbsolutePath("../../../edit_skills_bak.txt")); CopyTableAndDslFiles(); ClientModule.LoadTableConfig(); PredefinedSkill.Instance.ReBuild(); GfxSkillSystem.Instance.Reset(); GfxSkillSystem.Instance.ClearSkillInstancePool(); SkillSystem.SkillConfigManager.Instance.Clear(); GameObject actor = GameObject.Find("Editor_ActorRecord"); GameObject skills = GameObject.Find("Editor_SkillRecords"); if (null != actor && null != skills) { ActorRecord actorRecord = actor.GetComponent<ActorRecord>(); SkillRecords skillRecords = skills.GetComponent<SkillRecords>(); if (null != actorRecord && null != skillRecords) { List<int> args = new List<int>(); int actorId = actorRecord.id; if (actorRecord.skill0 > 0) args.Add(actorRecord.skill0); if (actorRecord.skill1 > 0) args.Add(actorRecord.skill1); if (actorRecord.skill2 > 0) args.Add(actorRecord.skill2); if (actorRecord.skill3 > 0) args.Add(actorRecord.skill3); if (actorRecord.skill4 > 0) args.Add(actorRecord.skill4); if (actorRecord.skill5 > 0) args.Add(actorRecord.skill5); if (actorRecord.skill6 > 0) args.Add(actorRecord.skill6); if (actorRecord.skill7 > 0) args.Add(actorRecord.skill7); if (actorRecord.skill8 > 0) args.Add(actorRecord.skill8); RebuildVisualSkillInfo(actorId); bool isValid = true; if (string.IsNullOrEmpty(actorRecord.avatar)) { Debug.LogErrorFormat("actor avatar is empty !!!"); isValid = false; } foreach (int skillId in args) { CheckEditedSkill(skillId, skillRecords.records, ref isValid); } if (isValid) { TableConfig.Actor actorInfo = TableConfig.ActorProvider.Instance.GetActor(actorId); if (null == actorInfo) { actorInfo = new TableConfig.Actor(); actorInfo.id = actorId; TableConfig.ActorProvider.Instance.ActorMgr.GetData().Add(actorId, actorInfo); } actorRecord.CopyTo(actorInfo); foreach (SkillRecords.SkillRecord record in skillRecords.records) { TableConfig.Skill skillInfo = TableConfig.SkillProvider.Instance.GetSkill(record.id); if (null == skillInfo) { skillInfo = new TableConfig.Skill(); skillInfo.id = record.id; TableConfig.SkillProvider.Instance.SkillMgr.GetData().Add(record.id, skillInfo); } record.CopyTo(skillInfo); } if (args.Count > 1) { GfxStorySystem.Instance.SendMessage("reload", actorId, targetId, args); } } } UnityEditor.EditorUtility.DisplayDialog("提示", "编辑英雄与技能加载完毕", "ok"); } }
public void LoadData(TableConfig.Actor cfg) { m_ConfigData = cfg; BaseProperty.ConfigData = cfg; BaseProperty.Owner = this; ActualProperty.ConfigData = cfg; ActualProperty.Owner = this; TableConfig.SkillEventProvider.Instance.skillEventTable.TryGetValue(cfg.id, out m_SkillEventConfigData); SetLinkId(cfg.id); SetModel(cfg.avatar); EntityType = cfg.type; m_Radius = cfg.size; m_ViewRange = cfg.viewrange; m_GohomeRange = cfg.gohomerange; float maxAttackRange = 0; if (cfg.skill0 > 0) { SkillInfo info = new SkillInfo(cfg.skill0); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill0); } if (cfg.skill1 > 0) { SkillInfo info = new SkillInfo(cfg.skill1); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill1); } if (cfg.skill2 > 0) { SkillInfo info = new SkillInfo(cfg.skill2); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill2); } if (cfg.skill3 > 0) { SkillInfo info = new SkillInfo(cfg.skill3); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_AutoSkillIds.Add(cfg.skill3); } if (cfg.skill4 > 0) { SkillInfo info = new SkillInfo(cfg.skill4); GetSkillStateInfo().AddSkill(info); if (maxAttackRange < info.ConfigData.skillData.distance) { maxAttackRange = info.ConfigData.skillData.distance; } m_ManualSkillId = cfg.skill4; } if (cfg.skill5 > 0) { SkillInfo info = new SkillInfo(cfg.skill5); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill5); } if (cfg.skill6 > 0) { SkillInfo info = new SkillInfo(cfg.skill6); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill6); } if (cfg.skill7 > 0) { SkillInfo info = new SkillInfo(cfg.skill7); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill7); } if (cfg.skill8 > 0) { SkillInfo info = new SkillInfo(cfg.skill8); GetSkillStateInfo().AddSkill(info); m_PassiveSkillIds.Add(cfg.skill8); } if (cfg.bornskill > 0) { SkillInfo info = new SkillInfo(cfg.bornskill); GetSkillStateInfo().AddSkill(info); m_BornSkillId = cfg.bornskill; } if (cfg.deadskill > 0) { SkillInfo info = new SkillInfo(cfg.deadskill); GetSkillStateInfo().AddSkill(info); m_DeadSkillId = cfg.deadskill; } foreach (var pair in TableConfig.AttrDefineProvider.Instance.AttrDefineMgr.GetData()) { TableConfig.AttrDefine def = pair.Value as TableConfig.AttrDefine; BaseProperty.SetInt((CharacterPropertyEnum)def.id, def.value); } InitProperty(CharacterPropertyEnum.x1001_基础物理攻击, cfg.x1001); InitProperty(CharacterPropertyEnum.x1002_物理攻击成长, cfg.x1002); InitProperty(CharacterPropertyEnum.x1006_基础法术攻击, cfg.x1006); InitProperty(CharacterPropertyEnum.x1007_法术攻击成长, cfg.x1007); InitProperty(CharacterPropertyEnum.x1011_基础物理防御, cfg.x1011); InitProperty(CharacterPropertyEnum.x1012_物理防御成长, cfg.x1012); InitProperty(CharacterPropertyEnum.x1016_基础法术防御, cfg.x1016); InitProperty(CharacterPropertyEnum.x1017_法术防御成长, cfg.x1017); InitProperty(CharacterPropertyEnum.x1021_暴击等级, cfg.x1021); InitProperty(CharacterPropertyEnum.x1022_抗暴击等级, cfg.x1022); InitProperty(CharacterPropertyEnum.x1024_命中等级, cfg.x1024); InitProperty(CharacterPropertyEnum.x1026_闪避等级, cfg.x1026); InitProperty(CharacterPropertyEnum.x1028_破击等级, cfg.x1028); InitProperty(CharacterPropertyEnum.x1030_格挡等级, cfg.x1030); InitProperty(CharacterPropertyEnum.x1032_格挡强度, cfg.x1032); InitProperty(CharacterPropertyEnum.x1033_暴击伤害, cfg.x1033); InitProperty(CharacterPropertyEnum.x1034_暴击伤害减免, cfg.x1034); InitProperty(CharacterPropertyEnum.x2001_基础生命, cfg.x2001); InitProperty(CharacterPropertyEnum.x2002_生命成长, cfg.x2002); InitProperty(CharacterPropertyEnum.x2007_基础速度, cfg.x2007); InitProperty(CharacterPropertyEnum.x2008_速度成长, cfg.x2008); InitProperty(CharacterPropertyEnum.x4001_职业, cfg.x4001); InitProperty(CharacterPropertyEnum.x4002_阵营, cfg.x4002); InitProperty(CharacterPropertyEnum.x4003_品质, cfg.x4003); InitProperty(CharacterPropertyEnum.x4004_性别, cfg.x4004); AttrCalculator.Calc(this); Hp = ActualProperty.GetInt(CharacterPropertyEnum.x2005_最大生命值); }
public void ReloadData(TableConfig.Actor cfg) { GetSkillStateInfo().Reset(); LoadData(cfg); }