예제 #1
0
 public FloatFontNode(GameObject entity,Value Ins)
     : base(Ins)
 {
     liveTime = 0.0f;
     m_Entity = entity;
     m_Property = entity.GetComponent<CreatureProperty>();
 }
예제 #2
0
파일: EntityView.cs 프로젝트: zwong91/Titan
        /// <summary>
        /// 重置
        /// </summary>
        public void Restore()
        {
            CacheSkin();
            //要在他们之前清理,因为动态脚本是依赖静态脚本的
            DestroyDynamicCommopnent();
            if (skinControl)
            {
                skinControl.Clear();
                skinControl = null;
            }
            if (m_property)
            {
                m_property.Restore();
                m_property = null;
            }

            if (m_stateMachine)
            {
                m_stateMachine.Clear();
                m_stateMachine.ResetAllMembers();
                m_stateMachine = null;
            }
            if (m_LightEffectManager)
            {
                m_LightEffectManager.Clear();
                m_LightEffectManager.Restore();
                m_LightEffectManager = null;
            }
            m_SkillCtrl = null;
            UBloodManager.Instance.DestroyBlood(ID);
            commands.Clear();
            //commands = null;
        }
예제 #3
0
        public bool setData(ChatBubbleWndView view, uint uid, SChatMessageInfo info)
        {
            base.setData(info);

            m_View  = view;
            m_UID   = uid;
            m_Pdbid = info.senderPdbid;

            // 实体气泡,则更新位置
            m_EntityView = EntityFactory.getEntityViewByID((int)uid);

            // uid获取失败,则使用pdbid
            if (m_EntityView == null)
            {
                m_EntityView = getEntityViewByPdbid(info.senderPdbid);
            }

            if (m_EntityView == null || !m_EntityView.IsValid)
            {
                return(false);
            }

            m_EntryProperty = m_EntityView.GetComponent <CreatureProperty>();
            if (m_EntryProperty == null)
            {
                return(false);
            }

            // 设置初始位置
            updatePosition();

            return(true);
        }
예제 #4
0
        public override void Clear()
        {
            base.Init();

            m_View          = null;
            m_UID           = 0;
            m_EntityView    = null;
            m_EntryProperty = null;
        }
예제 #5
0
    public void Clear()
    {
        isBeCached = false;
        if (m_MainAnimator)
        {
            m_MainAnimator.runtimeAnimatorController = orginalAnimatorController;
        }

        m_nSkinID            = -1;
        m_SkinObj            = null;
        m_SkinObj_B          = null;
        m_SkinObj_A          = null;
        m_MainAnimator       = null;
        m_AnimatorB          = null;
        m_bipedIKAnimator    = null;
        m_creatureProperty   = null;
        m_ReferencedSkinCtrl = null;
        m_SkinnedMeshRenderList.Clear();
        m_MeshRenderList.Clear();
        m_AllRenders.Clear();
        m_cameraProperty      = null;
        m_characterController = null;
        m_entitySkinConfig    = null;

        if (m_playEntityStaticEffect)
        {
            m_playEntityStaticEffect.Clear();
        }

        if (m_switchEffectWithHeroDistance)
        {
            m_switchEffectWithHeroDistance.Clear();
        }

        m_playEntityStaticEffect       = null;
        m_switchEffectWithHeroDistance = null;
        m_sidekickEntity = null;
        m_SkinDataObj    = null;
        foreach (RenderVisibleHelper vis in m_VisibleHelperList)
        {
            vis.hostSkin = null;
            var temp1 = vis;
            ResNode.DestroyRes(ref temp1);
        }
        ResNode.DestroyRes(ref m_bindEffect_A);
        ResNode.DestroyRes(ref m_bindEffect_B);
        ResNode.DestroyRes(ref m_bindSound);
        ResNode.DestroyRes(ref m_overrideController);
        m_VisibleHelperList.Clear();

        ResNode.DestroyRes(ref m_characterShadow);
        ClearAlpha();
        ClearBonesMap();
        m_isLoadFinish = false;
    }
예제 #6
0
 public void SetCreateRoomViewVisible(bool bShow)
 {
     this.gameObject.SetActive(bShow);
     if (bShow && EntityFactory.MainHeroView != null)
     {
         CreatureProperty property = EntityFactory.MainHeroView.Property;
         if (property != null)
         {
             RoomNameText.text = property.CreatureName;
         }
     }
 }
예제 #7
0
    private void ChangeCreaturePropety()
    {
        CreatureProperty srccp = SkinControl.CurrentSkinInstance.creatureProperty;

        if (!srccp)
        {
            return;
        }

        checkPosition = srccp.checkPosition;

        creaturePropety.Copy(srccp);
    }
