Beispiel #1
0
        //按兵路得到建筑
        public List <ServerLifeNpc> GetBuildByWay(CAMP camp, BATTLE_WAY way, bool bAlive = false)
        {
            List <ServerLifeNpc> list = GetLifeNPCByType(LifeNPCType.Build, camp);

            if (list != null && list.Count > 0)
            {
                List <ServerLifeNpc> finalList = new List <ServerLifeNpc> ();
                for (int i = 0; i < list.Count; i++)
                {
                    ServerLifeNpc bld = list[i];
                    if (bAlive)
                    {
                        if (bld.dataInScene != null && bld.dataInScene.way == way && bld.IsAlive)
                        {
                            finalList.Add(list [i]);
                        }
                    }
                    else
                    {
                        if (list [i].dataInScene != null && list [i].dataInScene.way == way)
                        {
                            finalList.Add(list [i]);
                        }
                    }
                }
                return(finalList);
            }
            return(null);
        }
Beispiel #2
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);
        }
Beispiel #3
0
        //挑出阵营,但是不应该把施法者过滤掉
        //后续如果有要求,才会过滤施法者
        IEnumerable <ServerNPC> SelectCamp(ServerNPC caster, IEnumerable <ServerNPC> targets, EffectConfigData efCfg)
        {
            CAMP camp = efCfg.Flags.switchTo(caster.Camp);
            IEnumerable <ServerNPC> itor = targets.Where(n => camp.check(n.Camp) || caster.UniqueID == n.UniqueID);

            return(itor);
        }
Beispiel #4
0
        public List <ServerNPC> GetNPCByType(LifeNPCType type, CAMP camp)
        {
            List <ServerNPC> list = null;

            foreach (KeyValuePair <int, ServerNPC> itor in npcDic)
            {
                if (itor.Value != null && itor.Value.data != null && itor.Value.data.configData.type == type)
                {
                    if (camp == CAMP.None || camp == CAMP.All)
                    {
                        if (list == null)
                        {
                            list = new List <ServerNPC> ();
                        }
                        list.Add(itor.Value);
                    }
                    else if (itor.Value.Camp == camp)
                    {
                        if (list == null)
                        {
                            list = new List <ServerNPC> ();
                        }
                        list.Add(itor.Value);
                    }
                }
            }
            return(list);
        }
Beispiel #5
0
        /// <summary>
        /// 加载子弹型npc
        /// </summary>
        /// <returns>The bullet npc.</returns>
        /// <param name="num">Number.</param>
        /// <param name="camp">Camp.</param>
        /// <param name="pos">Position.</param>
        /// <param name="rot">Rot.</param>
        public GameObject LoadBulletNpc(int num, CAMP camp, Vector3 pos, Quaternion rot)
        {
            if (NpcModel == null)
            {
                NpcModel = Core.Data.getIModelConfig <NPCModel>();
            }

            NPCConfigData configData = NpcModel.get(num);

            #if DEBUG
            Utils.Assert(configData == null, "Virtual Npc load can't find npc configure. NPC id = " + num);
            #endif

            string path = SPath.Combine(ResourceSetting.PACKROOT, NPC);
            path = SPath.Combine(path, "ServerBulletNpc");

            UObj obj = URes.Load(path);

            GameObject go = GameObject.Instantiate(obj) as GameObject;
            go.transform.position = pos;
            go.transform.rotation = rot;

            ServerNPC npc = go.GetComponent <ServerNPC>();
            if (npc != null)
            {
                DynamicDataInit(npc, configData, camp);
            }

            return(go);
        }
Beispiel #6
0
        /// <summary>
        /// 转换为Camp类型
        /// </summary>
        /// <returns>The to.</returns>
        /// <param name="Flags">Flags.</param>
        public static CAMP switchTo(this EffectFlag Flags, CAMP self)
        {
            CAMP camp = CAMP.All;
            bool ck   = Flags.check(EffectFlag.Forbid_Enemy);

            if (ck)
            {
                CAMP enemy = self.Hostile();
                camp = camp.clear(enemy);
            }

            ck = Flags.check(EffectFlag.Forbid_Friendly);
            if (ck)
            {
                camp = camp.clear(self);
            }

            ck = Flags.check(EffectFlag.Forbid_Neutral);
            if (ck)
            {
                camp = camp.clear(CAMP.Neutral);
            }

            return(camp);
        }
Beispiel #7
0
        public override TaskStatus OnUpdate()
        {
            CAMP enemyCamp = CAMP.None;

            if (myHero.Camp == CAMP.Enemy)
            {
                enemyCamp = CAMP.Player;
            }
            else if (myHero.Camp == CAMP.Player)
            {
                enemyCamp = CAMP.Enemy;
            }

            enemy = WarServerManager.Instance.realServer.monitor.CharactorPool.GetHeroList(enemyCamp);

            if (enemy == null || enemy.Count == 0)
            {
                return(TaskStatus.Failure);
            }


            // 范围内有人,返回失败
            for (int i = 0; i < enemy.Count; i++)
            {
                if (AITools.IsInRange(mTransform.position, seekRange, enemy[i].transform))
                {
                    return(TaskStatus.Success);
                }
            }

            return(TaskStatus.Failure);
        }
Beispiel #8
0
        /// <summary>
        /// 这个Targets不能为空
        /// </summary>
        /// <param name="caster">Caster.</param>
        /// <param name="targets">Targets.</param>
        /// <param name="efCfg">Ef cfg.</param>
        /// <param name="npcMgr">Npc mgr.</param>
        public List <ServerNPC> Select(ServerNPC caster, List <ServerNPC> targets, EffectConfigData efCfg, WarServerNpcMgr npcMgr)
        {
                        #if DEBUG
            Utils.Assert(efCfg == null, "Can't find target unless EffectConfigData isn't null.");
            Utils.Assert(npcMgr == null, "Can't find target unless WarServerNpcMgr isn't null.");
            Utils.Assert(targets == null, "Can't find target unless targets isn't null.");
                        #endif

            List <ServerNPC> reTarget = new List <ServerNPC>();
            //转换为Camp类型,还有一部分的检查不在这里
            //剔除自己的是在Factory里面(即EffectAreaSector)
            CAMP camp = efCfg.Flags.switchTo(caster.Camp);

            int count = targets.Count;
            if (count > 0)
            {
                for (int i = 0; i < count; ++i)
                {
                    UVec3 anchor = targets[i].transform.position;
                    reTarget.AddRange(SelectorTools.GetNPCRadius(anchor, caster.data.configData.radius + efCfg.eParam1, camp, npcMgr));
                }
            }

            return(reTarget);
        }
Beispiel #9
0
        /// <summary>
        /// 数据的初始化
        /// </summary>
        /// <param name="go">Go.</param>
        /// <param name="num">Number.</param>
        /// <param name="id">Identifier.</param>
        /// <param name="camp">Camp.</param>
        void DynamicDataInit(GameObject go, int num, CAMP camp, int Id)
        {
            ClientNPC curHero = go.GetComponent <ClientNPC>();

            ///
            /// 填充阵营
            ///
            curHero.Camp = camp;

            ///
            /// 填充NPC数据
            ///
            NPCData       dynamicData = new NPCData();
            NPCConfigData econfig     = NpcModel.get(num);

            dynamicData.rtData     = new NPCRuntimeData(econfig);
            dynamicData.configData = econfig;
            dynamicData.btData     = new NPCBattleData();
            curHero.data           = dynamicData;

            if (Id != 0)
            {
                curHero.UniqueID = Id;
                cliNpcMgr.SignExistID(curHero);
            }
            else
            {
                ///
                /// 向WarClientNpcManager注册
                ///
                cliNpcMgr.SignID(curHero);
            }
        }
Beispiel #10
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>The NPC rectangle.</returns>
        /// <param name="area">Area.</param>
        /// <param name="camp">Camp.</param>
        /// <param name="NpcSource">Npc source.</param>
        public static IEnumerable <ServerNPC> GetNPCPolygon(Polygon area, CAMP camp, WarServerNpcMgr NpcSource)
        {
            IEnumerable <ServerNPC> filter = NpcSource.getCampBnpc(camp);

            filter = filter.Where(n => area.PositionInPolygon(n.transform.position));
            return(filter);
        }
