示例#1
0
    private void CreateTrap(IEntityDataStruct entityDataStruct)
    {
        SMsgPropCreateEntity_SC_Trap sMsgPropCreateEntity_SC_Trap = (SMsgPropCreateEntity_SC_Trap)entityDataStruct;
        string trapName   = "bushoujia";
        var    trapPrefab = this.FindByName(trapName);

        //var trapPrefab = EctypeConfigManager.Instance.TrapConfigList[sMsgPropCreateEntity_SC_Trap.BaseValue.OBJECT_FIELD_ENTRY_ID]._TrapPrefab;

        var pos = Vector3.zero;

        pos = pos.GetFromServer(sMsgPropCreateEntity_SC_Trap.TrapX, sMsgPropCreateEntity_SC_Trap.TrapY);
        //var pos = new Vector3(120, 0, -100);
        ////TraceUtil.Log("创建TrapID=====>>>>" + sMsgPropCreateEntity_SC_Trap.SMsg_Header.uidEntity);

        var trap          = (GameObject)GameObject.Instantiate(trapPrefab, pos, Quaternion.identity);
        var trapBehaviour = trap.GetComponent <TrapBehaviour>();

        trapBehaviour.TrapDataModel = sMsgPropCreateEntity_SC_Trap;

        EntityModel trapDataModel = new EntityModel();

        trapDataModel.GO               = trap;
        trapDataModel.Behaviour        = trapBehaviour;
        trapDataModel.EntityDataStruct = sMsgPropCreateEntity_SC_Trap;

        TrapManager.GetInstance();
        EntityController.Instance.RegisteEntity(sMsgPropCreateEntity_SC_Trap.SMsg_Header.uidEntity, trapDataModel);
    }
示例#2
0
        void Start()
        {
            if (GameDataManager.Instance.DataIsNull(DataType.InitializeEctype))
            {
                return;
            }

            SMSGEctypeInitialize_SC sMSGEctypeInitialize_SC = (SMSGEctypeInitialize_SC)GameDataManager.Instance.PeekData(DataType.InitializeEctype);
            var ectypeData = EctypeConfigManager.Instance.EctypeContainerConfigList[sMSGEctypeInitialize_SC.dwEctypeContainerId];

            if (ectypeData.lEctypeType == 9)
            {
                //初始化讨伐副本
                UI.CreatObjectToNGUI.InstantiateObj(Eff_CrusadeBattleStart, transform);
                Timing.SetActive(true);

                StartCoroutine("LateTiming");
                RegisterEventHandler();

                //储存所有玩家信息
                PlayerManager.Instance.PlayerList.ApplyAllItem(p => {
                    IEntityDataStruct ds = p.EntityDataStruct;
                    m_DataStruceList.Add(ds);
                });
            }
        }
示例#3
0
    public void TestBullet(IEntityDataStruct entityDStruct)
    {
        if (!isShowTestBullet)
        {
            return;
        }
        SMsgPropCreateEntity_SC_Bullet bulletSC = (SMsgPropCreateEntity_SC_Bullet)entityDStruct;

        #region 子弹
        //Log.Instance.StartLog();
        //Log.Instance.AddLog("66666", "0", bulletSC.PosX.ToString(), bulletSC.PosY.ToString(), bulletSC.DirX.ToString(), bulletSC.DirY.ToString());
        //Log.Instance.AppendLine();
        #endregion
        //TraceUtil.Log("子弹id=" + bulletSC.BaseValue.OBJECT_FIELD_ENTRY_ID);
        //TraceUtil.Log("子弹类型=" + bulletSC.BaseValue.OBJECT_FIELD_TYPE);
        BulletData bData = SkillDataManager.Instance.GetBulletData(bulletSC.BaseValue.OBJECT_FIELD_ENTRY_ID);

        GameObject bulletGO = CircleGO;

        bool isCircle = true;
        if (bData.m_shapeParam1 == 2)
        {
            //矩形
            bulletGO = SquareGO;
            isCircle = false;
        }

        Vector3 localPos = Vector3.zero.GetFromServer(bulletSC.PosX, bulletSC.PosY);
        localPos = new Vector3(localPos.x, bulletGO.transform.position.y, localPos.z);
        Quaternion quaternion = bulletGO.transform.rotation;
        float      rad        = Mathf.Atan2(-1 * bulletSC.DirY, bulletSC.DirX);
        float      QuaterionY = 90 - rad * Mathf.Rad2Deg;

        //\本地图片反了
        QuaterionY += 180;

        //\test
        if (this.CreateFan(bData, localPos, QuaterionY))
        {
            return;
        }


        if (isShowSquareBullet)
        {
            GameObject TestGO = (GameObject)UnityEngine.Object.Instantiate(bulletGO, localPos, Quaternion.Euler(quaternion.eulerAngles.x, QuaterionY, quaternion.eulerAngles.z));


            if (isCircle)
            {
                TestGO.transform.localScale = new Vector3(TestGO.transform.lossyScale.x * bData.m_shapeParam2, TestGO.transform.lossyScale.y * bData.m_shapeParam2, TestGO.transform.lossyScale.z);
            }
            else
            {
                TestGO.transform.localScale = new Vector3(TestGO.transform.lossyScale.x * bData.m_shapeParam3, TestGO.transform.lossyScale.y * bData.m_shapeParam2, TestGO.transform.lossyScale.z);
            }
        }
    }
示例#4
0
 public void RegisterBox(IEntityDataStruct entityDataStruct)
 {
     if (!GameManager.Instance.CreateEntityIM)
     {
         m_preCreateDamageStructCache.Add(entityDataStruct);
     }
     else
     {
         CreateDamage(entityDataStruct);
     }
 }
