Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
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);
                    }
                }
            }
        }