From d106f11e7f44c748f595da36e0cdfd54849649e6 Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期一, 27 八月 2018 21:13:50 +0800
Subject: [PATCH] 2960 抢Boss活动(提交界面逻辑)

---
 Core/GameEngine/Model/ConfigManager.cs                   |    1 
 Core/GameEngine/Model/Config/FairyGrabBossConfig.cs.meta |   12 ++
 System/FairyAu/FairyGrabBossBehaviour.cs                 |   79 +++++++++++++
 System/FairyAu/FairyGrabBossBehaviour.cs.meta            |   12 ++
 Utility/EnumHelper.cs                                    |    1 
 System/FairyAu/FairyGrabBossWin.cs.meta                  |   12 ++
 System/FindPrecious/LootPreciousFrameWin.cs              |   35 ++++-
 System/FairyAu/FairyGrabBossModel.cs.meta                |   12 ++
 Core/GameEngine/Model/Config/FairyGrabBossConfig.cs      |   41 ++++++
 System/FairyAu/FairyGrabBossWin.cs                       |   70 +++++++++++
 System/WindowBase/ModelCenter.cs                         |    1 
 System/FairyAu/FairyGrabBossModel.cs                     |   59 +++++++++
 12 files changed, 328 insertions(+), 7 deletions(-)

diff --git a/Core/GameEngine/Model/Config/FairyGrabBossConfig.cs b/Core/GameEngine/Model/Config/FairyGrabBossConfig.cs
new file mode 100644
index 0000000..504edfd
--- /dev/null
+++ b/Core/GameEngine/Model/Config/FairyGrabBossConfig.cs
@@ -0,0 +1,41 @@
+锘�//--------------------------------------------------------
+//    [Author]:			绗簩涓栫晫
+//    [  Date ]:		   Monday, August 27, 2018
+//--------------------------------------------------------
+
+using UnityEngine;
+using System;
+
+namespace TableConfig {
+
+    
+	public partial class FairyGrabBossConfig : ConfigBase {
+
+		public int NPCID { get ; private set ; }
+		public string PortraitID { get ; private set; } 
+
+		public override string getKey()
+        {
+            return NPCID.ToString();
+        }
+
+		public override void Parse() {
+			try
+            {
+                NPCID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0; 
+			
+				PortraitID = rawContents[1].Trim();
+            }
+            catch (Exception ex)
+            {
+                DebugEx.Log(ex);
+            }
+		}
+	
+	}
+
+}
+
+
+
+
diff --git a/Core/GameEngine/Model/Config/FairyGrabBossConfig.cs.meta b/Core/GameEngine/Model/Config/FairyGrabBossConfig.cs.meta
new file mode 100644
index 0000000..b5a10f7
--- /dev/null
+++ b/Core/GameEngine/Model/Config/FairyGrabBossConfig.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 353bb58b84bc9d74b87bcdbb10330f00
+timeCreated: 1535375170
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Core/GameEngine/Model/ConfigManager.cs b/Core/GameEngine/Model/ConfigManager.cs
index fd45cf7..f85d97b 100644
--- a/Core/GameEngine/Model/ConfigManager.cs
+++ b/Core/GameEngine/Model/ConfigManager.cs
@@ -187,6 +187,7 @@
         AddAsyncTask<TrialExchangeConfig>();
         AddAsyncTask<TrialRewardsConfig>();
         AddAsyncTask<DogzEquipPlusConfig>();
