Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        public List <RoomCharactor> get(WarCamp camp)
        {
            List <RoomCharactor> chalist = null;
            bool exist = allCharactors.TryGetValue(camp, out chalist);

            return(exist ? chalist : null);
        }
Ejemplo n.º 3
0
        //退出房间
        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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        //加入房间
        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;
                }
            }
        }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        /// <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);
            }
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        //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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        //创建敌我双方的队伍
        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);
        }
Ejemplo n.º 13
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 14
0
        //    切换手动和自动
        //-- 主要是切换为自动 --
        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);
        }
Ejemplo n.º 15
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 16
0
 //设置英雄队列
 public void SetHeroList(WarCamp camp, List <ServerLifeNpc> list)
 {
     allHeros.Add(camp, list);
 }