From 080100a11100ac8ee44f0742d0a55b12d5db8485 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Fri, 11 Dec 2020 17:13:24 +0800
Subject: [PATCH] 金币效果调整

---
 Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs                       |    4 
 Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs                   |   88 ++++++++++++++
 Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs                          |    1 
 Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs |    2 
 Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs                    |   46 +++++++
 Assets/Prefabs/UI/AddCurrencyText.prefab.meta                             |    7 +
 Assets/Scripts/Core/Economy/Currency.cs                                   |    3 
 Assets/Prefabs/UI/Endless/BottomCanvas.prefab                             |    4 
 Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs                  |    7 +
 Assets/Scenes/Levels/Battle/Endless2D.unity                               |   12 +
 Assets/Scripts/Event/EventType.cs                                         |    2 
 Assets/Prefabs/UI/AddCurrencyText.prefab                                  |  137 ++++++++++++++++++++++
 12 files changed, 305 insertions(+), 8 deletions(-)

diff --git a/Assets/Prefabs/UI/AddCurrencyText.prefab b/Assets/Prefabs/UI/AddCurrencyText.prefab
new file mode 100644
index 0000000..5426563
--- /dev/null
+++ b/Assets/Prefabs/UI/AddCurrencyText.prefab
@@ -0,0 +1,137 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &5155470835180724710
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 720277956061902697}
+  - component: {fileID: 451870121721386500}
+  - component: {fileID: 3987857009201838382}
+  m_Layer: 5
+  m_Name: AddCurrencyText
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &720277956061902697
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5155470835180724710}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: -0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -226, y: -872}
+  m_SizeDelta: {x: 200, y: 50}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &451870121721386500
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5155470835180724710}
+  m_CullTransparentMesh: 0
+--- !u!114 &3987857009201838382
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5155470835180724710}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_text: +20
+  m_isRightToLeft: 0
+  m_fontAsset: {fileID: 11400000, guid: 572adb1c73f88e441a1bf998ca9f4ea5, type: 2}
+  m_sharedMaterial: {fileID: -3548855653558765056, guid: 572adb1c73f88e441a1bf998ca9f4ea5,
+    type: 2}
+  m_fontSharedMaterials: []
+  m_fontMaterial: {fileID: 0}
+  m_fontMaterials: []
+  m_fontColor32:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+  m_enableVertexGradient: 0
+  m_colorMode: 3
+  m_fontColorGradient:
+    topLeft: {r: 1, g: 1, b: 1, a: 1}
+    topRight: {r: 1, g: 1, b: 1, a: 1}
+    bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+    bottomRight: {r: 1, g: 1, b: 1, a: 1}
+  m_fontColorGradientPreset: {fileID: 0}
+  m_spriteAsset: {fileID: 0}
+  m_tintAllSprites: 0
+  m_StyleSheet: {fileID: 0}
+  m_TextStyleHashCode: -1183493901
+  m_overrideHtmlColors: 0
+  m_faceColor:
+    serializedVersion: 2
+    rgba: 4294967295
+  m_fontSize: 36
+  m_fontSizeBase: 36
+  m_fontWeight: 400
+  m_enableAutoSizing: 0
+  m_fontSizeMin: 18
+  m_fontSizeMax: 72
+  m_fontStyle: 0
+  m_HorizontalAlignment: 1
+  m_VerticalAlignment: 256
+  m_textAlignment: 65535
+  m_characterSpacing: 0
+  m_wordSpacing: 0
+  m_lineSpacing: 0
+  m_lineSpacingMax: 0
+  m_paragraphSpacing: 0
+  m_charWidthMaxAdj: 0
+  m_enableWordWrapping: 1
+  m_wordWrappingRatios: 0.4
+  m_overflowMode: 0
+  m_linkedTextComponent: {fileID: 0}
+  parentLinkedComponent: {fileID: 0}
+  m_enableKerning: 1
+  m_enableExtraPadding: 0
+  checkPaddingRequired: 0
+  m_isRichText: 1
+  m_parseCtrlCharacters: 1
+  m_isOrthographic: 1
+  m_isCullingEnabled: 0
+  m_horizontalMapping: 0
+  m_verticalMapping: 0
+  m_uvLineOffset: 0
+  m_geometrySortingOrder: 0
+  m_IsTextObjectScaleStatic: 0
+  m_VertexBufferAutoSizeReduction: 1
+  m_useMaxVisibleDescender: 1
+  m_pageToDisplay: 1
+  m_margin: {x: 0, y: 0, z: 0, w: 0}
+  m_isUsingLegacyAnimationComponent: 0
+  m_isVolumetricText: 0
+  m_hasFontAssetChanged: 0
+  m_baseMaterial: {fileID: 0}
+  m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
diff --git a/Assets/Prefabs/UI/AddCurrencyText.prefab.meta b/Assets/Prefabs/UI/AddCurrencyText.prefab.meta
new file mode 100644
index 0000000..dc80d87
--- /dev/null
+++ b/Assets/Prefabs/UI/AddCurrencyText.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 999d11a8d7094b646970c8002c0bd2fa
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Prefabs/UI/Endless/BottomCanvas.prefab b/Assets/Prefabs/UI/Endless/BottomCanvas.prefab
index 1891b12..da9e1a7 100644
--- a/Assets/Prefabs/UI/Endless/BottomCanvas.prefab
+++ b/Assets/Prefabs/UI/Endless/BottomCanvas.prefab
@@ -4016,6 +4016,8 @@
   m_Name: 
   m_EditorClassIdentifier: 
   DisplayText: {fileID: 4623057511285327670}
