Merge branch 'feture/update_ver1.1.0' of bitbucket.org:usaya/popcorn into feture/update_ver1.1.0
This commit is contained in:
commit
3cb8c5a763
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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, () =>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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>();
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ public sealed class InitializeUnitySettings : MonoBehaviour {
|
|||
|
||||
// 遅延させていたパラメータを追加
|
||||
GameDataManager.GameData.MoveAllWaitValue();
|
||||
// 調理後リザルトでの仮獲得データを反映(タスクキル対策)
|
||||
CookingResult.MoveStock(GameDataManager.GameData.WaitAddStock);
|
||||
GameDataManager.SaveGameData();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue