예제 #1
0
    public void Refresh()
    {
        ServantLeaderCmpt loader = GameUI.Instance.mMainPlayer.GetCmpt <ServantLeaderCmpt>();

        if (loader != leaderCmpt)
        {
            if (leaderCmpt != null)
            {
                leaderCmpt.changeEventor.Unsubscribe(ServentChange);
            }
            leaderCmpt = loader;
            leaderCmpt.changeEventor.Subscribe(ServentChange);
            //playerPackageCmpt = GameUI.Instance.mMainPlayer.GetCmpt<PlayerPackageCmpt>();
        }
        GetServentCmpt();
        ReflashSkill();
        RefreshNpcAbnormal();
        if (npcCmpt == null)
        {
            return;
        }
        if (equipmentCmpt != null)
        {
            UpdateEquipAndTex();
        }
        if (packageCmpt != null)
        {
            Reflashpackage();
        }
    }
예제 #2
0
    public NpcCmpt GetNeedReviveServant()
    {
        ServantLeaderCmpt leader = GameUI.Instance.mMainPlayer.GetCmpt <ServantLeaderCmpt>();
        NpcCmpt           mNpc   = leader.GetServant((int)mCurrentIndex);

        if (mNpc == null)
        {
            return(null);
        }
        if (mNpc.Alive.isDead)
        {
            return(mNpc);
        }
        return(null);
    }
예제 #3
0
            public static bool SetFollower(this PeEntity entity, bool bFlag, int index = -1)
            {
                ServantLeaderCmpt masterCmpt = PeCreature.Instance.mainPlayer.GetCmpt <ServantLeaderCmpt>();
                NpcCmpt           npcCmpt    = entity.NpcCmpt;

                if (!bFlag)
                {
                    return(masterCmpt.RemoveServant(npcCmpt));
                }
                else
                {
                    //set floower succeed talk
                    entity.NpcCmpt.AddTalkInfo(ENpcTalkType.Conscribe_succeed, ENpcSpeakType.TopHead);
                    if (index == -1)
                    {
                        return(masterCmpt.AddServant(npcCmpt));
                    }
                    return(masterCmpt.AddServant(npcCmpt, index));
                }
            }
예제 #4
0
 void OnSetBtn()
 {
     if (!m_Cancel)
     {// add/replace follower
         if (HandlePerson != null)
         {
             if (m_Replace)
             {   // follower
                 if (PeGameMgr.IsMulti)
                 {
                     if (m_CurNpc != null)
                     {
                         ServantLeaderCmpt masterCmpt = PeCreature.Instance.mainPlayer.GetCmpt <ServantLeaderCmpt>();
                         NpcCmpt           npcCmpt    = m_CurNpc.GetComponent <NpcCmpt>();
                         if (masterCmpt == npcCmpt.Master)
                         {
                             if (null != PlayerNetwork.mainPlayer)
                             {
                                 PlayerNetwork.RequestDismissNpc(m_CurNpc.Id);
                                 PlayerNetwork.RequestNpcRecruit(HandlePerson.ID);
                             }
                         }
                         else
                         {
                             //--to do: log
                         }
                     }
                 }
                 else
                 {
                     if (m_CurNpc != null)
                     {
                         m_CurNpc.SetFollower(false);
                     }
                     HandlePerson.FollowMe(m_HeroIndex);
                 }
             }
             else
             {
                 //check if can add person
                 if (PeGameMgr.IsMulti)
                 {
                     if (null != PlayerNetwork.mainPlayer)
                     {
                         PlayerNetwork.RequestNpcRecruit(HandlePerson.ID);
                     }
                 }
                 else
                 {
                     HandlePerson.FollowMe(m_HeroIndex);
                 }
             }
         }
     }
     else
     {// remove follower
         if (m_CurNpc != null)
         {
             if (PeGameMgr.IsMulti)
             {
                 if (null != PlayerNetwork.mainPlayer)
                 {
                     PlayerNetwork.RequestDismissNpc(m_CurNpc.Id);
                 }
             }
             else
             {
                 m_CurNpc.SetFollower(false);
             }
         }
     }
 }
예제 #5
0
 Vector3 GetMasterPosition(ServantLeaderCmpt leader)
 {
     return(leader.GetComponent <PeTrans>().position);
 }