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