예제 #8
0
파일: UBlood.cs 프로젝트: zwong91/Titan
        private void UpdateTransform()
        {
            SoldierCamera soldierCam = SoldierCamera.MainInstance <SoldierCamera>();

            if (!m_bEnable || EntityView.isNullOrEmpty(m_Entity) || !m_BillBoard || !soldierCam || !soldierCam.CurrentCamera)
            {
                return;
            }

            CreatureProperty pero = m_Entity.Property;

            if (!pero)
            {
                return;
            }
            //计算Y偏移值
            float offsetY = m_BillBoard.HeightInMeter * 0.2f + pero.CreatureHeightInMeters + pero.BloodYOffset;

            m_BillBoard.transform.localPosition = new Vector3(0, offsetY, 0);


            //算出相机到实体的距离
            float hideInDis = pero.TopInfoHideInDistance;

            //上帝视野要多加
            if (soldierCam.InGodViewMode)
            {
                hideInDis += UBloodManager.Instance.extendHideDistanceInGodView;
            }

            Vector3 camPos       = soldierCam.CurrentCamera.transform.position;
            Vector3 billBoardPos = m_BillBoard.transform.position;

            camPos.y = billBoardPos.y;
            float dis = (camPos - billBoardPos).sqrMagnitude;

            if (dis > hideInDis * hideInDis)//距离已经超过了实体头顶信息隐藏距离,隐藏
            {
                m_IsOutOfVisibleDistance = true;
                UpdateVisible();
                return;
            }
            else
            {
                if (m_IsOutOfVisibleDistance)
                {
                    m_IsOutOfVisibleDistance = false;
                    UpdateVisible();
                }
            }
        }
예제 #9
0
 public void Clear()
 {
     fontFrame.localScale       = Vector3.one;
     fontFrame.anchoredPosition = Vector2.zero;
     m_FontVal  = null;
     liveTime   = 0;
     timer      = 0;
     m_Entity   = null;
     m_Property = null;
     m_enable   = false;
     m_Sequence = null;
     m_Anim     = null;
     m_type     = WarFloatFontType.Invalid;
 }
예제 #10
0
파일: UTopName.cs 프로젝트: zwong91/Titan
        private void UpdateTransform()
        {
            if (!m_Enable || EntityView.isNullOrEmpty(m_Entity) || !m_BillBoard)
            {
                return;
            }
            CreatureProperty pero = m_Entity.Property;

            if (!pero)
            {
                return;
            }
            //Vector3 off = Vector3.zero;
            //float RealY = pero.CreatureHeightInMeters;
            //off.y = RealY;
            //off.y += pero.TopNameYOffset * m_BillBoard.PixelToMeterScale;
            //m_BillBoard.transform.localPosition = off;

            float offsetY = m_BillBoard.HeightInMeter * 0.2f + pero.CreatureHeightInMeters + pero.TopNameYOffset;

            m_BillBoard.transform.localPosition = new Vector3(0, offsetY, 0);

            float dis = 0;

            if (null != Initialize.Instance.SoliderTargetGO)
            {
                Vector3 camPos       = Initialize.Instance.SoliderTargetGO.transform.position;
                Vector3 billBoardPos = m_BillBoard.transform.position;
                camPos.y = billBoardPos.y;
                dis      = (camPos - billBoardPos).sqrMagnitude;
            }
            if (dis > hideInDis * hideInDis)//距离超过hideinDis,隐藏
            {
                m_IsOutOfVisibleDistance = true;
                UpdateVisible();
                return;
            }
            else
            {
                if (m_IsOutOfVisibleDistance)
                {
                    m_IsOutOfVisibleDistance = false;
                    UpdateVisible();
                }
            }
        }
예제 #11
0
파일: TopName.cs 프로젝트: zwong91/Titan
 public void Init(GameObject entry, int id, string text, Color col)
 {
     lastpixelPos = Vector3.zero;
     m_entry      = entry;
     m_ID         = id;
     isHero       = id == EntityFactory.MainHeroID;
     if (entry)
     {
         m_EntryProperty = m_entry.GetComponent <CreatureProperty>();
     }
     if (m_Instance != null)
     {
         m_Instance.GetMember("textField", ref m_TextField);
     }
     SetText(text);
     SetColor(col);
 }
예제 #12
0
        public override bool Init(IUIWnd wnd)
        {
            float offset = 0;

            creatureProperty = EntityFactory.MainHero.GetComponent <CreatureProperty>();

            if (creatureProperty)
            {
                offset = creatureProperty.CreatureBoundingRad.y * AutoMoveEffectYPosOffsetBase;
            }
            Vector2 tmpAnchoredPos = AutoMove.rectTransform.anchoredPosition;

            tmpAnchoredPos.y += offset;
            AutoMove.rectTransform.anchoredPosition = tmpAnchoredPos;

            return(base.Init(wnd));
        }
예제 #13
0
    public void Update()
    {
        if (m_follower != null)
        {
            Camera.main.gameObject.transform.position = Vector3.zero;

            CreatureProperty	backup = new CreatureProperty();

            int oldDmg = m_follower.WeaponHolder.MainWeapon.GetDamage(m_follower.m_creatureProperty, m_follower.WeaponHolder.MainWeapon.Evolution-1);
            int newDmg = m_follower.WeaponHolder.MainWeapon.Damage;

            m_oldEvolution.Text.text = (m_follower.WeaponHolder.MainWeapon.Evolution-1).ToString();
            m_newEvolution.Text.text = m_follower.WeaponHolder.MainWeapon.Evolution.ToString();
            m_oldDamage.Text.text = oldDmg.ToString();
            m_newDamage.Text.text = newDmg.ToString();

            return;
        }
    }
