データリセットのチュートリアル対応

This commit is contained in:
kimura 2021-10-27 11:31:23 +09:00
parent 8aa5f80c4b
commit ed6ecfaa56
4 changed files with 40 additions and 23 deletions

View File

@ -2,6 +2,7 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using MyGame.Scripts;
using UniRx; using UniRx;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
@ -28,6 +29,9 @@ public class DebugOptionManager : MonoBehaviour
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{ {
var gameData = GameDataManager.GameData;
Market.Instance.IsPause.Value = true;
if (!LocalCacheManager.Exists(DebugPrevSceneTag)) if (!LocalCacheManager.Exists(DebugPrevSceneTag))
{ {
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
@ -37,10 +41,13 @@ public class DebugOptionManager : MonoBehaviour
resetButton.OnClickAsObservable().Subscribe(_ => resetButton.OnClickAsObservable().Subscribe(_ =>
{ {
GameDataManager.ResetData(); GameDataManager.ResetData();
TutorialManager.Instance.ResetTutorial();
Market.Instance.SetGameData(GameDataManager.GameData);
Market.Instance.ReShuffle(GameDataManager.GameData.ShopStock);
Market.Instance.CheckStock(GameDataManager.GameData.ShopStock);
TransitionManager.Instance.LoadScene(GameScenes.DebugOption); TransitionManager.Instance.LoadScene(GameScenes.DebugOption);
}).AddTo(this); }).AddTo(this);
Market.Instance.IsPause.Value = true;
backButton.OnClickAsObservable().Subscribe(_ => backButton.OnClickAsObservable().Subscribe(_ =>
{ {
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
@ -48,7 +55,6 @@ public class DebugOptionManager : MonoBehaviour
TransitionManager.Instance.LoadScene(prevScene); TransitionManager.Instance.LoadScene(prevScene);
}); });
var gameData = GameDataManager.GameData;
resetFieldButton.OnClickAsObservable().Subscribe(_ => resetFieldButton.OnClickAsObservable().Subscribe(_ =>
{ {
gameData.PlantLineDataList = new List<PlantLineData> gameData.PlantLineDataList = new List<PlantLineData>

View File

@ -59,7 +59,8 @@ public class Market : SingletonMonoBehaviour<Market>
private int orderIndex; private int orderIndex;
private int oneByOneIndex = 0; private int oneByOneIndex = 0;
private GameData gameData;
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{ {
@ -71,8 +72,8 @@ public class Market : SingletonMonoBehaviour<Market>
IsPause.AddTo(this); IsPause.AddTo(this);
isPromotion.AddTo(this); isPromotion.AddTo(this);
var gameData = GameDataManager.GameData; gameData = GameDataManager.GameData;
#if UNITY_EDITOR || DEVELOPMENT_BUILD #if UNITY_EDITOR || DEVELOPMENT_BUILD
CheckAndFixStock(); CheckAndFixStock();
StockFlavorLog(); StockFlavorLog();
@ -133,6 +134,17 @@ public class Market : SingletonMonoBehaviour<Market>
var dontBuyCustomerList = new List<CustomerController>(); var dontBuyCustomerList = new List<CustomerController>();
foreach (var controller in customers) foreach (var controller in customers)
{ {
// 何も買わない
if (displayFlavors.Count == 0 || controller.OrderCount == 0)
{
controller.CallWaitForSeconds(1.5f, () =>
{
controller.ChangeCustomerState(CustomerState.Leave);
});
dontBuyCustomerList.Add(controller);
continue;
}
// 売り切れ // 売り切れ
if (shuffledOrder.Count == 0) if (shuffledOrder.Count == 0)
{ {
@ -145,17 +157,7 @@ public class Market : SingletonMonoBehaviour<Market>
dontBuyCustomerList.Add(controller); dontBuyCustomerList.Add(controller);
continue; continue;
} }
// 何も買わない
if (controller.OrderCount == 0)
{
controller.CallWaitForSeconds(1.5f, () =>
{
controller.ChangeCustomerState(CustomerState.Leave);
});
dontBuyCustomerList.Add(controller);
continue;
}
// shuffledOrder順に販売 // shuffledOrder順に販売
var tmpOrderCount = Mathf.Min(controller.OrderCount, shuffledOrder.Count); var tmpOrderCount = Mathf.Min(controller.OrderCount, shuffledOrder.Count);
var tmpOrders = shuffledOrder.GetRange(0, tmpOrderCount); var tmpOrders = shuffledOrder.GetRange(0, tmpOrderCount);
@ -488,7 +490,7 @@ public class Market : SingletonMonoBehaviour<Market>
return false; return false;
} }
private void ReShuffle(List<ProductStockData> shopStock) public void ReShuffle(List<ProductStockData> shopStock)
{ {
displayFlavors = shopStock.ToList(); displayFlavors = shopStock.ToList();
shuffledOrder = ShuffleOrder(displayFlavors.Count); shuffledOrder = ShuffleOrder(displayFlavors.Count);
@ -536,6 +538,11 @@ public class Market : SingletonMonoBehaviour<Market>
} }
} }
public void SetGameData(GameData newGameData)
{
gameData = newGameData;
}
public static void StockFlavorLog() public static void StockFlavorLog()
{ {
var shopStockString = ""; var shopStockString = "";

View File

@ -51,12 +51,12 @@ public class MarketManager : MonoBehaviour
.Subscribe(_ => .Subscribe(_ =>
{ {
// チュートリアル終了 // チュートリアル終了
gameData.isFirstPlay = false; gameData.FinishTutorial();
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
walkerMask.gameObject.SetActive(false); walkerMask.gameObject.SetActive(false);
rewardButtonView.gameObject.SetActive(true); rewardButtonView.gameObject.SetActive(true);
TutorialManager.Instance.ShowTutorialConversation(11); TutorialManager.Instance.ShowTutorialConversation(11);
}).AddTo(controller); }).AddTo(controller).AddTo(this);
}); });
} }
} }

View File

@ -18,19 +18,18 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
private void Start() private void Start()
{ {
checkInterval.AddTo(this); checkInterval.AddTo(this);
var gameData = GameDataManager.GameData;
var levelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet); var levelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet);
heartObserver = checkInterval heartObserver = checkInterval
.Select(x => .Select(x =>
Observable.Interval(TimeSpan.FromSeconds(x)) Observable.Interval(TimeSpan.FromSeconds(x))
.Select(_ => gameData.Heart) .Select(_ => GameDataManager.GameData.Heart)
.DistinctUntilChanged()) .DistinctUntilChanged())
.Switch(); .Switch();
var shopLevelObserver = checkInterval var shopLevelObserver = checkInterval
.Select(x => .Select(x =>
Observable.Interval(TimeSpan.FromSeconds(x)) Observable.Interval(TimeSpan.FromSeconds(x))
.Select(_ => gameData.ViewedShopLevel) .Select(_ => GameDataManager.GameData.ViewedShopLevel)
.DistinctUntilChanged()) .DistinctUntilChanged())
.Switch(); .Switch();
@ -47,6 +46,10 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
ShopLevelUpdate = Observable.CombineLatest(heartObserver, shopLevelObserver, sceneCounter, ShopLevelUpdate = Observable.CombineLatest(heartObserver, shopLevelObserver, sceneCounter,
(heart, level, sceneCount) => (heart, level, sceneCount) =>
{ {
if (level == 0 && GameDataManager.GameData.isFirstPlay)
{
return false;
}
var currentLevel = levelList.LastOrDefault(data => data.heart <= heart)?.shopLevel ?? 1; var currentLevel = levelList.LastOrDefault(data => data.heart <= heart)?.shopLevel ?? 1;
return currentLevel > level && sceneCount == 1; return currentLevel > level && sceneCount == 1;
}) })
@ -61,6 +64,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
.Where(x => x <= 1) .Where(x => x <= 1)
.Subscribe(x => .Subscribe(x =>
{ {
var gameData = GameDataManager.GameData;
if (gameData.ViewedShopLevel == 0) if (gameData.ViewedShopLevel == 0)
{ {
return; return;