示例#5
0
 public void Register(IEntityDataStruct entityDataStruct)
 {
     if (!GameManager.Instance.CreateEntityIM)
     {
         CreateNPC(entityDataStruct, EntityModelPartial.DataStruct);
     }
     else
     {
         CreateNPC(entityDataStruct, EntityModelPartial.GameObject);
     }
 }
示例#6
0
 public void Register(IEntityDataStruct entityDataStruct)
 {
     if (!GameManager.Instance.CreateEntityIM)
     {
         m_preCreatePortalStructCache.Add(entityDataStruct);
     }
     else
     {
         CreatePortal(entityDataStruct);
     }
 }
示例#7
0
 public void Register(IEntityDataStruct entityDataStruct)
 {
     if (!this.m_createTrap)
     {
         m_preCreateTrapStructCache.Add(entityDataStruct);
     }
     else
     {
         CreateTrap(entityDataStruct);
     }
 }
示例#8
0
    private void CreateNPC(IEntityDataStruct entityDataStruct, EntityModelPartial entityModelPartial)
    {
        switch (entityModelPartial)
        {
        case EntityModelPartial.DataStruct:
            m_preCreateNPCStructCache.Add(entityDataStruct);
            break;

        case EntityModelPartial.GameObject:
            var sMsgPropCreateEntity_SC_NPC = (SMsgPropCreateEntity_SC_NPC)entityDataStruct;

            ////TraceUtil.Log("============>>>>>>>>>>.MapID" + sMsgPropCreateEntity_SC_NPC.MapID);
            ////TraceUtil.Log("============>>>>>>>>>.NPCX" + sMsgPropCreateEntity_SC_NPC.NPCX);
            ////TraceUtil.Log("============>>>>>>>>>.BaseValue.OBJECT_FIELD_ENTRY_ID" + sMsgPropCreateEntity_SC_NPC.BaseValue.OBJECT_FIELD_ENTRY_ID);
            ////TraceUtil.Log("============>>>>>>>>>.UnitValue.UNIT_FIELD_DIR" + sMsgPropCreateEntity_SC_NPC.UnitValue.UNIT_FIELD_DIR);
            ////TraceUtil.Log("============>>>>>>>>>.UnitValue.UNIT_FIELD_LEVEL" + sMsgPropCreateEntity_SC_NPC.UnitValue.UNIT_FIELD_LEVEL);
            ////TraceUtil.Log("============>>>>>>>>>.NPCValue.CREATURE_FIELD_CAN_TALK" + sMsgPropCreateEntity_SC_NPC.NPCValue.CREATURE_FIELD_CAN_TALK);

            //string npcName = "NPC_QHY";
            //var npcPrefab = this.FindByName(npcName);
            ////TraceUtil.Log("npcID==========" + sMsgPropCreateEntity_SC_NPC.BaseValue.OBJECT_FIELD_ENTRY_ID);
            var npcPrefab = NPCConfigManager.Instance.NPCConfigList[sMsgPropCreateEntity_SC_NPC.BaseValue.OBJECT_FIELD_ENTRY_ID].NPCPrefab;
            var pos       = Vector3.zero;
            pos = pos.GetFromServer(sMsgPropCreateEntity_SC_NPC.NPCX, sMsgPropCreateEntity_SC_NPC.NPCY);
            //var pos = new Vector3(100, 0, -100);
            //sMsgPropCreateEntity_SC_NPC.UnitValue.UNIT_FIELD_DIR
            Quaternion npcDir = Quaternion.Euler(0, (float)sMsgPropCreateEntity_SC_NPC.UnitValue.UNIT_FIELD_DIR / 1000f, 0);

            ////TraceUtil.Log("NPC333333333333333333333333NPC===" + sMsgPropCreateEntity_SC_NPC.UnitValue.UNIT_FIELD_DIR);
            var npc = (GameObject)GameObject.Instantiate(npcPrefab, pos, npcDir);

            var npcBehaviour = npc.GetComponent <NPCBehaviour>();

            string npcName    = NPCConfigManager.Instance.NPCConfigList[sMsgPropCreateEntity_SC_NPC.BaseValue.OBJECT_FIELD_ENTRY_ID]._szName;
            string szNpcTitle = NPCConfigManager.Instance.NPCConfigList[sMsgPropCreateEntity_SC_NPC.BaseValue.OBJECT_FIELD_ENTRY_ID]._npcTitle;
            var    npcTitleGo = (GameObject)GameObject.Instantiate(NpcTitle, Vector3.left * 2000, Quaternion.identity);
            npcTitleGo.transform.parent     = BattleManager.Instance.UICamera.transform;
            npcTitleGo.transform.localScale = new Vector3(20, 20, 20);
            npcTitleGo.GetComponent <NPCTitle>().SetNpcTitle(npcName, szNpcTitle, npc.transform.FindChild("NPCTitle").position);

            npcBehaviour.NPCDataModel = sMsgPropCreateEntity_SC_NPC;

            EntityModel npcDataModel = new EntityModel();
            npcDataModel.Behaviour        = npcBehaviour;
            npcDataModel.GO               = npc;
            npcDataModel.EntityDataStruct = sMsgPropCreateEntity_SC_NPC;

            NPCManager.GetInstance();
            EntityController.Instance.RegisteEntity(entityDataStruct.SMsg_Header.uidEntity, npcDataModel);
            break;
        }
    }
示例#9
0
 public void Register(IEntityDataStruct entityDataStruct)
 {
     if (MonsterManager.Instance != null)
     {
         if (!GameManager.Instance.CreateEntityIM)
         {
             m_preCreateMonsterStructCache.Add(entityDataStruct);
         }
         else
         {
             CreateMonster(entityDataStruct);
         }
     }
 }
