Merge branch 'feture/update_ver1.1.0' of bitbucket.org:usaya/popcorn into feture/update_ver1.1.0

This commit is contained in:
koya_15 2022-02-03 15:20:38 +09:00
commit 3cb8c5a763
6 changed files with 123 additions and 69 deletions

View File

@ -45,6 +45,40 @@ public class CookingResult : MonoBehaviour
result.Value = resultData; result.Value = resultData;
SetData(productData, rarityData, viewType); SetData(productData, rarityData, viewType);
// 材料消費&仮獲得
RecipeDetailView.ConsumeMaterial(productData);
if (viewType == ProductViewType.Default)
{
result.Subscribe(cornResult =>
{
// 仮獲得データ登録
GameDataManager.GameData.WaitAddStock.FlavorId = productData.id;
GameDataManager.GameData.WaitAddStock.Stock = cornResult == CornResult.Failure ? 0 : productData.volume;
GameDataManager.GameData.WaitAddStock.Rarity = cornResult == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal;
GameDataManager.SaveGameData();
}).AddTo(this);
}
else
{
// 大量注文時処理
var materialNumber = LocalCacheManager.Load<int>(BulkOrder.MaterialNumberTag);
result.Where(x => x != CornResult.Failure ).Subscribe(cornResult =>
{
if (!(GameDataManager.GameData.CompletedProductList.FirstOrDefault(data => data.Number == materialNumber) is BulkOrderResultData bulkOrderResultData))
{
bulkOrderResultData = new BulkOrderResultData
{
Number = materialNumber
};
GameDataManager.GameData.CompletedProductList.Add(bulkOrderResultData);
}
// レア上書き
bulkOrderResultData.Rarity = cornResult == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal;
GameDataManager.SaveGameData();
}).AddTo(this);
}
// チュートリアル時
if (!GameDataManager.GameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay)) if (!GameDataManager.GameData.FinishedFlags.HasFlag(TutorialFlag.FirstPlay))
{ {
// ボタン非表示 // ボタン非表示
@ -64,55 +98,31 @@ public class CookingResult : MonoBehaviour
}).AddTo(this); }).AddTo(this);
return; return;
} }
// ボタン表示
successAction?.Invoke(); successAction?.Invoke();
okButton.gameObject.SetActive(true); okButton.gameObject.SetActive(true);
okButton.OnClickAsObservable().Take(1).Subscribe(_ => okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
AddStock(productData, resultData == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal); MoveStock(GameDataManager.GameData.WaitAddStock);
GameDataManager.SaveGameData();
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
return; return;
} }
result.Subscribe(r => // UI用
result.Subscribe(cornResult =>
{ {
SetUI(r, viewType, CheckMakeOne(r, productData)); SetUI(cornResult, viewType, CheckMakeOne(cornResult, productData));
if (r != CornResult.Failure) if (cornResult != CornResult.Failure)
{ {
successAction?.Invoke(); successAction?.Invoke();
} }
}).AddTo(this); }).AddTo(this);
// 各種ボタン押下後、獲得処理 // 大成功にする
if (viewType == ProductViewType.Default)
{
Market.Instance.IsPause.Value = true;
okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
AddStock(productData, result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal);
Market.Instance.IsPause.Value = false;
TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this);
}
else
{
// 大量注文時処理
var materialNumber = LocalCacheManager.Load<int>(BulkOrder.MaterialNumberTag);
okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
if (!GameDataManager.GameData.CompletedProductList.Exists(data => data.Number == materialNumber))
{
var rarity = result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal;
GameDataManager.GameData.CompletedProductList.Add(new BulkOrderResultData(){Number = materialNumber, Rarity = rarity});
GameDataManager.SaveGameData();
}
TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this);
}
perfectButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ => perfectButton.OnClickAsObservable().ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ =>
{ {
// 広告視聴後、結果上書き // 広告視聴後、結果上書き
@ -121,22 +131,47 @@ public class CookingResult : MonoBehaviour
result.Value = CornResult.Perfect; result.Value = CornResult.Perfect;
}); });
}).AddTo(this); }).AddTo(this);
destructionButton.OnClickAsObservable().Take(1).Subscribe(_ =>
// 獲得する
if (viewType == ProductViewType.Default)
{ {
// 遷移 Market.Instance.IsPause.Value = true;
okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
MoveStock(GameDataManager.GameData.WaitAddStock);
GameDataManager.SaveGameData();
Market.Instance.IsPause.Value = false;
TransitionManager.Instance.LoadScene(GameScenes.Main); TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this); }).AddTo(this);
// もう一度作る
makeOneButton.OnClickAsObservable().Take(1).Subscribe(_ => makeOneButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {
// 獲得、遷移 // 獲得、遷移
AddStock(productData, result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal); MoveStock(GameDataManager.GameData.WaitAddStock);
RecipeDetailView.ConsumeMaterial(productData); GameDataManager.SaveGameData();
Market.Instance.IsPause.Value = false; Market.Instance.IsPause.Value = false;
SoundManager.Instance.ChangeVolumeUniqueBGM(1f); SoundManager.Instance.ChangeVolumeUniqueBGM(1f);
TransitionManager.Instance.UnloadScene(GameScenes.CookingResults); TransitionManager.Instance.UnloadScene(GameScenes.CookingResults);
LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke(); LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke();
}).AddTo(this); }).AddTo(this);
} }
else
{
// 大量注文時処理
okButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this);
}
// 破棄する
destructionButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
TransitionManager.Instance.LoadScene(GameScenes.Main);
}).AddTo(this);
}
private void SetData(ProductData recipe, RarityData rarity, ProductViewType viewType) private void SetData(ProductData recipe, RarityData rarity, ProductViewType viewType)
{ {
@ -210,17 +245,33 @@ public class CookingResult : MonoBehaviour
return hasSpace && hasMaterials; return hasSpace && hasMaterials;
} }
public static void MoveStock(ProductStockData productStockData)
{
AddStock(productStockData);
productStockData.Stock = 0;
}
public static void AddStock(ProductData productData, ProductRarity rarity = ProductRarity.Normal) public static void AddStock(ProductData productData, ProductRarity rarity = ProductRarity.Normal)
{ {
AddStock(new ProductStockData{FlavorId = productData.id, Stock = productData.volume, Rarity = rarity});
GameDataManager.SaveGameData();
}
public static void AddStock(ProductStockData productStockData)
{
if (productStockData.Stock == 0)
{
return;
}
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// 店頭の空きに追加 // 店頭の空きに追加
var remain = productData.volume; var remain = productStockData.Stock;
var shopSpace = Market.ShopStockCount - gameData.ShopStock.Count; var shopSpace = Market.ShopStockCount - gameData.ShopStock.Count;
var stockCount = Mathf.Min(shopSpace, remain); var stockCount = Mathf.Min(shopSpace, remain);
gameData.ShopStock.AddRange(Enumerable.Repeat(new ProductStockData gameData.ShopStock.AddRange(Enumerable.Repeat(new ProductStockData
{ {
FlavorId = productData.id, FlavorId = productStockData.FlavorId,
Rarity = rarity, Rarity = productStockData.Rarity,
}, stockCount)); }, stockCount));
remain -= stockCount; remain -= stockCount;
// ShopStockに補充された場合、DisplayFlavors更新 // ShopStockに補充された場合、DisplayFlavors更新
@ -235,7 +286,7 @@ public class CookingResult : MonoBehaviour
// 空きのタンクを確認 // 空きのタンクを確認
gameData.StorageTanks gameData.StorageTanks
.Select((tank, i) => (tank, i)) .Select((tank, i) => (tank, i))
.Where(x => x.tank.IsEmpty || x.tank.FlavorId == productData.id && !x.tank.IsFull) .Where(x => x.tank.IsEmpty || x.tank.FlavorId == productStockData.FlavorId && !x.tank.IsFull)
.Select(x => (x.i, space: x.tank.Capacity - x.tank.Stock)) .Select(x => (x.i, space: x.tank.Capacity - x.tank.Stock))
.OrderBy(x => x.space) .OrderBy(x => x.space)
.ToList() .ToList()
@ -248,14 +299,13 @@ public class CookingResult : MonoBehaviour
// タンクが空ならフレーバー設定 // タンクが空ならフレーバー設定
if (gameData.StorageTanks[x.i].IsEmpty) if (gameData.StorageTanks[x.i].IsEmpty)
{ {
gameData.StorageTanks[x.i].FlavorId = productData.id; gameData.StorageTanks[x.i].FlavorId = productStockData.FlavorId;
} }
// タンクに追加 // タンクに追加
stockCount = Mathf.Min(x.space, remain); stockCount = Mathf.Min(x.space, remain);
gameData.StorageTanks[x.i].AddStock(rarity, stockCount); gameData.StorageTanks[x.i].AddStock(productStockData.Rarity, stockCount);
remain -= stockCount; remain -= stockCount;
}); });
GameDataManager.SaveGameData();
} }
} }

View File

@ -83,9 +83,11 @@ public class KitchenManager : MonoBehaviour
gameData.Material.Add(materialData); gameData.Material.Add(materialData);
} }
materialData.Amount++; materialData.Amount++;
gameData.StorageTanks.Clear();
gameData.ShopStock.Clear();
// ミッションカウンターリセット // ミッションカウンターリセット
GameDataManager.GameData.ResetNormalTotalCount(); gameData.ResetNormalTotalCount();
GameDataManager.GameData.ResetDailyTotalCount(); gameData.ResetDailyTotalCount();
// 店舗レベル1達成表示 // 店舗レベル1達成表示
ShopLevelUp.ShowDialog(1, () => ShopLevelUp.ShowDialog(1, () =>

View File

@ -36,8 +36,6 @@ public class ShopLevelUp : MonoBehaviour
achievementText.text = shopLevelList.FirstOrDefault(data => data.shopLevel == shopLevel)?.Achievement ?? ""; achievementText.text = shopLevelList.FirstOrDefault(data => data.shopLevel == shopLevel)?.Achievement ?? "";
recipeNameText.text = productData?.Name ?? ""; recipeNameText.text = productData?.Name ?? "";
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
GameDataManager.GameData.ViewedShopLevel = shopLevel; GameDataManager.GameData.ViewedShopLevel = shopLevel;
GameDataManager.GameData.OrderConditionCount = 0; GameDataManager.GameData.OrderConditionCount = 0;
// レシピ開放 // レシピ開放
@ -47,7 +45,10 @@ public class ShopLevelUp : MonoBehaviour
GameDataManager.GameData.DailyRecipeGetCount++; GameDataManager.GameData.DailyRecipeGetCount++;
} }
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
HeartMeter.Instance.SetShopLevel(GameDataManager.GameData.ViewedShopLevel, true);
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
transform.SetLocalScale(0); transform.SetLocalScale(0);
backgroundAnimator.SetTrigger(CloseTrigger); backgroundAnimator.SetTrigger(CloseTrigger);
this.CallWaitForSeconds(.25f, () => this.CallWaitForSeconds(.25f, () =>
@ -83,14 +84,12 @@ public class ShopLevelUp : MonoBehaviour
{ {
UpdateDialog.ShowDialog(() => UpdateDialog.ShowDialog(() =>
{ {
HeartMeter.Instance.SetShopLevel(GameDataManager.GameData.ViewedShopLevel, true);
LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke(); LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke();
LocalCacheManager.Remove(CallbackTag); LocalCacheManager.Remove(CallbackTag);
}); });
} }
else else
{ {
HeartMeter.Instance.SetShopLevel(GameDataManager.GameData.ViewedShopLevel, true);
LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke(); LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke();
LocalCacheManager.Remove(CallbackTag); LocalCacheManager.Remove(CallbackTag);
} }

View File

@ -67,8 +67,6 @@ public class RecipeDetailView : MonoBehaviour
nextButton.OnClickAsObservable().Take(1).Subscribe(_ => nextButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{ {
LocalCacheManager.Save(PopcornGameManager.PanDataTag, panSelector.SelectedPanData.Value); LocalCacheManager.Save(PopcornGameManager.PanDataTag, panSelector.SelectedPanData.Value);
// 消費
ConsumeMaterial(data);
TransitionManager.Instance.LoadScene(GameScenes.Cooking); TransitionManager.Instance.LoadScene(GameScenes.Cooking);
}).AddTo(this); }).AddTo(this);

View File

@ -142,6 +142,8 @@ public sealed class GameData {
public int WaitAddCoin; public int WaitAddCoin;
[DataMember(Name = "Data41")] [DataMember(Name = "Data41")]
public int WaitAddHeart; public int WaitAddHeart;
[DataMember(Name = "Data42")]
public ProductStockData WaitAddStock;
// mission // mission
[DataMember(Name = "Data1001")] [DataMember(Name = "Data1001")]
@ -387,6 +389,7 @@ public sealed class GameData {
dailyMissionIdArray = dailyMissionIdArray ?? new int[0]; dailyMissionIdArray = dailyMissionIdArray ?? new int[0];
dailyMissionAchievedIdArray = dailyMissionAchievedIdArray ?? new int[0]; dailyMissionAchievedIdArray = dailyMissionAchievedIdArray ?? new int[0];
DailyTotalSalesList = DailyTotalSalesList ?? new List<ProductStockData>(); DailyTotalSalesList = DailyTotalSalesList ?? new List<ProductStockData>();
WaitAddStock = WaitAddStock ?? new ProductStockData{Rarity = ProductRarity.Normal};
} }
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){ private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
var dictionary = new Dictionary<int, int>(); var dictionary = new Dictionary<int, int>();

View File

@ -30,6 +30,8 @@ public sealed class InitializeUnitySettings : MonoBehaviour {
// 遅延させていたパラメータを追加 // 遅延させていたパラメータを追加
GameDataManager.GameData.MoveAllWaitValue(); GameDataManager.GameData.MoveAllWaitValue();
// 調理後リザルトでの仮獲得データを反映(タスクキル対策)
CookingResult.MoveStock(GameDataManager.GameData.WaitAddStock);
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
} }
} }