+        AddAsyncTask<FairyGrabBossConfig>();
         while (!AllCompleted())
         {
             var completedCount = 0;
diff --git a/System/FairyAu/FairyGrabBossBehaviour.cs b/System/FairyAu/FairyGrabBossBehaviour.cs
new file mode 100644
index 0000000..48a2c5b
--- /dev/null
+++ b/System/FairyAu/FairyGrabBossBehaviour.cs
@@ -0,0 +1,79 @@
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+    public class FairyGrabBossBehaviour : ScrollItem
+    {
+        [SerializeField] AutoSelectCyclicScroll m_Scroll;
+        [SerializeField] RectTransform m_CenterSign;
+        [SerializeField] RectTransform m_ContainerSelect;
+        [SerializeField] Image m_BossPortrait;
+        [SerializeField] Text m_MapName;
+        [SerializeField] Text m_BossName;
+        [SerializeField] Text m_Progress;
+        [SerializeField] Button m_Select;
+        public int bossId { get; private set; }
+
+        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
+
+        private void Awake()
+        {
+            m_Select.AddListener(SelectBoss);
+        }
+
+        private void SelectBoss()
+        {
+            m_Scroll.TrySelectData(bossId);
+        }
+
+        public override void Display(object _data)
+        {
+            base.Display(_data);
+            bossId = (int)_data;
+
+            DrawBossBaseInfo();
+            OnSelected(model.selectBoss);
+
+            model.bossSelectedEvent -= OnSelected;
+            model.bossSelectedEvent += OnSelected;
+        }
+
+        public override void Dispose()
+        {
+            base.Dispose();
+            model.bossSelectedEvent -= OnSelected;
+        }
+
+        private void OnSelected(int _bossId)
+        {
+            m_ContainerSelect.gameObject.SetActive(model.selectBoss == bossId);
+        }
+
+        void DrawBossBaseInfo()
+        {
+            var config = Config.Instance.Get<FairyGrabBossConfig>(bossId);
+            var bossInfoConfig = Config.Instance.Get<BossInfoConfig>(bossId);
+            var mapConfig = Config.Instance.Get<MapConfig>(bossInfoConfig.MapID);
+            var npcConfig = Config.Instance.Get<NPCConfig>(bossId);
+            m_BossPortrait.SetSprite(config.PortraitID);
+            m_MapName.text = mapConfig.Name;
+            m_BossName.text = npcConfig.charName;
+        }
+
+        protected virtual void LateUpdate()
+        {
+            if (m_Scroll.autoSelectable && model.selectBoss != bossId && bossId > 0)
+            {
+                if (Mathf.Abs(m_CenterSign.position.y - rectTransform.position.y) * 100f < rectTransform.rect.height * 0.45f)
+                {
+                    model.selectBoss = bossId;
+                }
+            }
+        }
+    }
+}
+
diff --git a/System/FairyAu/FairyGrabBossBehaviour.cs.meta b/System/FairyAu/FairyGrabBossBehaviour.cs.meta
new file mode 100644
index 0000000..63d4901
--- /dev/null
+++ b/System/FairyAu/FairyGrabBossBehaviour.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 39b96e40dd3a91d4592771f3254b58af
+timeCreated: 1535372186
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/FairyAu/FairyGrabBossModel.cs b/System/FairyAu/FairyGrabBossModel.cs
new file mode 100644
index 0000000..9bd01a6
--- /dev/null
+++ b/System/FairyAu/FairyGrabBossModel.cs
@@ -0,0 +1,59 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using TableConfig;
+using UnityEngine;
+namespace Snxxz.UI
+{
+    public class FairyGrabBossModel : Model
+    {
+        public List<int> bosses { get; private set; }
+
+        public bool IsOpen
+        {
+            get
+            {
+                return true;
+            }
+        }
+        int m_SelectBoss = 0;
+        public int selectBoss
+        {
+            get { return m_SelectBoss; }
+            set
+            {
+                if (value != m_SelectBoss)
+                {
+                    m_SelectBoss = value;
+                    if (bossSelectedEvent != null)
+                    {
+                        bossSelectedEvent(m_SelectBoss);
+                    }
+                }
+            }
+        }
+
+        public event Action stateUpdate;
+        public event Action<int> bossSelectedEvent;
+
+        public override void Init()
+        {
+            ParseConfig();
+        }
+
+        public override void UnInit()
+        {
+        }
+
+        void ParseConfig()
+        {
+            bosses = new List<int>();
+            var configs = Config.Instance.GetAllValues<FairyGrabBossConfig>();
+            for (int i = 0; i < configs.Count; i++)
+            {
+                bosses.Add(configs[i].NPCID);
+            }
+        }
+    }
+}
+
diff --git a/System/FairyAu/FairyGrabBossModel.cs.meta b/System/FairyAu/FairyGrabBossModel.cs.meta
new file mode 100644
index 0000000..86772d8
--- /dev/null
+++ b/System/FairyAu/FairyGrabBossModel.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 7a2dd205b34e1894eadb79449b5eeb65
+timeCreated: 1535369289
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/FairyAu/FairyGrabBossWin.cs b/System/FairyAu/FairyGrabBossWin.cs
new file mode 100644
index 0000000..0ff8187
--- /dev/null
+++ b/System/FairyAu/FairyGrabBossWin.cs
@@ -0,0 +1,70 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Monday, August 27, 2018
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI {
+
+    public class FairyGrabBossWin : Window
+    {
+        [SerializeField] CyclicScroll m_Bosses;
+
+        FairyGrabBossModel model { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+        }
+
+        protected override void OnPreOpen()
+        {
+        }
+
+        protected override void OnActived()
+        {
+            base.OnActived();
+            DisplayBosses();
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+        #endregion
+
+        void DisplayBosses()
+        {
+            var bosses = new List<int>();
+            bosses.AddRange(model.bosses);
+            model.selectBoss = DefaultSelect();
+            m_Bosses.Init(bosses);
+            m_Bosses.MoveToCenter(bosses.IndexOf(model.selectBoss));
+        }
+
+        int DefaultSelect()
+        {
+            return model.bosses[0];
+        }
+    }
+
+}
+
+
+
+
diff --git a/System/FairyAu/FairyGrabBossWin.cs.meta b/System/FairyAu/FairyGrabBossWin.cs.meta
new file mode 100644
index 0000000..83ad0bf
--- /dev/null
+++ b/System/FairyAu/FairyGrabBossWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: adb7f6edfa1466b42a2c498cd4c02a92
+timeCreated: 1535370332
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/FindPrecious/LootPreciousFrameWin.cs b/System/FindPrecious/LootPreciousFrameWin.cs
index e84abe4..a17e4b6 100644
--- a/System/FindPrecious/LootPreciousFrameWin.cs
+++ b/System/FindPrecious/LootPreciousFrameWin.cs
@@ -5,7 +5,8 @@
 using UnityEngine;
 using System.Collections;
 using UnityEngine.UI;
-
+using System;
+
 namespace Snxxz.UI
 {
 
@@ -14,10 +15,13 @@
 
         [SerializeField] FunctionButtonGroup m_FunctionGroup;
         [SerializeField] FunctionButton m_DemonJar;
+        [SerializeField] FunctionButton m_FairyGrabBoss;
 
         [SerializeField] Button m_Left;
         [SerializeField] Button m_Right;
         [SerializeField] Button m_Close;
+
+        FairyGrabBossModel fairyGrabBossModel { get { return ModelCenter.Instance.GetModel<FairyGrabBossModel>(); } }
 
         #region Built-in
         protected override void BindController()
@@ -27,15 +31,17 @@
         protected override void AddListeners()
         {
             m_DemonJar.AddListener(ShowDemonJar);
+            m_FairyGrabBoss.AddListener(FairyGrabBoss);
 
             m_Left.AddListener(ShowLastFunction);
             m_Right.AddListener(ShowNextFunction);
             m_Close.AddListener(CloseClick);
-        }
-
+        }
+
         protected override void OnPreOpen()
         {
-
+            fairyGrabBossModel.stateUpdate += FairyGrabBossUpdate;
+            m_FairyGrabBoss.state = fairyGrabBossModel.IsOpen ? TitleBtnState.Normal : TitleBtnState.Locked;
         }
 
         protected override void OnAfterOpen()
@@ -43,14 +49,16 @@
         }
 
         protected override void OnPreClose()
-        {
+        {
+            fairyGrabBossModel.stateUpdate -= FairyGrabBossUpdate;
+
             CloseSubWindows();
             if (!WindowJumpMgr.Instance.IsJumpState)
             {
                 WindowCenter.Instance.Open<MainInterfaceWin>();
             }
-        }
-
+        }
+
         protected override void OnAfterClose()
         {
 
@@ -74,9 +82,22 @@
             functionOrder = m_DemonJar.order;
         }
 
+        private void FairyGrabBoss()
+        {
+            CloseSubWindows();
+            WindowCenter.Instance.Open<FairyGrabBossWin>();
+            functionOrder = m_FairyGrabBoss.order;
+        }
+
+        private void FairyGrabBossUpdate()
+        {
+            m_FairyGrabBoss.state = fairyGrabBossModel.IsOpen ? TitleBtnState.Normal : TitleBtnState.Locked;
+        }
+
         private void CloseSubWindows()
         {
             WindowCenter.Instance.CloseImmediately<DemonJarWin>();
+            WindowCenter.Instance.CloseImmediately<FairyGrabBossWin>();
         }
 
         private void ShowLastFunction()
diff --git a/System/WindowBase/ModelCenter.cs b/System/WindowBase/ModelCenter.cs
index de88d9a..836574e 100644
--- a/System/WindowBase/ModelCenter.cs
+++ b/System/WindowBase/ModelCenter.cs
@@ -189,6 +189,7 @@
             RegisterModel<MultipleRealmPointModel>();
             RegisterModel<DogzModel>();
             RegisterModel<TreasureSoulModel>();
+            RegisterModel<FairyGrabBossModel>();
             inited = true;
         }
 
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index bba531e..c8a0384 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -308,6 +308,7 @@
     BossHome = 24,
     PersonalBoss = 25,
     ElderGodArea = 26,
+    FairyGrabBoss = 27,
 }
 
 public enum ActivityPrepareType

--
Gitblit v1.8.0