レベルアップ演出の表示とハートゲージの動きが同期するよう修正
This commit is contained in:
parent
4403ab4598
commit
38f17286b8
|
|
@ -83,13 +83,26 @@ public class CornField : MonoBehaviour
|
|||
|
||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
||||
GameDataObserver.Instance.ShopLevelUpdate
|
||||
.Where(x => x && !isFertilizing)
|
||||
.Subscribe(x =>
|
||||
|
||||
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
|
||||
GameDataObserver.Instance.SceneCounter
|
||||
.DistinctUntilChanged()
|
||||
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
|
||||
.Where(x => x)
|
||||
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||
}).AddTo(this);
|
||||
|
||||
GameDataObserver.Instance.HeartObserver
|
||||
.DistinctUntilChanged()
|
||||
.Pairwise()
|
||||
.Subscribe(pair =>
|
||||
{
|
||||
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||
}).AddTo(this);
|
||||
|
||||
counterView.Initialize(gameData.CornSeed);
|
||||
additionView.Initialize(0);
|
||||
SetData();
|
||||
|
|
|
|||
|
|
@ -67,8 +67,7 @@ public class KitchenManager : MonoBehaviour
|
|||
DestroyImmediate(go);
|
||||
}).AddTo(this);
|
||||
});
|
||||
}));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
});
|
||||
}
|
||||
else if (TutorialManager.Instance.Index == 6)
|
||||
{
|
||||
|
|
@ -100,12 +99,28 @@ public class KitchenManager : MonoBehaviour
|
|||
|
||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
||||
GameDataObserver.Instance.ShopLevelUpdate
|
||||
|
||||
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
|
||||
GameDataObserver.Instance.SceneCounter
|
||||
.DistinctUntilChanged()
|
||||
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
|
||||
.Where(x => x)
|
||||
.Subscribe(x =>
|
||||
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
if (gameData.isFirstPlay)
|
||||
{
|
||||
return;
|
||||
}
|
||||
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||
}).AddTo(this);
|
||||
|
||||
GameDataObserver.Instance.HeartObserver
|
||||
.DistinctUntilChanged()
|
||||
.Pairwise()
|
||||
.Subscribe(pair =>
|
||||
{
|
||||
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||
}).AddTo(this);
|
||||
|
||||
kitchenView.Initialize();
|
||||
|
|
|
|||
|
|
@ -74,12 +74,16 @@ public class MarketManager : MonoBehaviour
|
|||
|
||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
||||
GameDataObserver.Instance.ShopLevelUpdate
|
||||
.Where(x => x && !market.IsPromotion.Value)
|
||||
.Subscribe(x =>
|
||||
|
||||
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
|
||||
GameDataObserver.Instance.SceneCounter
|
||||
.DistinctUntilChanged()
|
||||
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
|
||||
.Where(x => x)
|
||||
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||
}).AddTo(this);
|
||||
|
||||
productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
|
||||
|
|
|
|||
|
|
@ -40,12 +40,24 @@ public class ProductManagement : MonoBehaviour
|
|||
var gameData = GameDataManager.GameData;
|
||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
||||
GameDataObserver.Instance.ShopLevelUpdate
|
||||
|
||||
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
|
||||
GameDataObserver.Instance.SceneCounter
|
||||
.DistinctUntilChanged()
|
||||
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
|
||||
.Where(x => x)
|
||||
.Subscribe(x =>
|
||||
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||
}).AddTo(this);
|
||||
|
||||
GameDataObserver.Instance.HeartObserver
|
||||
.DistinctUntilChanged()
|
||||
.Pairwise()
|
||||
.Subscribe(pair =>
|
||||
{
|
||||
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||
}).AddTo(this);
|
||||
|
||||
// 補充方法設定
|
||||
|
|
|
|||
|
|
@ -87,4 +87,11 @@ public class ShopLevelUp : MonoBehaviour
|
|||
LocalCacheManager.Remove(CallbackTag);
|
||||
}
|
||||
}
|
||||
|
||||
public static void ShowDialog(int level, Action onComplete = null)
|
||||
{
|
||||
LocalCacheManager.Save(DataTag, level);
|
||||
LocalCacheManager.Save(CallbackTag, onComplete);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,12 +19,24 @@ public class Shopping : MonoBehaviour
|
|||
var gameData = GameDataManager.GameData;
|
||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
||||
GameDataObserver.Instance.ShopLevelUpdate
|
||||
|
||||
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ
|
||||
GameDataObserver.Instance.SceneCounter
|
||||
.DistinctUntilChanged()
|
||||
.CombineLatest(HeartMeter.Instance.FulledHeart, (count, fulled) => count == 1 && fulled)
|
||||
.Where(x => x)
|
||||
.Subscribe(x =>
|
||||
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
||||
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||
}).AddTo(this);
|
||||
|
||||
GameDataObserver.Instance.HeartObserver
|
||||
.DistinctUntilChanged()
|
||||
.Pairwise()
|
||||
.Subscribe(pair =>
|
||||
{
|
||||
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||
}).AddTo(this);
|
||||
|
||||
// 一覧データ
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
|||
private readonly BoolReactiveProperty updateMissionAchieved = new BoolReactiveProperty();
|
||||
public IReadOnlyReactiveProperty<bool> UpdateMissionAchieved => updateMissionAchieved;
|
||||
|
||||
public IObservable<bool> ShopLevelUpdate { get; private set; }
|
||||
public IObservable<int> HeartObserver => heartObserver;
|
||||
public IObservable<int> SceneCounter => sceneCounter;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
|
|
@ -49,26 +50,6 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
|||
hasRecipeObserver.OnNext(gameData.MyRecipes.Length);
|
||||
deliveredBulkOrderObserver.OnNext(gameData.BulkOrderDeliveredCount);
|
||||
}).AddTo(this);
|
||||
|
||||
ShopLevelUpdate = Observable.CombineLatest(
|
||||
heartObserver.DistinctUntilChanged(),
|
||||
sceneCounter.DistinctUntilChanged().Delay(TimeSpan.FromSeconds(.4f)),
|
||||
(heart, sceneCount) =>
|
||||
{
|
||||
var viewedLevel = GameDataManager.GameData.ViewedShopLevel;
|
||||
if (viewedLevel == 0 && GameDataManager.GameData.isFirstPlay)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var currentLevel = levelList.LastOrDefault(data => data.heart <= heart)?.shopLevel ?? 1;
|
||||
return currentLevel > viewedLevel && sceneCount == 1;
|
||||
})
|
||||
.DistinctUntilChanged()
|
||||
.Publish(false)
|
||||
.RefCount();
|
||||
#if UNITY_EDITOR
|
||||
// ShopLevelUpdate.Subscribe(x => { Debug.Log($"change:{x}"); });
|
||||
#endif
|
||||
|
||||
// ミッション達成チェッカー
|
||||
var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet);
|
||||
|
|
|
|||
Loading…
Reference in New Issue