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

@ -44,7 +44,41 @@ public class CookingResult : MonoBehaviour
var (rarityData, resultData, successAction) = LocalCacheManager.Load<(RarityData, CornResult, Action)>(PopcornGameManager.CookingResultDataTag);
result.Value = resultData;
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))
{
// ボタン非表示
@ -64,55 +98,31 @@ public class CookingResult : MonoBehaviour
}).AddTo(this);
return;
}
// ボタン表示
successAction?.Invoke();
okButton.gameObject.SetActive(true);
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);
}).AddTo(this);
return;
}
result.Subscribe(r =>
// UI用
result.Subscribe(cornResult =>
{
SetUI(r, viewType, CheckMakeOne(r, productData));
if (r != CornResult.Failure)
SetUI(cornResult, viewType, CheckMakeOne(cornResult, productData));
if (cornResult != CornResult.Failure)
{
successAction?.Invoke();
}
}).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(_ =>
{
// 広告視聴後、結果上書き
@ -121,21 +131,46 @@ public class CookingResult : MonoBehaviour
result.Value = CornResult.Perfect;
});
}).AddTo(this);
// 獲得する
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);
}).AddTo(this);
// もう一度作る
makeOneButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
MoveStock(GameDataManager.GameData.WaitAddStock);
GameDataManager.SaveGameData();
Market.Instance.IsPause.Value = false;
SoundManager.Instance.ChangeVolumeUniqueBGM(1f);
TransitionManager.Instance.UnloadScene(GameScenes.CookingResults);
LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke();
}).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);
makeOneButton.OnClickAsObservable().Take(1).Subscribe(_ =>
{
// 獲得、遷移
AddStock(productData, result.Value == CornResult.Perfect ? rarityData.Rarity : ProductRarity.Normal);
RecipeDetailView.ConsumeMaterial(productData);
Market.Instance.IsPause.Value = false;
SoundManager.Instance.ChangeVolumeUniqueBGM(1f);
TransitionManager.Instance.UnloadScene(GameScenes.CookingResults);
LocalCacheManager.Load<Action>(PopcornGameManager.RestartCallbackTag, null)?.Invoke();
}).AddTo(this);
}
private void SetData(ProductData recipe, RarityData rarity, ProductViewType viewType)
@ -210,17 +245,33 @@ public class CookingResult : MonoBehaviour
return hasSpace && hasMaterials;
}
public static void MoveStock(ProductStockData productStockData)
{
AddStock(productStockData);
productStockData.Stock = 0;
}
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 remain = productData.volume;
var remain = productStockData.Stock;
var shopSpace = Market.ShopStockCount - gameData.ShopStock.Count;
var stockCount = Mathf.Min(shopSpace, remain);
gameData.ShopStock.AddRange(Enumerable.Repeat(new ProductStockData
{
FlavorId = productData.id,
Rarity = rarity,
FlavorId = productStockData.FlavorId,
Rarity = productStockData.Rarity,
}, stockCount));
remain -= stockCount;
// ShopStockに補充された場合、DisplayFlavors更新
@ -235,7 +286,7 @@ public class CookingResult : MonoBehaviour
// 空きのタンクを確認
gameData.StorageTanks
.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))
.OrderBy(x => x.space)
.ToList()
@ -248,14 +299,13 @@ public class CookingResult : MonoBehaviour
// タンクが空ならフレーバー設定
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);
gameData.StorageTanks[x.i].AddStock(rarity, stockCount);
gameData.StorageTanks[x.i].AddStock(productStockData.Rarity, stockCount);
remain -= stockCount;
});
GameDataManager.SaveGameData();
}
}

View File

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

View File

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

View File

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

View File

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

View File

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