示例#10
0
    private void CreatePortal(IEntityDataStruct entityDataStruct)
    {
        var    sMsgPropCreateEntity_SC_Channel = (SMsgPropCreateEntity_SC_Channel)entityDataStruct;
        string portalName   = "chuansongdian";
        var    portalPrefab = this.FindByName(portalName);
        var    pos          = Vector3.zero;

        TraceUtil.Log("传送门的生成UID" + sMsgPropCreateEntity_SC_Channel.SMsg_Header.uidEntity + " -- responseOn:" + GameManager.Instance.ResponseHandlerOn.ToString());

        sMsgPropCreateEntity_SC_Channel.ChannelValue.MAST_FIELD_VISIBLE_TYPE =
            EctypeConfigManager.Instance.PortalConfigList[sMsgPropCreateEntity_SC_Channel.BaseValue.OBJECT_FIELD_ENTRY_ID]._portalType;

        pos = pos.GetFromServer(sMsgPropCreateEntity_SC_Channel.ChannelX, sMsgPropCreateEntity_SC_Channel.ChannelY);

        var portal          = (GameObject)GameObject.Instantiate(portalPrefab, pos, Quaternion.identity);
        var portalBehaviour = portal.GetComponent <PortalBehaviour>();

        //加入箭头挂载脚本
        if (ArrowManager.Instance == null)
        {
            TraceUtil.Log(SystemModel.Common, TraceLevel.Error, "[ArrowManager.Instance == null]");
        }
        else
        {
            ArrowManager.Instance.AddChunnelArrow(portal);
        }

        portalBehaviour.PortalDataModel = sMsgPropCreateEntity_SC_Channel;

        bool Active = sMsgPropCreateEntity_SC_Channel.ChannelValue.MAST_FIELD_VISIBLE_STATE == 0 ? true : false;

        if (portal.activeSelf != Active)
        {
            portal.SetActive(Active);
        }



        EntityModel portalDataModel = new EntityModel();

        portalDataModel.GO               = portal;
        portalDataModel.Behaviour        = portalBehaviour;
        portalDataModel.EntityDataStruct = sMsgPropCreateEntity_SC_Channel;

        PortalManager.GetInstance();
        EntityController.Instance.RegisteEntity(entityDataStruct.SMsg_Header.uidEntity, portalDataModel);

        //if (!AddPortalObjToList(portalDataModel)) { TraceUtil.Log(SystemModel.Common,TraceLevel.Error,"传送门列表已满:PortalFactory.PortalFactoryObjcetList"); }
    }
示例#11
0
 /// <summary>
 ///  收到注册玩家信息,判定玩家创建开关是否打开,如未打开则存入
 /// </summary>
 /// <param name="sMsgPropCreateEntity_SC_Player"></param>
 public void Register(IEntityDataStruct entityDataStruct)
 {
     if (PlayerManager.Instance != null)
     {
         CreatePlayer(entityDataStruct, EntityModelPartial.DataStruct);
         if (!GameManager.Instance.CreateEntityIM)
         {
             m_preCreatePlayerStructCache.Add(entityDataStruct);
         }
         else
         {
             CreatePlayer(entityDataStruct, EntityModelPartial.GameObject);
         }
     }
 }
示例#12
0
    public void OnPlayerUpdate(INotifyArgs notifyArgs)
    {
        if (m_FSMSystem.CurrentStateID == StateID.PlayerDie)
        {
            return;
        }
        int showUpdateLevel    = CommonDefineManager.Instance.CommonDefineFile._dataTable.UpgradeAnimationStartLevel;
        int currentLevel       = PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL;
        IEntityDataStruct data = (IEntityDataStruct)(notifyArgs);

        if (RoleDataModel.SMsg_Header.uidEntity == data.SMsg_Header.uidEntity && currentLevel >= showUpdateLevel)
        {
            GameObject levelUpEffect = GameObjectPool.Instance.AcquireLocal(PlayerDataManager.Instance.LevelUpEffectPrefab, Vector3.zero, Quaternion.identity);
            levelUpEffect.transform.parent        = this.ThisTransform;
            levelUpEffect.transform.localPosition = Vector3.zero;
            SoundManager.Instance.PlaySoundEffect("Sound_UIEff_Upgrade");
        }
    }
示例#13
0
        public void Show(SHitNumInfo hitNumInfo, IEntityDataStruct dataStruct, int allHit, bool isCaption, float delayTimeShow)
        {
            this.m_hitNum = hitNumInfo.dwHitNum;
            this.m_allHit = allHit;

            SoundManager.Instance.PlaySoundEffect("Sound_UIEff_CoopJudgeFlyin");

            Tip_Caption.SetActive(isCaption);
            Tip_Member.SetActive(!isCaption);

            if (dataStruct is SMsgPropCreateEntity_SC_MainPlayer)
            {
                var heroProp = (SMsgPropCreateEntity_SC_MainPlayer)dataStruct;
                Label_Combat.text = heroProp.UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_FIGHTING.ToString();
                Label_Name.text   = heroProp.Name;
                var resData = CommonDefineManager.Instance.CommonDefine.HeroIcon_MailFriend.FirstOrDefault(
                    P => P.VocationID == heroProp.PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION &&
                    P.FashionID == heroProp.PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_FASHION);
                UI_Head.spriteName       = resData.ResName;
                UI_Profession.spriteName = SpriteName.PROFESSION_CHAR + heroProp.PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION.ToString();
            }
            else if (dataStruct is SMsgPropCreateEntity_SC_OtherPlayer)
            {
                var heroProp = (SMsgPropCreateEntity_SC_OtherPlayer)dataStruct;
                Label_Combat.text = heroProp.UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_FIGHTING.ToString();
                Label_Name.text   = heroProp.Name;
                var resData = CommonDefineManager.Instance.CommonDefine.HeroIcon_MailFriend.FirstOrDefault(
                    P => P.VocationID == heroProp.PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION &&
                    P.FashionID == heroProp.PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_FASHION);
                UI_Head.spriteName       = resData.ResName;
                UI_Profession.spriteName = SpriteName.PROFESSION_CHAR + heroProp.PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION.ToString();
            }

            Slider_Hit.sliderValue = 0;
            Label_Hit.text         = "";


            StartCoroutine(LateShow(delayTimeShow));
        }
示例#14
0
        void ShowBackgroundOverHandle(object obj)
        {
            int allHit = 0;

            m_result.sHitNumInfo.ApplyAllItem(p => allHit += p.dwHitNum);
            if (allHit <= 0)
            {
                allHit = 1;
            }

            for (int i = 0; i < m_result.byPlayerNum; i++)
            {
                if (m_dataStructList.Any(p => p.SMsg_Header.uidEntity == m_result.sHitNumInfo[i].uid))
                {
                    IEntityDataStruct dataStruct = m_dataStructList.SingleOrDefault(p => p.SMsg_Header.uidEntity == m_result.sHitNumInfo[i].uid);
                    GameObject        heroItem   = UI.CreatObjectToNGUI.InstantiateObj(HeroInfoItemPrefab, transform);
                    heroItem.transform.position = HeroInfoPoint[i].position;
                    CrusadeSettlementHeroInfoItem item = heroItem.GetComponent <CrusadeSettlementHeroInfoItem>();
                    item.Show(m_result.sHitNumInfo[i], dataStruct, allHit, i == 0, i * 0.1f);
                }
            }

            StartCoroutine(AppearRatingInfo(DELAYTIME_RATINGINFO + m_result.byPlayerNum * 0.1f));
        }
示例#15
0
    private void CreateDamage(IEntityDataStruct entityDataStruct)
    {
        var sMsgPropCreateEntity_SC_Damage = (BoxSubMsgEntity)entityDataStruct;
        //string damageName = "xiangzi";
        //var damagePrefab = this.FindByName(damageName);

        //\Edit by lee
        var damageList = EctypeConfigManager.Instance.DamageConfigList;

        if (!damageList.ContainsKey(sMsgPropCreateEntity_SC_Damage.BaseValues.OBJECT_FIELD_ENTRY_ID))
        {
            return;
        }
        var damageData   = damageList[sMsgPropCreateEntity_SC_Damage.BaseValues.OBJECT_FIELD_ENTRY_ID];
        var damagePrefab = damageData.DamagePrefab;


        var pos       = Vector3.zero;
        var serverPos = pos.GetFromServer(sMsgPropCreateEntity_SC_Damage.BoxX, sMsgPropCreateEntity_SC_Damage.BoxY);

        pos = CountDropPos(serverPos);

        var damage          = (GameObject)GameObject.Instantiate(damagePrefab, pos, damagePrefab.transform.rotation);
        var damageBehaviour = damage.GetComponent <DamageBehaviour>();

        GameObject m_popupWidget = null;//字体

        var itemData = ItemDataManager.Instance.GetItemData(damageData._correspondingItemID);

        if (itemData != null)
        {
            //武器特效
            var effDrops = GameManager.Instance.DamageFactory.EffDrops;
            if (itemData._ColorLevel < effDrops.Length)
            {
                GameObject effect = (GameObject)Instantiate(effDrops[itemData._ColorLevel]);
                effect.transform.parent        = damage.transform;
                effect.transform.localPosition = new Vector3(0, 1f, 0);
            }

            //字体
            Vector3 uiPos = PopupTextController.GetPopupPos(damage.transform.position, PopupObjManager.Instance.UICamera);
            m_popupWidget = GameObjectPool.Instance.AcquireLocal(EquipNamePrefab, uiPos, Quaternion.identity);
            GameObject         textShadow  = GameObjectPool.Instance.AcquireLocal(EquipNameShadowPrefab, uiPos, Quaternion.identity);
            EquipTextBehaviour etBehaviour = m_popupWidget.GetComponent <EquipTextBehaviour>();
            etBehaviour.Init(damage.transform);
            var scale       = m_popupWidget.transform.localScale;
            var shadowScale = textShadow.transform.localScale;
            m_popupWidget.transform.parent = PopupObjManager.Instance.UICamera.transform;
            textShadow.transform.parent    = m_popupWidget.transform;
            var uilabel = m_popupWidget.GetComponentInChildren <UILabel>();
            uilabel.text = NGUIColor.SetTxtColor(LanguageTextManager.GetString(itemData._szGoodsName), m_TextColors[itemData._ColorLevel]);
            //uilabel.color = NameFontColors[itemData._ColorLevel];
            m_popupWidget.transform.localScale = scale;
            textShadow.transform.localScale    = shadowScale;

            damageBehaviour.TitleRef = m_popupWidget;
        }

        //掉落音效
        switch (damageData._boxType)
        {
        case 2:
            if (itemData._GoodsClass == 1)
            {
                if (itemData._ColorLevel >= 3)
                {
                    SoundManager.Instance.PlaySoundEffect("Sound_UIEff_Drop_Equipment2");
                }
                else
                {
                    SoundManager.Instance.PlaySoundEffect("Sound_UIEff_Drop_Equipment1");
                }
            }
            else
            {
                SoundManager.Instance.PlaySoundEffect("Sound_UIEff_Drop_Item1");
            }
            break;

        case 4:
            SoundManager.Instance.PlaySoundEffect("Sound_UIEff_Drop_Gold");
            break;
        }

        //掉落动画
        var dropBehaviour = damage.GetComponent <GoldBehaviour>();

        if (dropBehaviour != null)
        {
            Vector3 dropPos = serverPos + (pos - serverPos) * CommonDefineManager.Instance.CommonDefine.DropItem_Dis;
            dropBehaviour.Play(m_popupWidget, serverPos, dropPos);
        }

        if (damageBehaviour == null)
        {
            TraceUtil.Log(damageBehaviour.name);
        }
        damageBehaviour.DamageDataModel = sMsgPropCreateEntity_SC_Damage;

        EntityModel damageDataModel = new EntityModel();

        damageDataModel.GO               = damage;
        damageDataModel.Behaviour        = damageBehaviour;
        damageDataModel.EntityDataStruct = sMsgPropCreateEntity_SC_Damage;

        DamageManager.GetInstance();
        EntityController.Instance.RegisteEntity(sMsgPropCreateEntity_SC_Damage.SMsg_Header.uidEntity, damageDataModel);
    }