Beispiel #11
0
        /// <summary>
        /// 数据的初始化
        /// </summary>
        /// <param name="go">Go.</param>
        /// <param name="num">Number.</param>
        /// <param name="id">Identifier.</param>
        /// <param name="camp">Camp.</param>
        void DynamicDataInit(ServerNPC curHero, NPCConfigData econfig, CAMP camp)
        {
            ///
            /// 填充阵营
            ///
            curHero.Camp = camp;

            ///
            /// 填充NPC数据
            ///
            NPCData dynamicData = new NPCData();

            dynamicData.rtData     = new NPCRuntimeData(econfig);
            dynamicData.configData = econfig;
            dynamicData.btData     = new NPCBattleData();
            curHero.data           = dynamicData;

            ///
            /// 向WarManager注册
            ///
            serNpcMgr.SignID(curHero);

            WarServerManager warMgr = WarServerManager.Instance;
            ///
            /// 填充技能数据
            ///
            RtNpcSkillModel skMd = new RtNpcSkillModel(econfig.ID, curHero.UniqueID);
            ServerLifeNpc   life = curHero as ServerLifeNpc;

            if (life != null)
            {
                life.runSkMd = skMd;
            }

            ///
            /// 填充默认的buff
            ///
            for (short i = 0; i < Consts.MAX_SKILL_COUNT; ++i)
            {
                RtSkData sk = skMd.getRuntimeSkill(i);
                if (sk != null)
                {
                    int passive = sk.skillCfg.PassiveBuff;
                    if (passive > 0)
                    {
                        BuffCtorParam ctor = new BuffCtorParam()
                        {
                            bufNum    = passive,
                            fromNpcId = curHero.UniqueID,
                            toNpcId   = curHero.UniqueID,
                            origin    = OriginOfBuff.BornWithSkill,
                            initLayer = 1,
                            duration  = Consts.USE_BUFF_CONFIG_DURATION,
                        };
                        warMgr.bufMgr.createBuff(ctor);
                    }
                }
            }
        }
Beispiel #12
0
        public override void OnStart()
        {
            mTargetTrans = target.Value.transform;
            CAMP enemyCamp = CAMP.All;

            enemy     = chaPool.GetHeroList(target.Value.Camp);
            seekRange = target.Value.data.configData.seekRange + target.Value.data.configData.radius;
        }
Beispiel #13
0
 public override void OnAwake()
 {
     enermys   = new List <ServerLifeNpc> ();
     hero      = GetComponent <ServerLifeNpc>();
     mTrans    = this.transform;
     seekRange = hero.data.configData.seekRange + hero.data.configData.radius;
     //得到对方阵营的英雄
     hostile = hero.Camp.Hostile();
 }
Beispiel #14
0
        void InitData()
        {
            if (!WarServerManager.Instance.bInit)
            {
                return;
            }

            CAMP camp = CAMP.Neutral;

            if (npc.Camp == CAMP.Enemy)
            {
                camp = CAMP.Player;
            }
            else if (npc.Camp == CAMP.Player)
            {
                camp = CAMP.Enemy;
            }

            //得到敌方阵营的所有目标点
            if (camp != CAMP.Neutral)
            {
                tempList.Clear();
                sortList.Clear();
                targets.Clear();

                tempList = WarServerManager.Instance.npcMgr.GetBuildByWay(camp, npc.data.btData.way);
                for (int i = 0; i < tempList.Count; i++)
                {
                    sortList.Add(tempList [i].dataInScene.index, tempList [i]);
                }

                foreach (KeyValuePair <int, ServerLifeNpc> itor in sortList)
                {
                    targets.Add(itor.Value);
                }

                NeHeQiaoNpcMgr npcMgr = WarServerManager.Instance.npcMgr as NeHeQiaoNpcMgr;
                if (camp == CAMP.Player)
                {
                    targets.Add(npcMgr.SelfMilitaryBase);
                }
                else if (camp == CAMP.Enemy)
                {
                    targets.Add(npcMgr.EnemyMilitaryBase);
                }
            }

            if (targets != null && targets.Count > 0 && index.Value < targets.Count)
            {
                mTargetTrans = targets [index.Value].transform;
            }

            bInitFinish = true;
        }