예제 #14
0
    public void Init(int id, GameObject host, int cam, ENTITY_TYPE bt)
    {
        lastpixelPos = Vector3.zero;
        m_entry      = host;
        m_ID         = id;
        m_TempValue  = 0;
        m_level      = 1;
        isHero       = id == EntityFactory.MainHeroID;
        if (host)
        {
            m_EntryProperty = host.GetComponent <CreatureProperty>();
        }
        bloodType = bt;
        SetCamType(cam);

        setPrafabPer();

        nColor = GameLogicAPI.getCanseckillHpColor(getMonsterSchemeId());
    }
예제 #15
0
        public void ShowOfCrownPage()
        {
            CrownPageItemData pageData = LogicDataCenter.crownPageDataManager.curPageItemData;

            if (pageData == null)
            {
                return;
            }

            CreatureProperty Property = EntityFactory.MainHeroView.Property;

            if (Property == null)
            {
                return;
            }

            ChatSubItemText_CrownGemstoneInfo.ShareToInputField(Property.CreatureName, pageData.nFaceValue, pageData.nPowerValue,
                                                                Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_ID));
        }
예제 #16
0
    private static bool CheckMonsterSkin(Skin skin)
    {
        if (skin.bChecked)
        {
            return(skin.CheckedReslut);
        }
        if (null == skin.ResSkinObj || !skin.ResSkinObj.IsValid())
        {
            skin.bChecked      = true;
            skin.CheckedReslut = false;
            return(false);
        }
        skin.SkinCheckObj = skin.ResSkinObj.InstanceMainRes();
        if (!skin.SkinCheckObj)
        {
            skin.bChecked      = true;
            skin.CheckedReslut = false;

            Debug.LogWarning("CheckMonsterSkin:skin.SkinObj 为 null!!");
            return(false);
        }

        if (skin.SkinType != ENTITY_TYPE.TYPE_MONSTER)
        {
            skin.bChecked      = true;
            skin.CheckedReslut = false;
            skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
            skin.SkinCheckObj = null;
            Debug.LogWarning("皮肤错误:" + "类型与皮肤类型不一致" + "ID:" + skin.nSkinID + "," +
                             "目标类型" + skin.SkinType.ToString() + ",需要类型:" + ENTITY_TYPE.TYPE_MONSTER.ToString() + ",请请[--策划--]检查配置文件");
            return(false);
        }

        GameObject go = skin.SkinCheckObj;

        //先检查skinnedmeshrender,对于animator来说,如果skinnedmeshrender丢失的话,打包的时候会崩溃
        //所以要检查每一个预制体的skinned是否正常
        SkinnedMeshRenderer[] allSkinneds = go.GetComponentsInChildren <SkinnedMeshRenderer>(true);
        foreach (SkinnedMeshRenderer sk in allSkinneds)
        {
            if (!sk.sharedMesh)
            {
                skin.bChecked      = true;
                skin.CheckedReslut = false;
                skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
                skin.SkinCheckObj = null;
                Debug.LogWarning("ID:" + skin.nSkinID + ",名字:" + go.name + "丢失mesh,请[策划]检查资源");
                return(false);
            }
        }

        Transform  SkinDataTransform = go.transform.FindChild("SkinDataObj");
        GameObject SkinDataObj       = null;

        if (null != SkinDataTransform)
        {
            SkinDataObj = SkinDataTransform.gameObject;
        }
        else
        {
            skin.bChecked      = true;
            skin.CheckedReslut = false;
            skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
            skin.SkinCheckObj = null;
            Debug.LogWarning("皮肤错误:" + "对应皮肤预制体找不到SkinDataObj" + "ID:" + skin.nSkinID + ",名字:" + go.name + "请请[--策划--]检查预制体!");
            return(false);
        }

        CreatureProperty cp = SkinDataObj.GetComponent <CreatureProperty>();

        if (!cp)
        {
            skin.bChecked      = true;
            skin.CheckedReslut = false;
            skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
            skin.SkinCheckObj = null;
            Debug.LogWarning("皮肤错误:" + "对应的皮肤上的SkinDataObj没有CreatureProperty组件,ID:" + skin.nSkinID + ",名字:" + go.name +
                             ",请请[--策划--]在Unity中检查对应的皮肤预制");
            return(false);
        }

        MonsterSkinConfig msp = SkinDataObj.GetComponent <MonsterSkinConfig>();

        if (!msp)
        {
            skin.bChecked      = true;
            skin.CheckedReslut = false;
            skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
            skin.SkinCheckObj = null;
            Debug.LogWarning("皮肤错误:" + "对应的皮肤上的SkinDataObj没有MonsterSkinConfig组件,ID:" + skin.nSkinID + ",名字:" + go.name +
                             ",请请[--策划--]在Unity中检查对应的皮肤预制");
            return(false);
        }
        skin.skinConfig = msp;
        Animator HostAnimator = null;

        if (!skin.isStaticSkin)
        {
            HostAnimator = go.GetComponent <Animator>();
            if (!HostAnimator)
            {
                skin.bChecked      = true;
                skin.CheckedReslut = false;
                skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
                skin.SkinCheckObj = null;
                Debug.LogWarning("皮肤错误:" + "对应的皮肤上的MonsterStateMachineParams的HostAnimator成员为null,ID:" + skin.nSkinID + ",名字:" + go.name +
                                 ",请请[--策划--]在Unity中检查对应的皮肤预制");
                return(false);
            }

            if (HostAnimator.runtimeAnimatorController == null || HostAnimator.avatar == null)
            {
                skin.bChecked      = true;
                skin.CheckedReslut = false;
                skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
                skin.SkinCheckObj = null;
                Debug.LogWarning("皮肤错误:" + "对应的皮肤上的Animator中Controller或者avator为null,ID:" + skin.nSkinID + ",名字:" + go.name +
                                 ",请请[--策划--]在Unity中检查对应的皮肤预制");
                return(false);
            }
        }
        //Editor模式下检查资源
        if (Application.isEditor)
        {
            SkinnedMeshRenderer[] renders = skin.SkinCheckObj.GetComponentsInChildren <SkinnedMeshRenderer>();
            foreach (SkinnedMeshRenderer r in renders)
            {
                if (!r.sharedMesh)
                {
                    Debug.LogWarning(skin.ResSkinObj.AssetName + "Mesh资源丢失!请请[--策划--]检查资源或预制体");
                }

                if (!r.sharedMaterial)
                {
                    Debug.LogWarning(skin.ResSkinObj.AssetName + "材质资源丢失!请请[--策划--]检查资源或预制体");
                }
            }
        }
        skin.ResSkinObj.DestroyInstanceRes(ref skin.SkinCheckObj);
        skin.bChecked      = true;
        skin.CheckedReslut = true;
        skin.SkinCheckObj  = null;
        return(true);
    }