示例#16
0
 public void Register(IEntityDataStruct entityDStruct)
 {
     CreateBullet(entityDStruct);
 }
示例#17
0
    private void CreateMonster(IEntityDataStruct entityDataStruct)
    {
        EntityModel monsterDataModel = MonsterManager.Instance.GetEntityMode(entityDataStruct.SMsg_Header.uidEntity);

        if (monsterDataModel == null)
        {
            Debug.LogError("monster uid : " + entityDataStruct.SMsg_Header.uidEntity.ToString() + " cant find");
        }
        var sMsgPropCreateEntity_SC_Monster = (SMsgPropCreateEntity_SC_Monster)monsterDataModel.EntityDataStruct;

        int monsterId = sMsgPropCreateEntity_SC_Monster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID;
        //TraceUtil.Log("==>创建怪物ID: " + monsterId);
        var monsterData = BattleConfigManager.Instance.GetMonsterData(monsterId);

        if (monsterData == null)
        {
            Debug.LogWarning("找不到怪物配置");
            return;
        }
        var pos = Vector3.zero;

        pos = pos.GetFromServer(sMsgPropCreateEntity_SC_Monster.MonsterX, sMsgPropCreateEntity_SC_Monster.MonsterY);
        GameObject monsterPrefab = MapResManager.Instance.GetMapMonsterPrefab(monsterId);
        float      angle         = sMsgPropCreateEntity_SC_Monster.MonsterUnitValues.UNIT_FIELD_DIR / 1000f + 90;
        var        monster       = (GameObject)GameObject.Instantiate(monsterPrefab, pos, Quaternion.Euler(0, angle, 0));

        #region edit by lee

        var monsterBehaviour = monster.GetComponent <MonsterBehaviour>();

        if (monsterBehaviour == null)
        {
            Debug.LogWarning("怪物" + monsterId.ToString() + "未挂载脚本");
            monsterBehaviour = monster.AddComponent <MonsterBehaviour>();
        }

        //cache hurt point
        monsterBehaviour.CacheHurtPoint();
        //怪物生成特效
        if (monsterData._bornEffects != "0")
        {
            GameObject bornEffectPrefab = MapResManager.Instance.GetMapEffectPrefab(monsterData._bornEffects);
            if (bornEffectPrefab != null)
            {
                GameObject bornEffect = GameObjectPool.Instance.AcquireLocal(bornEffectPrefab, Vector3.zero, bornEffectPrefab.transform.rotation);
                bornEffect.AddComponent <DestroySelf>();
                bornEffect.transform.position = monster.transform.position;
            }
        }
        //怪物对白
        if (false == BattleManager.Instance.IsHeroFirstDead)
        {
//            if (monsterData._dialogPortrait != "0")
//            {
//                var resData = MapResManager.Instance.GetMapEffectPrefab(monsterData._dialogPortrait);
//                if (resData != null)
//                {
//                    GameObject IconPrefab = CreatObjectToNGUI.InstantiateObj(MonsterDialogPrefab, BattleUIManager.Instance.GetScreenTransform(ScreenPositionType.Center));
//                    IconPrefab.transform.localPosition = new Vector3(-240, 160, 10);//避免和任务指引面板重叠
//                    SirenDialogEctypeBehaviour sirenDialogEctypeBehaviour = IconPrefab.GetComponent<SirenDialogEctypeBehaviour>();
//
//                    sirenDialogEctypeBehaviour.Init(resData, LanguageTextManager.GetString(monsterData._bornDialogue), LanguageTextManager.GetString(monsterData._dialogMonsterName));
//                    if (monsterData._bornSound != "0")
//                    {
//                        SoundManager.Instance.PlaySoundEffect(monsterData._bornSound);
//                    }
//                    IconPrefab.AddComponent<DestroySelf>();
//                }
//            }
            if (monsterData._BornDialogueFulls[0].Portrait != "0")
            {
                GameObject IconPrefab = CreatObjectToNGUI.InstantiateObj(MonsterDialogPrefab, BattleUIManager.Instance.GetScreenTransform(ScreenPositionType.Center));
                SirenDialogEctypeBehaviour sirenDialogEctypeBehaviour = IconPrefab.GetComponent <SirenDialogEctypeBehaviour>();
                sirenDialogEctypeBehaviour.Init(MonsterDialogPrefab, monsterData._BornDialogueFulls);
                if (monsterData._bornSound != "0")
                {
                    SoundManager.Instance.PlaySoundEffect(monsterData._bornSound);
                }
            }
        }

        //特殊镜头
        if (monsterData._cameraFix_pos != Vector3.zero)
        {
            //BattleManager.Instance.FollowCamera.SetFixed(monsterData._cameraFix_pos, monsterData._cameraFix_time);
            BattleManager.Instance.FollowCamera.BeginMoveToPosAndGoBack(monsterData._cameraFix_pos, monsterData._cameraFix_time, monsterData._cameraStay_time, monsterData._cameraBack_time, monsterData._blockPlayerToIdle);
        }

        #endregion


        //TypeID type;
        //EntityModel monsterDataModel = monsterBehaviour.EntityModel = EntityController.Instance.GetEntityModel( entityDataStruct.SMsg_Header.uidEntity, out type);
        //monsterBehaviour.EntityModel.GO = monsterBehaviour.gameObject;
        //monsterBehaviour.EntityModel.Behaviour = monsterBehaviour;


        monsterDataModel.GO        = monster;
        monsterDataModel.Behaviour = monsterBehaviour;
        //monsterDataModel.EntityDataStruct = sMsgPropCreateEntity_SC_Monster;

        monsterBehaviour.EntityModel = monsterDataModel;
        monsterBehaviour.SetMonsterConfigData(monsterData);

        monsterBehaviour.InitFSM();
        //MonsterManager.Instance.Init();

        //出生是否隐藏
        if (sMsgPropCreateEntity_SC_Monster.MonsterValues.MONSTER_FIELD_ISSHOW == 0)
        {
            SetCildLayer(monsterDataModel.GO.transform, 21);           //21=hide
        }

        //血条
        Transform bloodBarMP;
        monster.transform.RecursiveFindObject("BloodBarMP", out bloodBarMP);
        if (null != bloodBarMP)
        {
            GameObject bloodBarPrefab = null;
            switch (sMsgPropCreateEntity_SC_Monster.MonsterValues.MONSTER_FIELD_TYPE)
            {
            case 0:
                bloodBarPrefab = MonsterFactory.Instance.BloobBarPrefab_normal;
                break;

            case 1:
                bloodBarPrefab = MonsterFactory.Instance.BloobBarPrefab;
                break;

            case 2:
                bloodBarPrefab = MonsterFactory.Instance.BloobBarPrefab_boss;
                break;

            case 3:
                bloodBarPrefab = MonsterFactory.Instance.BloobBarPrefab_normal;
                break;

            default:
                break;
            }
            if (bloodBarPrefab != null)
            {
                BloodBarManager.Instance.AttachBarToTarget(sMsgPropCreateEntity_SC_Monster.SMsg_Header.uidEntity, bloodBarMP, bloodBarPrefab);
            }
        }
        //发UI事件,参数 EntityModel
        UIEventManager.Instance.TriggerUIEvent(UIEventType.CreatMoster, monsterData);

        //如果是boss,激活boss状态栏
        if (MonsterManager.Instance.IsMonsterBossType(monsterId))
        {
            if (DefencePanel.Instance.ISDefenceEctype)
            {
                DefencePanel.Instance.DefenceBossCreate(monsterDataModel);
            }
            else
            {
                if (!MonsterManager.Instance.IsBossStatusPanelInit())
                {
                    GameObject bossStatusPanel = (GameObject)Instantiate(BossStatusPanelPrefab);
                    //bossStatusPanel.transform.parent = PopupObjManager.Instance.UICamera.transform;
                    bossStatusPanel.transform.parent        = UI.Battle.BattleUIManager.Instance.GetScreenTransform(UI.Battle.ScreenPositionType.TopRight);
                    bossStatusPanel.transform.localPosition = Vector3.zero;
                    bossStatusPanel.transform.localScale    = Vector3.one;
                    //赋值
                    BossStatusPanel_V3 bossStatusPanelScript = bossStatusPanel.GetComponent <BossStatusPanel_V3>();
                    MonsterManager.Instance.SetBossStatusPanel(bossStatusPanelScript);

                    bossStatusPanelScript.SetBloodNum(monsterDataModel);
                }
                else
                {
                    //第二个boss
                    GameObject secondBossStatusPanel = (GameObject)Instantiate(BattleResManager.Instance.SecondBossStatusPanelPrefab);
                    secondBossStatusPanel.transform.parent        = UI.Battle.BattleUIManager.Instance.GetScreenTransform(UI.Battle.ScreenPositionType.TopRight);
                    secondBossStatusPanel.transform.localPosition = Vector3.zero;
                    secondBossStatusPanel.transform.localScale    = Vector3.one;
                    BossStatusPanel_V3 secondBossPanelScript = secondBossStatusPanel.GetComponent <BossStatusPanel_V3>();
                    secondBossPanelScript.SetBloodNum(monsterDataModel);
                    MonsterManager.Instance.IsDoubleBoss = true;
                    //BossStatusPanel_V3 bossStatusPanelScript = MonsterManager.Instance.GetBossStatusPanel();
                    //bossStatusPanelScript.SetDataModel(monsterDataModel);
                }
                //bossStatusPanelScript.SetBloodNum();
            }
            //如果是普通副本,boss出场,播特效//
            SMSGEctypeInitialize_SC sMSGEctypeInitialize_SC = (SMSGEctypeInitialize_SC)GameDataManager.Instance.PeekData(DataType.InitializeEctype);
            EctypeContainerData     m_ectypeData            = EctypeConfigManager.Instance.EctypeContainerConfigList[sMSGEctypeInitialize_SC.dwEctypeContainerId];
            if (m_ectypeData.lEctypeType == 0 || m_ectypeData.lEctypeType == 9)
            {
                UIEventManager.Instance.TriggerUIEvent(UIEventType.OnBossShowEvent, null);
                SoundManager.Instance.PlaySoundEffect("Sound_UIEff_BossAppear");
            }
        }
        else
        {
            //加入箭头挂载脚本
#if !UNITY_EDITOR
            if (sMsgPropCreateEntity_SC_Monster.MonsterUnitValues.UNIT_FIELD_FIGHT_HOSTILITY !=
                PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_FIGHT_HOSTILITY)
            {
                if (monster.GetComponent <MonsterBehaviour>().m_MonsterConfigData._isShowGuideArrow == 1)
                {
                    ArrowManager.Instance.AddMonsterArrowt(monster);
                }
            }
#endif
        }
        //jamfing//
        //if(DefencePanel.Instance.ISDefenceEctype)
        {
            DefencePanel.Instance.DefenceMonsterCreated(monsterDataModel, monsterData);
        }
        //EntityController.Instance.RegisteEntity(entityDataStruct.SMsg_Header.uidEntity, monsterDataModel);
    }
