順番待ちを修正/再陳列時の表示を改善/お客さんのタップを改善

This commit is contained in:
kimura 2021-09-03 15:27:19 +09:00
parent 1919152687
commit 38ebc2010c
2 changed files with 38 additions and 8 deletions

View File

@ -150,7 +150,7 @@ public class Market : MonoBehaviour
}).AddTo(customerController);
}).AddTo(this);
requestSubject.BatchFrame(30, FrameCountType.Update).Subscribe(customers =>
requestSubject.BatchFrame().Subscribe(customers =>
{
if (gameData.ShopStock.Count == 0)
{
@ -161,7 +161,6 @@ public class Market : MonoBehaviour
var dontBuyCustomerList = new List<CustomerController>();
foreach (var controller in customers)
{
Debug.Log(shuffledOrder.Aggregate("", (s, i) => $"{s},{i}"));
// 売り切れ
if (shuffledOrder.Count == 0)
{
@ -192,6 +191,10 @@ public class Market : MonoBehaviour
// 購入
var flavors = orders.Select(x => (displayFlavors[x], 0)).ToList();
#if UNITY_EDITOR
Debug.Log($"bb order: {orders.Count} {orders.Aggregate("", (s, i) => $"{s},{i}")}");
Debug.Log($"bb shuffledOrder:{shuffledOrder.Count} {shuffledOrder.Aggregate("", (s, i) => $"{s},{i}")}");
#endif
coin += SellPopcorn(flavors);
var remainStockCount = gameData.ShopStock.Count;
@ -204,7 +207,6 @@ public class Market : MonoBehaviour
if (gameData.ShopStock.Count == ShopStockCount)
{
shuffledOrder.AddRange(orders);
Debug.Log($"remain {remainStockCount}, order {orders.Count}");
var stock = gameData.ShopStock.GetRange(remainStockCount, orders.Count).ToArray();
for (int i = 0; i < orders.Count; i++)
{
@ -230,6 +232,7 @@ public class Market : MonoBehaviour
{
cartView.SellStock(order);
}
blueView.SellAction();
// コイン獲得
CoinManager.Instance.AddCoinWithEffect(coin, () => { });
@ -261,7 +264,26 @@ public class Market : MonoBehaviour
}
else if (setStockFlag)
{
cartView.SetStock(displayFlavors);
#if UNITY_EDITOR
Debug.Log($"bb setStockFlag {displayFlavors.Count} {shuffledOrder.Count}");
#endif
// 陳列
cartView.ResetDisplay();
for (int i = 0; i < displayFlavors.Count; i++)
{
var index = i;
this.CallWaitForSeconds(.05f * i, () =>
{
if (!shuffledOrder.Contains(index))
{
#if UNITY_EDITOR
Debug.Log($"bb no refill");
#endif
return;
}
cartView.Refill(index, displayFlavors[index]);
});
}
}
});
});
@ -340,19 +362,28 @@ public class Market : MonoBehaviour
}
}).AddTo(customerController);
var customerObject = customer.transform.GetChild(0).gameObject;
if (x.isCustomer)
{
// 購入客リスト追加
customerList.Add(customerController);
if (customerObject.TryGetComponent(typeof(Collider2D), out var target))
{
Destroy(target);
}
}
else
{
// 歩行者はタップ後購入客
customerController.ChangeCustomerState(CustomerState.Walk);
var eventTrigger = customer.transform.GetChild(0).gameObject.AddComponent<ObservableEventTrigger>();
var eventTrigger = customerObject.AddComponent<ObservableEventTrigger>();
eventTrigger.OnPointerClickAsObservable().Take(1).Subscribe(_ =>
{
customerList.Add(customerController);
if (customerObject.TryGetComponent(typeof(Collider2D), out var target))
{
Destroy(target);
}
}).AddTo(customerController);
}
}).AddTo(this);
@ -366,8 +397,7 @@ public class Market : MonoBehaviour
{
return 0;
}
Debug.Log($"sellCount:{flavors.Count} {shuffledOrder.Count}");
// フレーバーを売る
var coin = 0;
foreach (var flavorData in flavors)

View File

@ -6,7 +6,7 @@ public class MarketCartView : MonoBehaviour
{
[SerializeField] private List<MarketPopcornView> popcornPositions;
private void ResetDisplay()
public void ResetDisplay()
{
foreach (var popcorn in popcornPositions)
{