예제 #17
0
파일: EntityView.cs 프로젝트: zwong91/Titan
        /// <summary>
        /// 绑定MONSTER组件
        /// </summary>
        /// <returns></returns>
        private bool BindMonsterComponent()
        {
            CreatureProperty property = m_gameObject.GetComponent <CreatureProperty>();
            BaseStateMachine fsm      = m_gameObject.GetComponent <BaseStateMachine>();

            bool isWard = false;

            if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_AS_WARD))
            {
                isWard = true;
            }


            if (property == null || fsm == null)
            {
                Trace.Log("entity_bindMonsterComponent failed. CreatureProperty==null or BaseStateMachine == null !!!");
                return(false);
            }


            fsm.isNotAttack = false;
            if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_NOT_SELECT) && !isWard)
            {
                m_gameObject.layer = LayerMask.NameToLayer(Config.LayerNeutrality);
                fsm.baseLayer      = LayerMask.NameToLayer(Config.LayerNeutrality);
                fsm.pickableCount  = 1;
                //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
                //if (screenCastLayer != null)
                //{
                //    screenCastLayer.setLayer(Config.LayerNeutrality);
                //}
            }
            else if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_NOT_ATTACK))
            {
                m_gameObject.layer = LayerMask.NameToLayer(Config.LayerMonsterEnemy);
                fsm.baseLayer      = LayerMask.NameToLayer(Config.LayerMonsterEnemy);
                fsm.pickableCount  = 1;
                fsm.isNotAttack    = true;
            }
            else
            {
                switch (CampFlag)
                {
                case CampFlag.CampFlag_Friend:
                {
                    string layerName = Config.LayerMonsterFriend;
                    if (isWard)
                    {
                        layerName = Config.LayerWard_Friend;
                    }

                    m_gameObject.layer = LayerMask.NameToLayer(layerName);
                    fsm.baseLayer      = LayerMask.NameToLayer(layerName);
                    fsm.pickableCount  = 1;
                    //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
                    //if (screenCastLayer != null)
                    //{
                    //    //screenCastLayer.setLayer(Config.LayerScreenRaycastFriend);
                    //    screenCastLayer.setLayer(layerName);
                    //}
                }
                break;

                case CampFlag.CampFlag_Enemy:
                {
                    string layerName = Config.LayerMonsterEnemy;
                    if (isWard)
                    {
                        layerName = Config.LayerWard_Enemy;
                    }

                    m_gameObject.layer = LayerMask.NameToLayer(layerName);
                    fsm.baseLayer      = LayerMask.NameToLayer(layerName);
                    fsm.pickableCount  = 1;
                    //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
                    //if (screenCastLayer != null)
                    //{
                    //    //screenCastLayer.setLayer(Config.LayerScreenRaycastEnemy);
                    //    screenCastLayer.setLayer(layerName);
                    //}
                }
                break;

                default:
                    break;
                }
            }
            return(true);
        }
