/// <summary> /// 获取指定Monster配置信息 /// </summary> /// <param name="monsterID">怪物id</param> /// <returns></returns> public MonsterConfigData GetMonsterData(int monsterID) { MonsterConfigData data = null; MonsterConfigList.TryGetValue(monsterID, out data); return(data); }
public MonsterConfigData GetMonsterData(int monsterID) { MonsterConfigData data = null; if (m_monsterConfigDict.ContainsKey(monsterID)) { m_monsterConfigDict.TryGetValue(monsterID, out data); } return(data); }
public MonsterHandler() { // 副本配置表 string strBinaryPath = MyGameApplication.MyInstance.m_strBinaryPath; string strPath = (Path.Combine(strBinaryPath, "RoomConfig.xml")); m_roomInfo = Helper.LoadXML <RoomConfigData>(strPath); // Monster配置表 strPath = (Path.Combine(strBinaryPath, "MonsterConfig.xml")); m_monsterData = Helper.LoadXML <MonsterConfigData>(strPath); }
private void AddSkillBases(MonsterConfigData monsterConfigData) { m_SkillBaseList = new List <SkillBase>(); monsterConfigData._skillGroup.ApplyAllItem(p => { if (!m_SkillBaseList.Exists(skill => skill.SkillId == p._skillID)) { SkillBase skillBase = RoleGenerate.AttachSkill(gameObject, p._skillID); skillBase.SetUserID = this.RoleDataModel.SMsg_Header.uidEntity; m_SkillBaseList.Add(skillBase); } }); }
public void DefenceMonsterCreated(EntityModel roadblockModel, MonsterConfigData monsterData) { int index = 0; foreach (var block in m_ectypeData.DefenceLevel_BlockMap) { if (block.Key == monsterData._monsterID) { SetRoadblockDataModel(roadblockModel, index, block.Value); //路障怪 return; } index++; } /*for(int i=0;i<m_ectypeData.DefenceLevel_BlockMap.Count;i++) * { * if(m_ectypeData.DefenceLevel_Block[i]==monsterData._monsterID) * { * SetRoadblockDataModel(roadblockModel,i); //路障怪 * * return; * } * }*/ if (DefencePanel.Instance.ISDefenceEctype) { //敌方怪 if (!string.IsNullOrEmpty(monsterData._upTips) && monsterData._upTips != "0") { StartCoroutine(ShowEventTips(false, monsterData._upTips)); } if (!string.IsNullOrEmpty(monsterData._downTips) && monsterData._downTips != "0") { StartCoroutine(ShowEventTips(true, monsterData._downTips)); } } }
public void SetMonsterConfigData(MonsterConfigData configData) { m_MonsterConfigData = configData; ReplyMonsterShieldValue(); AddSkillBases(m_MonsterConfigData); }
public void UpdateViaNotify(object inotifyArgs) //设置各种属性 { EntityDataUpdateNotify entityDataUpdateNotify = (EntityDataUpdateNotify)inotifyArgs; //if (entityDataUpdateNotify.nEntityClass == TypeID.TYPEID_MONSTER) if (m_BossUID == entityDataUpdateNotify.EntityUID) { SMsgPropCreateEntity_SC_Monster monster = (SMsgPropCreateEntity_SC_Monster)MonsterManager.Instance.GetEntityMode(entityDataUpdateNotify.EntityUID).EntityDataStruct; PlayCutBloodAnimation(monster.UID); //更新血量 //更新防护值 if (MonsterManager.Instance.IsMonsterBossType(monster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID)) { if (ShardProgressBar == null) { //防守副本防甲为空 return; } MonsterConfigData monsterConfig = BattleConfigManager.Instance.MonsterConfigList[monster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID]; int bossShard = monster.MonsterUnitValues.UNIT_FIELD_SHARD; float shardValue = 0; if (monsterConfig.m_shieldpoint == 0) { shardValue = 0; } else { shardValue = bossShard / monsterConfig.m_shieldpoint; } if (shardValue <= 0) { if (monsterConfig.m_shieldpoint > 0) //防护值最大值为0的怪没有防护 { //StartCoroutine("BreakDefenseTipAppear",BreakDefenseTipAppearDelay); //PlayerShardEffect(monster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID); MonsterManager.Instance.GetEntityMode(entityDataUpdateNotify.EntityUID).GO.GetComponent <HurtFlash>().OnDisrupt(true); } } else { MonsterManager.Instance.GetEntityMode(entityDataUpdateNotify.EntityUID).GO.GetComponent <HurtFlash>().OnDisrupt(false); // ShardProgressBar.enabled = true; // ShardBarFrame.enabled = true; // m_isFlag = true; } //=====显示防护值 如果是多boss,显示并仅显示一个存活boss的防护值 SMsgPropCreateEntity_SC_Monster showMonster = monster; if (m_BossModelDic.Count > 1) { var bossModelArray = m_BossModelDic.Values.ToArray(); for (int i = 0; i < bossModelArray.Length; i++) { showMonster = (SMsgPropCreateEntity_SC_Monster)bossModelArray[i].EntityDataStruct; if (showMonster.MonsterUnitValues.UNIT_FIELD_CURHP > 0) { break; } } } MonsterConfigData showMonsterConfig = BattleConfigManager.Instance.MonsterConfigList[showMonster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID]; int showBossShard = showMonster.MonsterUnitValues.UNIT_FIELD_SHARD; float showShardValue = 0; if (showMonsterConfig.m_shieldpoint == 0) { showShardValue = 0; } else { showShardValue = showBossShard / showMonsterConfig.m_shieldpoint; } //防护值恢复特效 if (m_previousshardValue == 0 && showBossShard >= showMonsterConfig.m_shieldpoint) { if (showMonsterConfig.m_shieldpoint > 0) { StopCoroutine("BreakDefenseTipAppear"); BreakDefenseTip.SetActive(false); PlayRecoverProtectionEff(); } } m_previousshardValue = showBossShard; //防护值减少动画 TweenFloat.Begin(0.3f, ShardProgressBar.fillAmount, showShardValue, ChangeShardProgressBar); if (IsShowStatusLabel) { ShardNumLabel.text = string.Format("{0}/{1}", showBossShard, BattleConfigManager.Instance.MonsterConfigList[showMonster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID].m_shieldpoint); } else { ShardNumLabel.text = ""; } if (showShardValue <= 0) { if (showMonsterConfig.m_shieldpoint > 0) //防护值最大值为0的怪没有防护 { if (!MonsterManager.Instance.IsDoubleBoss) //双boss血条情况下不显示 可击倒提示 { StartCoroutine("BreakDefenseTipAppear", BreakDefenseTipAppearDelay); } PlayerShardEffect(monster.BaseObjectValues.OBJECT_FIELD_ENTRY_ID); } } else { ShardProgressBar.enabled = true; ShardBarFrame.enabled = true; m_isFlag = true; } } } }
private static void MonsterConfigPostprocess() { string path = System.IO.Path.Combine(RESOURCE_MONSTER_CONFIG_FOLDER, "MonsterConfig.xml"); TextReader tr = new StreamReader(path); string text = tr.ReadToEnd(); if (text == null) { Debug.LogError("Monster config file not exist"); return; } else { XmlSpreadSheetReader.ReadSheet(text); XmlSpreadSheet sheet = XmlSpreadSheetReader.Output; string[] keys = XmlSpreadSheetReader.Keys; object[] levelIds = sheet[keys[0]]; List <MonsterConfigData> tempList = new List <MonsterConfigData>(); for (int i = 0; i < levelIds.Length; i++) { if (0 == i || 1 == i) { continue; } MonsterConfigData data = new MonsterConfigData(); data._monsterID = Convert.ToInt32(sheet["dwMonsterID"][i]); data._szName = Convert.ToString(sheet["szName"][i]); data._moveSpeed = (float)Convert.ToDouble(sheet["nMoveSpd"][i]); string vectSkill = Convert.ToString(sheet["vectSkillID"][i]); string[] splitVectSkill = vectSkill.Split("|".ToCharArray()); data._skillGroup = new SkillGroup[splitVectSkill.Length]; for (int k = 0; k < splitVectSkill.Length; k++) { string[] skillInfo = splitVectSkill[k].Split("+".ToCharArray()); data._skillGroup[k] = new SkillGroup() { _skillID = Convert.ToInt32(skillInfo[0]), _skillLevel = Convert.ToInt32(skillInfo[1]), _skillProbability = Convert.ToInt32(skillInfo[2]) }; } data._skillID = data._skillGroup[0]._skillID; data.MonsterSubType = Convert.ToInt32(sheet["byMonsterSubType"][i]); data.Hurt_sfx = Convert.ToString(sheet["hurt_sfx"][i]); ////Debug.Log(data.skillInfoData[skillInfoNum]._skillID); string prefabpath = Convert.ToString(sheet["dwDisplayID"][i]); string pathRes = System.IO.Path.Combine(ASSET_TRAP_RES_CONFIG_FOLDER, prefabpath + ".prefab"); //data._MonsterPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(pathRes, typeof(GameObject)); string bloodEffectPrefabPath = Convert.ToString(sheet["SpecialDeadEffect"][i]); string bloodPathRes = System.IO.Path.Combine(ASSET_BLOOD_EFFECT_FOLDER, bloodEffectPrefabPath + ".prefab"); //data._monsterBloodEffectPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(bloodPathRes, typeof(GameObject)); data._standUpTime = Convert.ToInt32(sheet["standup_time"][i]); data._flyHigh = (float)Convert.ToDouble(sheet["fly_high"][i]); data._fly_initial_high = (float)Convert.ToDouble(sheet["fly_initial_high"][i]); data._isShowGuideArrow = (int)Convert.ToInt32(sheet["IsShowGuideArrow"][i]); string[] nshared = Convert.ToString(sheet["nShared"][i]).Split('+'); data.m_shieldpoint = (float)Convert.ToDouble(nshared[0]); data.m_breaktime = (float)Convert.ToDouble(nshared[1]); data._maxHP = Convert.ToInt32(sheet["nMaxHP"][i]); data._bornEffects = Convert.ToString(sheet["BornEffects"][i]); data._dialogMonsterName = Convert.ToString(sheet["DialogMonsterName"][i]); data._bornDialogue = Convert.ToString(sheet["BornDialogue"][i]); data._bornSound = Convert.ToString(sheet["BornSound"][i]); data._dialogPortrait = Convert.ToString(sheet["DialogPortrait"][i]); data._deadEffect = Convert.ToString(sheet["DeadEffect"][i]); string[] bornDialogueFullStr = Convert.ToString(sheet["BornDialogueFull"][i]).Split('|'); int bDialogLength = bornDialogueFullStr.Length; data._BornDialogueFulls = new MonsterConfigData.BornDialogueFull[bDialogLength]; for (int p = 0; p < bDialogLength; p++) { string[] bDialogStr = bornDialogueFullStr[p].Split('+'); data._BornDialogueFulls[p] = new MonsterConfigData.BornDialogueFull(); data._BornDialogueFulls[p].Portrait = Convert.ToString(bDialogStr[0]); data._BornDialogueFulls[p].MonsterName = Convert.ToString(bDialogStr[1]); data._BornDialogueFulls[p].Dialogue = Convert.ToString(bDialogStr[2]); data._BornDialogueFulls[p].BornDialoguePosition = Convert.ToInt32(bDialogStr[3]); data._BornDialogueFulls[p].Time = Convert.ToInt32(bDialogStr[4]) / 1000f; data._BornDialogueFulls[p].protraitType = Convert.ToInt32(bDialogStr[5]); } data._deadEffect = Convert.ToString(sheet["DeadEffect"][i]); data._hitRadius = Convert.ToInt32(sheet["HitRadius"][i]); string[] cameraFixStr = Convert.ToString(sheet["CameraFix"][i]).Split('+'); data._cameraFix_pos = new Vector3(Convert.ToInt32(cameraFixStr[1]), Convert.ToInt32(cameraFixStr[2]), Convert.ToInt32(cameraFixStr[3])); data._cameraFix_time = Convert.ToSingle(cameraFixStr[4]) / 1000f; data._cameraStay_time = Convert.ToSingle(cameraFixStr[5]) / 1000f; data._cameraBack_time = Convert.ToSingle(cameraFixStr[6]) / 1000f; if (cameraFixStr[7] == "0") { data._blockPlayerToIdle = false; } else { data._blockPlayerToIdle = true; } data._downTips = Convert.ToString(sheet["DownTips"][i]); data._upTips = Convert.ToString(sheet["UpTips"][i]); string[] deathBulletStr = Convert.ToString(sheet["DeathBullet"][i]).Split('+'); data._DeathBullet = new int[deathBulletStr.Length]; for (int index = 0; index < deathBulletStr.Length; index++) { data._DeathBullet[index] = Convert.ToInt32(deathBulletStr[index]); } tempList.Add(data); } CreateMonsterConfigDataBase(tempList); } }