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