| Core/GameEngine/Model/Config/DungeonInspireConfig.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/GameEngine/Model/Config/DungeonInspireConfig.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30A_tagMCFBEncourageInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/NetworkPackage/ServerPack/HA3_Function/HA30A_tagMCFBEncourageInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonFairyLandWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonInspireBehaviour.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonInspireWin.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Dungeon/DungeonModel.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/GameEngine/Model/Config/DungeonInspireConfig.cs
@@ -1,6 +1,6 @@ //-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Saturday, January 06, 2018 // [ Date ]: Friday, September 14, 2018 //-------------------------------------------------------- using UnityEngine; @@ -11,11 +11,11 @@ public partial class DungeonInspireConfig : ConfigBase { public int ID { get ; private set ; } public int DataMapId { get ; private set ; } public int InspireType { get ; private set ; } public int InspireCount { get ; private set ; } public int MoneyCount { get ; private set ; } public int ID { get ; private set ; } public int DataMapId { get ; private set ; } public int InspireType { get ; private set ; } public int InspireCount { get ; private set ; } public string MoneyCount { get ; private set; } public override string getKey() { @@ -25,15 +25,15 @@ public override void Parse() { try { ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; DataMapId=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; InspireType=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; InspireCount=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; MoneyCount=IsNumeric(rawContents[4]) ? int.Parse(rawContents[4]):0; ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; DataMapId=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0; InspireType=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; InspireCount=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; MoneyCount = rawContents[4].Trim(); } catch (Exception ex) { Core/GameEngine/Model/Config/DungeonInspireConfig.cs.meta
@@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 413d3284263320648a52a0009e3d125f timeCreated: 1515213550 timeCreated: 1536909479 licenseType: Pro MonoImporter: serializedVersion: 2 Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA30A_tagMCFBEncourageInfo.cs
@@ -21,7 +21,10 @@ base.Done(vNetPack); HA30A_tagMCFBEncourageInfo vNetData = vNetPack as HA30A_tagMCFBEncourageInfo; model.UpdateInspireLevel(vNetData.Cnt1, vNetData.Cnt2); for (int i = 0; i < vNetData.Cnt; i++) { model.UpdateInspireLevel(vNetData.InfoList[i].MoneyType, vNetData.InfoList[i].EncourageCnt); } } } Core/NetworkPackage/ServerPack/HA3_Function/HA30A_tagMCFBEncourageInfo.cs
@@ -4,16 +4,26 @@ //A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo public class HA30A_tagMCFBEncourageInfo : GameNetPackBasic { public byte Cnt1; // 当前铜钱鼓舞次数 public byte Cnt2; // 当前仙玉鼓舞次数 public byte Cnt; // public tagMCFBEncourageCnt[] InfoList; // 次数信息 public HA30A_tagMCFBEncourageInfo () { _cmd = (ushort)0xA30A; } public override void ReadFromBytes (byte[] vBytes) { TransBytes (out Cnt1, vBytes, NetDataType.BYTE); TransBytes (out Cnt2, vBytes, NetDataType.BYTE); TransBytes (out Cnt, vBytes, NetDataType.BYTE); InfoList = new tagMCFBEncourageCnt[Cnt]; for (int i = 0; i < Cnt; i ++) { InfoList[i] = new tagMCFBEncourageCnt(); TransBytes (out InfoList[i].MoneyType, vBytes, NetDataType.BYTE); TransBytes (out InfoList[i].EncourageCnt, vBytes, NetDataType.BYTE); } } public struct tagMCFBEncourageCnt { public byte MoneyType; // 金钱类型 public byte EncourageCnt; // 当前鼓舞次数 } } System/Dungeon/DungeonFairyLandWin.cs
@@ -121,9 +121,9 @@ private void DungeonEncourageEvent() { var lv = model.dungeonCoinInspireCount + model.dungeonJadeInspireCount; targetTextList[3].text = lv == 0 ? StringUtility.Contact(Language.Get("FairyLand_Func3"), ":", Language.Get("FairyLand_Func4")) : StringUtility.Contact(Language.Get("FairyLand_Func3"), ":<color=#00ff00>", lv * model.dungeonInspireUper, "%</color>"); var level = model.GetDungeonInspireLevel(); targetTextList[3].text = level == 0 ? StringUtility.Contact(Language.Get("FairyLand_Func3"), ":", Language.Get("FairyLand_Func4")) : StringUtility.Contact(Language.Get("FairyLand_Func3"), ":<color=#00ff00>", level * model.GetDungeonInspireUpper(31080), "%</color>"); } private void UpdateBuf() System/Dungeon/DungeonInspireBehaviour.cs
@@ -43,7 +43,7 @@ } for (int i = 0; i < _list.Count; i++) { if (_list[i].InspireType == 1) if (_list[i].InspireType == 3) { m_CoinConfig = _list[i]; break; @@ -54,13 +54,13 @@ private void UpdateDugeonInspireLv() { var mapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); var lv = model.dungeonJadeInspireCount + model.dungeonCoinInspireCount; m_Waggle = m_CoinConfig != null && model.dungeonCoinInspireCount < m_CoinConfig.InspireCount && lv < model.GetInspireMaxCount(mapId); var level = model.GetDungeonInspireLevel(); m_Waggle = m_CoinConfig != null && model.GetDungeonInspireLevel(3) < m_CoinConfig.InspireCount && level < model.GetInspireMaxCount(mapId); if (m_InspireProgress != null) { m_InspireProgress.gameObject.SetActive(PlayerDatas.Instance.baseData.MapID == DemonJarModel.DEMONJAR_MAPID); m_InspireProgress.text = StringUtility.Contact(lv * 10, "%"); m_InspireProgress.text = StringUtility.Contact(level * 10, "%"); } if (!m_Waggle) { @@ -100,7 +100,7 @@ private void OnInspireBtn() { if ((model.dungeonCoinInspireCount + model.dungeonJadeInspireCount) >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID)) if ((model.GetDungeonInspireLevel()) >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID)) { SysNotifyMgr.Instance.ShowTip("Xjmj_InspireMaxLevel"); return; System/Dungeon/DungeonInspireWin.cs
@@ -15,25 +15,17 @@ public class DungeonInspireWin : Window { [SerializeField] Button coinInspireBtn; [SerializeField] GameObject coinInspireMark; [SerializeField] Button fairyInspireBtn; [SerializeField] GameObject fairyInspireMark; [SerializeField] Text coinInspireInfoText; [SerializeField] Text fairyInspireInfoText; [SerializeField] Text m_InpsireLvTxt; [SerializeField] Button confirmBtn; [SerializeField] Button cancelBtn; [SerializeField] Button m_CloseBtn; [SerializeField] Button m_CoinInspire; [SerializeField] RectTransform m_CoinInspireCheck; [SerializeField] Button m_FairyInspire; [SerializeField] RectTransform m_FairyInspireCheck; [SerializeField] Text m_CoinCost; [SerializeField] Text m_FairyCost; [SerializeField] Text m_InspireLevel; [SerializeField] Text m_Remind; [SerializeField] Button m_Confirm; [SerializeField] Button m_Cancel; [SerializeField] Button m_Close; DungeonModel m_Model; DungeonModel model @@ -44,10 +36,10 @@ } } private bool isCoinInspire = false; private bool isFairyInspire = false; private DungeonInspireConfig coinInspireCfg = null; private DungeonInspireConfig fairyInspireCfg = null; private bool coinInspire = false; private bool fairyInspire = false; private DungeonInspireConfig coinInspireConfig = null; private DungeonInspireConfig fairyInspireConfig = null; #region Built-in protected override void BindController() { @@ -55,11 +47,11 @@ protected override void AddListeners() { coinInspireBtn.onClick.AddListener(OnCoinInspire); fairyInspireBtn.onClick.AddListener(OnFairyInspire); confirmBtn.onClick.AddListener(OnConfirmBtn); cancelBtn.onClick.AddListener(OnCancelBtn); m_CloseBtn.onClick.AddListener(CloseClick); m_CoinInspire.onClick.AddListener(CoinInspire); m_FairyInspire.onClick.AddListener(FairyInspire); m_Confirm.onClick.AddListener(Confirm); m_Cancel.onClick.AddListener(Cancel); m_Close.onClick.AddListener(CloseClick); } protected override void OnPreOpen() @@ -69,25 +61,30 @@ { return; } coinInspireCfg = null; fairyInspireCfg = null; coinInspireConfig = null; fairyInspireConfig = null; for (int i = 0; i < _list.Count; i++) { if (_list[i].InspireType == 1) if (_list[i].InspireType == 3) { coinInspireCfg = _list[i]; coinInspireConfig = _list[i]; } else if (_list[i].InspireType == 2) else if (_list[i].InspireType == 2 || _list[i].InspireType == 1 || _list[i].InspireType == 5) { fairyInspireCfg = _list[i]; fairyInspireConfig = _list[i]; } } coinInspireBtn.gameObject.SetActive(coinInspireCfg != null); isCoinInspire = coinInspireCfg == null ? false : true; isFairyInspire = !isCoinInspire; InitData(); m_CoinInspire.gameObject.SetActive(coinInspireConfig != null); coinInspire = coinInspireConfig == null ? false : true; fairyInspire = !coinInspire; Display(); UpdateInspireType(); DisplayRemind(); model.dungeonInspireLvEvent += DungeonEncourageEvent; } @@ -96,6 +93,12 @@ protected override void OnAfterOpen() { var _list = model.GetDungeonInspire(PlayerDatas.Instance.baseData.MapID); if (_list == null) { CloseImmediately(); return; } } protected override void OnPreClose() @@ -110,95 +113,125 @@ private void DungeonEncourageEvent() { var lv = model.dungeonCoinInspireCount + model.dungeonJadeInspireCount; if (lv >= fairyInspireCfg.InspireCount && !InFairyLandGuiding()) var level = model.GetDungeonInspireLevel(); if (level >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID) && !InGuiding()) { CloseImmediately(); return; } DisplayCost(); UpdateInspireType(); } private void OnCoinInspire() private void CoinInspire() { if (!isCoinInspire) if (!coinInspire) { if (model.dungeonCoinInspireCount >= coinInspireCfg.InspireCount) if (model.GetDungeonInspireLevel(3) >= coinInspireConfig.InspireCount) { SysNotifyMgr.Instance.ShowTip("Xjmj_CopperInspireFull"); return; } isCoinInspire = true; isFairyInspire = false; coinInspire = true; fairyInspire = false; } else { isCoinInspire = false; coinInspire = false; } UpdateInspireType(); } private void OnFairyInspire() private void FairyInspire() { if (coinInspireCfg == null) if (coinInspireConfig == null) { return; } isCoinInspire = false; isFairyInspire = !isFairyInspire; coinInspire = false; fairyInspire = !fairyInspire; UpdateInspireType(); } private void OnConfirmBtn() private void Confirm() { if (isFairyInspire) if (fairyInspire) { if (PlayerDatas.Instance.baseData.GoldPaper + PlayerDatas.Instance.baseData.Gold < fairyInspireCfg.MoneyCount && !InFairyLandGuiding()) uint money = 0; switch (fairyInspireConfig.InspireType) { SysNotifyMgr.Instance.ShowTip("Xjmj_InspireNoEnoughFairy"); case 1: money += PlayerDatas.Instance.baseData.Gold; break; case 2: money += PlayerDatas.Instance.baseData.GoldPaper; break; case 5: money = PlayerDatas.Instance.baseData.GoldPaper + PlayerDatas.Instance.baseData.Gold; break; } if (money < model.GetDungeonInspireCost(fairyInspireConfig) && !InGuiding()) { CloseImmediately(); WindowCenter.Instance.Open<RechargeTipWin>(); } else { CA508_tagCMDoFBAction inspirepack = new CA508_tagCMDoFBAction(); inspirepack.ActionType = 0; inspirepack.ActionInfo = (uint)fairyInspireCfg.InspireType; GameNetSystem.Instance.SendInfo(inspirepack); CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); pak.ActionType = 0; pak.ActionInfo = (uint)fairyInspireConfig.InspireType; GameNetSystem.Instance.SendInfo(pak); } } else if (isCoinInspire) else if (coinInspire) { if (PlayerDatas.Instance.baseData.Silver < coinInspireCfg.MoneyCount && !InFairyLandGuiding()) if (UIHelper.GetMoneyCnt(3) < (ulong)model.GetDungeonInspireCost(coinInspireConfig) && !InGuiding()) { SysNotifyMgr.Instance.ShowTip("Xjmj_InspireNoEnoughGold"); } else { CA508_tagCMDoFBAction inspirepack = new CA508_tagCMDoFBAction(); inspirepack.ActionType = 0; inspirepack.ActionInfo = (uint)coinInspireCfg.InspireType; GameNetSystem.Instance.SendInfo(inspirepack); CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction(); pak.ActionType = 0; pak.ActionInfo = (uint)coinInspireConfig.InspireType; GameNetSystem.Instance.SendInfo(pak); } } } private void OnCancelBtn() private void Cancel() { CloseImmediately(); } private void InitData() private void Display() { if (coinInspireCfg != null) { coinInspireInfoText.text = Language.Get("FairyLand_Func9", coinInspireCfg.MoneyCount, coinInspireCfg.InspireCount); } fairyInspireInfoText.text = Language.Get("FairyLand_Func10", fairyInspireCfg.MoneyCount); DisplayCost(); } bool InFairyLandGuiding() private void DisplayCost() { if (NewBieCenter.Instance.inGuiding && NewBieCenter.Instance.currentGuide == GeneralConfig.Instance.fairyLandGuideId) if (coinInspireConfig != null) { m_CoinCost.text = Language.Get("FairyLand_Func9", model.GetDungeonInspireCost(coinInspireConfig), coinInspireConfig.InspireCount); } if (fairyInspireConfig != null) { m_FairyCost.text = Language.Get("FairyLand_Func10", model.GetDungeonInspireCost(fairyInspireConfig)); } } void DisplayRemind() { m_Remind.gameObject.SetActive(fairyInspireConfig != null && fairyInspireConfig.InspireType == 5); } bool InGuiding() { if (NewBieCenter.Instance.inGuiding && NewBieCenter.Instance.currentGuide == GeneralConfig.Instance.fairyLandGuideId) { return true; } @@ -207,11 +240,12 @@ private void UpdateInspireType() { var lv = model.dungeonJadeInspireCount + model.dungeonCoinInspireCount; m_InpsireLvTxt.text = lv == 0 ? Language.Get("FairyLand_Func4") : Language.Get("HaveInspired", StringUtility.Contact("<color=#109d06>", lv * model.dungeonInspireUper, "%</color>")); coinInspireMark.SetActive(isCoinInspire); fairyInspireMark.SetActive(isFairyInspire); var level = model.GetDungeonInspireLevel(); m_InspireLevel.text = level == 0 ? Language.Get("FairyLand_Func4") : Language.Get("HaveInspired", StringUtility.Contact("<color=#109d06>", level * model.GetDungeonInspireUpper(PlayerDatas.Instance.baseData.MapID), "%</color>")); m_CoinInspireCheck.gameObject.SetActive(coinInspire); m_FairyInspireCheck.gameObject.SetActive(fairyInspire); } } System/Dungeon/DungeonModel.cs
@@ -73,17 +73,9 @@ set { m_DungeonResult = value; } } public int dungeonCoinInspireCount { get; private set; } public int dungeonJadeInspireCount { get; private set; } public int dungeonInspireUper { get; private set; } Dictionary<int, int> dungeonInspireCounts = new Dictionary<int, int>();//5-仙玉或绑玉 Dictionary<int, int> dungeonInspireUpperDict = new Dictionary<int, int>(); Dictionary<int, int> dungeonMaxInspireCountDict = new Dictionary<int, int>(); Dungeon m_SelectedKylinDungeon; public Dungeon selectedKylinDungeon { @@ -140,8 +132,7 @@ public void OnBeforePlayerDataInitialize() { dungeonCountRemainTimes.Clear(); dungeonCoinInspireCount = 0; dungeonJadeInspireCount = 0; dungeonInspireCounts.Clear(); } public void OnAfterPlayerDataInitialize() @@ -597,6 +588,7 @@ specialItemCollectRecord = default(Item); dungeonCoolDowns.Clear(); m_Mission = default(DungeonMissionData); dungeonInspireCounts.Clear(); } public void UpdateRecords(HA320_tagMCPlayerFBInfoData.tagMCFBInfo[] _serverInfos) @@ -690,10 +682,9 @@ } } public void UpdateInspireLevel(int coinInspireLv, int jadeInpsireLv) public void UpdateInspireLevel(int type, int count) { dungeonCoinInspireCount = coinInspireLv; dungeonJadeInspireCount = jadeInpsireLv; dungeonInspireCounts[type] = count; if (dungeonInspireLvEvent != null) { dungeonInspireLvEvent(); @@ -1216,22 +1207,35 @@ } } public int GetInspireMaxCount(int _dataMapId) public int GetDungeonInspireLevel(int moneyType = 0)//0代表总等级 { List<DungeonInspireConfig> _list = GetDungeonInspire(_dataMapId); int _maxCnt = 0; if (_list != null) var level = 0; foreach (var key in dungeonInspireCounts.Keys) { for (int i = 0; i < _list.Count; i++) if (moneyType == 0 || moneyType == key) { if (_list[i].InspireType == 2) { _maxCnt = _list[i].InspireCount; break; } level += dungeonInspireCounts[key]; } } return _maxCnt; return level; } public int GetDungeonInspireCost(DungeonInspireConfig config) { var level = GetDungeonInspireLevel(); Equation.Instance.Clear(); Equation.Instance.AddKeyValue("encourageLV", level); return Equation.Instance.Eval<int>(config.MoneyCount); } public int GetDungeonInspireUpper(int mapId) { return dungeonInspireUpperDict.ContainsKey(mapId) ? dungeonInspireUpperDict[mapId] : 0; } public int GetInspireMaxCount(int _dataMapId) { return dungeonMaxInspireCountDict.ContainsKey(_dataMapId) ? dungeonMaxInspireCountDict[_dataMapId] : 0; } public Item GetLackItem(DungeonSuppliesLackWin.LackType lackType) @@ -1363,10 +1367,11 @@ trialDungeonMapList.AddRange(ConfigParse.GetMultipleStr<int>(funcCfg.Numerical1)); } funcCfg = Config.Instance.Get<FuncConfigConfig>("InspireNum"); funcCfg = Config.Instance.Get<FuncConfigConfig>("FBEncourageBuff"); if (funcCfg != null) { dungeonInspireUper = int.Parse(funcCfg.Numerical1); dungeonMaxInspireCountDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical2); dungeonInspireUpperDict = ConfigParse.GetDic<int, int>(funcCfg.Numerical3); } foreach (var _cfg in Config.Instance.GetAllValues<DungeonInspireConfig>())