レベルアップ演出の表示とハートゲージの動きが同期するよう修正
This commit is contained in:
parent
4403ab4598
commit
38f17286b8
|
|
@ -83,13 +83,26 @@ public class CornField : MonoBehaviour
|
||||||
|
|
||||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
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);
|
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
|
GameDataObserver.Instance.HeartObserver
|
||||||
|
.DistinctUntilChanged()
|
||||||
|
.Pairwise()
|
||||||
|
.Subscribe(pair =>
|
||||||
|
{
|
||||||
|
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||||
|
}).AddTo(this);
|
||||||
|
|
||||||
counterView.Initialize(gameData.CornSeed);
|
counterView.Initialize(gameData.CornSeed);
|
||||||
additionView.Initialize(0);
|
additionView.Initialize(0);
|
||||||
SetData();
|
SetData();
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,7 @@ public class KitchenManager : MonoBehaviour
|
||||||
DestroyImmediate(go);
|
DestroyImmediate(go);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
});
|
});
|
||||||
}));
|
});
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
|
||||||
}
|
}
|
||||||
else if (TutorialManager.Instance.Index == 6)
|
else if (TutorialManager.Instance.Index == 6)
|
||||||
{
|
{
|
||||||
|
|
@ -100,12 +99,28 @@ public class KitchenManager : MonoBehaviour
|
||||||
|
|
||||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
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)
|
.Where(x => x)
|
||||||
.Subscribe(x =>
|
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||||
|
.Subscribe(_ =>
|
||||||
{
|
{
|
||||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
if (gameData.isFirstPlay)
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||||
|
}).AddTo(this);
|
||||||
|
|
||||||
|
GameDataObserver.Instance.HeartObserver
|
||||||
|
.DistinctUntilChanged()
|
||||||
|
.Pairwise()
|
||||||
|
.Subscribe(pair =>
|
||||||
|
{
|
||||||
|
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
kitchenView.Initialize();
|
kitchenView.Initialize();
|
||||||
|
|
|
||||||
|
|
@ -74,12 +74,16 @@ public class MarketManager : MonoBehaviour
|
||||||
|
|
||||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
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);
|
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
|
productDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ProductData>(Const.ProductDataSheet);
|
||||||
|
|
|
||||||
|
|
@ -40,12 +40,24 @@ public class ProductManagement : MonoBehaviour
|
||||||
var gameData = GameDataManager.GameData;
|
var gameData = GameDataManager.GameData;
|
||||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
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)
|
.Where(x => x)
|
||||||
.Subscribe(x =>
|
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||||
|
.Subscribe(_ =>
|
||||||
{
|
{
|
||||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
}).AddTo(this);
|
||||||
|
|
||||||
|
GameDataObserver.Instance.HeartObserver
|
||||||
|
.DistinctUntilChanged()
|
||||||
|
.Pairwise()
|
||||||
|
.Subscribe(pair =>
|
||||||
|
{
|
||||||
|
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
// 補充方法設定
|
// 補充方法設定
|
||||||
|
|
|
||||||
|
|
@ -87,4 +87,11 @@ public class ShopLevelUp : MonoBehaviour
|
||||||
LocalCacheManager.Remove(CallbackTag);
|
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;
|
var gameData = GameDataManager.GameData;
|
||||||
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
CoinManager.Instance.ChangeCoin(gameData.Coin);
|
||||||
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
|
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)
|
.Where(x => x)
|
||||||
.Subscribe(x =>
|
.DelaySubscription(TimeSpan.FromSeconds(.4f))
|
||||||
|
.Subscribe(_ =>
|
||||||
{
|
{
|
||||||
LocalCacheManager.Save(ShopLevelUp.DataTag, gameData.ViewedShopLevel + 1);
|
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1);
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.StoreLevel);
|
}).AddTo(this);
|
||||||
|
|
||||||
|
GameDataObserver.Instance.HeartObserver
|
||||||
|
.DistinctUntilChanged()
|
||||||
|
.Pairwise()
|
||||||
|
.Subscribe(pair =>
|
||||||
|
{
|
||||||
|
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
// 一覧データ
|
// 一覧データ
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,8 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
private readonly BoolReactiveProperty updateMissionAchieved = new BoolReactiveProperty();
|
private readonly BoolReactiveProperty updateMissionAchieved = new BoolReactiveProperty();
|
||||||
public IReadOnlyReactiveProperty<bool> UpdateMissionAchieved => updateMissionAchieved;
|
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()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
|
@ -49,26 +50,6 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
hasRecipeObserver.OnNext(gameData.MyRecipes.Length);
|
hasRecipeObserver.OnNext(gameData.MyRecipes.Length);
|
||||||
deliveredBulkOrderObserver.OnNext(gameData.BulkOrderDeliveredCount);
|
deliveredBulkOrderObserver.OnNext(gameData.BulkOrderDeliveredCount);
|
||||||
}).AddTo(this);
|
}).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);
|
var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue