試食でのお客さん増加追加

This commit is contained in:
kimura 2021-10-25 12:22:05 +09:00
parent a7b2b1dd6f
commit f28aaa818d
4 changed files with 43 additions and 13 deletions

View File

@ -46,8 +46,6 @@ public class BulkOrder : MonoBehaviour
}).AddTo(this); }).AddTo(this);
var gameData = GameDataManager.GameData; var gameData = GameDataManager.GameData;
// キャンセルすると試食と同じ扱い
// 試食時のお客さんの増加ってどれくらいなんだろ
var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet); var bulkOrderList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderData>(Const.BulkOrderDataSheet);
var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet); var messageList = SpreadsheetDataManager.Instance.GetBaseDataList<BulkOrderTextData>(Const.BulkOrderTextDataSheet);
var bulkOrderData = bulkOrderList.First(data => data.id == gameData.OrderIdInProgress); var bulkOrderData = bulkOrderList.First(data => data.id == gameData.OrderIdInProgress);
@ -61,7 +59,19 @@ public class BulkOrder : MonoBehaviour
{ {
LocalCacheManager.Save(CancelCallbackTag, new Action(() => LocalCacheManager.Save(CancelCallbackTag, new Action(() =>
{ {
// 試食フラグ // 試食数追加
if (gameData.CompletedProductList.Exists(data => data.Number == 1))
{
gameData.AddTastingCustomerCount(bulkOrderData.count1);
}
else if (gameData.CompletedProductList.Exists(data => data.Number == 2))
{
gameData.AddTastingCustomerCount(bulkOrderData.count2);
}
else if (gameData.CompletedProductList.Exists(data => data.Number == 3))
{
gameData.AddTastingCustomerCount(bulkOrderData.count3);
}
gameData.CancelOrderId = gameData.OrderIdInProgress; gameData.CancelOrderId = gameData.OrderIdInProgress;
// カウントリセット // カウントリセット
gameData.OrderConditionCount = 0; gameData.OrderConditionCount = 0;

View File

@ -9,11 +9,14 @@ public class CustomerFlow : MonoBehaviour
private IObservable<bool> walkerObservable; private IObservable<bool> walkerObservable;
private IObservable<bool> adWalkerObservable; private IObservable<bool> adWalkerObservable;
private readonly Subject<IObservable<Unit>> adStartObservable = new Subject<IObservable<Unit>>(); private readonly Subject<IObservable<Unit>> adStartObservable = new Subject<IObservable<Unit>>();
private IObservable<bool> tastingCustomerObservable;
private static readonly float checkHeartInterval = 1f; private static readonly float checkHeartInterval = 1f;
// 歩行者の出現間隔 // 歩行者の出現間隔
private static readonly float walkerInterval = 60f / 6; private static readonly float walkerInterval = 60f / 6;
// 試食で来るお客さん間隔
private static readonly float tastingCustomerInterval = 5f;
public IObservable<bool> Flow => walkerObservable.Merge(customerObservable, adWalkerObservable); public IObservable<bool> Flow => walkerObservable.Merge(customerObservable, adWalkerObservable, tastingCustomerObservable);
private void Awake() private void Awake()
{ {
@ -32,15 +35,15 @@ public class CustomerFlow : MonoBehaviour
// お客さん出現タイマー // お客さん出現タイマー
customerObservable = changeCustomerFlowObservable customerObservable = changeCustomerFlowObservable
.DistinctUntilChanged() .DistinctUntilChanged()
.Do(x => Debug.Log($"changeInterval:{x}")) // .Do(x => Debug.Log($"changeInterval:{x}"))
.Select(customerInterval => Observable.Interval(TimeSpan.FromSeconds(customerInterval)) .Select(customerInterval => Observable.Interval(TimeSpan.FromSeconds(customerInterval)))
.Do(_ => Debug.Log($"customer:{GetHashCode()}")) .Switch()
.Select(_ => true)) // .Do(_ => Debug.Log($"customer:{GetHashCode()}"))
.Switch(); .Select(_ => true);
// 歩行者出現頻度、立ち止まり確率も設定(歩行者タイマー1分間に6人 // 歩行者出現頻度、立ち止まり確率も設定(歩行者タイマー1分間に6人
walkerObservable = Observable.Interval(TimeSpan.FromSeconds(walkerInterval)) walkerObservable = Observable.Interval(TimeSpan.FromSeconds(walkerInterval))
.Do(l => Debug.Log($"walker:{GetHashCode()}")) // .Do(l => Debug.Log($"walker:{GetHashCode()}"))
.Select(x => false); .Select(x => false);
// 宣伝時、タップすると60秒だけ稼働するストリーム // 宣伝時、タップすると60秒だけ稼働するストリーム
@ -54,6 +57,19 @@ public class CustomerFlow : MonoBehaviour
// Observable.Timer(TimeSpan.FromSeconds(1f), TimeSpan.FromSeconds(70f)).Subscribe(_ => { adStartObservable.OnNext(default); }).AddTo(this); // Observable.Timer(TimeSpan.FromSeconds(1f), TimeSpan.FromSeconds(70f)).Subscribe(_ => { adStartObservable.OnNext(default); }).AddTo(this);
} }
#endif #endif
// 試食
var tastingTimer = Observable.Interval(TimeSpan.FromSeconds(tastingCustomerInterval))
.Where(_ => GameDataManager.GameData.TastingCount > 0)
.Publish()
.RefCount();
// 試食残りカウントを減らす
tastingTimer.Subscribe(_ =>
{
GameDataManager.GameData.TastingCount--;
});
tastingCustomerObservable = tastingTimer
// .Do(_ => Debug.Log($"tastingCustomer remain:{GameDataManager.GameData.TastingCount}"))
.Select(_ => true);
} }
public void StartAdWalker(Action onComplete = null) public void StartAdWalker(Action onComplete = null)

View File

@ -14,7 +14,6 @@ public class TastingView : MonoBehaviour
[SerializeField] private Button closeButton; [SerializeField] private Button closeButton;
[SerializeField] private Button tastingButton; [SerializeField] private Button tastingButton;
[SerializeField] private Text popcornName; [SerializeField] private Text popcornName;
[SerializeField] private Image popcornImage;
[SerializeField] private Transform packageImageTarget; [SerializeField] private Transform packageImageTarget;
private void Start() private void Start()

View File

@ -98,8 +98,8 @@ public sealed class GameData {
[DataMember(Name = "Data25")] [DataMember(Name = "Data25")]
private int[] achievedMission; private int[] achievedMission;
public List<int> AchievedMission; public List<int> AchievedMission;
// [DataMember(Name = "Data26")] [DataMember(Name = "Data26")]
public int TastingCount;
// BulkOrder // BulkOrder
[DataMember(Name = "Data27")] [DataMember(Name = "Data27")]
@ -188,6 +188,11 @@ public sealed class GameData {
return TotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock); return TotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock);
} }
public void AddTastingCustomerCount(int value)
{
TastingCount += Mathf.FloorToInt(value / 2f);
}
// public void ChangeAvatar(AvatarData avatarData){ // public void ChangeAvatar(AvatarData avatarData){
// newAvatarIdList.Remove(avatarData.id); // newAvatarIdList.Remove(avatarData.id);
// } // }