+  addCurrencyPrefab: {fileID: 5155470835180724710, guid: 999d11a8d7094b646970c8002c0bd2fa,
+    type: 3}
 --- !u!1 &4623057513087273499
 GameObject:
   m_ObjectHideFlags: 0
@@ -5614,7 +5616,7 @@
     - target: {fileID: 8530610553866603046, guid: e30e86a0b720a524384db91a4eb22bcb,
         type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: 1405.2777
+      value: 259.83737
       objectReference: {fileID: 0}
     - target: {fileID: 8530610554782125076, guid: e30e86a0b720a524384db91a4eb22bcb,
         type: 3}
diff --git a/Assets/Scenes/Levels/Battle/Endless2D.unity b/Assets/Scenes/Levels/Battle/Endless2D.unity
index f09713c..2dccecb 100644
--- a/Assets/Scenes/Levels/Battle/Endless2D.unity
+++ b/Assets/Scenes/Levels/Battle/Endless2D.unity
@@ -4690,10 +4690,20 @@
   m_Modification:
     m_TransformParent: {fileID: 1340671931}
     m_Modifications:
+    - target: {fileID: 1864109698340928006, guid: 29da21b318f42054db30c52123aa4dbf,
+        type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: -15
+      objectReference: {fileID: 0}
+    - target: {fileID: 1864109698340928006, guid: 29da21b318f42054db30c52123aa4dbf,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
     - target: {fileID: 4623057512524248738, guid: 29da21b318f42054db30c52123aa4dbf,
         type: 3}
       propertyPath: m_AnchoredPosition.y
-      value: -0.000030517578
+      value: -0.000061035156
       objectReference: {fileID: 0}
     - target: {fileID: 4623057512704841786, guid: 29da21b318f42054db30c52123aa4dbf,
         type: 3}
diff --git a/Assets/Scripts/Core/Economy/Currency.cs b/Assets/Scripts/Core/Economy/Currency.cs
index 3c92e93..6c83119 100644
--- a/Assets/Scripts/Core/Economy/Currency.cs
+++ b/Assets/Scripts/Core/Economy/Currency.cs
@@ -12,6 +12,8 @@
         /// </summary>
         public int currentCurrency { get; private set; }
 
+        public int lastCurrency { get; private set; }
+
         /// <summary>
         /// Occurs when currency changed.
         /// </summary>
@@ -68,6 +70,7 @@
         {
             if (increment != 0)
             {
+                lastCurrency = currentCurrency;
                 currentCurrency += increment;
                 if (currencyChanged != null)
                 {
diff --git a/Assets/Scripts/Event/EventType.cs b/Assets/Scripts/Event/EventType.cs
index 47c26c3..bc34bc5 100644
--- a/Assets/Scripts/Event/EventType.cs
+++ b/Assets/Scripts/Event/EventType.cs
@@ -118,6 +118,8 @@
         OpenAllTowerGrid,
         // 关闭了精灵升级界面
         ElfUpgradePanelClosed,
+        // 不够开塔,也不够买塔
+        SetTowerGridOpenRed,
 
     }
 
diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
index e339721..a4fd818 100644
--- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
+++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -712,6 +712,7 @@
                         tgo.SetBuyBtnInfo(x, y, this);
                         tgo.cashText.SetText(TowerPlacementGridEndless.GRID_OPENCASH.ToString());
                         m_arrTGO[x, y] = tgo;
+                        tgo.CheckCurrencyEnough();
                     }
                 }
             }
@@ -860,6 +861,7 @@
                     if (m_arrTGO[x, y] != null)
                     {
                         m_arrTGO[x, y].cashText.SetText(GRID_OPENCASH.ToString());
+                        m_arrTGO[x, y].CheckCurrencyEnough();
                     }
                 }
             }
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs b/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs
index b93333c..5ea865b 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessTowerGridOpen.cs
@@ -38,6 +38,52 @@
     void Start()
     {
         bWaitOpen = false;
+        EventCenter.Ins.Add((int)KTGMGemClient.EventType.SetTowerGridOpenRed, SetRed);
+    }
+
+    /// <summary>
+    /// Subscribe to the level manager
+    /// </summary>
+    protected virtual void OnEnable()
+    {
+        if (EndlessLevelManager.instanceExists)
+            EndlessLevelManager.instance.Currency.currencyChanged += OnCurrencyChanged;
+    }
+
+    /// <summary>
+    /// Unsubscribe from the level manager
+    /// </summary>
+    protected virtual void OnDisable()
+    {
+        if (EndlessLevelManager.instanceExists)
+            EndlessLevelManager.instance.Currency.currencyChanged -= OnCurrencyChanged;
+    }
+
+    private void OnCurrencyChanged()
+    {
+        CheckCurrencyEnough();
+    }
+
+    public void CheckCurrencyEnough()
+    {
+        int result;
+        int.TryParse(cashText.text.ToString(), out result);
+        int current = EndlessLevelManager.instance.Currency.currentCurrency;
+
+        if (current >= result)
+            cashText.color = new Color(1f, 1f, 1f);
+        else
+            cashText.color = new Color(0.5f, 0.5f, 0.5f);
+    }
+
+    private void SetRed()
+    {
+        int result;
+        int.TryParse(cashText.text.ToString(), out result);
+        int current = EndlessLevelManager.instance.Currency.currentCurrency;
+
+        if (current < result)
+            cashText.color = new Color(1f, 0f, 0f);
     }
 
     public void SetBuyBtnInfo(int x, int y, TowerPlacementGridEndless tpg)