예제 #18
0
파일: EntityView.cs 프로젝트: zwong91/Titan
        /// <summary>
        /// 绑定一般角色组件
        /// </summary>
        /// <returns></returns>
        private bool BindPlayerComponent()
        {
            //Trace.Log("BindPlayerComponent() -> Player, id=" + ID.ToString());

            CreatureProperty property = m_gameObject.GetComponent <CreatureProperty>();
            BaseStateMachine fsm      = m_gameObject.GetComponent <BaseStateMachine>();

            if (property == null || fsm == null)
            {
                Trace.Log("entity_bindPlayerComponent failed. CreatureProperty==null or BaseStateMachine == null !!!");
                return(false);
            }
            fsm.isNotAttack = false;
            if (0 != (InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_NOT_SELECT))
            {
                m_gameObject.layer = LayerMask.NameToLayer(Config.LayerNeutrality);
                fsm.baseLayer      = LayerMask.NameToLayer(Config.LayerNeutrality);
                fsm.pickableCount  = 1;
                //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
                //if (screenCastLayer != null)
                //{
                //    screenCastLayer.setLayer(Config.LayerNeutrality);
                //}
            }
            else
            {
                switch (CampFlag)
                {
                case CampFlag.CampFlag_Friend:
                {
                    m_gameObject.layer = LayerMask.NameToLayer(Config.LayerPlayerFriend);
                    fsm.baseLayer      = LayerMask.NameToLayer(Config.LayerPlayerFriend);
                    fsm.pickableCount  = 1;
                    //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
                    //if (screenCastLayer != null)
                    //{
                    //    //screenCastLayer.setLayer(Config.LayerScreenRaycastFriend);
                    //    screenCastLayer.setLayer(Config.LayerPlayerFriend);
                    //}
                }
                break;

                case CampFlag.CampFlag_Enemy:
                {
                    m_gameObject.layer = LayerMask.NameToLayer(Config.LayerPlayerEnemy);
                    fsm.baseLayer      = LayerMask.NameToLayer(Config.LayerPlayerEnemy);
                    fsm.pickableCount  = 1;
                    //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
                    //if (screenCastLayer != null)
                    //{
                    //    //screenCastLayer.setLayer(Config.LayerScreenRaycastEnemy);
                    //    screenCastLayer.setLayer(Config.LayerPlayerEnemy);
                    //}
                }
                break;

                default:
                    break;
                }
            }

            fsm.maxRunForwardSpeed  = property.runSpeed_Forward;
            fsm.maxRunBackwardSpeed = property.runSpeed_Back;
            fsm.maxRunSidewaySpeed  = property.runSpeed_LeftRight;

            if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.StateMachine != null && this.StateMachine != null)
            {
                if (EntityFactory.MainHeroView.StateMachine.PK_targetID == this.ID)
                {
                    this.StateMachine.setPK(true);
                }
                else
                {
                    this.StateMachine.setPK(false);
                }
            }

            return(true);
        }
예제 #19
0
파일: EntityView.cs 프로젝트: zwong91/Titan
        /// <summary>
        /// 绑定主角组件
        /// </summary>
        /// <returns></returns>
        private bool BindHeroComponent()
        {
            Trace.Log("BindHeroComponent() -> Hero, id=" + ID.ToString());

            CreatureProperty property = this.Property;
            BaseStateMachine fsm      = this.StateMachine;

            if (property == null || fsm == null)
            {
                Trace.Log("BindHeroComponent failed. CreatureProperty==null or BaseStateMachine == null !!!");
                return(false);
            }

            m_gameObject.layer = LayerMask.NameToLayer(Config.LayerHero);
            fsm.baseLayer      = LayerMask.NameToLayer(Config.LayerHero);
            fsm.pickableCount  = 1;
            fsm.isNotAttack    = false;
            MouseCtrl mousectrl = m_gameObject.GetComponent <MouseCtrl>();

            if (mousectrl == null)
            {
                mousectrl = m_gameObject.AddComponent <MouseCtrl>();
            }
            m_DynamicCommopnent.AddLast(mousectrl);
            SkillCtrl skillctrl = m_gameObject.GetComponent <SkillCtrl>();

            if (skillctrl == null)
            {
                skillctrl = m_gameObject.AddComponent <SkillCtrl>();
                skillctrl.resetOrderset(0);//property.SkillOrderSetName);
            }
            m_DynamicCommopnent.AddLast(skillctrl);
            ScreenRaycast raycast = m_gameObject.GetComponent <ScreenRaycast>();

            if (raycast == null)
            {
                raycast = m_gameObject.AddComponent <ScreenRaycast>();
            }
            m_DynamicCommopnent.AddLast(raycast);

            fsm.isHero     = true;
            fsm.canControl = true;

            SoldierController soliderController = m_gameObject.GetComponent <SoldierController>();

            if (soliderController == null)
            {
                soliderController = m_gameObject.AddComponent <SoldierController>();
            }
            m_DynamicCommopnent.AddLast(soliderController);

            if (StageManager.Instance.CurPermissionState == EStage_PermissionState.ESPS_OB)
            {
                OBController obController = m_gameObject.GetComponent <OBController>();
                if (obController == null)
                {
                    obController = m_gameObject.AddComponent <OBController>();
                }

                m_DynamicCommopnent.AddLast(obController);
            }

            fsm.maxRunForwardSpeed  = property.runSpeed_Forward;
            fsm.maxRunBackwardSpeed = property.runSpeed_Back;
            fsm.maxRunSidewaySpeed  = property.runSpeed_LeftRight;

            //ScreenCastLayer screenCastLayer = m_gameObject.GetComponent<ScreenCastLayer>();
            //if (screenCastLayer != null)
            //{
            //    screenCastLayer.setHero(true);
            //    GameObject.ResNode.DestroyRes(ref screenCastLayer);
            //}

            return(true);
        }
