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); }
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); }); } }
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); } } }
public void RegisterBox(IEntityDataStruct entityDataStruct) { if (!GameManager.Instance.CreateEntityIM) { m_preCreateDamageStructCache.Add(entityDataStruct); } else { CreateDamage(entityDataStruct); } }
public void Register(IEntityDataStruct entityDataStruct) { if (!GameManager.Instance.CreateEntityIM) { CreateNPC(entityDataStruct, EntityModelPartial.DataStruct); } else { CreateNPC(entityDataStruct, EntityModelPartial.GameObject); } }
public void Register(IEntityDataStruct entityDataStruct) { if (!GameManager.Instance.CreateEntityIM) { m_preCreatePortalStructCache.Add(entityDataStruct); } else { CreatePortal(entityDataStruct); } }
public void Register(IEntityDataStruct entityDataStruct) { if (!this.m_createTrap) { m_preCreateTrapStructCache.Add(entityDataStruct); } else { CreateTrap(entityDataStruct); } }
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; } }
public void Register(IEntityDataStruct entityDataStruct) { if (MonsterManager.Instance != null) { if (!GameManager.Instance.CreateEntityIM) { m_preCreateMonsterStructCache.Add(entityDataStruct); } else { CreateMonster(entityDataStruct); } } }
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"); } }
/// <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); } } }
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"); } }
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)); }
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)); }
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); }
public void Register(IEntityDataStruct entityDStruct) { CreateBullet(entityDStruct); }
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); }
/// <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 }
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; } }