diff --git a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
index 3ce7700..d465142 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessUIStart.cs
@@ -639,7 +639,6 @@
 
             if (!isUpgradeTowerLevel && startTime >= JsonDataCenter.DOUBLE_GEM_TIME)
             {
-                EndlessGameUI.instance.UpgradeAllTowerMinLevel(1);
                 EndlessRandomTower.instance.UpdateDescDisplay();
                 isUpgradeTowerLevel = true;
             }
diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs
index e07fefc..f45903b 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessCurrencyUI.cs
@@ -3,6 +3,8 @@
 using TMPro;
 using TowerDefense.Level;
 using UnityEngine;
+using DG.Tweening;
+using Core.Utilities;
 
 namespace TowerDefense.UI.HUD
 {
@@ -19,6 +21,21 @@
         protected Currency currency;
 
         private ParticleSystem goldGetPs;//金币获得动画
+
+        /// <summary>
+        /// 每秒增加的金币数量
+        /// </summary>
+        private int addCurrencyPerSecond;
+
+        private float duration;
+
+        /// <summary>
+        /// 一秒前金币
+        /// </summary>
+        private int lastCurrency;
+
+        [SerializeField]
+        private GameObject addCurrencyPrefab;
 
         private void Start()
         {
@@ -52,12 +69,33 @@
         protected void UpdateDisplay()
         {
             int current = currency.currentCurrency;
-            //DisplayText.text = AddNumberSemi(current.ToString());
+            int lastCurrency = currency.lastCurrency;
             DisplayText.text = current.ToString();
 
+            if (lastCurrency > 0 && current - lastCurrency > 0)
+                ToBig().OnComplete(ToSmall);
         }
 
-        public void PlayGetGoldPS(){
+        private Tweener ToBig()
+        {
+            return DOTween.To(
+                () => DisplayText.transform.localScale,
+                (Vector3 v) => DisplayText.transform.localScale = v,
+                new Vector3(1.15f, 1.15f, 1.15f),
+                0.15f);
+        }
+
+        private void ToSmall()
+        {
+            DOTween.To(
+                () => DisplayText.transform.localScale,
+                (Vector3 v) => DisplayText.transform.localScale = v,
+                new Vector3(1f, 1f, 1f),
+                0.1f);
+        }
+
+        public void PlayGetGoldPS()
+        {
             goldGetPs.Play();
         }
 
@@ -74,5 +112,51 @@
             }
             return str;
         }
+
+        private void Update()
+        {
+            FloatAddCurrency();
+        }
+
+        /// <summary>
+        /// 飘1s内增加的金币
+        /// </summary>
+        private void FloatAddCurrency()
+        {
+            if (duration <= 0.0001f)
+            {
+                lastCurrency = currency.currentCurrency;
+            }
+
+            duration += Time.deltaTime;
+
+            if (duration >= 1f)
+            {
+                int add = currency.currentCurrency - lastCurrency;
+
+                if (add > 0)
+                {
+                    GameObject obj = Instantiate(addCurrencyPrefab);
+                    obj.transform.SetParent(GameObject.Find("UICamera/BottomCanvas/Panel/Bottom/CurrencyContainer").transform, false);
+                    obj.transform.localPosition = new Vector3(148f, -30f, 0f);
+                    obj.transform.localScale = new Vector3(0.66f, 0.66f, 0.66f);
+                    TextMeshProUGUI textMeshProUGUI = obj.GetComponent<TextMeshProUGUI>();
+                    textMeshProUGUI.text = $"+{add}";
+
+                    DOTween.To(
+                        () => obj.transform.localPosition.y,
+                        (float v) =>
+                            {
+                                Vector3 pos = obj.transform.localPosition;
+                                pos.y = v;
+                                obj.transform.localPosition = pos;
+                            },
+                        -20f, 0.2f);
+                    Destroy(obj, 0.5f);
+                }
+
+                duration = 0f;
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
index c4d47cc..6bb10aa 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -144,7 +144,7 @@
         /// </summary>
         protected TextMeshProUGUI towerPriceText;
 
-        protected bool tdBuyDisable = false;
+        public bool tdBuyDisable { get; protected set; } = false;
 
         /// <summary>
         /// 鼠标在移动一个Tower之前,要隐藏的Tower数据和指针。
@@ -1255,8 +1255,6 @@
             else if (EndlessLevelManager.instanceExists && IsSubstitute(pointerInfo))
             {
                 CheckCanChangePos(pointerInfo);
-                if (EndlessUIStart.instance.GameStartTime >= JsonDataCenter.DOUBLE_GEM_TIME)
-                    UpgradeAllTowerMinLevel(1);
             }
             // 当前是Skill塔位的状态.
             else if (bSkill)
diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
index 992292d..c45a17c 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
@@ -98,6 +98,7 @@
     public void ChangeBtnClick()
     {
         randomBtn.onClick.RemoveAllListeners();
+        randomBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.NULL); });
         randomBtn.onClick.AddListener(() =>
         {
             AudioSourceManager.Ins.Play(AudioEnum.UIDisable);
@@ -222,6 +223,12 @@
             return;
         }
 
+        if (EndlessGameUI.instance.tdBuyDisable)
+        {
+            EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.SetTowerGridOpenRed);
+            return;
+        }
+
         AudioSourceManager.Ins.Play(AudioEnum.UI);
 
         Tower newTower = GetRandomTower(towerType, false);

--
Gitblit v1.9.1