Beispiel #15
0
        //得到英雄队伍
        public List <ServerLifeNpc> GetHeroList(CAMP camp)
        {
            List <ServerLifeNpc> list = null;

            if (allHeros.TryGetValue(WarCamp2Camp.toWarCamp(camp), out list))
            {
                return(list);
            }

            ConsoleEx.DebugError("hero list is null ::  " + camp.ToString());
            return(null);
        }
Beispiel #16
0
        /// <summary>
        /// 创建NPC, 使用初始化好的数据
        /// </summary>
        /// <param name="num">Number.</param>
        /// <param name="id">Identifier.</param>
        /// <param name="camp">Camp.</param>
        public ClientNPC Load(CAMP camp, NPCData initedData, GameObject WarPoint)
        {
                        #if DEBUG
            Utils.Assert(initedData == null, "NpcLoad can't be null ");
                        #endif

            NPCConfigData configData = initedData.configData;

            string path = Path.Combine(ResourceSetting.PACKROOT, NPC);
            path = Path.Combine(path, configData.model.ToString());

            //TODO: 是自己队伍里NPC则必须使用ObjLoader去创建

            bool   cached = ObjLoader.hitCache(path);
            Object obj    = null;
            if (cached)
            {
                obj = ObjLoader.Load(path);
            }
            else
            {
                obj = WeakObjLoader.Load(path);
            }

            if (obj == null)
            {
                ConsoleEx.DebugWarning(configData.model + " not find models. Npc Num = " + configData.ID);
                return(null);
            }

            GameObject go = GameObject.Instantiate(obj) as GameObject;
            UnityUtils.AddChild_Reverse(go, WarPoint);
            ///
            /// 填充数据
            ///
            InitedData(go, camp, initedData);

            ClientNPC npc = go.GetComponent <ClientNPC> ();
            if (npc != null)
            {
                go.name = "NPC_" + npc.data.configData.ID + "_" + npc.UniqueID;
                if (!string.IsNullOrEmpty(configData.controlScript))
                {
                    ClientNpcAnimState animState = go.AddComponent(configData.controlScript) as ClientNpcAnimState;
                    npc.animState = animState;
                    npc.broadcast = animState.OnNewStateReceived;
                }
                cliNpcMgr.CreateNpcUI(npc);
            }

            return(npc);
        }
Beispiel #17
0
        /// <summary>
        /// 获取特定的KindOfNPC,敌友方,有效状态的, 是建筑物还是什么的  活着的NPC
        /// </summary>
        /// <returns>ServerNPC 列表</returns>
        /// <param name="caster">Caster.</param>
        /// <param name="NpcSource">Npc source.</param>
        /// <param name="kind">KindOfNPC</param>
        /// <param name="target">TargetClass</param>
        /// <param name="TarStatusInCfg">NpcStatus</param>
        /// <param name="type">LifeNPCType.</param>
        public static IEnumerable <ServerNPC> GetNPCValideStatus(ServerNPC caster, WarServerNpcMgr NpcSource, KindOfNPC kind, TargetClass target,
                                                                 NpcStatus TarStatusInCfg, LifeNPCType type = LifeNPCType.SkTarAll)
        {
            // 临时枚举器
            IEnumerable <ServerNPC> Itor1 = null;

            CAMP camp = CAMP.None;

            if (target.AnySame(TargetClass.Friendly))
            {
                camp = caster.Camp;
            }
            else if (target.AnySame(TargetClass.Hostile))
            {
                camp = caster.Camp.Hostile();
            }
            else
            {
                //全阵营
                camp = CAMP.All;
            }

            Itor1 = NpcSource.getCampBnpc(camp);

            if (kind == KindOfNPC.Life)
            {
                Itor1 = Itor1.Where(n => (n.WhatKindOf() == kind) &&
                                    (type.check(((ServerLifeNpc)n).WhatTypeOf)));
            }
            else if (kind == KindOfNPC.NonLife)
            {
                Itor1 = Itor1.Where(n => n.WhatKindOf() == kind);
            }

            ///
            /// --- 筛选出有效状态的NPC ----
            ///
            Itor1 = Itor1.Where(n => {
                ServerLifeNpc lifeTar = n as ServerLifeNpc;
                if (lifeTar != null)
                {
                    return(!lifeTar.curStatus.AnySame(TarStatusInCfg));
                }
                else
                {
                    return(true);
                }
            });

            return(Itor1);
        }
