public void CastSkill(string CastInfo) { NpcAnimInfo info = JSON.Instance.ToObject <NpcAnimInfo>(CastInfo); ServerLifeNpc npc = monitor.CharactorPool.findActionNpc(info.ui); AsyncTask.QueueOnMainThread( () => { if (npc != null) { npc.SwitchAutoBattle(false); npc.CastSkill(info.index); } }); CastSkillInfo cInfo = new CastSkillInfo() { ClientID = DeviceInfo.GUID, index = info.index, cdTime = npc.runSkMd.getRuntimeSkill(info.index).skillCfg.BaseCD, }; processedMsg = new NetMQMessage(); processedMsg.Append(WarMsgConsts.CastSkRep); processedMsg.Append(JSON.Instance.ToJSON(cInfo)); }
public void ManualAuto(string autoInfo) { ManualOrAuto auto = JSON.Instance.ToObject <ManualOrAuto>(autoInfo); processedMsg = new NetMQMessage(); bool isAuto = false; bool ok = monitor.CharactorPool.SwitchManulOrAuto(auto, ref isAuto); if (ok) { processedMsg.Append(WarMsgConsts.ManualOrAutoRep); processedMsg.Append(isAuto ? "1" : "0"); //如果战斗开始了,切换AI if (WarServerManager.Instance.battleStart) { WarUIInfo ui = new WarUIInfo(); ui.camp = auto.camp; ui.ClientID = auto.ClientID; ui.uniqueId = auto.UniqueID; ServerLifeNpc npc = monitor.CharactorPool.findActionNpc(ui); //TODO : switch AI AsyncTask.QueueOnMainThread(() => { if (npc != null) { npc.SwitchAutoBattle(isAuto); } }); } } else { processedMsg.Append(WarMsgConsts.ManualOrAutoRepE); } }
void CreateOneSideHero(WarCamp wc, out List <ServerLifeNpc> NpcContainer, List <CrtHero> heroList) { NpcContainer = new List <ServerLifeNpc>(); List <RoomCharactor> OneSide = Charactors.get(wc); int count = OneSide.Count; for (int j = 0; j < count; ++j) { WrapperTeam wrapperTeam = (WrapperTeam)OneSide[j].team; List <NPCData> dataTeam = wrapperTeam.dataTeam; int cnt = dataTeam.Count; #if SINGLE_HERO cnt = 1; #endif if (dataTeam != null && cnt > 0) { //一方出生点 CAMP camp = WarCamp2Camp.toCamp(wc); List <ServerNPC> npcList = WarSMgr.npcMgr.GetNPCListByNum(NpcMgr <ServerNPC> .BORN_POINT, camp); for (int i = 0; i < cnt; i++) { ServerNPC npc = virNpcLoader.Load(dataTeam[i].configData.ID, camp, WarPoint); //设置出生点 npc.transform.position = npcList[i].transform.position; npc.spawnPos = npc.transform.position; npc.spawnRot = npc.transform.rotation; ServerLifeNpc hero = npc as ServerLifeNpc; NpcContainer.Add(hero); wrapperTeam.AddNpcMember(hero, i); BehaviorTree tree = hero.gameObject.AddComponent <BehaviorTree>(); tree.ExternalBehavior = AiLoader.load(AILoader.PATHFIND_ATK); tree.StartWhenEnabled = true; tree.RestartWhenComplete = true; hero.SwitchAutoBattle(true); hero.SwitchAutoBattle(false); CrtHero crt = new CrtHero(); crt.camp = (int)npc.Camp; crt.npcID = npc.data.configData.ID; crt.uniqueId = npc.UniqueID; crt.pos = VectorWrap.ToVector(npc.transform.position); crt.rotation = VectorWrap.ToVector(npc.transform.eulerAngles); crt.ClientID = OneSide[j].UID; crt.index = i; heroList.Add(crt); } } } }