From 1868bc632a9134b6891d4fc5f427e3f280b9e973 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 18 十月 2018 09:53:30 +0800
Subject: [PATCH] 3335 代码维护,修改通用配置定义类型。

---
 System/GeneralConfig/GeneralDefine.cs | 1398 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 699 insertions(+), 699 deletions(-)

diff --git a/System/GeneralConfig/GeneralConfig.cs b/System/GeneralConfig/GeneralDefine.cs
similarity index 72%
rename from System/GeneralConfig/GeneralConfig.cs
rename to System/GeneralConfig/GeneralDefine.cs
index b5e5184..aa35401 100644
--- a/System/GeneralConfig/GeneralConfig.cs
+++ b/System/GeneralConfig/GeneralDefine.cs
@@ -1,699 +1,699 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using TableConfig;
-using System;
-using System.Text.RegularExpressions;
-using System.Linq;
-using Snxxz.UI;
-
-public class GeneralConfig : Singleton<GeneralConfig>
-{
-    public int greatMasterStartLV { get; private set; }
-    public int playerMaxLevel { get; private set; }
-    public float potentialUpSuccessRecommend { get; private set; }
-    public int[] kylinHomeCollectItems;
-    public List<int> dailyQuestOpenTime;
-    public int flyBootItemId { get; private set; }
-    public int teamReadyTime { get; private set; }
-    public int elderGodAreaAngerTotal { get; private set; }
-    public float petRandomSpeak { get; private set; }
-    public int[] openJobs { get; private set; }
-    public int playerNameLength { get; private set; }
-    public int guardDungeonCageNPCID { get; private set; }
-    public float guardBubbleInterval { get; private set; }
-    public List<int> autoOnHookMap { get; private set; }
-    public float autoRideHorse { get; private set; }
-    public Dictionary<int, string> equipPlaceNameDict { get; private set; }
-    public Dictionary<int, int> moneyDisplayIds { get; private set; }
-    public int expDisplayId { get; private set; }
-    public float xpGuideDelay { get; private set; }
-    public float xpGuideDuration { get; private set; }
-    public Dictionary<int, string> trailBossHeadIcons { get; private set; }
-    public Dictionary<int, string> godWeaponMobs { get; private set; }
-    public float ResetComAtkTime { get; private set; }
-    public int RotateSpeed { get; private set; }
-    public float CloseNpcDist { get; private set; }
-    public float FarawayNpcDist { get; private set; }
-    public List<int> SpecialNpcIDs { get; private set; }
-    public Dictionary<int, int> wingEquipLimits { get; private set; }
-    public float PetDanceInterval { get; private set; }
-    public float FuncNpcDanceInterval { get; private set; }
-    public float audioScaleWhenFullScreenOn { get; private set; }
-    public int ruinsTranscriptMapId { get; private set; }
-    public List<int> GuardianPickUpID { get; private set; }
-    public List<int> EarlierGetTreasure { get; private set; }
-    public int BossSound { get; private set; }
-    public Dictionary<int, int> iceCrystalMonsterScores { get; private set; }
-    public float PlayBossHurtInterval { get; private set; }
-    public List<int> NoXpDungeons { get; private set; }
-    public List<int> RandomJobs { get; private set; }
-    public int elderGodTalkingTime { get; private set; }
-    public int elderGodBigBoss { get; private set; }
-    public List<int> PassiveSkillShow { get; private set; }
-    public List<int> bossShuntMaps { get; private set; }
-    public int bossShuntDays { get; private set; }
-    public Dictionary<int, int[]> itemDropEffect = new Dictionary<int, int[]>();
-    public Dictionary<int, int[]> xllyDropEffect = new Dictionary<int, int[]>();
-    public Dictionary<int, int[]> xqryDropEffect = new Dictionary<int, int[]>();
-    public Dictionary<int, List<int[]>> customDropEffect = new Dictionary<int, List<int[]>>();
-    public Dictionary<int, int> dropEffectQuality = new Dictionary<int, int>();
-    public Dictionary<int, int> BuffToHitEffect = new Dictionary<int, int>();
-
-    //鍙傛暟int锛宨nt 锛宻tring 鍒嗗埆琛ㄧず鑱屼笟锛岃浆鐢熺瓑绾э紝icon
-    Dictionary<int, Dictionary<int, string>> jobHeadPortrait = new Dictionary<int, Dictionary<int, string>>();
-    Dictionary<int, Dictionary<int, string>> otherjobHeadPortrait = new Dictionary<int, Dictionary<int, string>>();
-    public Dictionary<int, int> bossWearyValues = new Dictionary<int, int>();
-    public Dictionary<int, Vector3> NpcPosOffset = new Dictionary<int, Vector3>();
-    public Dictionary<int, string> propertyIconDict = new Dictionary<int, string>();
-
-    public int demonJarHintLevelLimit { get; private set; }
-    public int demonJarHintLineId { get; private set; }
-    public int skillPanelUnLock { get; private set; }
-    public int dailyQuestRedpointLevelLimit { get; private set; }
-    public int lowHpRemind { get; private set; }
-    public int munekadolockLimit { get; private set; }
-    public int maxItemDropEffectCount { get; private set; }
-
-    public int[] autoBuyItemIds;
-    public int[] autoBuyItemPrices;
-
-    public List<int> neutralMaps = new List<int>();
-    public List<int> neutralBossMaps = new List<int>();
-
-    public int demonJarRedPoint { get; private set; }
-    public string LoadLV { get; private set; }
-
-    public float mainWinSkillResetTime { get; private set; }
-    public int OffLineTimeLackRemendLevelLimit { get; private set; }
-    public Vector3 heroDialogueOffset { get; private set; }
-    public Vector3 heroDialogueRotation { get; private set; }
-    public float heroDialogueScale { get; private set; }
-
-    public List<int> ancientGrandTotalAchievements { get; private set; }
-    public List<int> ancientContinueKillAchievements { get; private set; }
-
-    public int trialDungeonGroupChallengeTipLv { get; private set; }
-    public int prayerRedpointLimitLv { get; private set; }
-
-    public int demonJarLevelLimit { get; private set; }
-
-    public int fairyLandGuideId = 82;
-
-    public int specialGuide41Mission { get; private set; }
-    public int specialGuide41Achievement { get; private set; }
-
-    public int supremeRechargeVipLv { get; private set; }
-
-    public int rechargeRedpointLv { get; private set; }
-    public int rechargeRedpointMinLv { get; private set; }
-
-    public int runeTowerSweepBuyTimes { get; private set; }
-    public int runeTowerSweepBuyPrice { get; private set; }
-
-    public int teamMatchingTimeOut { get; private set; }
-    public List<int> inGameDownLoadLevelCheckPoints = null;
-    public List<int> inGameDownLoadTaskCheckPoints = null;
-    public int inGameDownLoadHighLevel { get; private set; }
-    public List<int> worldBossNoRebornRemindMaps = null;
-    public List<int> bossHomeNoRebornRemindMaps = null;
-    public List<int> elderGodNoRebornRemindMaps = null;
-    public List<int> demonJarNoRebornRemindMaps = null;
-    public List<int> dogzNoRebornRemindMaps = null;
-
-    public string[][] ModeDefaultConfig { get; private set; }
-    public int[] RealmGroup { get; private set; }
-    public float PrefightAtkRange { get; private set; }
-
-    public Dictionary<int, string> multipleRealmImgDict { get; private set; }
-
-    public int inGameDownLoadHighestLevelPoint { get; private set; }
-
-    public List<int> dungeonCanUseMoneyIds { get; private set; }
-    public int dogzBoxLimit { get; private set; }
-
-    public Dictionary<int, int> dungeonRebornClientTimes { get; private set; }
-    public int[] CompareEquipPlaces { get; private set; }
-    public Dictionary<int, int> fairyGrabBossMapLines { get; private set; }
-
-    public Dictionary<int, List<int>> DropItemEffectMapID { get; private set; }
-
-    public List<int> RebornAutoFightMapID { get; private set; }
-
-    public string teamWorldCall;
-    public int teamWorldCallInviteCount;
-
-    public List<Item> ancientKingAwards = new List<Item>();
-
-    public int lowQualityCount { get; private set; }
-    public int medQualityCount { get; private set; }
-    public int highQualityCount { get; private set; }
-
-    public void Init()
-    {
-        try
-        {
-            CompareEquipPlaces = GetIntArray("EquipUpType");
-            greatMasterStartLV = GetInt("GreatMasterStartLV");
-            playerMaxLevel = GetInt("PlayerMaxLV");
-            potentialUpSuccessRecommend = GetFloat("SPSkillType", 2) * 0.0001f;
-            kylinHomeCollectItems = GetIntArray("KirinNpc", 2);
-            dailyQuestOpenTime = GetTimeArray("ActionTime", 1);
-            flyBootItemId = GetInt("TransportPay");
-            teamReadyTime = GetInt("TeamReadyTime");
-            playerNameLength = GetInt("RoleNameLength");
-            elderGodAreaAngerTotal = GetInt("AngryAdd", 4);
-            petRandomSpeak = GetFloat("PetRandomSpeak");
-            guardDungeonCageNPCID = GetInt("GuardFBCageNPCID");
-            guardBubbleInterval = GetFloat("GuardFBCageNPCID", 3);
-            autoRideHorse = GetFloat("AutoRideHorseTime") * Constants.F_DELTA;
-            moneyDisplayIds = ConfigParse.GetDic<int, int>(GetInputString("MoneyDisplayModel", 1));
-            expDisplayId = GetInt("MoneyDisplayModel", 2);
-            openJobs = GetIntArray("OpenJob");
-            xpGuideDelay = GetFloat("GuideConfig");
-            xpGuideDuration = GetFloat("GuideConfig", 2);
-            ResetComAtkTime = GetFloat("AtkWaitingTime");
-            autoOnHookMap = new List<int>(GetIntArray("AutoOnHookMap"));
-            GuardianPickUpID = new List<int>(GetIntArray("GuardianPickUpID"));
-            RotateSpeed = GetInt("RoleTurnedAngle");
-            CloseNpcDist = GetFloat("ConversationDistanc", 2);
-            FarawayNpcDist = GetFloat("ConversationDistanc");
-            SpecialNpcIDs = new List<int>(GetIntArray("SpecialCollectNpcs", 1));
-            PetDanceInterval = GetInt("PetDanceInterval") * Constants.F_GAMMA;
-            FuncNpcDanceInterval = GetInt("PetDanceInterval",2) * Constants.F_GAMMA;
-            ruinsTranscriptMapId = GetInt("SpRewardMapID");
-            EarlierGetTreasure = new List<int>(GetIntArray("EarlierGetTreasure"));
-            BossSound = GetInt("BossSound");
-            PlayBossHurtInterval = GetFloat("BossSound", 2);
-            var jobHeadPortraitConfig1 = Config.Instance.Get<FuncConfigConfig>("Job1Head");
-            jobHeadPortrait[1] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig1.Numerical1);
-            otherjobHeadPortrait[1] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig1.Numerical2);
-
-            var jobHeadPortraitConfig2 = Config.Instance.Get<FuncConfigConfig>("Job2Head");
-            jobHeadPortrait[2] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig2.Numerical1);
-            otherjobHeadPortrait[2] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig2.Numerical2);
-
-            var jobHeadPortraitConfig3 = Config.Instance.Get<FuncConfigConfig>("Job3Head");
-            jobHeadPortrait[3] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig3.Numerical1);
-            otherjobHeadPortrait[3] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig3.Numerical2);
-
-            bossWearyValues = ConfigParse.GetDic<int, int>(GetInputString("KillBossCntLimit", 2));
-            wingEquipLimits = ConfigParse.GetDic<int, int>(GetInputString("WingRealmLimit", 1));
-            int i = 0;
-            int[] equipPlaces = GetIntArray("EquipArea", 1);
-            string[] equipPlacesNames = GetStringArray("EquipArea", 2);
-            equipPlaceNameDict = new Dictionary<int, string>();
-            for (i = 0; i < equipPlaces.Length; i++)
-            {
-                if (!equipPlaceNameDict.ContainsKey(equipPlaces[i]))
-                {
-                    equipPlaceNameDict.Add(equipPlaces[i], equipPlacesNames[i]);
-                }
-                else
-                {
-                    DebugEx.LogError("EquipArea : 瑁呭浣嶇疆閲嶅");
-                }
-            }
-            var _trailBossJson = LitJson.JsonMapper.ToObject(GetInputString("MuneKadoTrialBossHead", 1));
-            trailBossHeadIcons = new Dictionary<int, string>();
-            foreach (var _key in _trailBossJson.Keys)
-            {
-                var _npcId = int.Parse(_key);
-                if (!trailBossHeadIcons.ContainsKey(_npcId))
-                {
-                    trailBossHeadIcons.Add(_npcId, _trailBossJson[_key].ToString());
-                }
-            }
-            var _godWeaponJson = LitJson.JsonMapper.ToObject(GetInputString("GodModel", 1));
-            godWeaponMobs = new Dictionary<int, string>();
-            foreach (var _key in _godWeaponJson.Keys)
-            {
-                var _godWeaponType = int.Parse(_key);
-                if (!godWeaponMobs.ContainsKey(_godWeaponType))
-                {
-                    godWeaponMobs.Add(_godWeaponType, _godWeaponJson[_key].ToString());
-                }
-            }
-
-            audioScaleWhenFullScreenOn = GetFloat("AudioSound");
-
-            iceCrystalMonsterScores = ConfigParse.GetDic<int, int>(GetInputString("IceLodeNeedPoint", 2));
-
-            NoXpDungeons = new List<int>(GetIntArray("XpNoUseDungeon"));
-            RandomJobs = new List<int>(GetIntArray("RandomJob"));
-            elderGodTalkingTime = GetInt("ElderGodTalkingTime");
-            elderGodBigBoss = GetInt("ElderGodBigBoss");
-            PassiveSkillShow = new List<int>(GetIntArray("PassiveSkillShow"));
-
-            FuncConfigConfig func = Config.Instance.Get<FuncConfigConfig>("NpcPosOffset");
-            LitJson.JsonData _data = LitJson.JsonMapper.ToObject(func.Numerical1);
-            foreach (var _key in _data.Keys)
-            {
-                int _npcID = int.Parse(_key);
-                double[] _pos = new double[2];
-                _pos[0] = (double)_data[_key][0];
-                _pos[1] = (double)_data[_key][1];
-                NpcPosOffset.Add(_npcID, new Vector3((float)_pos[0], 0, (float)_pos[1]));
-            }
-
-            FuncConfigConfig nxxdImg = Config.Instance.Get<FuncConfigConfig>("NXXDPicture");
-            LitJson.JsonData nxxdData = LitJson.JsonMapper.ToObject(nxxdImg.Numerical1);
-            multipleRealmImgDict = new Dictionary<int, string>();
-            if (nxxdData.IsArray)
-            {
-                for (i = 0; i < nxxdData.Count; i++)
-                {
-                    if (nxxdData[i].IsArray)
-                    {
-                        multipleRealmImgDict.Add(int.Parse(nxxdData[i][0].ToString()), nxxdData[i][1].ToString());
-                    }
-                }
-            }
-
-            bossShuntMaps = new List<int>(GetIntArray("BossShunt"));
-            bossShuntDays = GetInt("BossShunt", 3);
-
-            itemDropEffect.Clear();
-            func = Config.Instance.Get<FuncConfigConfig>("ItemEquipmentEffect");
-            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
-            List<string> _keys = new List<string>(_data.Keys);
-            for (i = 0; i < _keys.Count; ++i)
-            {
-                int[] _props = new int[3];
-                for (int j = 0; j < 3; ++j)
-                {
-                    _props[j] = (int)_data[_keys[i]][j];
-                }
-                itemDropEffect[int.Parse(_keys[i])] = _props;
-            }
-
-            xllyDropEffect.Clear();
-            _data = LitJson.JsonMapper.ToObject(func.Numerical2);
-            _keys.Clear();
-            _keys.AddRange(_data.Keys);
-            for (i = 0; i < _keys.Count; ++i)
-            {
-                int[] _props = new int[3];
-                for (int j = 0; j < 3; ++j)
-                {
-                    _props[j] = (int)_data[_keys[i]][j];
-                }
-                xllyDropEffect[int.Parse(_keys[i])] = _props;
-            }
-
-            xqryDropEffect.Clear();
-            _data = LitJson.JsonMapper.ToObject(func.Numerical3);
-            _keys.Clear();
-            _keys.AddRange(_data.Keys);
-            for (i = 0; i < _keys.Count; ++i)
-            {
-                int[] _props = new int[3];
-                for (int j = 0; j < 3; ++j)
-                {
-                    _props[j] = (int)_data[_keys[i]][j];
-                }
-                xqryDropEffect[int.Parse(_keys[i])] = _props;
-            }
-
-            dropEffectQuality.Clear();
-            func = Config.Instance.Get<FuncConfigConfig>("IeemEquipmentEffectQuality");
-            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
-            _keys.Clear();
-            _keys.AddRange(_data.Keys);
-            for (i = 0; i < _keys.Count; ++i)
-            {
-                dropEffectQuality[int.Parse(_keys[i])] = (int)_data[_keys[i]];
-            }
-
-            customDropEffect.Clear();
-            func = Config.Instance.Get<FuncConfigConfig>("ItemEquipmentEffectItem");
-            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
-            _keys.Clear();
-            _keys.AddRange(_data.Keys);
-            int[] _tmp = null;
-            List<int[]> _content = null;
-            for (i = 0; i < _keys.Count; ++i)
-            {
-                _content = new List<int[]>();
-                foreach (LitJson.JsonData _values in _data[_keys[i]])
-                {
-                    if (_values.IsArray)
-                    {
-                        _tmp = new int[2];
-                        _tmp[0] = (int)_values[0];
-                        _tmp[1] = (int)_values[1];
-                    }
-                    else
-                    {
-                        _tmp = new int[1];
-                        _tmp[0] = (int)_values;
-                    }
-                    _content.Add(_tmp);
-                }
-                customDropEffect.Add(int.Parse(_keys[i]), _content);
-            }
-
-            BuffToHitEffect.Clear();
-            func = Config.Instance.Get<FuncConfigConfig>("BuffToHitEffect");
-            if (!string.IsNullOrEmpty(func.Numerical1) && !string.IsNullOrEmpty(func.Numerical2))
-            {
-                string[] _buffs = func.Numerical1.Split('|');
-                string[] _effects = func.Numerical2.Split('|');
-                for (i = 0; i < _buffs.Length; ++i)
-                {
-                    BuffToHitEffect[int.Parse(_buffs[i])] = int.Parse(_effects[i]);
-                }
-            }
-
-            demonJarHintLevelLimit = GetInt("DemonJarFirstRemin");
-            demonJarHintLineId = GetInt("DemonJarFirstRemin", 2);
-            skillPanelUnLock = GetInt("SkillPanelUnlock");
-            dailyQuestRedpointLevelLimit = GetInt("DailyQuestRedPoint");
-            lowHpRemind = GetInt("LowHpRemind");
-            autoBuyItemIds = GetIntArray("BuyItemPrice", 1);
-            autoBuyItemPrices = GetIntArray("BuyItemPrice", 2);
-            neutralMaps.AddRange(GetIntArray("MapLine", 4));
-            neutralBossMaps.AddRange(GetIntArray("BossListMapID"));
-
-            var _propertyIconCfg = Config.Instance.Get<FuncConfigConfig>("PropertyIcon");
-            var _propertyIconJson = LitJson.JsonMapper.ToObject(_propertyIconCfg.Numerical1);
-            foreach (var _key in _propertyIconJson.Keys)
-            {
-                var _property = int.Parse(_key);
-                propertyIconDict.Add(_property, _propertyIconJson[_key].ToString());
-            }
-
-            munekadolockLimit = GetInt("MunekadoLockLimit");
-            demonJarRedPoint = GetInt("DemonJarRedPoint");
-            LoadLV = GetInputString("LoadLV");
-
-            mainWinSkillResetTime = GetFloat("AutomaticSwitch");
-            OffLineTimeLackRemendLevelLimit = GetInt("TJGLevelLimit");
-            heroDialogueOffset = GetInputString("NpcHalfLength", 1).Vector3Parse();
-            heroDialogueRotation = GetInputString("NpcHalfLength", 2).Vector3Parse();
-            heroDialogueScale = GetFloat("NpcHalfLength", 3);
-
-            var ancientConfig = Config.Instance.Get<FuncConfigConfig>("ElderBattleTarget");
-            ancientGrandTotalAchievements = new List<int>();
-            ancientGrandTotalAchievements.AddRange(ConfigParse.GetMultipleStr<int>(ancientConfig.Numerical1));
-            ancientContinueKillAchievements = new List<int>();
-            ancientContinueKillAchievements.AddRange(ConfigParse.GetMultipleStr<int>(ancientConfig.Numerical2));
-
-            trialDungeonGroupChallengeTipLv = GetInt("SingleIntoFB");
-            prayerRedpointLimitLv = GetInt("PrayRedPoint");
-            demonJarLevelLimit = GetInt("DemonJarLevelLimit");
-            maxItemDropEffectCount = GetInt("ItemMaskEffect");
-
-            specialGuide41Mission = GetInt("SpecialGuide41", 1);
-            specialGuide41Achievement = GetInt("SpecialGuide41", 2);
-
-            supremeRechargeVipLv = GetInt("SupremeCTGVipLimit", 1);
-
-            rechargeRedpointLv = GetInt("FirstPayRedPoint", 1);
-            rechargeRedpointMinLv = GetInt("FirstPayRedPoint", 2);
-            runeTowerSweepBuyTimes = GetInt("RuneTowerSweepBuy");
-            runeTowerSweepBuyPrice = GetInt("RuneTowerSweepBuy", 2);
-            teamMatchingTimeOut = GetInt("TeamMatchingTimeOut");
-            inGameDownLoadLevelCheckPoints = new List<int>(GetIntArray("InGameDownLoad"));
-            inGameDownLoadTaskCheckPoints = new List<int>(GetIntArray("InGameDownLoad", 2));
-            inGameDownLoadHighLevel = GetInt("InGameDownLoad", 3);
-
-            worldBossNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 1));
-            bossHomeNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 2));
-            elderGodNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 3));
-            demonJarNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 4));
-            dogzNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 5));
-
-            if (ModeDefaultConfig == null)
-            {
-                func = Config.Instance.Get<FuncConfigConfig>("ModeDefault");
-
-                string[] _funcNpc = func.Numerical1.Split('|');
-                string[] _fightNpc = func.Numerical2.Split('|');
-                string[] _pet = func.Numerical3.Split('|');
-                string[] _horse = func.Numerical4.Split('|');
-
-                ModeDefaultConfig = new string[4][];
-                ModeDefaultConfig[0] = _funcNpc;
-                ModeDefaultConfig[1] = _fightNpc;
-                ModeDefaultConfig[2] = _pet;
-                ModeDefaultConfig[3] = _horse;
-            }
-
-            if (RealmGroup == null)
-            {
-                func = Config.Instance.Get<FuncConfigConfig>("RealmGroup");
-                string[] _group = func.Numerical1.Split('|');
-                RealmGroup = new int[_group.Length];
-                for (int j = 0; j < _group.Length; ++j)
-                {
-                    int.TryParse(_group[j], out RealmGroup[j]);
-                }
-            }
-
-            func = Config.Instance.Get<FuncConfigConfig>("PrefightAtkRange");
-            PrefightAtkRange = float.Parse(func.Numerical1);
-            inGameDownLoadHighestLevelPoint = GetInt("DownReward", 2);
-
-            dungeonCanUseMoneyIds = new List<int>(GetIntArray("FBEnterTickeyAuto", 1));
-            dungeonRebornClientTimes = ConfigParse.GetDic<int, int>(GetInputString("DuplicatesRebornTime", 2));
-            dogzBoxLimit = GetInt("DogzBoxLimit");
-
-            fairyGrabBossMapLines = ConfigParse.GetDic<int, int>(GetInputString("MapLine", 2));
-            var grabBossMaps = fairyGrabBossMapLines.Keys.ToList();
-            foreach (var _key in grabBossMaps)
-            {
-                fairyGrabBossMapLines[_key] = fairyGrabBossMapLines[_key] - 1;
-            }
-
-            if (DropItemEffectMapID == null)
-            {
-                DropItemEffectMapID = new Dictionary<int, List<int>>();
-            }
-            DropItemEffectMapID.Clear();
-            func = Config.Instance.Get<FuncConfigConfig>("DropItemEffectMapID");
-            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
-            int _itemID;
-            _keys.Clear();
-            _keys.AddRange(_data.Keys);
-            for (int j = 0; j < _keys.Count; ++j)
-            {
-                if (int.TryParse(_keys[j].ToString(), out _itemID))
-                {
-                    if (!DropItemEffectMapID.ContainsKey(_itemID))
-                    {
-                        DropItemEffectMapID.Add(_itemID, new List<int>());
-                    }
-                    var _jsonMapIDs = _data[_keys[j]];
-                    foreach (var _jsonMapID in _jsonMapIDs)
-                    {
-                        var _mapID = ((LitJson.IJsonWrapper)_jsonMapID).GetInt();
-                        if (!DropItemEffectMapID[_itemID].Contains(_mapID))
-                        {
-                            DropItemEffectMapID[_itemID].Add(_mapID);
-                        }
-                    }
-                }
-            }
-
-            int[] mapIDs = GetIntArray("RebornAutoFightDungeon");
-            RebornAutoFightMapID = new List<int>(mapIDs);
-
-            teamWorldCall = GetInputString("TeamWorldCall");
-            teamWorldCallInviteCount = GetInt("TeamWorldCall", 2);
-
-            var ancientKingAwradConfig = Config.Instance.Get<FuncConfigConfig>("ElderBattlefieldTopAward");
-            if (ancientKingAwradConfig != null)
-            {
-                var itemArray = LitJson.JsonMapper.ToObject<int[][]>(ancientKingAwradConfig.Numerical1);
-                for (int k = 0; k < itemArray.Length; k++)
-                {
-                    ancientKingAwards.Add(new Item()
-                    {
-                        id = itemArray[k][0],
-                        count = itemArray[k][1],
-                        bind = itemArray[k][2] == 1,
-                    });
-                }
-            }
-
-            func = Config.Instance.Get<FuncConfigConfig>("QualityEffectConfig");
-            lowQualityCount = int.Parse(func.Numerical1);
-            medQualityCount = int.Parse(func.Numerical2);
-            highQualityCount = int.Parse(func.Numerical3);
-        }
-        catch (Exception ex)
-        {
-            Debug.LogError(ex);
-        }
-
-    }
-
-    public string GetJobHeadPortrait(int _job, int _ReincarnationLv)
-    {
-        if (jobHeadPortrait.ContainsKey(_job) && jobHeadPortrait[_job].ContainsKey(_ReincarnationLv))
-        {
-            return jobHeadPortrait[_job][_ReincarnationLv];
-        }
-        else
-        {
-            return string.Empty;
-        }
-    }
-
-    public string GetOtherJobHeadPortrait(int _job, int _ReincarnationLv)
-    {
-        if (otherjobHeadPortrait.ContainsKey(_job) && otherjobHeadPortrait[_job].ContainsKey(_ReincarnationLv))
-        {
-            return otherjobHeadPortrait[_job][_ReincarnationLv];
-        }
-        else
-        {
-            return string.Empty;
-        }
-    }
-
-    private int GetInt(string _key, int _index = 1)
-    {
-        var result = 0;
-        int.TryParse(GetInputString(_key, _index), out result);
-        return result;
-    }
-
-    private float GetFloat(string _key, int _index = 1)
-    {
-        var result = 0f;
-        float.TryParse(GetInputString(_key, _index), out result);
-        return result;
-    }
-
-    private bool GetBool(string _key, int _index = 1)
-    {
-        var result = false;
-        bool.TryParse(GetInputString(_key, _index), out result);
-        return result;
-    }
-
-    private int[] GetIntArray(string _key, int _index = 1)
-    {
-        var inputString = GetInputString(_key, _index);
-        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
-
-        if (stringArray.Length == 0)
-        {
-            return null;
-        }
-
-        var result = new int[stringArray.Length];
-        for (int i = 0; i < stringArray.Length; i++)
-        {
-            int.TryParse(stringArray[i], out result[i]);
-        }
-
-        return result;
-    }
-
-    private string[] GetStringArray(string _key, int _index = 1)
-    {
-        var inputString = GetInputString(_key, _index);
-        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
-
-        if (stringArray.Length == 0)
-        {
-            return null;
-        }
-
-        var result = new string[stringArray.Length];
-        for (int i = 0; i < stringArray.Length; i++)
-        {
-            result[i] = stringArray[i];
-        }
-
-        return result;
-    }
-
-
-    private float[] GetFloatArray(string _key, int _index = 1)
-    {
-        var inputString = GetInputString(_key, _index);
-        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
-
-        if (stringArray.Length == 0)
-        {
-            return null;
-        }
-
-        var result = new float[stringArray.Length];
-        for (int i = 0; i < stringArray.Length; i++)
-        {
-            float.TryParse(stringArray[i], out result[i]);
-        }
-
-        return result;
-    }
-
-    private bool[] GetBoolArray(string _key, int _index = 1)
-    {
-        var inputString = GetInputString(_key, _index);
-        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
-
-        if (stringArray.Length == 0)
-        {
-            return null;
-        }
-
-        var result = new bool[stringArray.Length];
-        for (int i = 0; i < stringArray.Length; i++)
-        {
-            bool.TryParse(stringArray[i], out result[i]);
-        }
-
-        return result;
-    }
-
-    private List<int> GetTimeArray(string _key, int _index = 1)
-    {
-        var configContent = GetInputString(_key, _index);
-        var stringArray = configContent.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
-        var timeList = new List<int>();
-        for (int i = 0; i < stringArray.Length; i++)
-        {
-            var input = stringArray[i];
-            var matches = Regex.Matches(input, "[0-9]{1,2}");
-            var hour = matches.Count > 0 ? int.Parse(matches[0].Value) : 0;
-            var minute = matches.Count > 1 ? int.Parse(matches[1].Value) : 0;
-            timeList.Add(hour * 60 + minute);
-        }
-
-        return timeList;
-    }
-
-    private string GetInputString(string _key, int _index = 1)
-    {
-        var config = Config.Instance.Get<FuncConfigConfig>(_key);
-        var inputString = string.Empty;
-
-        switch (_index)
-        {
-            case 1:
-                inputString = config.Numerical1;
-                break;
-            case 2:
-                inputString = config.Numerical2;
-                break;
-            case 3:
-                inputString = config.Numerical3;
-                break;
-            case 4:
-                inputString = config.Numerical4;
-                break;
-            case 5:
-                inputString = config.Numerical5;
-                break;
-        }
-
-        return inputString;
-    }
-
-
-}
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using TableConfig;
+using System;
+using System.Text.RegularExpressions;
+using System.Linq;
+using Snxxz.UI;
+
+public class GeneralDefine
+{
+    public static int greatMasterStartLV { get; private set; }
+    public static int playerMaxLevel { get; private set; }
+    public static float potentialUpSuccessRecommend { get; private set; }
+    public static int[] kylinHomeCollectItems;
+    public static List<int> dailyQuestOpenTime;
+    public static int flyBootItemId { get; private set; }
+    public static int teamReadyTime { get; private set; }
+    public static int elderGodAreaAngerTotal { get; private set; }
+    public static float petRandomSpeak { get; private set; }
+    public static int[] openJobs { get; private set; }
+    public static int playerNameLength { get; private set; }
+    public static int guardDungeonCageNPCID { get; private set; }
+    public static float guardBubbleInterval { get; private set; }
+    public static List<int> autoOnHookMap { get; private set; }
+    public static float autoRideHorse { get; private set; }
+    public static Dictionary<int, string> equipPlaceNameDict { get; private set; }
+    public static Dictionary<int, int> moneyDisplayIds { get; private set; }
+    public static int expDisplayId { get; private set; }
+    public static float xpGuideDelay { get; private set; }
+    public static float xpGuideDuration { get; private set; }
+    public static Dictionary<int, string> trailBossHeadIcons { get; private set; }
+    public static Dictionary<int, string> godWeaponMobs { get; private set; }
+    public static float ResetComAtkTime { get; private set; }
+    public static int RotateSpeed { get; private set; }
+    public static float CloseNpcDist { get; private set; }
+    public static float FarawayNpcDist { get; private set; }
+    public static List<int> SpecialNpcIDs { get; private set; }
+    public static Dictionary<int, int> wingEquipLimits { get; private set; }
+    public static float PetDanceInterval { get; private set; }
+    public static float FuncNpcDanceInterval { get; private set; }
+    public static float audioScaleWhenFullScreenOn { get; private set; }
+    public static int ruinsTranscriptMapId { get; private set; }
+    public static List<int> GuardianPickUpID { get; private set; }
+    public static List<int> EarlierGetTreasure { get; private set; }
+    public static int BossSound { get; private set; }
+    public static Dictionary<int, int> iceCrystalMonsterScores { get; private set; }
+    public static float PlayBossHurtInterval { get; private set; }
+    public static List<int> NoXpDungeons { get; private set; }
+    public static List<int> RandomJobs { get; private set; }
+    public static int elderGodTalkingTime { get; private set; }
+    public static int elderGodBigBoss { get; private set; }
+    public static List<int> PassiveSkillShow { get; private set; }
+    public static List<int> bossShuntMaps { get; private set; }
+    public static int bossShuntDays { get; private set; }
+    public static Dictionary<int, int[]> itemDropEffect = new Dictionary<int, int[]>();
+    public static Dictionary<int, int[]> xllyDropEffect = new Dictionary<int, int[]>();
+    public static Dictionary<int, int[]> xqryDropEffect = new Dictionary<int, int[]>();
+    public static Dictionary<int, List<int[]>> customDropEffect = new Dictionary<int, List<int[]>>();
+    public static Dictionary<int, int> dropEffectQuality = new Dictionary<int, int>();
+    public static Dictionary<int, int> BuffToHitEffect = new Dictionary<int, int>();
+
+    //鍙傛暟int锛宨nt 锛宻tring 鍒嗗埆琛ㄧず鑱屼笟锛岃浆鐢熺瓑绾э紝icon
+    static Dictionary<int, Dictionary<int, string>> jobHeadPortrait = new Dictionary<int, Dictionary<int, string>>();
+    static Dictionary<int, Dictionary<int, string>> otherjobHeadPortrait = new Dictionary<int, Dictionary<int, string>>();
+    public static Dictionary<int, int> bossWearyValues = new Dictionary<int, int>();
+    public static Dictionary<int, Vector3> NpcPosOffset = new Dictionary<int, Vector3>();
+    public static Dictionary<int, string> propertyIconDict = new Dictionary<int, string>();
+
+    public static int demonJarHintLevelLimit { get; private set; }
+    public static int demonJarHintLineId { get; private set; }
+    public static int skillPanelUnLock { get; private set; }
+    public static int dailyQuestRedpointLevelLimit { get; private set; }
+    public static int lowHpRemind { get; private set; }
+    public static int munekadolockLimit { get; private set; }
+    public static int maxItemDropEffectCount { get; private set; }
+
+    public static int[] autoBuyItemIds;
+    public static int[] autoBuyItemPrices;
+
+    public static List<int> neutralMaps = new List<int>();
+    public static List<int> neutralBossMaps = new List<int>();
+
+    public static int demonJarRedPoint { get; private set; }
+    public static string LoadLV { get; private set; }
+
+    public static float mainWinSkillResetTime { get; private set; }
+    public static int OffLineTimeLackRemendLevelLimit { get; private set; }
+    public static Vector3 heroDialogueOffset { get; private set; }
+    public static Vector3 heroDialogueRotation { get; private set; }
+    public static float heroDialogueScale { get; private set; }
+
+    public static List<int> ancientGrandTotalAchievements { get; private set; }
+    public static List<int> ancientContinueKillAchievements { get; private set; }
+
+    public static int trialDungeonGroupChallengeTipLv { get; private set; }
+    public static int prayerRedpointLimitLv { get; private set; }
+
+    public static int demonJarLevelLimit { get; private set; }
+
+    public static int fairyLandGuideId = 82;
+
+    public static int specialGuide41Mission { get; private set; }
+    public static int specialGuide41Achievement { get; private set; }
+
+    public static int supremeRechargeVipLv { get; private set; }
+
+    public static int rechargeRedpointLv { get; private set; }
+    public static int rechargeRedpointMinLv { get; private set; }
+
+    public static int runeTowerSweepBuyTimes { get; private set; }
+    public static int runeTowerSweepBuyPrice { get; private set; }
+
+    public static int teamMatchingTimeOut { get; private set; }
+    public static List<int> inGameDownLoadLevelCheckPoints = null;
+    public static List<int> inGameDownLoadTaskCheckPoints = null;
+    public static int inGameDownLoadHighLevel { get; private set; }
+    public static List<int> worldBossNoRebornRemindMaps = null;
+    public static List<int> bossHomeNoRebornRemindMaps = null;
+    public static List<int> elderGodNoRebornRemindMaps = null;
+    public static List<int> demonJarNoRebornRemindMaps = null;
+    public static List<int> dogzNoRebornRemindMaps = null;
+
+    public static string[][] ModeDefaultConfig { get; private set; }
+    public static int[] RealmGroup { get; private set; }
+    public static float PrefightAtkRange { get; private set; }
+
+    public static Dictionary<int, string> multipleRealmImgDict { get; private set; }
+
+    public static int inGameDownLoadHighestLevelPoint { get; private set; }
+
+    public static List<int> dungeonCanUseMoneyIds { get; private set; }
+    public static int dogzBoxLimit { get; private set; }
+
+    public static Dictionary<int, int> dungeonRebornClientTimes { get; private set; }
+    public static int[] CompareEquipPlaces { get; private set; }
+    public static Dictionary<int, int> fairyGrabBossMapLines { get; private set; }
+
+    public static Dictionary<int, List<int>> DropItemEffectMapID { get; private set; }
+
+    public static List<int> RebornAutoFightMapID { get; private set; }
+
+    public static string teamWorldCall;
+    public static int teamWorldCallInviteCount;
+
+    public static List<Item> ancientKingAwards = new List<Item>();
+
+    public static int lowQualityCount { get; private set; }
+    public static int medQualityCount { get; private set; }
+    public static int highQualityCount { get; private set; }
+
+    public static void Init()
+    {
+        try
+        {
+            CompareEquipPlaces = GetIntArray("EquipUpType");
+            greatMasterStartLV = GetInt("GreatMasterStartLV");
+            playerMaxLevel = GetInt("PlayerMaxLV");
+            potentialUpSuccessRecommend = GetFloat("SPSkillType", 2) * 0.0001f;
+            kylinHomeCollectItems = GetIntArray("KirinNpc", 2);
+            dailyQuestOpenTime = GetTimeArray("ActionTime", 1);
+            flyBootItemId = GetInt("TransportPay");
+            teamReadyTime = GetInt("TeamReadyTime");
+            playerNameLength = GetInt("RoleNameLength");
+            elderGodAreaAngerTotal = GetInt("AngryAdd", 4);
+            petRandomSpeak = GetFloat("PetRandomSpeak");
+            guardDungeonCageNPCID = GetInt("GuardFBCageNPCID");
+            guardBubbleInterval = GetFloat("GuardFBCageNPCID", 3);
+            autoRideHorse = GetFloat("AutoRideHorseTime") * Constants.F_DELTA;
+            moneyDisplayIds = ConfigParse.GetDic<int, int>(GetInputString("MoneyDisplayModel", 1));
+            expDisplayId = GetInt("MoneyDisplayModel", 2);
+            openJobs = GetIntArray("OpenJob");
+            xpGuideDelay = GetFloat("GuideConfig");
+            xpGuideDuration = GetFloat("GuideConfig", 2);
+            ResetComAtkTime = GetFloat("AtkWaitingTime");
+            autoOnHookMap = new List<int>(GetIntArray("AutoOnHookMap"));
+            GuardianPickUpID = new List<int>(GetIntArray("GuardianPickUpID"));
+            RotateSpeed = GetInt("RoleTurnedAngle");
+            CloseNpcDist = GetFloat("ConversationDistanc", 2);
+            FarawayNpcDist = GetFloat("ConversationDistanc");
+            SpecialNpcIDs = new List<int>(GetIntArray("SpecialCollectNpcs", 1));
+            PetDanceInterval = GetInt("PetDanceInterval") * Constants.F_GAMMA;
+            FuncNpcDanceInterval = GetInt("PetDanceInterval", 2) * Constants.F_GAMMA;
+            ruinsTranscriptMapId = GetInt("SpRewardMapID");
+            EarlierGetTreasure = new List<int>(GetIntArray("EarlierGetTreasure"));
+            BossSound = GetInt("BossSound");
+            PlayBossHurtInterval = GetFloat("BossSound", 2);
+            var jobHeadPortraitConfig1 = Config.Instance.Get<FuncConfigConfig>("Job1Head");
+            jobHeadPortrait[1] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig1.Numerical1);
+            otherjobHeadPortrait[1] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig1.Numerical2);
+
+            var jobHeadPortraitConfig2 = Config.Instance.Get<FuncConfigConfig>("Job2Head");
+            jobHeadPortrait[2] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig2.Numerical1);
+            otherjobHeadPortrait[2] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig2.Numerical2);
+
+            var jobHeadPortraitConfig3 = Config.Instance.Get<FuncConfigConfig>("Job3Head");
+            jobHeadPortrait[3] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig3.Numerical1);
+            otherjobHeadPortrait[3] = ConfigParse.GetDic<int, string>(jobHeadPortraitConfig3.Numerical2);
+
+            bossWearyValues = ConfigParse.GetDic<int, int>(GetInputString("KillBossCntLimit", 2));
+            wingEquipLimits = ConfigParse.GetDic<int, int>(GetInputString("WingRealmLimit", 1));
+            int i = 0;
+            int[] equipPlaces = GetIntArray("EquipArea", 1);
+            string[] equipPlacesNames = GetStringArray("EquipArea", 2);
+            equipPlaceNameDict = new Dictionary<int, string>();
+            for (i = 0; i < equipPlaces.Length; i++)
+            {
+                if (!equipPlaceNameDict.ContainsKey(equipPlaces[i]))
+                {
+                    equipPlaceNameDict.Add(equipPlaces[i], equipPlacesNames[i]);
+                }
+                else
+                {
+                    DebugEx.LogError("EquipArea : 瑁呭浣嶇疆閲嶅");
+                }
+            }
+            var _trailBossJson = LitJson.JsonMapper.ToObject(GetInputString("MuneKadoTrialBossHead", 1));
+            trailBossHeadIcons = new Dictionary<int, string>();
+            foreach (var _key in _trailBossJson.Keys)
+            {
+                var _npcId = int.Parse(_key);
+                if (!trailBossHeadIcons.ContainsKey(_npcId))
+                {
+                    trailBossHeadIcons.Add(_npcId, _trailBossJson[_key].ToString());
+                }
+            }
+            var _godWeaponJson = LitJson.JsonMapper.ToObject(GetInputString("GodModel", 1));
+            godWeaponMobs = new Dictionary<int, string>();
+            foreach (var _key in _godWeaponJson.Keys)
+            {
+                var _godWeaponType = int.Parse(_key);
+                if (!godWeaponMobs.ContainsKey(_godWeaponType))
+                {
+                    godWeaponMobs.Add(_godWeaponType, _godWeaponJson[_key].ToString());
+                }
+            }
+
+            audioScaleWhenFullScreenOn = GetFloat("AudioSound");
+
+            iceCrystalMonsterScores = ConfigParse.GetDic<int, int>(GetInputString("IceLodeNeedPoint", 2));
+
+            NoXpDungeons = new List<int>(GetIntArray("XpNoUseDungeon"));
+            RandomJobs = new List<int>(GetIntArray("RandomJob"));
+            elderGodTalkingTime = GetInt("ElderGodTalkingTime");
+            elderGodBigBoss = GetInt("ElderGodBigBoss");
+            PassiveSkillShow = new List<int>(GetIntArray("PassiveSkillShow"));
+
+            FuncConfigConfig func = Config.Instance.Get<FuncConfigConfig>("NpcPosOffset");
+            LitJson.JsonData _data = LitJson.JsonMapper.ToObject(func.Numerical1);
+            foreach (var _key in _data.Keys)
+            {
+                int _npcID = int.Parse(_key);
+                double[] _pos = new double[2];
+                _pos[0] = (double)_data[_key][0];
+                _pos[1] = (double)_data[_key][1];
+                NpcPosOffset.Add(_npcID, new Vector3((float)_pos[0], 0, (float)_pos[1]));
+            }
+
+            FuncConfigConfig nxxdImg = Config.Instance.Get<FuncConfigConfig>("NXXDPicture");
+            LitJson.JsonData nxxdData = LitJson.JsonMapper.ToObject(nxxdImg.Numerical1);
+            multipleRealmImgDict = new Dictionary<int, string>();
+            if (nxxdData.IsArray)
+            {
+                for (i = 0; i < nxxdData.Count; i++)
+                {
+                    if (nxxdData[i].IsArray)
+                    {
+                        multipleRealmImgDict.Add(int.Parse(nxxdData[i][0].ToString()), nxxdData[i][1].ToString());
+                    }
+                }
+            }
+
+            bossShuntMaps = new List<int>(GetIntArray("BossShunt"));
+            bossShuntDays = GetInt("BossShunt", 3);
+
+            itemDropEffect.Clear();
+            func = Config.Instance.Get<FuncConfigConfig>("ItemEquipmentEffect");
+            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
+            List<string> _keys = new List<string>(_data.Keys);
+            for (i = 0; i < _keys.Count; ++i)
+            {
+                int[] _props = new int[3];
+                for (int j = 0; j < 3; ++j)
+                {
+                    _props[j] = (int)_data[_keys[i]][j];
+                }
+                itemDropEffect[int.Parse(_keys[i])] = _props;
+            }
+
+            xllyDropEffect.Clear();
+            _data = LitJson.JsonMapper.ToObject(func.Numerical2);
+            _keys.Clear();
+            _keys.AddRange(_data.Keys);
+            for (i = 0; i < _keys.Count; ++i)
+            {
+                int[] _props = new int[3];
+                for (int j = 0; j < 3; ++j)
+                {
+                    _props[j] = (int)_data[_keys[i]][j];
+                }
+                xllyDropEffect[int.Parse(_keys[i])] = _props;
+            }
+
+            xqryDropEffect.Clear();
+            _data = LitJson.JsonMapper.ToObject(func.Numerical3);
+            _keys.Clear();
+            _keys.AddRange(_data.Keys);
+            for (i = 0; i < _keys.Count; ++i)
+            {
+                int[] _props = new int[3];
+                for (int j = 0; j < 3; ++j)
+                {
+                    _props[j] = (int)_data[_keys[i]][j];
+                }
+                xqryDropEffect[int.Parse(_keys[i])] = _props;
+            }
+
+            dropEffectQuality.Clear();
+            func = Config.Instance.Get<FuncConfigConfig>("IeemEquipmentEffectQuality");
+            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
+            _keys.Clear();
+            _keys.AddRange(_data.Keys);
+            for (i = 0; i < _keys.Count; ++i)
+            {
+                dropEffectQuality[int.Parse(_keys[i])] = (int)_data[_keys[i]];
+            }
+
+            customDropEffect.Clear();
+            func = Config.Instance.Get<FuncConfigConfig>("ItemEquipmentEffectItem");
+            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
+            _keys.Clear();
+            _keys.AddRange(_data.Keys);
+            int[] _tmp = null;
+            List<int[]> _content = null;
+            for (i = 0; i < _keys.Count; ++i)
+            {
+                _content = new List<int[]>();
+                foreach (LitJson.JsonData _values in _data[_keys[i]])
+                {
+                    if (_values.IsArray)
+                    {
+                        _tmp = new int[2];
+                        _tmp[0] = (int)_values[0];
+                        _tmp[1] = (int)_values[1];
+                    }
+                    else
+                    {
+                        _tmp = new int[1];
+                        _tmp[0] = (int)_values;
+                    }
+                    _content.Add(_tmp);
+                }
+                customDropEffect.Add(int.Parse(_keys[i]), _content);
+            }
+
+            BuffToHitEffect.Clear();
+            func = Config.Instance.Get<FuncConfigConfig>("BuffToHitEffect");
+            if (!string.IsNullOrEmpty(func.Numerical1) && !string.IsNullOrEmpty(func.Numerical2))
+            {
+                string[] _buffs = func.Numerical1.Split('|');
+                string[] _effects = func.Numerical2.Split('|');
+                for (i = 0; i < _buffs.Length; ++i)
+                {
+                    BuffToHitEffect[int.Parse(_buffs[i])] = int.Parse(_effects[i]);
+                }
+            }
+
+            demonJarHintLevelLimit = GetInt("DemonJarFirstRemin");
+            demonJarHintLineId = GetInt("DemonJarFirstRemin", 2);
+            skillPanelUnLock = GetInt("SkillPanelUnlock");
+            dailyQuestRedpointLevelLimit = GetInt("DailyQuestRedPoint");
+            lowHpRemind = GetInt("LowHpRemind");
+            autoBuyItemIds = GetIntArray("BuyItemPrice", 1);
+            autoBuyItemPrices = GetIntArray("BuyItemPrice", 2);
+            neutralMaps.AddRange(GetIntArray("MapLine", 4));
+            neutralBossMaps.AddRange(GetIntArray("BossListMapID"));
+
+            var _propertyIconCfg = Config.Instance.Get<FuncConfigConfig>("PropertyIcon");
+            var _propertyIconJson = LitJson.JsonMapper.ToObject(_propertyIconCfg.Numerical1);
+            foreach (var _key in _propertyIconJson.Keys)
+            {
+                var _property = int.Parse(_key);
+                propertyIconDict.Add(_property, _propertyIconJson[_key].ToString());
+            }
+
+            munekadolockLimit = GetInt("MunekadoLockLimit");
+            demonJarRedPoint = GetInt("DemonJarRedPoint");
+            LoadLV = GetInputString("LoadLV");
+
+            mainWinSkillResetTime = GetFloat("AutomaticSwitch");
+            OffLineTimeLackRemendLevelLimit = GetInt("TJGLevelLimit");
+            heroDialogueOffset = GetInputString("NpcHalfLength", 1).Vector3Parse();
+            heroDialogueRotation = GetInputString("NpcHalfLength", 2).Vector3Parse();
+            heroDialogueScale = GetFloat("NpcHalfLength", 3);
+
+            var ancientConfig = Config.Instance.Get<FuncConfigConfig>("ElderBattleTarget");
+            ancientGrandTotalAchievements = new List<int>();
+            ancientGrandTotalAchievements.AddRange(ConfigParse.GetMultipleStr<int>(ancientConfig.Numerical1));
+            ancientContinueKillAchievements = new List<int>();
+            ancientContinueKillAchievements.AddRange(ConfigParse.GetMultipleStr<int>(ancientConfig.Numerical2));
+
+            trialDungeonGroupChallengeTipLv = GetInt("SingleIntoFB");
+            prayerRedpointLimitLv = GetInt("PrayRedPoint");
+            demonJarLevelLimit = GetInt("DemonJarLevelLimit");
+            maxItemDropEffectCount = GetInt("ItemMaskEffect");
+
+            specialGuide41Mission = GetInt("SpecialGuide41", 1);
+            specialGuide41Achievement = GetInt("SpecialGuide41", 2);
+
+            supremeRechargeVipLv = GetInt("SupremeCTGVipLimit", 1);
+
+            rechargeRedpointLv = GetInt("FirstPayRedPoint", 1);
+            rechargeRedpointMinLv = GetInt("FirstPayRedPoint", 2);
+            runeTowerSweepBuyTimes = GetInt("RuneTowerSweepBuy");
+            runeTowerSweepBuyPrice = GetInt("RuneTowerSweepBuy", 2);
+            teamMatchingTimeOut = GetInt("TeamMatchingTimeOut");
+            inGameDownLoadLevelCheckPoints = new List<int>(GetIntArray("InGameDownLoad"));
+            inGameDownLoadTaskCheckPoints = new List<int>(GetIntArray("InGameDownLoad", 2));
+            inGameDownLoadHighLevel = GetInt("InGameDownLoad", 3);
+
+            worldBossNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 1));
+            bossHomeNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 2));
+            elderGodNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 3));
+            demonJarNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 4));
+            dogzNoRebornRemindMaps = new List<int>(GetIntArray("NoRebornRemindMap", 5));
+
+            if (ModeDefaultConfig == null)
+            {
+                func = Config.Instance.Get<FuncConfigConfig>("ModeDefault");
+
+                string[] _funcNpc = func.Numerical1.Split('|');
+                string[] _fightNpc = func.Numerical2.Split('|');
+                string[] _pet = func.Numerical3.Split('|');
+                string[] _horse = func.Numerical4.Split('|');
+
+                ModeDefaultConfig = new string[4][];
+                ModeDefaultConfig[0] = _funcNpc;
+                ModeDefaultConfig[1] = _fightNpc;
+                ModeDefaultConfig[2] = _pet;
+                ModeDefaultConfig[3] = _horse;
+            }
+
+            if (RealmGroup == null)
+            {
+                func = Config.Instance.Get<FuncConfigConfig>("RealmGroup");
+                string[] _group = func.Numerical1.Split('|');
+                RealmGroup = new int[_group.Length];
+                for (int j = 0; j < _group.Length; ++j)
+                {
+                    int.TryParse(_group[j], out RealmGroup[j]);
+                }
+            }
+
+            func = Config.Instance.Get<FuncConfigConfig>("PrefightAtkRange");
+            PrefightAtkRange = float.Parse(func.Numerical1);
+            inGameDownLoadHighestLevelPoint = GetInt("DownReward", 2);
+
+            dungeonCanUseMoneyIds = new List<int>(GetIntArray("FBEnterTickeyAuto", 1));
+            dungeonRebornClientTimes = ConfigParse.GetDic<int, int>(GetInputString("DuplicatesRebornTime", 2));
+            dogzBoxLimit = GetInt("DogzBoxLimit");
+
+            fairyGrabBossMapLines = ConfigParse.GetDic<int, int>(GetInputString("MapLine", 2));
+            var grabBossMaps = fairyGrabBossMapLines.Keys.ToList();
+            foreach (var _key in grabBossMaps)
+            {
+                fairyGrabBossMapLines[_key] = fairyGrabBossMapLines[_key] - 1;
+            }
+
+            if (DropItemEffectMapID == null)
+            {
+                DropItemEffectMapID = new Dictionary<int, List<int>>();
+            }
+            DropItemEffectMapID.Clear();
+            func = Config.Instance.Get<FuncConfigConfig>("DropItemEffectMapID");
+            _data = LitJson.JsonMapper.ToObject(func.Numerical1);
+            int _itemID;
+            _keys.Clear();
+            _keys.AddRange(_data.Keys);
+            for (int j = 0; j < _keys.Count; ++j)
+            {
+                if (int.TryParse(_keys[j].ToString(), out _itemID))
+                {
+                    if (!DropItemEffectMapID.ContainsKey(_itemID))
+                    {
+                        DropItemEffectMapID.Add(_itemID, new List<int>());
+                    }
+                    var _jsonMapIDs = _data[_keys[j]];
+                    foreach (var _jsonMapID in _jsonMapIDs)
+                    {
+                        var _mapID = ((LitJson.IJsonWrapper)_jsonMapID).GetInt();
+                        if (!DropItemEffectMapID[_itemID].Contains(_mapID))
+                        {
+                            DropItemEffectMapID[_itemID].Add(_mapID);
+                        }
+                    }
+                }
+            }
+
+            int[] mapIDs = GetIntArray("RebornAutoFightDungeon");
+            RebornAutoFightMapID = new List<int>(mapIDs);
+
+            teamWorldCall = GetInputString("TeamWorldCall");
+            teamWorldCallInviteCount = GetInt("TeamWorldCall", 2);
+
+            var ancientKingAwradConfig = Config.Instance.Get<FuncConfigConfig>("ElderBattlefieldTopAward");
+            if (ancientKingAwradConfig != null)
+            {
+                var itemArray = LitJson.JsonMapper.ToObject<int[][]>(ancientKingAwradConfig.Numerical1);
+                for (int k = 0; k < itemArray.Length; k++)
+                {
+                    ancientKingAwards.Add(new Item()
+                    {
+                        id = itemArray[k][0],
+                        count = itemArray[k][1],
+                        bind = itemArray[k][2] == 1,
+                    });
+                }
+            }
+
+            func = Config.Instance.Get<FuncConfigConfig>("QualityEffectConfig");
+            lowQualityCount = int.Parse(func.Numerical1);
+            medQualityCount = int.Parse(func.Numerical2);
+            highQualityCount = int.Parse(func.Numerical3);
+        }
+        catch (Exception ex)
+        {
+            Debug.LogError(ex);
+        }
+
+    }
+
+    public static string GetJobHeadPortrait(int _job, int _ReincarnationLv)
+    {
+        if (jobHeadPortrait.ContainsKey(_job) && jobHeadPortrait[_job].ContainsKey(_ReincarnationLv))
+        {
+            return jobHeadPortrait[_job][_ReincarnationLv];
+        }
+        else
+        {
+            return string.Empty;
+        }
+    }
+
+    public static string GetOtherJobHeadPortrait(int _job, int _ReincarnationLv)
+    {
+        if (otherjobHeadPortrait.ContainsKey(_job) && otherjobHeadPortrait[_job].ContainsKey(_ReincarnationLv))
+        {
+            return otherjobHeadPortrait[_job][_ReincarnationLv];
+        }
+        else
+        {
+            return string.Empty;
+        }
+    }
+
+    private static int GetInt(string _key, int _index = 1)
+    {
+        var result = 0;
+        int.TryParse(GetInputString(_key, _index), out result);
+        return result;
+    }
+
+    private static float GetFloat(string _key, int _index = 1)
+    {
+        var result = 0f;
+        float.TryParse(GetInputString(_key, _index), out result);
+        return result;
+    }
+
+    private static bool GetBool(string _key, int _index = 1)
+    {
+        var result = false;
+        bool.TryParse(GetInputString(_key, _index), out result);
+        return result;
+    }
+
+    private static int[] GetIntArray(string _key, int _index = 1)
+    {
+        var inputString = GetInputString(_key, _index);
+        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
+
+        if (stringArray.Length == 0)
+        {
+            return null;
+        }
+
+        var result = new int[stringArray.Length];
+        for (int i = 0; i < stringArray.Length; i++)
+        {
+            int.TryParse(stringArray[i], out result[i]);
+        }
+
+        return result;
+    }
+
+    private static string[] GetStringArray(string _key, int _index = 1)
+    {
+        var inputString = GetInputString(_key, _index);
+        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
+
+        if (stringArray.Length == 0)
+        {
+            return null;
+        }
+
+        var result = new string[stringArray.Length];
+        for (int i = 0; i < stringArray.Length; i++)
+        {
+            result[i] = stringArray[i];
+        }
+
+        return result;
+    }
+
+
+    private static float[] GetFloatArray(string _key, int _index = 1)
+    {
+        var inputString = GetInputString(_key, _index);
+        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
+
+        if (stringArray.Length == 0)
+        {
+            return null;
+        }
+
+        var result = new float[stringArray.Length];
+        for (int i = 0; i < stringArray.Length; i++)
+        {
+            float.TryParse(stringArray[i], out result[i]);
+        }
+
+        return result;
+    }
+
+    private static bool[] GetBoolArray(string _key, int _index = 1)
+    {
+        var inputString = GetInputString(_key, _index);
+        var stringArray = inputString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
+
+        if (stringArray.Length == 0)
+        {
+            return null;
+        }
+
+        var result = new bool[stringArray.Length];
+        for (int i = 0; i < stringArray.Length; i++)
+        {
+            bool.TryParse(stringArray[i], out result[i]);
+        }
+
+        return result;
+    }
+
+    private static List<int> GetTimeArray(string _key, int _index = 1)
+    {
+        var configContent = GetInputString(_key, _index);
+        var stringArray = configContent.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
+        var timeList = new List<int>();
+        for (int i = 0; i < stringArray.Length; i++)
+        {
+            var input = stringArray[i];
+            var matches = Regex.Matches(input, "[0-9]{1,2}");
+            var hour = matches.Count > 0 ? int.Parse(matches[0].Value) : 0;
+            var minute = matches.Count > 1 ? int.Parse(matches[1].Value) : 0;
+            timeList.Add(hour * 60 + minute);
+        }
+
+        return timeList;
+    }
+
+    private static string GetInputString(string _key, int _index = 1)
+    {
+        var config = Config.Instance.Get<FuncConfigConfig>(_key);
+        var inputString = string.Empty;
+
+        switch (_index)
+        {
+            case 1:
+                inputString = config.Numerical1;
+                break;
+            case 2:
+                inputString = config.Numerical2;
+                break;
+            case 3:
+                inputString = config.Numerical3;
+                break;
+            case 4:
+                inputString = config.Numerical4;
+                break;
+            case 5:
+                inputString = config.Numerical5;
+                break;
+        }
+
+        return inputString;
+    }
+
+
+}

--
Gitblit v1.8.0