示例#18
0
    /// <summary>
    /// 网络通知调用创建子弹
    /// </summary>
    /// <param name="entityDStruct"></param>
    private void CreateBullet(IEntityDataStruct entityDStruct)
    {
        SMsgPropCreateEntity_SC_Bullet bulletSC = (SMsgPropCreateEntity_SC_Bullet)entityDStruct;
        BulletData bData = SkillDataManager.Instance.GetBulletData(bulletSC.BaseValue.OBJECT_FIELD_ENTRY_ID);

        //TraceUtil.Log("网络通知调用创建子弹");

        if (bData == null)
        {
            TraceUtil.Log("找不到子弹配置信息");
            return;
        }
        var bulletPrefabStr = bData.m_bulletResPath;

        if (bulletPrefabStr == "0")
        {
            //TraceUtil.Log("未配置子弹实体");
            return;
        }
        GameObject bulletPrefab = MapResManager.Instance.GetMapEffectPrefab(bulletPrefabStr);

        Vector3 localPos = Vector3.zero.GetFromServer(bulletSC.PosX, bulletSC.PosY);

        localPos = new Vector3(localPos.x, bulletPrefab.transform.position.y, localPos.z);

        GameObject bulletGO = (GameObject)UnityEngine.Object.Instantiate(bulletPrefab, localPos, bulletPrefab.transform.rotation);

        //bulletGO.transform.localScale = new Vector3(bulletGO.transform.lossyScale.x * bData.m_shapeParam2, bulletGO.transform.lossyScale.y * bData.m_shapeParam3, bulletGO.transform.lossyScale.z);

        BulletBehaviour bulletBehaviour = bulletGO.GetComponent <BulletBehaviour>();

        if (bulletBehaviour == null)
        {
            bulletBehaviour = bulletGO.AddComponent <BulletBehaviour>();
        }
        bulletBehaviour.InitBulletFromServer(bulletSC.BaseValue.OBJECT_FIELD_ENTRY_ID, bulletSC.CasterUID, bData, bulletSC.TargetId);

        //子弹运动轨迹(根据角度)
        Vector3 motionVector       = Vector3.zero;
        Vector3 accelerationVector = Vector3.zero;

        Vector3 motionNormalize = new Vector3(bulletSC.DirX, 0, -1 * bulletSC.DirY);

        motionNormalize.Normalize();
        var   speed         = bData.m_startSpeed;
        float parseLifeTime = bData.m_lifeTime / 1000f;

        if (bData.m_mountType == 2)  //必达型子弹,使用服务器速度
        {
            Vector3 targetPos = Vector3.zero.GetFromServer(bulletSC.TargetX, bulletSC.TargetY);

            speed = Vector3.Distance(localPos, targetPos) / parseLifeTime;// bulletSC.Speed / 10;  //厘米转分米
        }
        motionVector = motionNormalize * speed;
        float rad        = Mathf.Atan2(-1 * bulletSC.DirY, bulletSC.DirX);
        float QuaterionY = 90 - rad * Mathf.Rad2Deg;


        if (bData.m_acceleration != 0)
        {
            accelerationVector = motionVector * (bData.m_acceleration / bData.m_startSpeed);
        }


        Quaternion initQuaternion = bulletBehaviour.transform.rotation;

        bulletBehaviour.transform.rotation = Quaternion.Euler(initQuaternion.eulerAngles.x, QuaterionY, initQuaternion.eulerAngles.z);
        //Vector3 bulletReferencePos = /*bulletBehaviour.transform.position+*/ .transform.TransformPoint(bData.m_initPos.y, 0, bData.m_initPos.x);
        bulletBehaviour.Fired(localPos, QuaterionY, motionVector, accelerationVector, parseLifeTime);

        EntityModel bulletModel = new EntityModel();

        bulletModel.GO               = bulletGO;
        bulletModel.Behaviour        = bulletBehaviour;
        bulletModel.EntityDataStruct = entityDStruct;
        EntityController.Instance.RegisteEntity(bulletSC.GUID, bulletModel);

        #region 打印测试
        //Log.Instance.AddOtherLog(

        #endregion
    }
