Beispiel #1
0
        public bool RemoveServant(NpcCmpt follower)
        {
            for (int i = 0; i < mFollowers.Length; i++)
            {
                if (follower == mFollowers[i])
                {
                    follower.NpcControlCmdId = 1;
                    follower.SetServantLeader(null);
                    PeEntity npc = follower.GetComponent <PeEntity>();
                    if (UIMissionMgr.Instance != null)
                    {
                        UIMissionMgr.Instance.AddMission(npc);
                    }
                    MissionManager.Instance.m_PlayerMission.UpdateNpcMissionTex(npc);
                    return(RemoveServant(i));
                }
            }

            return(false);
        }
Beispiel #2
0
        public bool AddServant(NpcCmpt follower)
        {
            if (ContainsServant(follower))
            {
                return(false);
            }

            for (int i = 0; i < mFollowers.Length; i++)
            {
                if (null == mFollowers[i])
                {
                    mFollowers[i] = follower;

                    if (UINPCfootManMgr.Instance != null)
                    {
                        UINPCfootManMgr.Instance.GetFollowerAlive();
                    }
                    //DoFollow(follower.Entity.GetCmpt<FollowCmpt>());
                    follower.SetServantLeader(this);
                    follower.NpcControlCmdId = 19;
                    PeEntityCreator.RecruitRandomNpc(follower.Entity);
                    InitSleepInfo(mFollowers[i]);
                    if (UIMissionMgr.Instance != null)
                    {
                        UIMissionMgr.Instance.DeleteMission(follower.Entity);
                    }
                    changeEventor.Dispatch(new ServantChanged(true, follower.Entity));

                    //lz-2016.08.22 玩家召一个仆从
                    InGameAidData.CheckGetServant(follower.Entity.Id);
                    //lw:完成成就同生共死
                    SteamAchievementsSystem.Instance.OnGameStateChange(Eachievement.Eleven);
                    return(true);
                }
            }

            return(false);
        }
Beispiel #3
0
        public bool AddServant(NpcCmpt follower, int index)
        {
            if (ContainsServant(follower))
            {
                return(false);
            }

            bool isFull = true;

            for (int i = 0; i < mFollowers.Length; i++)
            {
                if (mFollowers[i] == null)
                {
                    isFull = false;
                    break;
                }
            }
            if (isFull)
            {
                return(false);
            }

            for (int i = 0; i < mFollowers.Length; i++)
            {
                if (i == index)
                {
                    if (mFollowers[i] != null)
                    {
                        List <NpcCmpt> fList = mFollowers.Where(a => a != null).ToList();
                        fList.Insert(i, follower);
                        if (fList.Count < MaxFollower)
                        {
                            for (int j = 0; j < MaxFollower - fList.Count; j++)
                            {
                                fList.Add(null);
                            }
                        }
                        mFollowers = fList.ToArray();
                    }
                    else
                    {
                        mFollowers[i] = follower;
                    }

                    if (UINPCfootManMgr.Instance != null)
                    {
                        UINPCfootManMgr.Instance.GetFollowerAlive();
                    }


                    //log: lz-2016.05.11  这里移除一个仆从的时候进行排序,让前面不要空出位置
                    mFollowers = mFollowers.OrderBy(a => a == null).ToArray();
                    //DoFollow(follower.Entity.GetCmpt<FollowCmpt>());
                    follower.SetServantLeader(this);
                    follower.NpcControlCmdId = 19;
                    PeEntityCreator.RecruitRandomNpc(follower.Entity);
                    InitSleepInfo(follower);
                    changeEventor.Dispatch(new ServantChanged(false, follower.Entity));
                    return(true);
                }
            }

            return(false);
        }