예제 #20
0
파일: EntityView.cs 프로젝트: zwong91/Titan
        /// <summary>
        /// 初始化创建数据
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public bool InitBuildeData(EntityViewItem item)
        {
            if (m_gameObject == null)
            {
                Trace.LogError("没有加载游戏对象导致初始化创建数据失败!id=" + item.EntityID);
                return(false);
            }
            m_stateMachine = m_gameObject.GetComponent <BaseStateMachine>();
            if (m_stateMachine == null)
            {
                Trace.LogError("没有加载实体状态机导致初始化创建数据失败!id=" + item.EntityID);
                return(false);
            }
            m_stateMachine.Init();
            m_property = m_gameObject.GetComponent <CreatureProperty>();
            if (m_property == null)
            {
                Trace.LogError("没有加载生物属性导致初始化创建数据失败!id=" + item.EntityID);
                return(false);
            }

            // 是否为主角,1=主角
            IsHero = (item.byIsHero == 1);

            if (IsHero)
            {
                Property.PropertyMaxLimit = ENTITY_PROPERTY.PROPERTY_MAX;
            }

            if (!Property.Create())
            {
                return(false);
            }

            // 阵营标识
            CampFlag = (CampFlag)item.byCampFlag;

            // 实体标识
            InitMaskFlag = item.nMaskFlag;

            // 附加数据,怪物时为怪物类型
            if (ENTITY_TYPE.TYPE_MONSTER == (ENTITY_TYPE)item.EntityType)
            {
                //m_nFlag = (item.ndata1 == (int)MONSTER_TYPE.MONSTER_TYPE_TOWER ? 1 : 0);
                m_nFlag = item.ndata1;
            }

            m_nSight = item.nSight;

            m_BossBloodShowDistance = item.nBossBloodShowDistance;
            m_BossBloodShowPriority = item.nBossBloodPriority;

            // 绑定其他游戏组件对象
            if (!BindGameCompent())
            {
                return(false);
            }

            // 设置属性所属主体对象
            Property.Master = this;
            // 名字
            Property.CreatureName = item.szName;
            // 模型路径
            Property.ModelPath = item.szModelPath;

            // 英雄ID
            Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_VOCATION, item.nHeroID);

            // 皮肤ID
            Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN, item.nSkinID);

            // 性别
            Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_SEX, item.bySexType);
            // 等级
            Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL, item.nLevel);
            // 阵营
            Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_CAMP, item.byCamp);

            // 标志位
            Property.SetNumProp(ENTITY_PROPERTY.PROPERTY_MASK, item.nMaskFlag);

            // 设置对象有效
            m_isValid = true;

            //Trace.Emphasize("初始化实体完成! id=" + ID);
            return(true);
        }
예제 #21
0
    // 所有属性必须在Copy函数中拷贝一遍,才不会出BUG!!!
    public void Copy(CreatureProperty src)
    {
        runSpeed_Forward     = src.runSpeed_Forward;
        runSpeed_Back        = src.runSpeed_Back;
        runSpeed_LeftRight   = src.runSpeed_LeftRight;
        walkSpeed_ForawdBack = src.walkSpeed_ForawdBack;
        walkSpeed_LeftRight  = src.walkSpeed_LeftRight;
        enableDodge          = src.enableDodge;
        upGravity            = src.upGravity;
        downGravity          = src.downGravity;
        jumpBaseHeight       = src.jumpBaseHeight;
        jumpDodgeHeight      = src.jumpDodgeHeight;
        floatingMinHeight    = src.floatingMinHeight; //最低浮空高度
        wallClimbSpeed       = src.wallClimbSpeed;    //飞檐走壁上升/下降速度
        wallWalkSpeed        = src.wallWalkSpeed;     //飞檐走壁行走速度

        FPSMode                 = src.FPSMode;
        cameraType              = src.cameraType;
        aimDistance             = src.aimDistance;             //普通瞄准距离
        lockAimDistance         = src.lockAimDistance;         //锁定攻击对象的有效距离
        attackedAimDistance     = src.attackedAimDistance;     //此距离内被其他英雄攻击后选中对方
        attackMoveRange         = src.attackMoveRange;         //此距离内边走边打动作变成原地动作
        maxAttackMoveSpeedScale = src.maxAttackMoveSpeedScale; //攻击工作因为加速而设置状态机的speed时,位移的速度加倍有限,在此设置最大倍数,超过按比例滑步,小于0不起效
        commonAttackSkillID     = src.commonAttackSkillID;     //普通攻击技能ID,用于处理连续普攻导致其他技能无法触发
        animatorCrossSpeed      = src.animatorCrossSpeed;

        selectType            = src.selectType;            //目标选择标识,0表示不开启
        targetFilter          = src.targetFilter;          //目标过滤标识
        selectDrawType        = src.selectDrawType;        //绘制地面选择范围标识,0表示不开启
        selectDrawAttackRange = src.selectDrawAttackRange; //地面选择范围
        selectDrawChooseRange = src.selectDrawChooseRange; //地面选择宽度
        selectDrawTargetType  = src.selectDrawTargetType;  //地面范围标识目标过滤


        shineScale        = src.shineScale;        //scale倍数
        shineSeconds      = src.shineSeconds;      //scale变化持续秒数
        highLightColor    = src.highLightColor;    //高亮颜色
        delightTime       = src.delightTime;       //亮0.1秒后灭
        maxHighLightAlpha = src.maxHighLightAlpha; //高亮alpha

        //起跳,招录,跑步,急停加光效
        effectIDForChangeSkin = src.effectIDForChangeSkin;
        effectIDForJump       = src.effectIDForJump;
        effectIDForLand       = src.effectIDForLand;
        effectIDForRush       = src.effectIDForRush;
        effectIDForScream     = src.effectIDForScream;

        TopInfoHideInDistance = src.TopInfoHideInDistance;

        BloodYOffset    = src.BloodYOffset;
        TopNameYOffset  = src.TopNameYOffset;
        CrossHairOffset = src.CrossHairOffset;

        CrossHairVisible = src.CrossHairVisible;
        MouseAim         = src.MouseAim;

        checkPosition          = src.checkPosition;
        CreatureHeightInMeters = src.CreatureHeightInMeters;
        ScreenCastObject       = src.ScreenCastObject;
        CreatureBoundingRad    = src.CreatureBoundingRad;

        InertiaAcceleration = src.InertiaAcceleration;
        InertiaScale        = src.InertiaScale;
    }
