在庫管理ワールド対応
This commit is contained in:
parent
712208b9d6
commit
fef3ca9223
|
@ -26,13 +26,14 @@ public class ProductManagement : MonoBehaviour
|
||||||
state.Value = ManagementState.None;
|
state.Value = ManagementState.None;
|
||||||
|
|
||||||
WorldMarketManager.Instance.IsPause.Value = true;
|
WorldMarketManager.Instance.IsPause.Value = true;
|
||||||
var gameData = GameDataManager.GameData;
|
var globalGameData = GameDataManager.GameData;
|
||||||
|
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||||
|
|
||||||
if (!gameData.FinishedFlags.HasFlag(TutorialFlag.Management))
|
if (!globalGameData.FinishedFlags.HasFlag(TutorialFlag.Management))
|
||||||
{
|
{
|
||||||
TutorialManager.Instance.ShowTutorialConversation(9, () =>
|
TutorialManager.Instance.ShowTutorialConversation(9, () =>
|
||||||
{
|
{
|
||||||
gameData.FinishedFlags |= TutorialFlag.Management;
|
globalGameData.FinishedFlags |= TutorialFlag.Management;
|
||||||
GameDataManager.SaveGameData();
|
GameDataManager.SaveGameData();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -48,15 +49,15 @@ public class ProductManagement : MonoBehaviour
|
||||||
.OrderBy(data => data.number)
|
.OrderBy(data => data.number)
|
||||||
.Select(data => data.price).ToList();
|
.Select(data => data.price).ToList();
|
||||||
|
|
||||||
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
|
||||||
|
@ -68,10 +69,10 @@ public class ProductManagement : MonoBehaviour
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
// 補充方法設定
|
// 補充方法設定
|
||||||
view.SetRefillType(gameData.RefillMode);
|
view.SetRefillType(cityGameData.RefillMode);
|
||||||
|
|
||||||
// タンク並び替え
|
// タンク並び替え
|
||||||
gameData.StorageTanks = gameData.StorageTanks.OrderBy(tank => tank.IsEmpty).ToList();
|
cityGameData.StorageTanks = cityGameData.StorageTanks.OrderBy(tank => tank.IsEmpty).ToList();
|
||||||
|
|
||||||
// タンク設定
|
// タンク設定
|
||||||
var tankList = view.SetTanks(priceList);
|
var tankList = view.SetTanks(priceList);
|
||||||
|
@ -80,11 +81,11 @@ public class ProductManagement : MonoBehaviour
|
||||||
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
|
var shopDataList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopData>(Const.ShopDataSheet);
|
||||||
foreach (var tankView in tankList)
|
foreach (var tankView in tankList)
|
||||||
{
|
{
|
||||||
tankView.SetArrow(tankView.TankNumber != 4 && tankView.TankNumber != 7 && tankView.TankNumber != gameData.StorageTanks.Count);
|
tankView.SetArrow(tankView.TankNumber != 4 && tankView.TankNumber != 7 && tankView.TankNumber != cityGameData.StorageTanks.Count);
|
||||||
if (tankView.TankNumber > gameData.StorageTanks.Count)
|
if (tankView.TankNumber > cityGameData.StorageTanks.Count)
|
||||||
{
|
{
|
||||||
// 価格の一番小さいタンクのみ購入できるようにする
|
// 価格の一番小さいタンクのみ購入できるようにする
|
||||||
var isSmallest = tankView.TankNumber == gameData.StorageTanks.Count + 1;
|
var isSmallest = tankView.TankNumber == cityGameData.StorageTanks.Count + 1;
|
||||||
tankView.SetState(isSmallest ? TankState.Lock : TankState.Unavailable);
|
tankView.SetState(isSmallest ? TankState.Lock : TankState.Unavailable);
|
||||||
// タンク購入
|
// タンク購入
|
||||||
var shopData = shopDataList.First(data => data.id == Const.ShopTankId);
|
var shopData = shopDataList.First(data => data.id == Const.ShopTankId);
|
||||||
|
@ -101,11 +102,11 @@ public class ProductManagement : MonoBehaviour
|
||||||
void PurchaseAction(int amount)
|
void PurchaseAction(int amount)
|
||||||
{
|
{
|
||||||
// タンク追加
|
// タンク追加
|
||||||
gameData.StorageTanks.Add(new StorageTank { Capacity = Const.TankCapacity });
|
cityGameData.StorageTanks.Add(new StorageTank { Capacity = Const.TankCapacity });
|
||||||
tankView.SetData(gameData.StorageTanks[tankView.TankNumber - 1]);
|
tankView.SetData(cityGameData.StorageTanks[tankView.TankNumber - 1]);
|
||||||
tankView.SetState(TankState.Unlock);
|
tankView.SetState(TankState.Unlock);
|
||||||
CoinManager.Instance.SubCoin(price);
|
CoinManager.Instance.SubCoin(price);
|
||||||
gameData.Coin = CoinManager.Instance.OwnCoin;
|
cityGameData.Coin = CoinManager.Instance.OwnCoin;
|
||||||
GameDataManager.SaveGameData();
|
GameDataManager.SaveGameData();
|
||||||
// 次に大きいタンクの購入ボタンを表示
|
// 次に大きいタンクの購入ボタンを表示
|
||||||
if (tankView.TankNumber + 1 <= tankList.Count)
|
if (tankView.TankNumber + 1 <= tankList.Count)
|
||||||
|
@ -121,15 +122,15 @@ public class ProductManagement : MonoBehaviour
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tankView.SetData(gameData.StorageTanks[tankView.TankNumber - 1]);
|
tankView.SetData(cityGameData.StorageTanks[tankView.TankNumber - 1]);
|
||||||
tankView.SetState(TankState.Unlock);
|
tankView.SetState(TankState.Unlock);
|
||||||
}
|
}
|
||||||
tankView.DetailButtonObservable.Subscribe(_ =>
|
tankView.DetailButtonObservable.Subscribe(_ =>
|
||||||
{
|
{
|
||||||
state.Value = ManagementState.None;
|
state.Value = ManagementState.None;
|
||||||
var tankData = gameData.StorageTanks[tankView.TankNumber - 1];
|
var tankData = cityGameData.StorageTanks[tankView.TankNumber - 1];
|
||||||
var shopStock = gameData.ShopStock.Count(data => data.FlavorId == tankData.FlavorId);
|
var shopStock = cityGameData.ShopStock.Count(data => data.FlavorId == tankData.FlavorId);
|
||||||
var tankStock = gameData.StorageTanks.Where(x => x.FlavorId == tankData.FlavorId).Sum(x => x.Stock);
|
var tankStock = cityGameData.StorageTanks.Where(x => x.FlavorId == tankData.FlavorId).Sum(x => x.Stock);
|
||||||
var totalStock = shopStock + tankStock;
|
var totalStock = shopStock + tankStock;
|
||||||
var productData = productList.FirstOrDefault(data => data.id == tankData.FlavorId);
|
var productData = productList.FirstOrDefault(data => data.id == tankData.FlavorId);
|
||||||
List<(ProductRarity rarity, int price, int stock)> raritySummaryData = rarityDataList.Select(x =>
|
List<(ProductRarity rarity, int price, int stock)> raritySummaryData = rarityDataList.Select(x =>
|
||||||
|
@ -156,7 +157,7 @@ public class ProductManagement : MonoBehaviour
|
||||||
break;
|
break;
|
||||||
case ManagementState.Tasting:
|
case ManagementState.Tasting:
|
||||||
// ストックのあるタンクのIndex取得。なければ試食モード中止。
|
// ストックのあるタンクのIndex取得。なければ試食モード中止。
|
||||||
var index = gameData.StorageTanks.FindIndex(tank => !tank.IsEmpty);
|
var index = cityGameData.StorageTanks.FindIndex(tank => !tank.IsEmpty);
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
{
|
{
|
||||||
state.Value = ManagementState.None;
|
state.Value = ManagementState.None;
|
||||||
|
@ -164,7 +165,7 @@ public class ProductManagement : MonoBehaviour
|
||||||
}
|
}
|
||||||
// 選択中のタンクにストックがあればIndex更新
|
// 選択中のタンクにストックがあればIndex更新
|
||||||
var selectedIndex = tankList.FindIndex(tankView => tankView.State.Value == TankState.Selected);
|
var selectedIndex = tankList.FindIndex(tankView => tankView.State.Value == TankState.Selected);
|
||||||
if (selectedIndex != -1 && !gameData.StorageTanks[selectedIndex].IsEmpty)
|
if (selectedIndex != -1 && !cityGameData.StorageTanks[selectedIndex].IsEmpty)
|
||||||
{
|
{
|
||||||
index = selectedIndex;
|
index = selectedIndex;
|
||||||
}
|
}
|
||||||
|
@ -173,14 +174,14 @@ public class ProductManagement : MonoBehaviour
|
||||||
ClearSelectedTank(tankList);
|
ClearSelectedTank(tankList);
|
||||||
tankList[index].SetState(TankState.Selected);
|
tankList[index].SetState(TankState.Selected);
|
||||||
|
|
||||||
var tankData = gameData.StorageTanks[index];
|
var tankData = cityGameData.StorageTanks[index];
|
||||||
selectedTank.Value = (index + 1, productList.FirstOrDefault(data => data.id == tankData.FlavorId));
|
selectedTank.Value = (index + 1, productList.FirstOrDefault(data => data.id == tankData.FlavorId));
|
||||||
void TastingAction()
|
void TastingAction()
|
||||||
{
|
{
|
||||||
state.Value = ManagementState.None;
|
state.Value = ManagementState.None;
|
||||||
Tasting(selectedTank.Value.num);
|
Tasting(selectedTank.Value.num);
|
||||||
tankList[selectedTank.Value.num - 1].SetData(gameData.StorageTanks[selectedTank.Value.num - 1]);
|
tankList[selectedTank.Value.num - 1].SetData(cityGameData.StorageTanks[selectedTank.Value.num - 1]);
|
||||||
SetActiveTastingButton(gameData.StorageTanks.Any(tank => !tank.IsEmpty));
|
SetActiveTastingButton(cityGameData.StorageTanks.Any(tank => !tank.IsEmpty));
|
||||||
}
|
}
|
||||||
TastingView.ShowDialog(selectedTank.AsObservable(), () => state.Value = ManagementState.None, TastingAction);
|
TastingView.ShowDialog(selectedTank.AsObservable(), () => state.Value = ManagementState.None, TastingAction);
|
||||||
break;
|
break;
|
||||||
|
@ -206,7 +207,7 @@ public class ProductManagement : MonoBehaviour
|
||||||
case ManagementState.Replacing:
|
case ManagementState.Replacing:
|
||||||
break;
|
break;
|
||||||
case ManagementState.Tasting:
|
case ManagementState.Tasting:
|
||||||
var tankData = gameData.StorageTanks[tankView.TankNumber - 1];
|
var tankData = cityGameData.StorageTanks[tankView.TankNumber - 1];
|
||||||
if (tankData.IsEmpty)
|
if (tankData.IsEmpty)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
|
@ -233,12 +234,12 @@ public class ProductManagement : MonoBehaviour
|
||||||
{
|
{
|
||||||
if (tanks.Previous.TankNumber != tanks.Current.TankNumber)
|
if (tanks.Previous.TankNumber != tanks.Current.TankNumber)
|
||||||
{
|
{
|
||||||
var tmpData = gameData.StorageTanks[tanks.Previous.TankNumber - 1];
|
var tmpData = cityGameData.StorageTanks[tanks.Previous.TankNumber - 1];
|
||||||
gameData.StorageTanks[tanks.Previous.TankNumber - 1] = gameData.StorageTanks[tanks.Current.TankNumber - 1];
|
cityGameData.StorageTanks[tanks.Previous.TankNumber - 1] = cityGameData.StorageTanks[tanks.Current.TankNumber - 1];
|
||||||
gameData.StorageTanks[tanks.Current.TankNumber - 1] = tmpData;
|
cityGameData.StorageTanks[tanks.Current.TankNumber - 1] = tmpData;
|
||||||
// 再設定
|
// 再設定
|
||||||
tanks.Previous.SetData(gameData.StorageTanks[tanks.Previous.TankNumber - 1]);
|
tanks.Previous.SetData(cityGameData.StorageTanks[tanks.Previous.TankNumber - 1]);
|
||||||
tanks.Current.SetData(gameData.StorageTanks[tanks.Current.TankNumber - 1]);
|
tanks.Current.SetData(cityGameData.StorageTanks[tanks.Current.TankNumber - 1]);
|
||||||
GameDataManager.SaveGameData();
|
GameDataManager.SaveGameData();
|
||||||
}
|
}
|
||||||
ClearSelectedTank(tankList);
|
ClearSelectedTank(tankList);
|
||||||
|
@ -246,7 +247,7 @@ public class ProductManagement : MonoBehaviour
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
// 空以外のタンクが1つでもあれば有効
|
// 空以外のタンクが1つでもあれば有効
|
||||||
SetActiveTastingButton(gameData.StorageTanks.Any(tank => !tank.IsEmpty));
|
SetActiveTastingButton(cityGameData.StorageTanks.Any(tank => !tank.IsEmpty));
|
||||||
// 試食ボタン
|
// 試食ボタン
|
||||||
tastingButton.OnClickAsObservable().Subscribe(_ =>
|
tastingButton.OnClickAsObservable().Subscribe(_ =>
|
||||||
{
|
{
|
||||||
|
@ -257,7 +258,7 @@ public class ProductManagement : MonoBehaviour
|
||||||
view.RefillType.Subscribe(mode =>
|
view.RefillType.Subscribe(mode =>
|
||||||
{
|
{
|
||||||
// 補充方法変更
|
// 補充方法変更
|
||||||
gameData.RefillMode = mode;
|
cityGameData.RefillMode = mode;
|
||||||
GameDataManager.SaveGameData();
|
GameDataManager.SaveGameData();
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
}
|
}
|
||||||
|
@ -294,8 +295,8 @@ public class ProductManagement : MonoBehaviour
|
||||||
private void Tasting(int tankNumber)
|
private void Tasting(int tankNumber)
|
||||||
{
|
{
|
||||||
// 試食フラグに終了時間を設定
|
// 試食フラグに終了時間を設定
|
||||||
var tank = GameDataManager.GameData.StorageTanks[tankNumber - 1];
|
var tank = GameDataManager.GetCurrentCityGameData().StorageTanks[tankNumber - 1];
|
||||||
GameDataManager.GameData.AddTastingCustomerCount(tank.Stock);
|
GameDataManager.GetCurrentCityGameData().AddTastingCustomerCount(tank.Stock);
|
||||||
tank.ClearStock();
|
tank.ClearStock();
|
||||||
GameDataManager.SaveGameData();
|
GameDataManager.SaveGameData();
|
||||||
BrotherPinkView.Instance.StartTasting();
|
BrotherPinkView.Instance.StartTasting();
|
||||||
|
|
Loading…
Reference in New Issue