販売通知と補充通知を分けた/それに伴った変更
This commit is contained in:
parent
7c692ba915
commit
75e97396d3
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
// 開閉店
|
// 開閉店
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue