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

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

View File

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

View File

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