From 2fcb2c11e225352c85a26e3b8cb3d71d4fba68c1 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 09 十月 2018 14:38:26 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/Store/StoreModel.cs | 17 ++
System/FindPrecious/ElderEliteMonsterBehaviour.cs | 33 ++++++
System/KnapSack/Logic/EquipDevourWin.cs | 4
System/KnapSack/Logic/PackModelInterface.cs | 3
System/FindPrecious/ElderGodAreaWin.cs | 48 ++++++--
System/FindPrecious/ElderGodBreifInfoBehaviour.cs | 41 ++++++++
System/FindPrecious/ElderGodAreaModel.cs | 82 +++++++++++++--
System/KnapSack/Logic/PlayerPackModels.cs | 3
System/SystemSetting/SettingEffectMgr.cs | 49 +++++++++
System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta | 12 ++
10 files changed, 253 insertions(+), 39 deletions(-)
diff --git a/System/FindPrecious/ElderEliteMonsterBehaviour.cs b/System/FindPrecious/ElderEliteMonsterBehaviour.cs
new file mode 100644
index 0000000..93f07f5
--- /dev/null
+++ b/System/FindPrecious/ElderEliteMonsterBehaviour.cs
@@ -0,0 +1,33 @@
+锘�//--------------------------------------------------------
+// [Author]: 绗簩涓栫晫
+// [ Date ]: Saturday, August 18, 2018
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using UnityEngine.UI;
+using TableConfig;
+
+namespace Snxxz.UI
+{
+
+ public class ElderEliteMonsterBehaviour : MonoBehaviour
+ {
+ [SerializeField] RawImage m_RawImage;
+
+ public void Display(int npcId)
+ {
+ var config = Config.Instance.Get<NPCConfig>(npcId);
+ UI3DModelExhibition.Instance.ShowNPC(npcId, config.UIModeLOffset, config.UIModelRotation, m_RawImage);
+ }
+
+ public void Dispose()
+ {
+ UI3DModelExhibition.Instance.StopShow();
+ }
+
+ }
+
+}
+
+
+
diff --git a/System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta b/System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta
new file mode 100644
index 0000000..bb809bf
--- /dev/null
+++ b/System/FindPrecious/ElderEliteMonsterBehaviour.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 2aefe6a576cf98e49a1b99cc59e23efe
+timeCreated: 1534563304
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/System/FindPrecious/ElderGodAreaModel.cs b/System/FindPrecious/ElderGodAreaModel.cs
index 37b9be0..a424284 100644
--- a/System/FindPrecious/ElderGodAreaModel.cs
+++ b/System/FindPrecious/ElderGodAreaModel.cs
@@ -13,9 +13,7 @@
int m_SelectedBoss = 0;
public int selectedBoss {
- get {
- return this.m_SelectedBoss;
- }
+ get { return this.m_SelectedBoss; }
set {
if (this.m_SelectedBoss != value)
{
@@ -39,6 +37,7 @@
public event Action<int> bossSelectedEvent;
public event Action<int> surplusTimesChangeEvent;
+ List<int> sortedElites = new List<int>();
List<int> sortedBossIds = new List<int>();
Dictionary<int, ElderGodBossData> elderGodBosses = new Dictionary<int, ElderGodBossData>();
Dictionary<int, int> npcAngers = new Dictionary<int, int>();
@@ -82,27 +81,61 @@
public bool IsBossUnLocked(int _bossId)
{
- var playerLevel = PlayerDatas.Instance.baseData.LV;
- return elderGodBosses.ContainsKey(_bossId) && playerLevel >= elderGodBosses[_bossId].unLockLevel;
+ var config = Config.Instance.Get<ElderGodAreaConfig>(_bossId);
+ if (config == null)
+ {
+ return false;
+ }
+
+ if (config.MonsterType == 1)
+ {
+ return true;
+ }
+ else
+ {
+ var playerLevel = PlayerDatas.Instance.baseData.LV;
+ return elderGodBosses.ContainsKey(_bossId) && playerLevel >= elderGodBosses[_bossId].unLockLevel;
+ }
}
public List<int> GetElderGodBosses()
{
- return new List<int>(sortedBossIds);
+ var bosses = new List<int>();
+ bosses.Add(sortedElites[0]);
+ bosses.AddRange(sortedBossIds);
+ return bosses;
}
- public int GetLatestUnLockBoss()
+ public int GetRecommendNpc()
{
- for (int i = 0; i < sortedBossIds.Count; i++)
+ foreach (var item in sortedBossIds)
{
- var bossId = sortedBossIds[i];
- if (findPreciousModel.IsBossAlive(bossId))
+ if (findPreciousModel.IsBossAlive(item))
{
- return bossId;
+ return item;
+ }
+ }
+
+ return sortedElites[0];
+ }
+
+ public int GetRecommendEliteNpc()
+ {
+ var npc = 0;
+ var levelDelta = int.MaxValue;
+ var myLevel = PlayerDatas.Instance.baseData.LV;
+ foreach (var item in sortedElites)
+ {
+ var config = Config.Instance.Get<NPCConfig>(item);
+ var delta = Mathf.Abs(myLevel - config.NPCLV);
+ if (delta < levelDelta)
+ {
+ npc = item;
+ levelDelta = delta;
}
}
- return sortedBossIds[0];
+ return npc;
}
private void ParseConfig()
@@ -115,12 +148,25 @@
{
elderGodBosses[config.NPCID] = new ElderGodBossData(config.NPCID);
}
+ else
+ {
+ sortedElites.Add(config.NPCID);
+ }
npcAngers[config.NPCID] = config.MonsterAnger;
}
+ sortedElites.Sort(EliteMonsterCompare);
sortedBossIds.AddRange(elderGodBosses.Keys);
sortedBossIds.Sort(ElderGodBossData.LevelCompare);
+ }
+
+ private int EliteMonsterCompare(int lhs, int rhs)
+ {
+ var config1 = Config.Instance.Get<NPCConfig>(lhs);
+ var config2 = Config.Instance.Get<NPCConfig>(rhs);
+
+ return config1.NPCLV < config2.NPCLV ? -1 : 1;
}
public void OnMapInitOk()
@@ -128,7 +174,17 @@
var dataMapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
if (dataMapId == ELDERGODAREA_MAPID)
{
- MapTransferUtility.Instance.MoveToNPC(selectedBoss);
+ var target = 0;
+ if (sortedElites.Contains(selectedBoss))
+ {
+ target = GetRecommendEliteNpc();
+ }
+ else
+ {
+ target = selectedBoss;
+ }
+
+ MapTransferUtility.Instance.MoveToNPC(target);
}
}
}
diff --git a/System/FindPrecious/ElderGodAreaWin.cs b/System/FindPrecious/ElderGodAreaWin.cs
index 75d72a0..7c9203f 100644
--- a/System/FindPrecious/ElderGodAreaWin.cs
+++ b/System/FindPrecious/ElderGodAreaWin.cs
@@ -16,22 +16,16 @@
public class ElderGodAreaWin : Window
{
[SerializeField] CyclicScroll m_Bosses;
+ [SerializeField] ElderEliteMonsterBehaviour m_EliteMonsterBehaviour;
[SerializeField] BossIntroduceBehaviour m_BossIntroduce;
[SerializeField] Text m_Times;
[SerializeField] Button m_Goto;
[SerializeField] Button m_KillRecord;
[SerializeField] ToggleButton m_Subscribe;
- ElderGodAreaModel m_Model;
- ElderGodAreaModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<ElderGodAreaModel>()); } }
-
- FindPreciousModel m_FindPreciousModel;
- FindPreciousModel findPreciousModel { get { return m_FindPreciousModel ?? (m_FindPreciousModel = ModelCenter.Instance.GetModel<FindPreciousModel>()); } }
-
- DungeonModel m_DungeonModel;
- DungeonModel dungeonModel {
- get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); }
- }
+ ElderGodAreaModel model { get { return ModelCenter.Instance.GetModel<ElderGodAreaModel>(); } }
+ FindPreciousModel findPreciousModel { get { return ModelCenter.Instance.GetModel<FindPreciousModel>(); } }
+ DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
#region Built-in
protected override void BindController()
@@ -81,9 +75,9 @@
var bosses = new List<int>();
bosses.AddRange(model.GetElderGodBosses());
- model.selectedBoss = model.GetLatestUnLockBoss();
+ model.selectedBoss = model.GetRecommendNpc();
+ DisplayNpcBaseInfo(true);
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(model.selectedBoss);
- m_BossIntroduce.Display(model.selectedBoss, true);
m_Bosses.Init(bosses);
m_Bosses.MoveToCenter(bosses.IndexOf(model.selectedBoss));
}
@@ -111,7 +105,9 @@
break;
case 2:
WindowCenter.Instance.Close<FindPreciousFrameWin>();
- MapTransferUtility.Instance.MoveToNPC(model.selectedBoss);
+ var config = Config.Instance.Get<ElderGodAreaConfig>(model.selectedBoss);
+ var targetNpc = config.MonsterType == 1 ? model.GetRecommendEliteNpc() : model.selectedBoss;
+ MapTransferUtility.Instance.MoveToNPC(targetNpc);
break;
case 3:
SysNotifyMgr.Instance.ShowTip("DungeonNoGO");
@@ -167,10 +163,34 @@
private void OnBossSelected(int _bossId)
{
- m_BossIntroduce.Display(_bossId, false);
+ DisplayNpcBaseInfo(false);
m_Subscribe.isOn = findPreciousModel.IsBossSubscribed(_bossId);
}
+ private void DisplayNpcBaseInfo(bool immediately)
+ {
+ var npcId = model.selectedBoss;
+ var config = Config.Instance.Get<ElderGodAreaConfig>(npcId);
+
+ switch (config.MonsterType)
+ {
+ case 1:
+ m_KillRecord.gameObject.SetActive(false);
+ m_BossIntroduce.gameObject.SetActive(false);
+ m_EliteMonsterBehaviour.gameObject.SetActive(true);
+ m_EliteMonsterBehaviour.Display(npcId);
+ break;
+ case 2:
+ m_KillRecord.gameObject.SetActive(true);
+ m_BossIntroduce.gameObject.SetActive(true);
+ m_EliteMonsterBehaviour.gameObject.SetActive(false);
+ m_BossIntroduce.Display(npcId, immediately);
+ break;
+ default:
+ break;
+ }
+ }
+
private void CheckAchievementGuide()
{
if (AchievementGoto.guideAchievementId != 0)
diff --git a/System/FindPrecious/ElderGodBreifInfoBehaviour.cs b/System/FindPrecious/ElderGodBreifInfoBehaviour.cs
index 188f17e..2456010 100644
--- a/System/FindPrecious/ElderGodBreifInfoBehaviour.cs
+++ b/System/FindPrecious/ElderGodBreifInfoBehaviour.cs
@@ -27,7 +27,8 @@
protected override InteractorableState interactorableState {
get {
var selected = selectedBossId == bossId;
- var dieOrLocked = !model.IsBossUnLocked(bossId) || !findPreciousModel.IsBossAlive(bossId);
+ var config = Config.Instance.Get<ElderGodAreaConfig>(bossId);
+ var dieOrLocked = config.MonsterType == 2 && (!model.IsBossUnLocked(bossId) || !findPreciousModel.IsBossAlive(bossId));
if (!dieOrLocked)
{
@@ -74,6 +75,44 @@
UpdateBossNameLevelFont(interactorableState);
}
+ protected override void DrawBossBaseInfo(string _icon, string _name, int _level, int _realm)
+ {
+ var config = Config.Instance.Get<ElderGodAreaConfig>(bossId);
+ m_Portrait.SetSprite(_icon);
+ m_Portrait.SetNativeSize();
+
+ switch (config.MonsterType)
+ {
+ case 1:
+ m_BossName.text = Language.Get("ElderGodMonster");
+ m_BossLevel.text = string.Empty;
+ m_RealmContainer.gameObject.SetActive(false);
+ break;
+ case 2:
+ m_BossName.text = _name;
+ m_BossLevel.text = Language.Get("Z1024", _level);
+ if (m_Realm != null && m_RealmContainer != null)
+ {
+ if (Config.Instance.ContainKey<RealmConfig>(_realm))
+ {
+ m_RealmContainer.gameObject.SetActive(true);
+ var realmConfig = Config.Instance.Get<RealmConfig>(_realm);
+ if (realmConfig != null)
+ {
+ m_Realm.SetSprite(realmConfig.Img);
+ }
+ }
+ else
+ {
+ m_RealmContainer.gameObject.SetActive(false);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
protected override void OnSubscribe(int _bossId)
{
base.OnSubscribe(_bossId);
diff --git a/System/KnapSack/Logic/EquipDevourWin.cs b/System/KnapSack/Logic/EquipDevourWin.cs
index dbc6b37..0be8c37 100644
--- a/System/KnapSack/Logic/EquipDevourWin.cs
+++ b/System/KnapSack/Logic/EquipDevourWin.cs
@@ -588,10 +588,10 @@
public void SendEquipdevourQuest()
{
- if (!modelInterface.isPackResetOk) return;
+ if (!modelInterface.isPackResetOk || SettingEffectMgr.Instance.isStartDecompose) return;
playerPack.isAutoDecompose = false;
-
+ SettingEffectMgr.Instance.isStartDecompose = true;
CA32C_tagCMEquipDecompose _petEat = new CA32C_tagCMEquipDecompose();
byte[] _petIndex = new byte[realDevourlist.Count];
for (int i = 0; i < realDevourlist.Count; i++)
diff --git a/System/KnapSack/Logic/PackModelInterface.cs b/System/KnapSack/Logic/PackModelInterface.cs
index e1b454a..aa04277 100644
--- a/System/KnapSack/Logic/PackModelInterface.cs
+++ b/System/KnapSack/Logic/PackModelInterface.cs
@@ -1213,8 +1213,9 @@
/// <param name="_oneKeySelllist"></param>
public void SendOneKeySellQuest(List<ItemModel> _oneKeySelllist)
{
- if (!isPackResetOk) return;
+ if (!isPackResetOk || SettingEffectMgr.Instance.isStartOneKeySell) return;
+ SettingEffectMgr.Instance.isStartOneKeySell = true;
byte[] itemIndexs = new byte[_oneKeySelllist.Count];
int i = 0;
for (i = 0; i < _oneKeySelllist.Count; i++)
diff --git a/System/KnapSack/Logic/PlayerPackModels.cs b/System/KnapSack/Logic/PlayerPackModels.cs
index 8a42104..9abb6e0 100644
--- a/System/KnapSack/Logic/PlayerPackModels.cs
+++ b/System/KnapSack/Logic/PlayerPackModels.cs
@@ -1398,8 +1398,9 @@
public void SendEquipdevourQuest()
{
List<ItemModel> itemModels = GetCanDevourModellist();
- if (itemModels == null || itemModels.Count < minDecomposeNum || !modelInterface.isPackResetOk) return;
+ if (itemModels == null || itemModels.Count < minDecomposeNum || !modelInterface.isPackResetOk || SettingEffectMgr.Instance.isStartDecompose) return;
+ SettingEffectMgr.Instance.isStartDecompose = true;
isAutoDecompose = true;
recordAutoDecomNum = itemModels.Count;
CA32C_tagCMEquipDecompose _petEat = new CA32C_tagCMEquipDecompose();
diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index a6d1dbc..3bcfbc7 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -1083,12 +1083,21 @@
{
foreach(var key in shopRedDict.Keys)
{
- if(shopRedDict[key].state != RedPointState.None)
+ StoreConfig storeConfig = Config.Instance.Get<StoreConfig>(key);
+ ItemConfig itemConfig = Config.Instance.Get<ItemConfig>(storeConfig.ItemID);
+ switch (itemConfig.Type)
{
- string record = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId",key);
- shopRedDict[key].state = RedPointState.None;
- LocalSave.SetBool(record, false);
+ case 26:
+ case 41:
+ if (shopRedDict[key].state != RedPointState.None)
+ {
+ string record = StringUtility.Contact(PlayerDatas.Instance.baseData.PlayerID, "ShopId", key);
+ shopRedDict[key].state = RedPointState.None;
+ LocalSave.SetBool(record, false);
+ }
+ break;
}
+
}
}
diff --git a/System/SystemSetting/SettingEffectMgr.cs b/System/SystemSetting/SettingEffectMgr.cs
index acc5687..f420d9e 100644
--- a/System/SystemSetting/SettingEffectMgr.cs
+++ b/System/SystemSetting/SettingEffectMgr.cs
@@ -52,6 +52,8 @@
private float delayTime = 2f;
private bool isGetNewItem = false;
+ public bool isStartDecompose { get; set; }
+ public bool isStartOneKeySell { get; set; }
private void Awake()
{
@@ -68,15 +70,21 @@
DeadModel.playerDieEvent += OnPlayerDie;
m_storeModel.RefreshBuyResultEvent += RefreshBuySuccess;
DeadModel.CloseRebornWinEvent += PlayerRebornSuccess;
+ playerPack.RefreshDecomAttrAct += DecomposeSuccess;
+ DTC0721_tagMakeItemAnswer.MakeItemAnswerEvent += OneKeySellSuccess;
}
+
public void Begin()
{
-
+ isStartDecompose = false;
+ isStartOneKeySell = false;
}
float secondTimer = 0;
float halfSecondTimer = 0;
+ float autoSellCoolTimer = 0;
+ float autoDecomposeCoolTimer = 0;
private void LateUpdate()
{
if (!(StageManager.Instance.CurrentStage is DungeonStage))
@@ -100,11 +108,32 @@
}
}
+ if(isStartDecompose)
+ {
+ autoDecomposeCoolTimer += Time.deltaTime;
+ if(autoDecomposeCoolTimer >= 5f)
+ {
+ autoDecomposeCoolTimer = 0;
+ isStartDecompose = false;
+ }
+ }
+
+ if (isStartOneKeySell)
+ {
+ autoSellCoolTimer += Time.deltaTime;
+ if (autoSellCoolTimer >= 5f)
+ {
+ autoSellCoolTimer = 0;
+ isStartOneKeySell = false;
+ }
+ }
+
if (secondTimer >= 1f)
{
secondTimer = 0f;
RefreshBagItem();
}
+
}
private void PlayerRebornSuccess()
@@ -112,6 +141,18 @@
isPlayerDie = false;
}
+ private void OneKeySellSuccess(H0721_tagMakeItemAnswer obj)
+ {
+ if (obj.MakeType != (byte)MakeType.Def_mitKeySell)
+ return;
+
+ isStartOneKeySell = false;
+ }
+
+ private void DecomposeSuccess()
+ {
+ isStartDecompose = false;
+ }
public bool GetSettingEffect()
{
@@ -158,7 +199,7 @@
{
if (playerPack.GetReaminGridCount(PackType.rptItem) < 5 && modelInterface.isPackResetOk)
{
- if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoDevour))
+ if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoDevour) && !isStartDecompose)
{
if(playerPack.IsReachMinDecomposeNum())
{
@@ -167,7 +208,9 @@
}
}
- if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoSell) && modelInterface.GetSellItemList().Count > 0)
+ if (HangUpSetModel.Instance.GetBool(HangUpAutoBoolType.isAutoSell)
+ && !isStartOneKeySell
+ && modelInterface.GetSellItemList().Count > 0)
{
modelInterface.SendOneKeySellQuest(modelInterface.GetSellItemList());
return;
--
Gitblit v1.8.0