Beispiel #18
0
        /// <summary>
        /// 返回阵营Camp的LifeNPC列表
        /// </summary>
        /// <returns>The life NPC list by camp.</returns>
        /// <param name="camp">Camp.</param>
        public List <ServerLifeNpc> GetLifeNPCListByCamp(CAMP camp)
        {
            IEnumerable <ServerNPC> npcs = getCampBnpc(camp);
            List <ServerLifeNpc>    list = new List <ServerLifeNpc>();

            foreach (ServerNPC npc in npcs)
            {
                ServerLifeNpc life = npc as ServerLifeNpc;
                if (life != null)
                {
                    list.Add(life);
                }
            }
            return(list);
        }
        public override void OnStart()
        {
            npc        = GetComponent <ServerLifeNpc>();
            mTransform = npc.transform;
            npcMgr     = WarServerManager.Instance.npcMgr;
            CAMP camp = CAMP.Player;

            if (npc.Camp == CAMP.Enemy)
            {
                camp = CAMP.Player;
            }
            else if (npc.Camp == CAMP.Player)
            {
                camp = CAMP.Enemy;
            }
            tower = npcMgr.GetBuildByType(camp, BuildNPCType.Tower);
        }
Beispiel #20
0
 public static bool IsBlocked(string roomName, int itemIdEquipped)
 {
     if (roomName.Contains("@CAMP"))
     {
         if (CAMP.Contains(itemIdEquipped))
         {
             return(true);
         }
     }
     //if (roomName.Contains("@CNPB"))
     //{
     //    if (CNPB.Contains(itemIdEquipped))
     //    {
     //        return true;
     //    }
     //}
     return(false);
 }
Beispiel #21
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);
            }
        }
Beispiel #22
0
        /// <summary>
        /// 根据配表ID得到npc
        /// </summary>
        /// <returns>The NPC by number.</returns>
        /// <param name="num">Number.</param>
        /// <param name="camp">Camp.</param>
        public List <ServerNPC> GetNPCListByNum(int num, CAMP camp)
        {
            List <ServerNPC> list = new List <ServerNPC> ();

            foreach (KeyValuePair <int, ServerNPC> itor in npcDic)
            {
                if (itor.Value != null && itor.Value.data != null && itor.Value.data.configData != null && itor.Value.data.configData.ID == num)
                {
                    if (camp == CAMP.None)
                    {
                        list.Add(itor.Value);
                    }
                    else if (itor.Value.Camp == camp)
                    {
                        list.Add(itor.Value);
                    }
                }
            }
            return(list);
        }
Beispiel #23
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);
        }
Beispiel #24
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);
        }
Beispiel #25
0
        /// <summary>
        /// 根据LifeNPCType类型和camp得到npc
        /// </summary>
        /// <returns>The life NPC by type.</returns>
        /// <param name="type">Type.</param>
        /// <param name="camp">Camp.</param>
        public List <ServerLifeNpc> GetLifeNPCByType(LifeNPCType type, CAMP camp)
        {
            List <ServerLifeNpc> list = new List <ServerLifeNpc> ();

            foreach (KeyValuePair <int, ServerNPC> itor in npcDic)
            {
                ServerLifeNpc lifenpc = itor.Value as ServerLifeNpc;
                if (lifenpc != null && lifenpc.WhatTypeOf == type)
                {
                    if (camp == CAMP.None)
                    {
                        list.Add(lifenpc);
                    }
                    else if (lifenpc.Camp == camp)
                    {
                        list.Add(lifenpc);
                    }
                }
            }
            return(list);
        }
