仕入れワールド対応

This commit is contained in:
kimura 2022-10-14 15:05:18 +09:00
parent 9ceacd9400
commit 8b2f64ad3e
2 changed files with 37 additions and 36 deletions

View File

@ -45,27 +45,27 @@ namespace MyGame.Scenes.MiniGame.Scripts
public void ShowResult(int score, ScrollGamePlaceData[] placeList, ScrollGameStageData stageData) public void ShowResult(int score, ScrollGamePlaceData[] placeList, ScrollGameStageData stageData)
{ {
SoundManager.Instance.ChangeVolumeUniqueBGM(.3f); SoundManager.Instance.ChangeVolumeUniqueBGM(.3f);
var gameData = GameDataManager.GameData; var globalGameData = GameDataManager.GameData;
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet); var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
if (!(gameData.ScrollGameStageScoreList.FirstOrDefault(data => data.Id == stageData.id) is ScrollGameScoreData stageScoreData)) if (!(globalGameData.ScrollGameStageScoreList.FirstOrDefault(data => data.Id == stageData.id) is ScrollGameScoreData stageScoreData))
{ {
stageScoreData = new ScrollGameScoreData stageScoreData = new ScrollGameScoreData
{ {
Id = stageData.id, Id = stageData.id,
Score = 0 Score = 0
}; };
gameData.ScrollGameStageScoreList.Add(stageScoreData); globalGameData.ScrollGameStageScoreList.Add(stageScoreData);
} }
if (!(gameData.ScrollGamePlaceScoreList.FirstOrDefault(data => data.Id == placeList[0].id) is ScrollGameScoreData placeScoreData)) if (!(globalGameData.ScrollGamePlaceScoreList.FirstOrDefault(data => data.Id == placeList[0].id) is ScrollGameScoreData placeScoreData))
{ {
placeScoreData = new ScrollGameScoreData placeScoreData = new ScrollGameScoreData
{ {
Id = placeList[0].id, Id = placeList[0].id,
Score = 0 Score = 0
}; };
gameData.ScrollGamePlaceScoreList.Add(placeScoreData); globalGameData.ScrollGamePlaceScoreList.Add(placeScoreData);
} }
scoreText.text = score.ToString(); scoreText.text = score.ToString();
@ -111,7 +111,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
} }
materialAmountText.text = $"×{amount}"; materialAmountText.text = $"×{amount}";
Shopping.AddItem(shopData, amount); Shopping.AddItem(shopData, amount, globalGameData.CurrentCityId);
} }
var customizeDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopCustomizeData>(Const.ShopCustomizeDataSheet); var customizeDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopCustomizeData>(Const.ShopCustomizeDataSheet);
@ -127,12 +127,12 @@ namespace MyGame.Scenes.MiniGame.Scripts
// 獲得処理 // 獲得処理
if (placeData.recipeId != 0) if (placeData.recipeId != 0)
{ {
if (gameData.MyRecipes.Contains(placeData.recipeId)) if (globalGameData.MyRecipes.Contains(placeData.recipeId))
{ {
continue; continue;
} }
gameData.MyRecipes = new List<int>(gameData.MyRecipes){placeData.recipeId}.ToArray(); globalGameData.MyRecipes = new List<int>(globalGameData.MyRecipes){placeData.recipeId}.ToArray();
gameData.DailyRecipeGetCount++; globalGameData.DailyRecipeGetCount++;
var shopData = shopDataList.First(data => data.itemId == placeData.recipeId && data.Category == ItemCategory.Recipe); var shopData = shopDataList.First(data => data.itemId == placeData.recipeId && data.Category == ItemCategory.Recipe);
// progressList.Add((shopData.Name, shopData.GetPrefab(), placeData.NeedScore, true)); // progressList.Add((shopData.Name, shopData.GetPrefab(), placeData.NeedScore, true));
progressList.Add((shopData.Name, recipeMalaImagePrefab, placeData.NeedScore, true)); progressList.Add((shopData.Name, recipeMalaImagePrefab, placeData.NeedScore, true));
@ -148,7 +148,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
var nextAchievement = sortedPlaceList.FirstOrDefault(data => data.NeedScore > placeScoreData.Score); var nextAchievement = sortedPlaceList.FirstOrDefault(data => data.NeedScore > placeScoreData.Score);
if (nextAchievement != null) if (nextAchievement != null)
{ {
if (nextAchievement.recipeId != 0 && !gameData.MyRecipes.Contains(nextAchievement.recipeId)) if (nextAchievement.recipeId != 0 && !globalGameData.MyRecipes.Contains(nextAchievement.recipeId))
{ {
var shopData = shopDataList.First(data => data.itemId == nextAchievement.recipeId && data.Category == ItemCategory.Recipe); var shopData = shopDataList.First(data => data.itemId == nextAchievement.recipeId && data.Category == ItemCategory.Recipe);
// progressList.Add((shopData.Name, shopData.GetPrefab(), nextAchievement.NeedScore, true)); // progressList.Add((shopData.Name, shopData.GetPrefab(), nextAchievement.NeedScore, true));

View File

@ -18,30 +18,31 @@ public class Shopping : MonoBehaviour
changeCoinSubject.AddTo(this); changeCoinSubject.AddTo(this);
SoundManager.Instance.PlayBGM("bgm_shopping"); SoundManager.Instance.PlayBGM("bgm_shopping");
var gameData = GameDataManager.GameData; var globalGameData = GameDataManager.GameData;
var cityGameData = GameDataManager.GetCurrentCityGameData();
// 一覧データ // 一覧データ
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet); var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
// tutorial 所持金が指定アイテムの金額以上かどうかチェック // tutorial 所持金が指定アイテムの金額以上かどうかチェック
var isTutorial = false; var isTutorial = false;
if (!gameData.FinishedFlags.HasFlag(TutorialFlag.Shopping)) if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.Shopping))
{ {
if (gameData.Coin >= (shopDataList.FirstOrDefault(data => data.itemId == 2)?.price ?? 10)) if (cityGameData.Coin >= (shopDataList.FirstOrDefault(data => data.itemId == 2)?.price ?? 10))
{ {
isTutorial = true; isTutorial = true;
} }
} }
CoinManager.Instance.ChangeCoin(gameData.Coin); CoinManager.Instance.ChangeCoin(cityGameData.Coin);
HeartMeter.Instance.Initialize(gameData.ViewedShopLevel, gameData.Heart); HeartMeter.Instance.Initialize(globalGameData.ViewedShopLevel, cityGameData.Heart);
// ハートゲージがフルかつダイアログが開いていない場合レベルアップ // ハートゲージがフルかつダイアログが開いていない場合レベルアップ
HeartMeter.Instance.FulledHeart HeartMeter.Instance.FulledHeart
.DelaySubscription(TimeSpan.FromSeconds(.4f)) .DelaySubscription(TimeSpan.FromSeconds(.4f))
.Subscribe(_ => .Subscribe(_ =>
{ {
ShopLevelUp.ShowDialog(gameData.ViewedShopLevel + 1); ShopLevelUp.ShowDialog(globalGameData.ViewedShopLevel + 1);
}).AddTo(this); }).AddTo(this);
GameDataObserver.Instance.HeartObserver GameDataObserver.Instance.HeartObserver
@ -76,11 +77,11 @@ public class Shopping : MonoBehaviour
ShopItemPurchaseView.ShowDialog((shopData, GetItemAmount(shopData)), amount => ShopItemPurchaseView.ShowDialog((shopData, GetItemAmount(shopData)), amount =>
{ {
// アイテムを増やす // アイテムを増やす
AddItem(shopData, amount); AddItem(shopData, amount, globalGameData.CurrentCityId);
itemView.SetStockCount(GetItemAmount(shopData)); itemView.SetStockCount(GetItemAmount(shopData));
CoinManager.Instance.SubCoin(shopData.price * amount); CoinManager.Instance.SubCoin(shopData.price * amount);
gameData.Coin = CoinManager.Instance.OwnCoin; cityGameData.Coin = CoinManager.Instance.OwnCoin;
changeCoinSubject.OnNext(gameData.Coin); changeCoinSubject.OnNext(cityGameData.Coin);
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
if (isTutorial) if (isTutorial)
@ -88,7 +89,7 @@ public class Shopping : MonoBehaviour
TutorialManager.Instance.ShowTutorialConversation(8, () => TutorialManager.Instance.ShowTutorialConversation(8, () =>
{ {
isTutorial = false; isTutorial = false;
gameData.FinishedFlags |= TutorialFlag.Shopping; globalGameData.FinishedFlags |= TutorialFlag.Shopping;
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
}); });
} }
@ -103,7 +104,7 @@ public class Shopping : MonoBehaviour
ShopItemExchangeView.ShowDialog(shopData, () => ShopItemExchangeView.ShowDialog(shopData, () =>
{ {
// アイテムを増やす // アイテムを増やす
AddItem(shopData, 1); AddItem(shopData, 1, globalGameData.CurrentCityId);
itemView.SetStockCount(GetItemAmount(shopData)); itemView.SetStockCount(GetItemAmount(shopData));
GameDataManager.SaveGameData(); GameDataManager.SaveGameData();
recipeNotifyIcon.SetActive(CheckEarnedRecipe()); recipeNotifyIcon.SetActive(CheckEarnedRecipe());
@ -141,49 +142,49 @@ public class Shopping : MonoBehaviour
private static int GetItemAmount(ShopData shopData) private static int GetItemAmount(ShopData shopData)
{ {
var gameData = GameDataManager.GameData;
switch (shopData.Category) switch (shopData.Category)
{ {
case ItemCategory.Material: case ItemCategory.Material:
return gameData.Material.Find(data => data.Id == shopData.itemId)?.Amount ?? 0; return GameDataManager.GetCurrentCityGameData().Material.Find(data => data.Id == shopData.itemId)?.Amount ?? 0;
case ItemCategory.Recipe: case ItemCategory.Recipe:
return gameData.MyRecipes.Contains(shopData.itemId) ? 1 : 0; return GameDataManager.GameData.MyRecipes.Contains(shopData.itemId) ? 1 : 0;
case ItemCategory.Pan: case ItemCategory.Pan:
return gameData.Pans.Contains(shopData.itemId) ? 1 : 0; return GameDataManager.GameData.Pans.Contains(shopData.itemId) ? 1 : 0;
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
} }
public static void AddItem(ShopData shopData, int amount) public static void AddItem(ShopData shopData, int amount, int cityId)
{ {
var gameData = GameDataManager.GameData; var cityGameData = GameDataManager.GetCityGameData(cityId);
var globalGameData = GameDataManager.GameData;
switch (shopData.Category) switch (shopData.Category)
{ {
case ItemCategory.Material: case ItemCategory.Material:
var index = gameData.Material.FindIndex(x => x.Id == shopData.itemId); var index = cityGameData.Material.FindIndex(x => x.Id == shopData.itemId);
if (index == -1) if (index == -1)
{ {
index = gameData.Material.Count; index = cityGameData.Material.Count;
gameData.Material.Add(new MaterialData cityGameData.Material.Add(new MaterialData
{ {
Id = shopData.itemId, Id = shopData.itemId,
Amount = 0 Amount = 0
}); });
} }
gameData.Material[index].Amount += amount; cityGameData.Material[index].Amount += amount;
break; break;
case ItemCategory.Recipe: case ItemCategory.Recipe:
if (!gameData.MyRecipes.Contains(shopData.itemId)) if (!globalGameData.MyRecipes.Contains(shopData.itemId))
{ {
gameData.MyRecipes = new List<int>(gameData.MyRecipes){shopData.itemId}.ToArray(); globalGameData.MyRecipes = new List<int>(globalGameData.MyRecipes){shopData.itemId}.ToArray();
gameData.DailyRecipeGetCount++; globalGameData.DailyRecipeGetCount++;
} }
break; break;
case ItemCategory.Pan: case ItemCategory.Pan:
if (!gameData.Pans.Contains(shopData.itemId)) if (!globalGameData.Pans.Contains(shopData.itemId))
{ {
gameData.Pans = new List<int>(gameData.Pans){shopData.itemId}.ToArray(); globalGameData.Pans = new List<int>(globalGameData.Pans){shopData.itemId}.ToArray();
} }
break; break;
default: default: