From f97a8a604bbd94fb07b6730ee6a79a18f35beb00 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 25 十二月 2018 14:23:15 +0800
Subject: [PATCH] 王者仙盟
---
Core/GameEngine/Model/Config/KingTreasureConfig.cs | 47 +++++++++
System/Treasure/KingTreasureModel.cs | 90 +++++++++++++++++
Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta | 12 ++
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs | 49 +++++----
System/Treasure/KingTreasureWin.cs | 64 ++++++++++++
5 files changed, 232 insertions(+), 30 deletions(-)
diff --git a/Core/GameEngine/Model/Config/KingTreasureConfig.cs b/Core/GameEngine/Model/Config/KingTreasureConfig.cs
new file mode 100644
index 0000000..fcc8976
--- /dev/null
+++ b/Core/GameEngine/Model/Config/KingTreasureConfig.cs
@@ -0,0 +1,47 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Tuesday, December 25, 2018
+//--------------------------------------------------------
+
+using UnityEngine;
+using System;
+
+namespace TableConfig {
+
+
+ public partial class KingTreasureConfig : ConfigBase {
+
+ public int ID { get ; private set ; }
+ public int MWID { get ; private set ; }
+ public int LV { get ; private set ; }
+ public string AddAttr { get ; private set; }
+
+ public override string getKey()
+ {
+ return ID.ToString();
+ }
+
+ public override void Parse() {
+ try
+ {
+ ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
+
+ MWID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0;
+
+ LV=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
+
+ AddAttr = rawContents[3].Trim();
+ }
+ catch (Exception ex)
+ {
+ DebugEx.Log(ex);
+ }
+ }
+
+ }
+
+}
+
+
+
+
diff --git a/Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta b/Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta
new file mode 100644
index 0000000..50ba03e
--- /dev/null
+++ b/Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 69a1de784b915e14b98e3e9276d76115
+timeCreated: 1545706375
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs b/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
index a75003a..d12f980 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
@@ -1,24 +1,25 @@
-锘�//--------------------------------------------------------
-// [Author]: 绗簩涓栫晫
-// [ Date ]: Thursday, May 03, 2018
-//--------------------------------------------------------
-
-using Snxxz.UI;
-using System;
-using System.Collections;
-using System.Collections.Generic;
-
-public class DTCA352_tagMCMagicWeaponLVInfo : DtcBasic {
-
- public override void Done(GameNetPackBasic vNetPack)
- {
- base.Done(vNetPack);
- var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
- ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
- }
-
-}
-
-
-
-
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Thursday, May 03, 2018
+//--------------------------------------------------------
+
+using Snxxz.UI;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+public class DTCA352_tagMCMagicWeaponLVInfo : DtcBasic {
+
+ public override void Done(GameNetPackBasic vNetPack)
+ {
+ base.Done(vNetPack);
+ var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
+ ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
+ ModelCenter.Instance.GetModel<KingTreasureModel>().OnReceivePackage(package);
+ }
+
+}
+
+
+
+
diff --git a/System/Treasure/KingTreasureModel.cs b/System/Treasure/KingTreasureModel.cs
index 981ed2f..ef86615 100644
--- a/System/Treasure/KingTreasureModel.cs
+++ b/System/Treasure/KingTreasureModel.cs
@@ -1,4 +1,5 @@
-锘縰sing System.Collections;
+锘縰sing System;
+using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
@@ -6,6 +7,11 @@
{
public class KingTreasureModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
+ Dictionary<int, TreasureStatus> treasureStatusDict = new Dictionary<int, TreasureStatus>();
+ Dictionary<int, Dictionary<int, Division>> treasureDivisionDict = new Dictionary<int, Dictionary<int, Division>>();
+
+ public event Action<int> treasureStatusRefresh;
+
public int wearCountLimit { get; private set; }
public override void Init()
@@ -15,7 +21,7 @@
public void OnBeforePlayerDataInitialize()
{
-
+ treasureStatusDict.Clear();
}
public void OnPlayerLoginOk()
@@ -35,6 +41,86 @@
{
wearCountLimit = int.Parse(config.Numerical1);
}
+
+ var configs = Config.Instance.GetAllValues<KingTreasureConfig>();
+ for (int i = 0; i < configs.Count; i++)
+ {
+ Dictionary<int, Division> dict;
+ if (!treasureDivisionDict.TryGetValue(configs[i].MWID, out dict))
+ {
+ dict = new Dictionary<int, Division>();
+ treasureDivisionDict.Add(configs[i].MWID, dict);
+ }
+ dict.Add(configs[i].LV, new Division()
+ {
+ division = configs[i].LV,
+ propertys = ConfigParse.GetDic<int, int>(configs[i].AddAttr),
+ });
+ }
+ }
+
+ public bool TryGetDivision(int treasureId, int divisionLevel, out Division division)
+ {
+ Dictionary<int, Division> dict;
+ division = default(Division);
+ return treasureDivisionDict.TryGetValue(treasureId, out dict)
+ && dict.TryGetValue(divisionLevel, out division);
+ }
+
+ public bool TryGetStatus(int treasureId, out TreasureStatus status)
+ {
+ return treasureStatusDict.TryGetValue(treasureId, out status);
+ }
+
+ public void OnReceivePackage()
+ {
+
+ }
+
+ public void OnReceivePackage(HA352_tagMCMagicWeaponLVInfo package)
+ {
+ for (int i = 0; i < package.Count; i++)
+ {
+ var data = package.InfoList[i];
+ TreasureStatus status;
+ if (!TryGetStatus((int)data.MWID, out status))
+ {
+ status = new TreasureStatus();
+ treasureStatusDict.Add((int)data.MWID, status);
+ }
+ if (treasureStatusRefresh != null)
+ {
+ treasureStatusRefresh((int)data.MWID);
+ }
+ }
+ }
+
+ public struct Division
+ {
+ public int division;
+ public Dictionary<int, int> propertys;
+ }
+
+ public class TreasureStatus
+ {
+ public int division { get; private set; }
+ public bool isWear { get; private set; }
+
+ public void OnReceive(int division)
+ {
+ this.division = division;
+ }
+
+ public void OnReceive(bool isWear)
+ {
+ this.isWear = isWear;
+ }
+
+ public void Reset()
+ {
+ division = 0;
+ isWear = false;
+ }
}
}
}
diff --git a/System/Treasure/KingTreasureWin.cs b/System/Treasure/KingTreasureWin.cs
index de6dc03..8ee862f 100644
--- a/System/Treasure/KingTreasureWin.cs
+++ b/System/Treasure/KingTreasureWin.cs
@@ -23,9 +23,12 @@
[SerializeField] RectTransform m_ContainerEnd;
[SerializeField] Text m_SeasonEndRemind;
[SerializeField] RectTransform m_ContainerGot;
+ [SerializeField] Image m_DivisionIcon;
[SerializeField] Text m_Division;
[SerializeField] Text m_Score;
+ [SerializeField] RectTransform m_ContainerBaseProperty;
[SerializeField] PropertyBehaviour[] m_BasePropertys;
+ [SerializeField] RectTransform m_ContainerSpecialProperty;
[SerializeField] PropertyBehaviour[] m_SpecialPropertys;
[SerializeField] Text m_Remind;
[SerializeField] Button m_Goto;
@@ -98,6 +101,9 @@
void DisplayState()
{
Treasure treasure;
+ m_ContainerEnd.gameObject.SetActive(false);
+ m_ContainerGot.gameObject.SetActive(false);
+ m_ContainerOnGoing.gameObject.SetActive(false);
if (model.TryGetTreasure(model.selectedTreasure, out treasure))
{
if (treasure.state == TreasureState.Collected)
@@ -113,17 +119,67 @@
void DisplayGot()
{
-
+ m_ContainerGot.gameObject.SetActive(true);
+ KingTreasureModel.TreasureStatus status;
+ List<int> basePropertys = new List<int>();
+ List<int> specialPropertys = new List<int>();
+ if (kingTreasureModel.TryGetStatus(model.selectedTreasure, out status))
+ {
+ //--todo 鏄剧ず娈典綅绛夌骇
+ KingTreasureModel.Division division;
+ if (kingTreasureModel.TryGetDivision(model.selectedTreasure, status.division, out division))
+ {
+ if (division.propertys != null)
+ {
+ foreach (var key in division.propertys.Keys)
+ {
+ var config = Config.Instance.Get<PlayerPropertyConfig>(key);
+ if (config.type == 2)
+ {
+ specialPropertys.Add(key);
+ }
+ else
+ {
+ basePropertys.Add(key);
+ }
+ }
+ }
+ }
+ m_ContainerBaseProperty.gameObject.SetActive(basePropertys.Count > 0);
+ m_ContainerSpecialProperty.gameObject.SetActive(specialPropertys.Count > 0);
+ if (basePropertys.Count > 0)
+ {
+ for (int i = 0; i < m_BasePropertys.Length; i++)
+ {
+ m_BasePropertys[i].gameObject.SetActive(i < basePropertys.Count);
+ if (i < basePropertys.Count)
+ {
+ m_BasePropertys[i].DisplayUpper(basePropertys[i], division.propertys[basePropertys[i]]);
+ }
+ }
+ }
+ if (specialPropertys.Count > 0)
+ {
+ for (int i = 0; i < m_SpecialPropertys.Length; i++)
+ {
+ m_SpecialPropertys[i].gameObject.SetActive(i < specialPropertys.Count);
+ if (i < specialPropertys.Count)
+ {
+ m_BasePropertys[i].DisplayUpper(basePropertys[i], division.propertys[basePropertys[i]]);
+ }
+ }
+ }
+ }
}
void DisplayEnd()
{
-
+ m_ContainerEnd.gameObject.SetActive(true);
}
void DisplayOnGoing()
{
-
+ m_ContainerOnGoing.gameObject.SetActive(true);
}
void DisplayTween()
@@ -139,7 +195,7 @@
private void Goto()
{
-
+ //--todo 璺宠浆鑷宠禌瀛g洰鏍�
}
}
--
Gitblit v1.8.0