예제 #22
0
 public int GetDamage(CreatureProperty pro)
 {
     return GetDamage(pro, m_evolution);
 }
예제 #23
0
 public int GetDamage(CreatureProperty pro, int evolution)
 {
     int damage = (int)((pro.PhysicalAttackDamage+(Level+m_maxLevel*evolution))*m_damageRatio);
     return (int)(damage + damage*pro.DamageMultiPlier);
 }
예제 #24
0
        /// <summary>
        /// 获取属性对应数值
        /// </summary>
        /// <param name="propName">属性名称</param>
        /// <returns></returns>
        private float getPropertyValue(string propName)
        {
            // 获得主英雄的property
            if (EntityFactory.MainHeroView == null)
            {
                return(.0f);
            }
            CreatureProperty property = EntityFactory.MainHeroView.Property;

            if (property == null)
            {
                return(.0f);
            }

            int nScaleRatio   = 100;
            int nScaleRatioEx = 10000;

            switch (propName)
            {
            case "CPA":
            case "PA":
            case "PPA":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PA));
            }

            case "CPD":
            case "PD":
            case "PPD":
            case "PDFA1":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PD));
            }

            case "CMA":
            case "MA":
            case "PMA":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MA));
            }

            case "CMD":
            case "MD":
            case "PMD":
            case "MDFA1":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MD));
            }

            case "CHP":
            case "HP":
            case "PHP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP));
            }

            case "CMP":
            case "MP":
            case "PMP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MP));
            }

            case "CCRC":
            case "CRC":
            case "PCRC":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_CRC) / nScaleRatio);
            }

            case "CSD":
            case "SD":
            case "PSD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SD));
            }

            case "_PASD":            // 攻击速度(放大ZOOM_IN_MULTIPLE倍)
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PASD) / nScaleRatio);
            }

            case "CPASD":
            case "PASD":
            case "PPASD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_AF) / nScaleRatio);
            }

            case "CHPRY":
            case "HPRY":
            case "PHPRY":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_HP_REPLY));
            }

            case "CMPRY":
            case "MPRY":
            case "PMPRY":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MP_REPLY));
            }

            case "LEVEL":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_LEVEL));
            }

            case "COOL":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_COOL_REDUCE) / nScaleRatio);
            }

            case "MMP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_MP));
            }

            case "MHP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MAX_HP));
            }

            case "BPA":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PA) / nScaleRatio);
            }

            case "BMA":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_MA) / nScaleRatio);
            }

            case "BPD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PD) / nScaleRatio);
            }

            case "BMD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_MD) / nScaleRatio);
            }

            case "BSD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_SD) / nScaleRatio);
            }

            case "BPASD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_AF) / nScaleRatioEx);
            }

            case "BCRC":
            {
                return(0.0f);
            }

            case "BCOOL":
            {
                return(0.0f);
            }

            case "APA":
            {
                float fBasePA    = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PA) / 100.0f;           // 基础物理攻击
                float fAppendPA  = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PA)) / 100.0f;       // 附加物理攻击
                float fAppendPPA = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_PA)) / 10000.0f; // 附加百分比物理攻击
                //Trace.Log("APA: 基础物理攻击=" + property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_PA).ToString()
                //    + ", 附加物理攻击="+ property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PA).ToString()
                //    + ",附加百分比物理攻击="+ property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_PA).ToString());
                return(fAppendPA + (fBasePA + fAppendPA) * fAppendPPA);
            }

            case "AMA":                                                                                             // AMA = fAppendMA + (fBaseMA + fAppendMA) * fAppendPMA
            {
                float fBaseMA    = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_MA);                    // 基础法术攻
                float fAppendMA  = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_MA)) / 100.0f;       // 附加法术攻击
                float fAppendPMA = ((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_MA)) / 10000.0f; // 附加百分比法术攻
                return(fAppendMA + (fBaseMA + fAppendMA) * fAppendPMA);
            }

            case "APD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PD) / nScaleRatio);
            }

            case "AMD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_MD) / nScaleRatio);
            }

            case "ASD":
            {
                float fCurentValue = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SD);
                float fBaseSD      = (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_SD) / nScaleRatio;
                return(fCurentValue - fBaseSD);
            }

            case "APASD":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_AF) / nScaleRatio - (float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_BASE_AF) / nScaleRatioEx);
            }

            case "ACRC":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_CRC) / nScaleRatioEx);
            }

            case "ACOOL":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_COOL_REDUCE) / nScaleRatio);
            }

            case "PAF":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_AF));
            }

            case "PDP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PDP));
            }

            case "PPDP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_PDP) / nScaleRatio);
            }

            case "MDP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MDP));
            }

            case "PMDP":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_APPEND_PCT_MDP) / nScaleRatio);
            }

            case "PPDR":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_PDRAINS) / nScaleRatio);
            }

            case "PMDR":
            {
                return((float)property.GetNumProp(ENTITY_PROPERTY.PROPERTY_PCT_MDRAINS) / nScaleRatio);
            }

            default:
                return(0.0f);
            }
        }
