Esempio n. 1
0
    /// <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);
    }
Esempio n. 2
0
    public MonsterConfigData GetMonsterData(int monsterID)
    {
        MonsterConfigData data = null;

        if (m_monsterConfigDict.ContainsKey(monsterID))
        {
            m_monsterConfigDict.TryGetValue(monsterID, out data);
        }
        return(data);
    }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
    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);
            }
        });
    }
Esempio n. 5
0
    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));
            }
        }
    }
Esempio n. 6
0
 public void SetMonsterConfigData(MonsterConfigData configData)
 {
     m_MonsterConfigData = configData;
     ReplyMonsterShieldValue();
     AddSkillBases(m_MonsterConfigData);
 }
Esempio n. 7
0
    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;
                }
            }
        }
    }
Esempio n. 8
0
    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);
        }
    }