/// <summary> /// 判定某个UniqueID是否处于激活状态 /// </summary> /// <returns><c>true</c>, if under active status was ised, <c>false</c> otherwise.</returns> /// <param name="camp">Camp.</param> /// <param name="UniqueID">Unique I.</param> public ServerLifeNpc findActionNpc(WarUIInfo switchInfo) { ServerLifeNpc activeOne = null; if (switchInfo != null) { WarCamp camp = switchInfo.camp; string UID = switchInfo.ClientID; int UniqueID = switchInfo.uniqueId; List <RoomCharactor> CharactorList = null; bool found = allCharactors.TryGetValue(camp, out CharactorList); if (found) { RoomCharactor existC = CharactorList.Find(c => c.UID == UID); if (existC != null) { WrapperTeam wrapperTeam = (WrapperTeam)existC.team; if (wrapperTeam.activeNpc.UniqueID == UniqueID) { activeOne = wrapperTeam.activeNpc; } } } } return(activeOne); }
public List <RoomCharactor> get(WarCamp camp) { List <RoomCharactor> chalist = null; bool exist = allCharactors.TryGetValue(camp, out chalist); return(exist ? chalist : null); }
//退出房间 public void QuitRoom(RoomCharactor charactor) { if (charactor != null) { string UID = charactor.UID; WarCamp camp = charactor.camp; List <RoomCharactor> CharactorList = null; bool found = allCharactors.TryGetValue(camp, out CharactorList); if (found) { RoomCharactor existC = CharactorList.Find(c => c.UID == UID); if (existC != null) { CharactorList.RemoveAt(existC.pos); //resize pos int cnt = CharactorList.Count; for (int i = 0; i < cnt; ++i) { CharactorList[i].pos = i; } } } } }
//加入房间 public void JoinRoom(RoomCharactor charactor) { if (charactor != null) { string UID = charactor.UID; WarCamp camp = charactor.camp; List <RoomCharactor> CharactorList = null; bool found = allCharactors.TryGetValue(camp, out CharactorList); if (found) { RoomCharactor existC = CharactorList.Find(c => c.UID == UID); if (existC == null) { int cnt = CharactorList.Count; charactor.pos = cnt; CharactorList.Add(charactor); } } else { //没有其他的玩家,so一定是0 charactor.pos = 0; CharactorList = new List <RoomCharactor>(); CharactorList.Add(charactor); allCharactors[camp] = CharactorList; } } }
/// <summary> /// 切换激活状态的英雄 /// </summary> /// <param name="index">Index.</param> /// <param name="SwitchOK">Switch O.</param> public bool SwitchActive(int index) { bool validate = false; bool found = team.ContainsKey(index); if (found) { int wishtoID = team[index].UniqueID; CAMP cp = team[index].Camp; bool same = wishtoID == activeNpc.UniqueID; validate = same ? false : true; if (validate) { WarCamp wcamp = WarCamp2Camp.toWarCamp(cp); SwitchInfo si = new SwitchInfo() { UniqueID = wishtoID, ClientID = DeviceInfo.GUID, camp = wcamp, }; string plaintext = JSON.Instance.ToJSON(si); realClient.proxyServer.Switch(plaintext); } } return(validate); }
public Team getTeam(WarCamp camp) { Team team = new Team() { team = new List <RoomNpc>(), }; RoomNpc npc = null; if (camp == WarCamp.FirstCamp) { npc = new RoomNpc() { NpcNum = 1004, NpcStar = 1, }; team.team.Add(npc); npc = new RoomNpc() { NpcNum = 1002, NpcStar = 1, }; team.team.Add(npc); npc = new RoomNpc() { NpcNum = 1003, NpcStar = 1, }; team.team.Add(npc); } else if (camp == WarCamp.SecondCamp) { npc = new RoomNpc() { NpcNum = 1001, NpcStar = 1, }; team.team.Add(npc); npc = new RoomNpc() { NpcNum = 1002, NpcStar = 1, }; team.team.Add(npc); npc = new RoomNpc() { NpcNum = 1003, NpcStar = 1, }; team.team.Add(npc); } return(team); }
public RoomCharactor getCharactor(WarCamp camp) { Team clientTeam = getTeam(camp); RoomCharactor charactor = new RoomCharactor() { Name = "Allen", UID = DeviceInfo.GUID, Lv = 3, camp = camp, team = clientTeam, }; return(charactor); }
/// <summary> /// 切换自动和手动 /// </summary> /// <returns><c>true</c>, if auto or manual was switched, <c>false</c> otherwise.</returns> public void SwitchAutoOrManual(bool bAuto) { if (activeNpc != null) { CAMP cp = activeNpc.Camp; WarCamp wcamp = WarCamp2Camp.toWarCamp(cp); ManualOrAuto ma = new ManualOrAuto() { UniqueID = activeNpc.UniqueID, ClientID = DeviceInfo.GUID, camp = wcamp, }; ma.auto = (short)(bAuto == true ? 1 : 0); string plaintext = JSON.Instance.ToJSON(ma); realClient.proxyServer.ManualAuto(plaintext); } }
public static WarCamp toWarCamp(CAMP cp) { WarCamp wcamp = WarCamp.FirstCamp; switch (cp) { case CAMP.Player: wcamp = WarCamp.FirstCamp; break; case CAMP.Enemy: wcamp = WarCamp.SecondCamp; break; case CAMP.None: wcamp = WarCamp.ThirdCamp; break; } return(wcamp); }
//NPC是否控制的主英雄 public bool IsHeroActive(ServerLifeNpc npc) { WarCamp warCamp = WarCamp2Camp.toWarCamp(npc.Camp); List <RoomCharactor> chaList = get(warCamp); if (chaList != null) { int len = chaList.Count; for (int i = 0; i < len; i++) { WrapperTeam team = chaList[i].team as WrapperTeam; if (team.activeNpc.UniqueID == npc.UniqueID) { return(true); } } } return(false); }
public static CAMP toCamp(WarCamp wc) { CAMP camp = CAMP.Player; switch (wc) { case WarCamp.FirstCamp: camp = CAMP.Player; break; case WarCamp.SecondCamp: camp = CAMP.Enemy; break; case WarCamp.ThirdCamp: camp = CAMP.None; break; } return(camp); }
//创建敌我双方的队伍 public void CreateHero() { List <ServerLifeNpc> FirstSide = null, SecondSide = null; List <CrtHero> heroList = new List <CrtHero>(); WarCamp wc = WarCamp.FirstCamp; CreateOneSideHero(wc, out FirstSide, heroList); Charactors.SetHeroList(wc, FirstSide); wc = WarCamp.SecondCamp; CreateOneSideHero(wc, out SecondSide, heroList); Charactors.SetHeroList(wc, SecondSide); //send create hero msg IpcCreateHeroMsg msg = new IpcCreateHeroMsg(); msg.npclist = heroList.ToArray(); msg.op = OP.CtorHero; WarSMgr.realServer.proxyCli.CtorHero(msg); }
void makeUpData(WarCamp camp) { if (camp == WarCamp.FirstCamp || camp == WarCamp.SecondCamp) { List <RoomCharactor> chalist = null; bool exist = allCharactors.TryGetValue(camp, out chalist); if (exist) { foreach (RoomCharactor charactor in chalist) { if (charactor.team is WrapperTeam) { continue; } WrapperTeam wTeam = new WrapperTeam() { dataTeam = new List <NPCData>(), }; foreach (RoomNpc npc in charactor.team.team) { NPCConfigData config = Model.get(npc.NpcNum); NPCData data = new NPCData() { configData = config, rtData = new NPCRuntimeData(config), }; wTeam.dataTeam.Add(data); } wTeam.team = charactor.team.team; charactor.team = wTeam; } } } }
// 切换手动和自动 //-- 主要是切换为自动 -- public bool SwitchManulOrAuto(ManualOrAuto ma, ref bool isAuto) { bool exist = false; if (ma != null) { WarCamp camp = ma.camp; string UID = ma.ClientID; int UniqueID = ma.UniqueID; List <RoomCharactor> CharactorList = null; bool found = allCharactors.TryGetValue(camp, out CharactorList); if (found) { RoomCharactor existC = CharactorList.Find(c => c.UID == UID); if (existC != null) { WrapperTeam wrapperTeam = (WrapperTeam)existC.team; if (wrapperTeam.activeNpc.UniqueID == UniqueID) { existC.autoBattle = ma.auto == 1; exist = true; isAuto = existC.autoBattle; AsyncTask.QueueOnMainThread( () => { wrapperTeam.activeNpc.SwitchAutoBattle(existC.autoBattle); } ); } } } } return(exist); }
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); } } } }
//设置英雄队列 public void SetHeroList(WarCamp camp, List <ServerLifeNpc> list) { allHeros.Add(camp, list); }