예제 #25
0
    public void CopyTo(CreatureProperty other)
    {
        other.m_owner = m_owner;

        other.m_baseProperty = m_baseProperty;
        other.m_hp = m_hp;
        other.m_alphaMaxHP = m_alphaMaxHP;
        other.m_alphaPhysicalDamage = m_alphaPhysicalDamage;
        other.m_alphaCriticalRatio = m_alphaCriticalRatio;
        other.m_alphaCriticalDamage = m_alphaCriticalDamage;
        other.m_alphaPhysicalDefencePoint = m_alphaPhysicalDefencePoint;
        other.m_damageReduction = m_damageReduction;
        other.m_alphaMoveSpeed = m_alphaMoveSpeed;
        other.m_betaMoveSpeed = m_betaMoveSpeed;
        other.m_alphaLifeSteal = m_alphaLifeSteal;
        other.m_gainExtraExp = m_gainExtraExp;
        other.m_gainExtraGold = m_gainExtraGold;
        other.m_alphaAttackCoolTime = m_alphaAttackCoolTime;
        other.m_level = m_level;
        other.m_exp = m_exp;
        other.m_bulletAlphaLength = m_bulletAlphaLength;
        other.m_tabDamage = m_tabDamage;

        other.m_shield = m_shield;
        other.m_bombRange = m_bombRange;
        other.m_attackRange = m_attackRange;
        other.m_alphaMaxSP = m_alphaMaxSP;
        other.m_sp = m_sp;
        other.m_alphaSPRegen = m_alphaSPRegen;
        other.m_callableFollowers = m_callableFollowers;
        other.m_damageMultiPlier = m_damageMultiPlier;
        other.m_evolution = m_evolution;
    }
예제 #26
0
 public void ChangeHostEntity(GameObject entity)
 {
     m_Entity = entity;
     m_Property = entity.GetComponent<CreatureProperty>();
 }
예제 #27
0
        public void ActorInfoChangeUpdate(IntPtr ptrParam, int nPtrLen, int nActorID = nDefaultSelfActorID)
        {
            CheckGetSelfPDBID(ref nActorID);
            if (!actorPlayer.ContainsKey(nActorID))
            {
                return;
            }

            cmd_actor_info_change data = IntPtrHelper.toData <cmd_actor_info_change>(ptrParam);

            switch (data.nType)
            {
            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_LEVEL:
            {
                actorPlayer[nActorID].playerInfo.nLv = data.nValue1;
            }
            break;

            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_PKWINNUM:
            {
                actorPlayer[nActorID].playerInfo.nPKWinNum = data.nValue1;
            }
            break;

            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_PKTOTALNUM:
            {
                actorPlayer[nActorID].playerInfo.nPKTotalNum = data.nValue1;
            }
            break;

            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_EXP:
            {
                actorPlayer[nActorID].playerInfo.ulCurrentExp = (uint)data.nValue1;
                actorPlayer[nActorID].playerInfo.ulNeedExp    = (uint)data.nValue2;
            }
            break;

            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_NAME:
            {
                actorPlayer[nActorID].playerInfo.chPlayerName = data.str1;

                if (EntityFactory.MainHeroView != null)
                {
                    CreatureProperty property = EntityFactory.MainHeroView.Property;
                    if (property != null)
                    {
                        property.CreatureName = data.str1;
                    }
                }
            }
            break;

            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_GLORY:
            {
                for (int i = 0; i < (int)ENACHIEVE.ENACHIEVE_MAX; i++)
                {
                    actorPlayer[nActorID].playerInfo.nGlory[i]  = data.nGlory[i];
                    actorPlayer[nActorID].playerInfo.llWarID[i] = data.llWarID[i];
                }
            }
            break;

            case (int)ENPLAYERINFOTYPE.ENPLAYERINFOTYPE_RANKNUM:
            {
                actorPlayer[nActorID].playerInfo.nRankMatchNum = data.nValue1;
                actorPlayer[nActorID].playerInfo.nRankWinNum   = data.nValue2;
            }
            break;

            default:
                break;
            }
        }