販売通知と補充通知を分けた/それに伴った変更

This commit is contained in:
kimura 2021-10-13 11:29:31 +09:00
parent 7c692ba915
commit 75e97396d3
3 changed files with 31 additions and 33 deletions

View File

@ -41,8 +41,10 @@ public class Market : SingletonMonoBehaviour<Market>
public Subject<int> SellObservable => sellObservable; public Subject<int> SellObservable => sellObservable;
private readonly Subject<int> sellObservable = new Subject<int>(); private readonly Subject<int> sellObservable = new Subject<int>();
public Subject<(bool isReorder, List<int> orders)> SellOrderSubject => sellOrderSubject; public Subject<List<int>> SellOrderSubject => sellOrderSubject;
private readonly Subject<(bool isReorder, List<int> orders)> sellOrderSubject = new Subject<(bool, List<int>)>(); private readonly Subject<List<int>> sellOrderSubject = new Subject<List<int>>();
public Subject<(bool isReorder, List<int> refillList)> RefillSubject => refillSubject;
private readonly Subject<(bool isReorder, List<int> refillList)> refillSubject = new Subject<(bool, List<int>)>();
private int orderIndex; private int orderIndex;
private int oneByOneIndex = 0; private int oneByOneIndex = 0;
@ -63,25 +65,23 @@ public class Market : SingletonMonoBehaviour<Market>
StockFlavorLog(); StockFlavorLog();
#endif #endif
// 陳列 // 陳列/売り順決定
displayFlavors = gameData.ShopStock.ToList(); ReShuffle(gameData.ShopStock);
// 売り順決定
shuffledOrder = ShuffleOrder(displayFlavors.Count);
Observable.Interval(TimeSpan.FromSeconds(1f)) Observable.Interval(TimeSpan.FromSeconds(1f))
.Where(_ => shuffledOrder.Count == 0) .Where(_ => shuffledOrder.Count == 0)
.Where(_ => gameData.ShopStock.Count > 0) .Where(_ => gameData.ShopStock.Count > 0)
.Subscribe(_ => .Subscribe(_ =>
{ {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
Debug.Log("displayFlavors updated"); Debug.Log("displayFlavors updated");
displayFlavors = gameData.ShopStock.ToList(); #endif
shuffledOrder = ShuffleOrder(displayFlavors.Count); ReShuffle(gameData.ShopStock);
shopState.Value = ShopState.Open; shopState.Value = ShopState.Open;
}); });
// お店の状態設定 // お店の状態設定
shopState.Value = gameData.ShopStock.Count == 0 ? ShopState.Close : ShopState.Open; CheckStock(gameData.ShopStock);
// 購入リクエスト // 購入リクエスト
var maxOrder = orderPosisionObject.transform.childCount; var maxOrder = orderPosisionObject.transform.childCount;
@ -200,11 +200,12 @@ public class Market : SingletonMonoBehaviour<Market>
this.CallWaitForSeconds(1.5f, () => this.CallWaitForSeconds(1.5f, () =>
{ {
sellObservable.OnNext(coin); sellObservable.OnNext(coin);
sellOrderSubject.OnNext((isReorder, orders)); sellOrderSubject.OnNext(orders);
shopState.Value = gameData.ShopStock.Count == 0 ? ShopState.Close : ShopState.Open; CheckStock(gameData.ShopStock);
this.CallWaitForSeconds(1f, () => this.CallWaitForSeconds(1f, () =>
{ {
refillSubject.OnNext((isReorder, refillList));
foreach (var controller in customers) foreach (var controller in customers)
{ {
controller.SetPurchased(); controller.SetPurchased();
@ -331,7 +332,6 @@ public class Market : SingletonMonoBehaviour<Market>
var count = CustomerList.Count(c => c.State.Value == CustomerState.Wait || c.State.Value == CustomerState.Order); var count = CustomerList.Count(c => c.State.Value == CustomerState.Wait || c.State.Value == CustomerState.Order);
if (count < BrotherPinkView.Instance.FewerBorder) if (count < BrotherPinkView.Instance.FewerBorder)
{ {
Debug.Log($"market set walk");
BrotherPinkView.Instance.SetWalk(); BrotherPinkView.Instance.SetWalk();
} }
}).AddTo(this); }).AddTo(this);

View File

@ -53,33 +53,32 @@ public class MarketManager : MonoBehaviour
blueView.SellAction(); blueView.SellAction();
}).AddTo(this); }).AddTo(this);
market.SellOrderSubject.Subscribe(x => market.SellOrderSubject.Subscribe(orders =>
{ {
// 販売アニメーション // 販売アニメーション
foreach (var order in x.orders) foreach (var order in orders)
{ {
cartView.SellStock(order); cartView.SellStock(order);
}; }
}).AddTo(this);
// 時間を開けて補充アニメーション market.RefillSubject.Subscribe(x =>
this.CallWaitForSeconds(1f, () => {
stockView.SetStock(gameData.StorageTanks);
if (x.isReorder)
{ {
stockView.SetStock(gameData.StorageTanks); // 陳列表示更新(陳列13=650ms,7=350ms)
if (gameData.ShopStock.Count == Market.ShopStockCount) var stocks = market.ShuffledOrder.Select(i => (i, market.DisplayFlavors[i])).ToList();
cartView.SetStock(stocks, true);
}
else
{
// 補充したフレーバーのスキンを設定
foreach (var order in x.refillList)
{ {
// 補充したフレーバーのスキンを設定 cartView.Refill(order, market.DisplayFlavors[order]);
foreach (var order in x.orders)
{
cartView.Refill(order, market.DisplayFlavors[order]);
}
} }
else if (x.isReorder) }
{
// 陳列表示更新(陳列13=650ms,7=350ms)
var stocks = market.ShuffledOrder.Select(i => (i, market.DisplayFlavors[i])).ToList();
cartView.SetStock(stocks, true);
}
});
}).AddTo(this); }).AddTo(this);
// 開閉店 // 開閉店

View File

@ -12,7 +12,6 @@ public class ShopStockView : MonoBehaviour
{ {
var totalCapacity = tanks.Sum(x => x.Capacity); var totalCapacity = tanks.Sum(x => x.Capacity);
var totalStock = tanks.Sum(x => x.Stock); var totalStock = tanks.Sum(x => x.Stock);
Debug.Log($"Tank:{totalStock}/{totalCapacity}");
var newPos = popcornImage.transform.localPosition; var newPos = popcornImage.transform.localPosition;
newPos.y = Mathf.Lerp(minPosision, maxPosision, (float) totalStock / totalCapacity); newPos.y = Mathf.Lerp(minPosision, maxPosision, (float) totalStock / totalCapacity);
popcornImage.transform.localPosition = newPos; popcornImage.transform.localPosition = newPos;