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

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,14 +91,18 @@ public class ShopItemPurchaseView : MonoBehaviour
currentCount.Value = 1;
}
if (GameDataManager.GameData.isFirstPlay)
// tutorial 所持金チェック
if (!GameDataManager.GameData.FinishedFlags.HasFlag(TutorialFlag.Shopping))
{
// マスク表示
var go = TutorialManager.Instance.ShowTutorialMask(transform.parent, purchaseOnButton.transform as RectTransform);
purchaseOnButton.OnClickAsObservable().Take(1).Subscribe(_ =>
if (GameDataManager.GameData.Coin >= data.shopData.price)
{
DestroyImmediate(go);
}).AddTo(this);
// マスク表示
var go = TutorialManager.Instance.ShowTutorialMask(transform.parent, purchaseOnButton.transform as RectTransform);
purchaseOnButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
DestroyImmediate(go);
}).AddTo(this);
}
}
}

View File

@ -17,6 +17,20 @@ public class Shopping : MonoBehaviour
SoundManager.Instance.PlayBGM("bgm_shopping");
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);
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart);
@ -36,8 +50,6 @@ public class Shopping : MonoBehaviour
HeartMeter.Instance.AddHeart(pair.Current - pair.Previous);
}).AddTo(this);
// 一覧データ
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
foreach (var shopData in shopDataList)
{
if (shopData.Category == ItemCategory.Special)
@ -52,36 +64,28 @@ public class Shopping : MonoBehaviour
{
itemView.SetItemActive(shopData.price <= ownCoin);
}).AddTo(this);
var purchaseSubject = new Subject<int>();
purchaseSubject.AddTo(itemView);
purchaseSubject.Subscribe(amount =>
{
// アイテムを増やす
AddItem(shopData, amount);
itemView.SetStockCount(GetItemAmount(shopData));
CoinManager.Instance.SubCoin(shopData.price * amount);
gameData.Coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.Coin);
GameDataManager.SaveGameData();
}).AddTo(itemView);
// アイテム購入クリック購読
itemView.PurchaseButtonObservable
.ThrottleFirst(TimeSpan.FromSeconds(.3f))
.Where(_ => shopData.price <= CoinManager.Instance.OwnCoin)
.Subscribe(_ =>
{
ShopItemPurchaseView.ShowDialog((shopData, GetItemAmount(shopData)), x =>
ShopItemPurchaseView.ShowDialog((shopData, GetItemAmount(shopData)), amount =>
{
purchaseSubject.OnNext(x);
if (gameData.isFirstPlay)
// アイテムを増やす
AddItem(shopData, amount);
itemView.SetStockCount(GetItemAmount(shopData));
CoinManager.Instance.SubCoin(shopData.price * amount);
gameData.Coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.Coin);
GameDataManager.SaveGameData();
if (isTutorial)
{
TutorialManager.Instance.ShowTutorialConversation(6, () =>
TutorialManager.Instance.ShowTutorialConversation(8, () =>
{
var go = FindObjectOfType<FooterManager>().transform;
go.transform.FindChildByName("Button_Main", t =>
{
TutorialManager.Instance.ShowTutorialMask(go.parent, t as RectTransform, true);
});
gameData.FinishedFlags |= TutorialFlag.Shopping;
GameDataManager.SaveGameData();
});
}
});
@ -96,10 +100,10 @@ public class Shopping : MonoBehaviour
listView.SetTab(ItemCategory.Material);
changeCoinSubject.OnNext(CoinManager.Instance.OwnCoin);
if (gameData.isFirstPlay)
if (isTutorial)
{
listView.ScrollRect.vertical = false;
TutorialManager.Instance.ShowTutorialConversation(5, () =>
TutorialManager.Instance.ShowTutorialConversation(7, () =>
{
// マスク表示
var view = listView.ScrollRect.content.GetChild(0).GetComponent<ShopItemView>();