仕入れワールド対応

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)
{
SoundManager.Instance.ChangeVolumeUniqueBGM(.3f);
var gameData = GameDataManager.GameData;
var globalGameData = GameDataManager.GameData;
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
{
Id = stageData.id,
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
{
Id = placeList[0].id,
Score = 0
};
gameData.ScrollGamePlaceScoreList.Add(placeScoreData);
globalGameData.ScrollGamePlaceScoreList.Add(placeScoreData);
}
scoreText.text = score.ToString();
@ -111,7 +111,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
}
materialAmountText.text = $"×{amount}";
Shopping.AddItem(shopData, amount);
Shopping.AddItem(shopData, amount, globalGameData.CurrentCityId);
}
var customizeDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopCustomizeData>(Const.ShopCustomizeDataSheet);
@ -127,12 +127,12 @@ namespace MyGame.Scenes.MiniGame.Scripts
// 獲得処理
if (placeData.recipeId != 0)
{
if (gameData.MyRecipes.Contains(placeData.recipeId))
if (globalGameData.MyRecipes.Contains(placeData.recipeId))
{
continue;
}
gameData.MyRecipes = new List<int>(gameData.MyRecipes){placeData.recipeId}.ToArray();
gameData.DailyRecipeGetCount++;
globalGameData.MyRecipes = new List<int>(globalGameData.MyRecipes){placeData.recipeId}.ToArray();
globalGameData.DailyRecipeGetCount++;
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, recipeMalaImagePrefab, placeData.NeedScore, true));
@ -148,7 +148,7 @@ namespace MyGame.Scenes.MiniGame.Scripts
var nextAchievement = sortedPlaceList.FirstOrDefault(data => data.NeedScore > placeScoreData.Score);
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);
// progressList.Add((shopData.Name, shopData.GetPrefab(), nextAchievement.NeedScore, true));

View File

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