From 146e39c5ef6bb29927cb7c00d7708fceab30a724 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Wed, 21 Oct 2020 10:01:40 +0800
Subject: [PATCH] 无尽模式奖励和掉落逻辑基本完成

---
 Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs |   82 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 73 insertions(+), 9 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs b/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
index 2da9c2a..3fab292 100644
--- a/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
+++ b/Assets/Scripts/TowerDefense/Towers/EndlessViewObtainedProps.cs
@@ -1,9 +1,9 @@
-using System.Collections;
+using Protobuf;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 using Core.Utilities;
-using System;
+using TowerDefense.Level;
 
 /**
  * 无尽模式查看已经获得道具
@@ -20,14 +20,36 @@
         public GameObject RewardInfoUI;
 
         /// <summary>
+        /// 初级宝箱文本
+        /// </summary>
+        public Text PrimaryTreasure;
+
+        /// <summary>
+        /// 中级宝箱文本
+        /// </summary>
+        public Text MiddleTreasure;
+
+        /// <summary>
+        /// 高级宝箱文本
+        /// </summary>
+        public Text AdvancedTreasure;
+
+        /// <summary>
+        /// 钻石文本
+        /// </summary>
+        public Text Gold;
+
+        /// <summary>
         /// 奖励信息界面是否正在展示
         /// </summary>
         private bool isShow;
 
+        private int[] countArr = { 0, 0, 0, 0 };
+
         // Start is called before the first frame update
         private void Start()
         {
-            
+            EndlessDropManager.instance.ObtainDropEvent += OnObtainDrop;
         }
 
         private void OnEnable()
@@ -36,16 +58,58 @@
             isShow = false;
         }
 
-        // Update is called once per frame
-        private void Update()
-        {
-            
-        }
-
         public void OnClick()
         {
             isShow = !isShow;
+
+            if (isShow) Refresh();
+
             RewardInfoUI.SetActive(isShow);
         }
+
+        /// <summary>
+        /// 刷新掉落奖励界面
+        /// </summary>
+        private void Refresh()
+        {
+            CalculateCount();
+            PrimaryTreasure.text = $"初级宝箱×{countArr[0]}";
+            MiddleTreasure.text = $"中级宝箱×{countArr[1]}";
+            AdvancedTreasure.text = $"高级宝箱×{countArr[2]}";
+            Gold.text = $"钻石×{countArr[3]}";
+        }
+
+        /// <summary>
+        /// 重新统计数量
+        /// </summary>
+        private void CalculateCount()
+        {
+            // 统计数量
+            int[] arr = { 0, 0, 0, 0 };
+            List<EndlessDrop> list = EndlessDropManager.instance.GetAllObtainedDrop();
+
+            for (int i = 0; i < list.Count; ++i)
+            {
+                switch (list[i].Reward.type)
+                {
+                    case CURRENCY.Gold:
+                        arr[3] += list[i].Reward.count;
+                        break;
+                    case CURRENCY.Box:
+                        arr[list[i].Reward.id - 1] += list[i].Reward.count;
+                        break;
+                }
+            }
+
+            countArr = arr;
+        }
+
+        /// <summary>
+        /// 获得掉落
+        /// </summary>
+        public void OnObtainDrop(EndlessDrop data)
+        {
+            if (RewardInfoUI.activeInHierarchy) Refresh();
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1