From 1fb642abf67b1351443dc1f3b84556f952bfac4e Mon Sep 17 00:00:00 2001 From: kimura Date: Wed, 9 Feb 2022 15:30:09 +0900 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E9=87=8F=E6=B3=A8=E6=96=87=E9=81=94?= =?UTF-8?q?=E6=88=90=E3=82=A8=E3=83=95=E3=82=A7=E3=82=AF=E3=83=88=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/MyGame/Scenes/Main/Scripts/BulkOrder.cs | 13 +++++++++++-- .../Scenes/Main/Scripts/BulkOrderAchievedEffect.cs | 13 ++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrder.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrder.cs index cf9c5937..ff3118f0 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrder.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrder.cs @@ -114,9 +114,18 @@ public class BulkOrder : MonoBehaviour // 獲得 var rarityList = SpreadsheetDataManager.Instance.GetBaseDataList(Const.RarityDataSheet); var bonus = CalcBonus(rarityList, gameData.CompletedProductList, bulkOrderData.rewardHeart); - CoinManager.Instance.AddCoin(bulkOrderData.rewardCoin + bonus); + CoinManager.Instance.AddCoinForBulkOrder(bulkOrderData.retryCondition + bonus, coinPos); gameData.Coin = CoinManager.Instance.OwnCoin; - gameData.Heart += bulkOrderData.rewardHeart; + /* + * アニメーション終了後にハートを加算する + * WaitAddHeartとMoveHeartは対で使うほうが処理がわかりやすいため + * シーン遷移などでアニメーションが中断された場合に加算が実行されるようにしている + */ + gameData.WaitAddHeart += bulkOrderData.rewardHeart; + HeartMeter.Instance.AddHeartForBulkOrder(heartPos, () => + { + GameDataManager.GameData.MoveHeart(bulkOrderData.rewardHeart); + }); // カウントリセット gameData.OrderConditionCount = 0; diff --git a/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrderAchievedEffect.cs b/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrderAchievedEffect.cs index b94a5324..f6d5f15b 100644 --- a/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrderAchievedEffect.cs +++ b/popcorn/Assets/MyGame/Scenes/Main/Scripts/BulkOrderAchievedEffect.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using UniRx; using UniRx.Triggers; using UnityEngine; +using Debug = UnityEngine.Debug; using Random = UnityEngine.Random; namespace MyGame.Scenes.Main.Scripts @@ -45,11 +46,13 @@ namespace MyGame.Scenes.Main.Scripts public void PlayHeartEffect(Vector3 beginPos, Vector3 goalPos, Action onComplete = null) { - // 最後のeffectが終わった後1度だけonComplete - effectCompleteSubject.Take(heartCount).Subscribe(_ => { }, () => - { - onComplete?.Invoke(); - }).AddTo(this); + // 最後のeffect終了時か、このオブジェクトが破棄された時に1度だけonCompleteが実行される + effectCompleteSubject.Take(heartCount).Last() + .Amb(this.OnDestroyAsObservable()) + .Subscribe(_ => { }, () => + { + onComplete?.Invoke(); + }); Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(.1f)) .Take(heartCount) .Subscribe(_ =>