仕入れチュートリアル対応

This commit is contained in:
kimura 2021-12-03 19:11:00 +09:00
parent 0cd9e21ffd
commit e33effdb85
2 changed files with 39 additions and 31 deletions

View File

@ -91,7 +91,10 @@ public class ShopItemPurchaseView : MonoBehaviour
currentCount.Value = 1; currentCount.Value = 1;
} }
if (GameDataManager.GameData.isFirstPlay) // tutorial 所持金チェック
if (!GameDataManager.GameData.FinishedFlags.HasFlag(TutorialFlag.Shopping))
{
if (GameDataManager.GameData.Coin >= data.shopData.price)
{ {
// マスク表示 // マスク表示
var go = TutorialManager.Instance.ShowTutorialMask(transform.parent, purchaseOnButton.transform as RectTransform); var go = TutorialManager.Instance.ShowTutorialMask(transform.parent, purchaseOnButton.transform as RectTransform);
@ -101,6 +104,7 @@ public class ShopItemPurchaseView : MonoBehaviour
}).AddTo(this); }).AddTo(this);
} }
} }
}
private void SetData(ShopData shopData, int count) private void SetData(ShopData shopData, int count)
{ {

View File

@ -17,6 +17,20 @@ public class Shopping : MonoBehaviour
SoundManager.Instance.PlayBGM("bgm_shopping"); SoundManager.Instance.PlayBGM("bgm_shopping");
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// 一覧データ
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
// tutorial 所持金が指定アイテムの金額以上かどうかチェック
var isTutorial = false;
if (!gameData.FinishedFlags.HasFlag(TutorialFlag.Shopping))
{
if (gameData.Coin >= (shopDataList.FirstOrDefault(data => data.itemId == 2)?.price ?? 10))
{
isTutorial = true;
}
}
CoinManager.Instance.ChangeCoin(gameData.Coin); CoinManager.Instance.ChangeCoin(gameData.Coin);
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart); HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
@ -36,8 +50,6 @@ public class Shopping : MonoBehaviour
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous); HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
}).AddTo(this); }).AddTo(this);
// 一覧データ
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
foreach (var shopData in shopDataList) foreach (var shopData in shopDataList)
{ {
if (shopData.Category == ItemCategory.Special) if (shopData.Category == ItemCategory.Special)
@ -52,9 +64,13 @@ public class Shopping : MonoBehaviour
{ {
itemView.SetItemActive(shopData.price <= ownCoin); itemView.SetItemActive(shopData.price <= ownCoin);
}).AddTo(this); }).AddTo(this);
var purchaseSubject = new Subject<int>(); // アイテム購入クリック購読
purchaseSubject.AddTo(itemView); itemView.PurchaseButtonObservable
purchaseSubject.Subscribe(amount => .ThrottleFirst(TimeSpan.FromSeconds(.3f))
.Where(_ => shopData.price <= CoinManager.Instance.OwnCoin)
.Subscribe(_ =>
{
ShopItemPurchaseView.ShowDialog((shopData, GetItemAmount(shopData)), amount =>
{ {
// アイテムを増やす // アイテムを増やす
AddItem(shopData, amount); AddItem(shopData, amount);
@ -63,25 +79,13 @@ public class Shopping : MonoBehaviour
gameData.Coin = CoinManager.Instance.OwnCoin; gameData.Coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.Coin); changeCoinSubject.OnNext(gameData.Coin);
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
}).AddTo(itemView);
// アイテム購入クリック購読 if (isTutorial)
itemView.PurchaseButtonObservable
.ThrottleFirst(TimeSpan.FromSeconds(.3f))
.Where(_ => shopData.price <= CoinManager.Instance.OwnCoin)
.Subscribe(_ =>
{ {
ShopItemPurchaseView.ShowDialog((shopData, GetItemAmount(shopData)), x => TutorialManager.Instance.ShowTutorialConversation(8, () =>
{ {
purchaseSubject.OnNext(x); gameData.FinishedFlags |= TutorialFlag.Shopping;
if (gameData.isFirstPlay) GameDataManager.SaveGameData();
{
TutorialManager.Instance.ShowTutorialConversation(6, () =>
{
var go = FindObjectOfType<FooterManager>().transform;
go.transform.FindChildByName("Button_Main", t =>
{
TutorialManager.Instance.ShowTutorialMask(go.parent, t as RectTransform, true);
});
}); });
} }
}); });
@ -96,10 +100,10 @@ public class Shopping : MonoBehaviour
listView.SetTab(ItemCategory.Material); listView.SetTab(ItemCategory.Material);
changeCoinSubject.OnNext(CoinManager.Instance.OwnCoin); changeCoinSubject.OnNext(CoinManager.Instance.OwnCoin);
if (gameData.isFirstPlay) if (isTutorial)
{ {
listView.ScrollRect.vertical = false; listView.ScrollRect.vertical = false;
TutorialManager.Instance.ShowTutorialConversation(5, () => TutorialManager.Instance.ShowTutorialConversation(7, () =>
{ {
// マスク表示 // マスク表示
var view = listView.ScrollRect.content.GetChild(0).GetComponent<ShopItemView>(); var view = listView.ScrollRect.content.GetChild(0).GetComponent<ShopItemView>();