示例#19
0
    private void CreatePlayer(IEntityDataStruct entityDataStruct, EntityModelPartial entityModelPartial)
    {
        //if(GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_STORYLINE)
        //{
        //	return;
        //}


        switch (entityModelPartial)
        {
        case EntityModelPartial.DataStruct:
            EntityModel playerDataModel = new EntityModel();
            playerDataModel.EntityDataStruct = entityDataStruct;
            EntityController.Instance.RegisteEntity(entityDataStruct.SMsg_Header.uidEntity, playerDataModel);

            break;

        case EntityModelPartial.GameObject:

            if (null == PlayerManager.Instance.FindPlayerByActorId(((IPlayerDataStruct)entityDataStruct).PlayerActorID))
            {
                return;
            }
            //应该按ID或类型读配置加载不同的角色。
            bool  isHero = entityDataStruct.SMsg_Header.nIsHero == 1;
            float x = 100, z = -100;

            byte kind             = 0;
            int  fashionId        = 0;
            var  playerDataStruct = (IPlayerDataStruct)entityDataStruct;
            x         = playerDataStruct.PlayerX;
            z         = playerDataStruct.PlayerY;
            kind      = (byte)playerDataStruct.GetCommonValue().PLAYER_FIELD_VISIBLE_VOCATION;
            fashionId = playerDataStruct.GetCommonValue().PLAYER_FIELD_VISIBLE_FASHION;

            bool inTown     = GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_TOWN;
            var  configData = inTown ?
                              PlayerDataManager.Instance.GetTownItemData(kind)
                    : PlayerDataManager.Instance.GetBattleItemData(kind);

            if (configData == null)
            {
                TraceUtil.Log("角色类型:" + kind + " 找不到配置信息");
            }
            var fashionItem = ItemDataManager.Instance.GetItemData(fashionId);

            var player = AssemblyPlayer(configData, kind, isHero, fashionItem == null?null:fashionItem._ModelId);

            player.layer = isHero?10:18;             //Player
            var heroBehaviour = player.AddComponent <PlayerBehaviour>();
            player.AddComponent <PlayerHurtFlash>(); //增加被攻击或者爆气特效脚本
            //heroBehaviour.ClickPointEffect = HeroClickPointEffect;   主角点击场面的反馈特效。
            var shadowEff = GameObject.Instantiate(configData.ShadowEffect) as GameObject;
            shadowEff.name                    = "shadow";
            shadowEff.transform.parent        = player.transform;
            shadowEff.transform.localPosition = new Vector3(0, 1, 0);
            //cache hurt point
            heroBehaviour.CacheHurtPoint();
            heroBehaviour.CacheShadow();

            PlayerGenerateConfigData battleConfig = PlayerDataManager.Instance.GetBattleItemData(kind);
            if (null != battleConfig.RunEffect)
            {
                GameObject runEff = GameObject.Instantiate(battleConfig.RunEffect) as GameObject;
                runEff.name                    = "run_effect";
                runEff.transform.parent        = player.transform;
                runEff.transform.localPosition = Vector3.zero;
                runEff.transform.localScale    = Vector3.one;
                heroBehaviour.CacheRunEffect();
            }


            var UIConfig = PlayerDataManager.Instance.GetUIItemData(kind);
            heroBehaviour.HitFlyHeight      = UIConfig.HitFlyHeight;
            heroBehaviour.BeBeAttackBreakLV = UIConfig.BeAttackBreakLV;
            heroBehaviour.BeHitFlyBreakLV   = UIConfig.BeHitFlyBreakLV;

            heroBehaviour.PlayerKind = kind;

            var playerPosition = new Vector3(0, 0.1f, 0);
            playerPosition = playerPosition.GetFromServer(x, z);

            player.transform.position = playerPosition;
            Quaternion playerDir = Quaternion.Euler(0, (float)playerDataStruct.GetUnitValue().sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_DIR / 1000.0f, 0);
            player.transform.rotation = playerDir;

            TypeID type;
            heroBehaviour.EntityModel = EntityController.Instance.GetEntityModel(entityDataStruct.SMsg_Header.uidEntity, out type);

            if (isHero)
            {
                player.AddComponent <DontDestroy>();
            }
            else
            {
                if (GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_BATTLE)
                {
                    //加入箭头挂载脚本
                        #if !UNITY_EDITOR
                    ArrowManager.Instance.AddTeammateArrow(player);
                        #endif
                }
            }

            #region 加入称号动画 (去掉)

            /*
             * int prestigeLevel = playerDataStruct.GetCommonValue().PLAYER_FIELD_VISIBLE_PRESTIGE_LEVEL;
             * var prestigeData = PlayerDataManager.Instance.GetPlayerPrestigeList().SingleOrDefault(p => p._pvpLevel == prestigeLevel);
             * if (prestigeData != null)
             * {
             *  GameObject medalPrefab = prestigeData._titlePrefab;
             *  if (medalPrefab != null)
             *  {
             *      GameObject medal = (GameObject)Instantiate(medalPrefab);
             *      MedalEffectBehaviour medalBehaviour = medal.AddComponent<MedalEffectBehaviour>();
             *      medalBehaviour.SetHeroTransform(heroBehaviour.transform);
             *      if (entityDataStruct.SMsg_Header.IsHero)
             *      {
             *          medal.AddComponent<DontDestroy>();
             *      }
             *      MedalManager.Instance.RegisterMedal(entityDataStruct.SMsg_Header.uidEntity, prestigeLevel, medalBehaviour);
             *  }
             * }
             */
            #endregion

            //加入头顶名字
            //if (playerDataStruct is SMsgPropCreateEntity_SC_MainPlayer)
            //{
            //    CreateTitle(((SMsgPropCreateEntity_SC_MainPlayer)playerDataStruct).Name, isHero, player.transform);
            //}
            if (GameManager.Instance.CurrentState != GameManager.GameState.GAME_STATE_PLAYERROOM && playerDataStruct is SMsgPropCreateEntity_SC_OtherPlayer)
            {
                var title = CreateTitle(entityDataStruct.SMsg_Header.uidEntity, ((SMsgPropCreateEntity_SC_OtherPlayer)playerDataStruct).Name, isHero, player.transform);
                heroBehaviour.PlayerTitleRef = title;
            }


            //称号
            //CreateTitle(entityDataStruct.SMsg_Header.uidEntity,player.transform);


            PlayerManager.Instance.AttachEntityDataModel(player, entityDataStruct.SMsg_Header.uidEntity);
            PlayerManager.Instance.AttachEntityDataModel(heroBehaviour, entityDataStruct.SMsg_Header.uidEntity);

            if (GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_BATTLE)
            {
                GameManager.Instance.TryFindCameraTarget();
            }

            //根据当前游戏场景,改变玩家的技能,武器挂载等
            ////TraceUtil.Log("根据当前游戏场景,改变玩家的技能,武器挂载等在PlayerFactory");
            PlayerManager.Instance.PlayerChangeScene(GameManager.Instance.CurrentState, entityDataStruct.SMsg_Header.uidEntity);
            //PlayerManager.Instance.PlayerCreateProcess(player, heroBehaviour,GameManager.Instance.CurrentState);
            break;
        }
    }