Beispiel #26
0
        public bool SendMessageAsync(CAMP sender, CAMP receiver, WarCampMsg param, bool anonymous)
        {
            bool sent = false;

            if (param == null)
            {
                ConsoleEx.DebugLog("We can't send empty message to other.", ConsoleEx.RED);
                return(sent);
            }

            List <ServerNPC> npcList = null;

            if (campNicDic.TryGetValue(receiver, out npcList))
            {
                int count = npcList.Count;
                if (count > 0)
                {
                    for (int i = 0; i < count; ++i)
                    {
                        ServerNPC npc = npcList[i];
                        AsyncSheduleTask(npc, param);
                    }
                    sent = true;
                }
                else
                {
                    sent = false;
                    ConsoleEx.DebugLog("NPC doesn't instanciate yet.", ConsoleEx.YELLOW);
                }
            }
            else
            {
                sent = false;
                ConsoleEx.DebugLog("NPC doesn't instanciate yet.", ConsoleEx.YELLOW);
            }

            triMgr.Watching(param);

            return(sent);
        }
Beispiel #27
0
 private static void GenerateList()
 {
     try
     {
         XmlDocument document = new XmlDocument();
         document.Load(path);
         for (XmlNode xmlNode1 = document.FirstChild; xmlNode1 != null; xmlNode1 = xmlNode1.NextSibling)
         {
             if ("list".Equals(xmlNode1.Name))
             {
                 for (XmlNode xmlNode2 = xmlNode1.FirstChild; xmlNode2 != null; xmlNode2 = xmlNode2.NextSibling)
                 {
                     if ("Rule".Equals(xmlNode2.Name))
                     {
                         XmlNamedNodeMap xml    = xmlNode2.Attributes;
                         string          rule   = xml.GetNamedItem("Name").Value;
                         int             itemId = int.Parse(xml.GetNamedItem("Id").Value);
                         if (rule.Equals("@CAMP"))
                         {
                             CAMP.Add(itemId);
                         }
                         else if (rule.Equals("@CNPB"))
                         {
                             CNPB.Add(itemId);
                         }
                         else if (rule.Equals("COUPON"))
                         {
                             CuponsEffectsBlocked.Add(itemId);
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Exception(ex);
     }
 }
Beispiel #28
0
        /// <summary>
        /// 根据camp和group得到npc
        /// </summary>
        /// <returns>The NPC list.</returns>
        /// <param name="camp">Camp.</param>
        /// <param name="Group">Group.</param>
        public List <ServerNPC> GetNPCList(CAMP camp, int Group)
        {
            List <ServerNPC> list = GetNPCListByGroup(Group);

            if (list != null)
            {
                int count = list.Count;
                if (count > 0)
                {
                    List <ServerNPC> final = new List <ServerNPC> ();
                    for (int i = 0; i < count; i++)
                    {
                        if (list [i].Camp == camp)
                        {
                            final.Add(list [i]);
                        }
                    }
                    return(final);
                }
            }
            return(null);
        }
Beispiel #29
0
        //按兵路得到建筑
        public List <ServerLifeNpc> GetBuildByType(CAMP camp, BuildNPCType type)
        {
            List <ServerLifeNpc> list = new List <ServerLifeNpc>();

            foreach (KeyValuePair <int, ServerNPC> itor in npcDic)
            {
                ServerLifeNpc lifenpc = itor.Value as ServerLifeNpc;
                if (lifenpc != null && lifenpc.WhatTypeOf == LifeNPCType.Build && lifenpc.IsAlive && lifenpc.data.configData.bldType == type)
                {
                    if (camp == CAMP.None || camp == CAMP.All)
                    {
                        list.Add(lifenpc);
                    }
                    else if (lifenpc.Camp == camp)
                    {
                        list.Add(lifenpc);
                    }
                }
            }

            return(list);
        }
Beispiel #30
0
        /// <summary>
        /// 数据的初始化
        /// </summary>
        /// <param name="go">Go.</param>
        /// <param name="camp">Camp.</param>
        /// <param name="initedData">Inited data.</param>
        void InitedData(GameObject go, CAMP camp, NPCData initedData)
        {
            ClientNPC curHero = go.GetComponent <ClientNPC>();

            ///
            /// 填充阵营
            ///
            curHero.Camp = camp;

            ///
            /// 填充NPC数据
            ///
            NPCData dynamicData = initedData;

            dynamicData.btData = new NPCBattleData();

            curHero.data = dynamicData;

            ///
            /// 向WarClientNpcManager注册
            ///
            cliNpcMgr.SignID(curHero);
        }