コード例 #1
0
ファイル: HumanEntity.cs プロジェクト: mengtest/RewriteFrame
    public override void InitializeByRespond(S2C_SYNC_NEW_HERO respond)
    {
        InitBaseProperty(respond);

        m_CfgEternityProxy = (CfgEternityProxy)GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy);

        ServerListProxy serverListProxy = GameFacade.Instance.RetrieveProxy(ProxyName.ServerListProxy) as ServerListProxy;

        m_IsMain = respond.ownerPlayerID == serverListProxy.GetCurrentCharacterVO().UId;
        if (m_IsMain)
        {
            GameplayProxy gameplayProxy = GameFacade.Instance.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy;
            gameplayProxy.SetMainPlayerUID(respond.id);

            gameplayProxy.SetCurrentAreaUid(respond.area_id);
        }

        if (respond.item_tid != 0)
        {
            CfgEternityProxy cfgEternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy;
            m_AssetName = cfgEternityProxy.GetItemModelAssetNameByKey(respond.item_tid);
        }

        if (respond.ownerPlayerID != 0)
        {
            m_HeroType = KHeroType.htPlayer;

            if (m_IsMain)
            {
                Interaction.InteractionManager.GetInstance().RegisterOwnerPlayer(this);
            }

            m_Player = m_CfgEternityProxy.GetPlayerByItemTId((int)GetItemID());
        }
        else
        {
            m_NpcTmpVO   = (GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy).GetNpcByKey((uint)respond.templateID);
            m_HeroType   = (KHeroType)m_NpcTmpVO.NpcType;
            m_TeleportId = respond.teleport_id_;

            if (m_NpcTmpVO.Function.HasValue || m_TeleportId > 0)
            {
                Interaction.InteractionManager.GetInstance().RegisterInteractable(this);
                //NetworkManager.Instance.GetTaskController().SendRequetNpcCanAcceptTaskInfo(respond.templateID);
            }

            if (m_NpcTmpVO.InteractionDelay > 0)
            {
                m_IsActive = false;
                UIManager.Instance.StartCoroutine(Excute(m_NpcTmpVO.InteractionDelay, () =>
                {
                    m_IsActive = true;
                }));
            }
            else
            {
                m_IsActive = true;
            }
        }

        transform.name += "_" + m_HeroType.ToString();

        m_MovementRotationTransform = new GameObject("Rotation").transform;
        m_MovementRotationTransform.SetParent(transform);

        m_BornServerPosition = new Vector3(respond.posX, respond.posY, respond.posZ);
        SetLocalPosition(m_BornServerPosition);

        m_BornServerRotation = new Quaternion(respond.faceDirX, respond.faceDirY, respond.faceDirZ, respond.faceDirW);
        SetMovementLocalRotation(m_BornServerRotation);

        if (m_IsMain)
        {
            CameraManager.GetInstance().GetMainCamereComponent().SetFollowAndLookAtCMFreeLookAxisValue(MainCameraComponent.CMType.Character, transform, transform, m_BornServerRotation.eulerAngles.y, 0.5f);
            CameraManager.GetInstance().GetMainCamereComponent().RequestChangeCM(MainCameraComponent.CMType.Character);

            transform.name += "(Self)";

#if ENABLE_SYNCHRONOUS_HUMAN_SELF_LOG
            FightLogToFile.Instance.Write("===== InitializeByRespond =====\n");
            FightLogToFile.Instance.Write("time " + Utils.Timer.ClockUtil.Instance().GetMillisecond() + "\n");
            FightLogToFile.Instance.WriteToJson("S2C_SYNC_NEW_HERO", respond);
            FightLogToFile.Instance.Write("\n");
#endif
        }
        if (m_HeroType == KHeroType.htPlayer)
        {
            //音效组合,Listener 的目标
            if (m_Player.HasValue)
            {
                WwiseUtil.LoadSoundCombo(m_Player.Value.MusicComboID);
            }
        }


        int humanLayer = m_HeroType == KHeroType.htPlayer
                                                ? IsMain()
                                                        ? GameConstant.LayerTypeID.MainPlayer
                                                        : GameConstant.LayerTypeID.HumanOtherPlayer
                                                : GameConstant.LayerTypeID.HumanNPC;
        LayerUtil.SetGameObjectToLayer(gameObject, humanLayer, true);
        m_AttManager = new AttributeManager();
        InitAttManager();
    }