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); }
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); }
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); }