Merge branch 'feture/update_ver1.1.0' of bitbucket.org:usaya/popcorn into feture/update_ver1.1.0
This commit is contained in:
commit
55e1c47729
|
|
@ -38,6 +38,9 @@ AnimatorStateMachine:
|
|||
- serializedVersion: 1
|
||||
m_State: {fileID: -3739160205852285787}
|
||||
m_Position: {x: 200, y: 0, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 877997704866898633}
|
||||
m_Position: {x: 500, y: 120, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
|
|
@ -47,7 +50,7 @@ AnimatorStateMachine:
|
|||
m_EntryPosition: {x: 50, y: 120, z: 0}
|
||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: -3739160205852285787}
|
||||
m_DefaultState: {fileID: 877997704866898633}
|
||||
--- !u!91 &9100000
|
||||
AnimatorController:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -70,3 +73,29 @@ AnimatorController:
|
|||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1102 &877997704866898633
|
||||
AnimatorState:
|
||||
serializedVersion: 5
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: New State
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions: []
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 0}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
|
|
|
|||
|
|
@ -813,6 +813,7 @@ GameObject:
|
|||
- component: {fileID: 5201512537784308050}
|
||||
- component: {fileID: 7687630557404592465}
|
||||
- component: {fileID: 6786587213025535951}
|
||||
- component: {fileID: 1491786667167105538}
|
||||
m_Layer: 0
|
||||
m_Name: movie_VIP
|
||||
m_TagString: Untagged
|
||||
|
|
@ -900,6 +901,32 @@ Animation:
|
|||
m_PlayAutomatically: 1
|
||||
m_AnimatePhysics: 0
|
||||
m_CullingType: 0
|
||||
--- !u!61 &1491786667167105538
|
||||
BoxCollider2D:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6877570175858391367}
|
||||
m_Enabled: 1
|
||||
m_Density: 1
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_UsedByEffector: 0
|
||||
m_UsedByComposite: 0
|
||||
m_Offset: {x: 0.40160847, y: -0.08085698}
|
||||
m_SpriteTilingProperty:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
pivot: {x: 0.8577533, y: 0.041125536}
|
||||
oldSize: {x: 1.56, y: 1.76}
|
||||
newSize: {x: 0.58, y: 0.64}
|
||||
adaptiveTilingThreshold: 0.5
|
||||
drawMode: 0
|
||||
adaptiveTiling: 0
|
||||
m_AutoTiling: 0
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 3.4794078, y: 3.4169888}
|
||||
m_EdgeRadius: 0
|
||||
--- !u!1 &8035936346664169813
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -1159,6 +1186,11 @@ PrefabInstance:
|
|||
m_Modification:
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: 2524396702494263387, guid: 8c6dcd9482c51504e89ba42234369eda,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2524396703020600743, guid: 8c6dcd9482c51504e89ba42234369eda,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
|
|
@ -1243,18 +1275,18 @@ Transform:
|
|||
type: 3}
|
||||
m_PrefabInstance: {fileID: 6244917521789390651}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &8476357289219494445 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 2524396703577414934, guid: 8c6dcd9482c51504e89ba42234369eda,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 6244917521789390651}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &8476357287308305102 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 2524396702732955125, guid: 8c6dcd9482c51504e89ba42234369eda,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 6244917521789390651}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &8476357289219494445 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 2524396703577414934, guid: 8c6dcd9482c51504e89ba42234369eda,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 6244917521789390651}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &6601841578865518209
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ using TMPro;
|
|||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
public class CookingResult : MonoBehaviour
|
||||
{
|
||||
|
|
@ -140,6 +141,19 @@ public class CookingResult : MonoBehaviour
|
|||
{
|
||||
// 獲得、遷移
|
||||
MoveStock(GameDataManager.GameData.WaitAddStock);
|
||||
|
||||
// 確率でVip宣伝
|
||||
if (GameDataManager.GameData.ShopStock.Count >= Const.VipCustomerRewardStock)
|
||||
{
|
||||
if (Random.value <= Const.VipCustomerRewardRate)
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
Debug.Log($"flag VipReward");
|
||||
#endif
|
||||
GameDataManager.GameData.vipCustomerFirstOpen = true;
|
||||
GameDataManager.GameData.vipCustomerLimitTime = DateTime.UtcNow.AddSeconds(60).ToBinary();
|
||||
}
|
||||
}
|
||||
GameDataManager.SaveGameData();
|
||||
Market.Instance.IsPause.Value = false;
|
||||
TransitionManager.Instance.LoadScene(GameScenes.Main);
|
||||
|
|
|
|||
|
|
@ -1472,7 +1472,7 @@ GameObject:
|
|||
- component: {fileID: 2633402978755532797}
|
||||
- component: {fileID: 4283180668829566650}
|
||||
m_Layer: 5
|
||||
m_Name: icon_fertilizer
|
||||
m_Name: icon_vip
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
|
|
@ -2478,7 +2478,7 @@ GameObject:
|
|||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1408184404978035950}
|
||||
- component: {fileID: 1657996136668002032}
|
||||
- component: {fileID: 512143980313251866}
|
||||
- component: {fileID: 2570027885372274640}
|
||||
- component: {fileID: 7731324448850360389}
|
||||
m_Layer: 5
|
||||
|
|
@ -2508,7 +2508,7 @@ RectTransform:
|
|||
m_AnchoredPosition: {x: 43, y: 684}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1657996136668002032
|
||||
--- !u!114 &512143980313251866
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
|
@ -2517,12 +2517,11 @@ MonoBehaviour:
|
|||
m_GameObject: {fileID: 7129812585269745309}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 825e8c21a1da42d494e43d1c51c40c24, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 817f9d5cab724bb8a22de5e9dbd2f967, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
rewardButton: {fileID: 7453407021347122718}
|
||||
DisableObject: {fileID: 0}
|
||||
remainTimeText: {fileID: 0}
|
||||
vipButton: {fileID: 7453407021347122718}
|
||||
buttonAnimator: {fileID: 2570027885372274640}
|
||||
--- !u!95 &2570027885372274640
|
||||
Animator:
|
||||
serializedVersion: 3
|
||||
|
|
@ -2642,7 +2641,7 @@ GameObject:
|
|||
- component: {fileID: 7453407021347122718}
|
||||
- component: {fileID: 403123792383491358}
|
||||
m_Layer: 5
|
||||
m_Name: Button_fertilizer_on
|
||||
m_Name: Button_on
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
|
|
|
|||
|
|
@ -1599,6 +1599,7 @@ MonoBehaviour:
|
|||
coinObject: {fileID: 1081810292}
|
||||
fertilizerObject: {fileID: 471677967}
|
||||
publicityObject: {fileID: 262919494}
|
||||
vipObject: {fileID: 1793920305}
|
||||
--- !u!1 &1450516236
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -1771,7 +1772,7 @@ MonoBehaviour:
|
|||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 7c7c75e9f60f2456e9e49a6f81181b90, type: 3}
|
||||
m_Sprite: {fileID: 21300000, guid: de598de8a3393044686c7ef88b193396, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
|
|
@ -2163,7 +2164,7 @@ MonoBehaviour:
|
|||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 89edfb758376d401583d3bad3def2b62, type: 3}
|
||||
m_Font: {fileID: 12800000, guid: b5532e9ce15694f55a0893a76a98cd78, type: 3}
|
||||
m_FontSize: 35
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 1
|
||||
|
|
@ -2839,7 +2840,7 @@ MonoBehaviour:
|
|||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: ba037169854dc4c1db3853c4700f027c, type: 3}
|
||||
m_Sprite: {fileID: 21300000, guid: 490f9ea68882b7b48bcc2974a41f8bcd, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class Title : MonoBehaviour
|
|||
.Subscribe(t =>
|
||||
{
|
||||
// 一般客orセレブ
|
||||
var (isSpecial, orderCount) = Market.Instance.GetCustomerData(false);
|
||||
var (isSpecial, orderCount) = Market.Instance.GetCustomerData(CustomerType.Walker);
|
||||
|
||||
// 複数パターンある場合ChooseRandom
|
||||
var prefab = isSpecial ? customerData.ChooseSpecialPrefab() : customerData.ChooseNormalPrefab();
|
||||
|
|
|
|||
|
|
@ -3,13 +3,22 @@ using System.Linq;
|
|||
using UniRx;
|
||||
using UnityEngine;
|
||||
|
||||
public enum CustomerType
|
||||
{
|
||||
Walker,
|
||||
Customer,
|
||||
Vip
|
||||
}
|
||||
|
||||
public class CustomerFlow : MonoBehaviour
|
||||
{
|
||||
private IObservable<bool> customerObservable;
|
||||
private IObservable<bool> walkerObservable;
|
||||
private IObservable<bool> adWalkerObservable;
|
||||
private IObservable<CustomerType> customerObservable;
|
||||
private IObservable<CustomerType> walkerObservable;
|
||||
private IObservable<CustomerType> adWalkerObservable;
|
||||
private readonly Subject<IObservable<Unit>> adStartObservable = new Subject<IObservable<Unit>>();
|
||||
private IObservable<bool> tastingCustomerObservable;
|
||||
private IObservable<CustomerType> vipCustomerObservable;
|
||||
private readonly Subject<IObservable<Unit>> vipCustomerSubject = new Subject<IObservable<Unit>>();
|
||||
private IObservable<CustomerType> tastingCustomerObservable;
|
||||
private static readonly float checkHeartInterval = 1f;
|
||||
|
||||
[Header("1分間あたりの歩行者数")]
|
||||
|
|
@ -19,6 +28,11 @@ public class CustomerFlow : MonoBehaviour
|
|||
[SerializeField] private float adWalkerDuration = 60f;
|
||||
[Header("宣伝で来るお客さんの数")]
|
||||
[SerializeField] private int adWalkerCount = 20;
|
||||
|
||||
[Header("VIP宣伝で来るお客さんの数")]
|
||||
[SerializeField] private int vipCustomerCount = 6;
|
||||
[Header("VIP宣伝で来るお客さん出現間隔(秒)")]
|
||||
[SerializeField] private float vipCustomerInterval = 5f;
|
||||
|
||||
[Header("試食のお客さん出現間隔(秒)")]
|
||||
[SerializeField] private float tastingCustomerInterval = 5f;
|
||||
|
|
@ -26,11 +40,12 @@ public class CustomerFlow : MonoBehaviour
|
|||
public float TastingCustomerInterval => tastingCustomerInterval;
|
||||
private int adActiveCount = 0;
|
||||
|
||||
public IObservable<bool> Flow => walkerObservable.Merge(customerObservable, adWalkerObservable, tastingCustomerObservable);
|
||||
public IObservable<CustomerType> Flow => walkerObservable.Merge(customerObservable, adWalkerObservable, vipCustomerObservable, tastingCustomerObservable);
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
adStartObservable.AddTo(this);
|
||||
vipCustomerSubject.AddTo(this);
|
||||
|
||||
var shopLevelList = SpreadsheetDataManager.Instance.GetBaseDataList<ShopLevelData>(Const.ShopLevelDataSheet);
|
||||
shopLevelList = shopLevelList.Where(data => data.shopLevel != Const.SpecialShopLevel).ToList();
|
||||
|
|
@ -50,24 +65,30 @@ public class CustomerFlow : MonoBehaviour
|
|||
.Select(customerInterval => Observable.Interval(TimeSpan.FromSeconds(customerInterval)))
|
||||
.Switch()
|
||||
// .Do(_ => Debug.Log($"customer:{GetHashCode()}"))
|
||||
.Select(_ => true);
|
||||
.Select(_ => CustomerType.Customer);
|
||||
|
||||
// 歩行者出現頻度、立ち止まり確率も設定(歩行者タイマー1分間に6人
|
||||
walkerObservable = Observable.Interval(TimeSpan.FromSeconds(walkerInterval))
|
||||
// .Do(l => Debug.Log($"walker:{GetHashCode()}"))
|
||||
.Select(x => false);
|
||||
.Select(_ => CustomerType.Walker);
|
||||
|
||||
// 宣伝時、タップすると60秒だけ稼働するストリーム
|
||||
adWalkerObservable = adStartObservable
|
||||
.Switch()
|
||||
// .Do(_ => Debug.Log($"adWalker:{GetHashCode()}"))
|
||||
.Select(_ => false);
|
||||
.Select(_ => CustomerType.Walker);
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
if (UsayaStorageManager.LoadOrDefault(UsayaStorageFilename.Settings_Data, "DebugManyWalker", false))
|
||||
{
|
||||
// Observable.Timer(TimeSpan.FromSeconds(1f), TimeSpan.FromSeconds(70f)).Subscribe(_ => { adStartObservable.OnNext(default); }).AddTo(this);
|
||||
}
|
||||
#endif
|
||||
|
||||
// VIP宣伝
|
||||
vipCustomerObservable = vipCustomerSubject
|
||||
.Switch()
|
||||
.Select(_ => CustomerType.Vip);
|
||||
|
||||
// 試食
|
||||
// tastingCustomerInterval毎にTastingCountを確認
|
||||
var tastingTimer = Observable.Interval(TimeSpan.FromSeconds(tastingCustomerInterval))
|
||||
|
|
@ -83,7 +104,7 @@ public class CustomerFlow : MonoBehaviour
|
|||
});
|
||||
tastingCustomerObservable = tastingTimer
|
||||
// .Do(_ => Debug.Log($"tastingCustomer remain:{GameDataManager.GameData.TastingCount}"))
|
||||
.Select(_ => true);
|
||||
.Select(_ => CustomerType.Customer);
|
||||
}
|
||||
|
||||
public void StartAdWalker(Action onComplete = null)
|
||||
|
|
@ -104,4 +125,11 @@ public class CustomerFlow : MonoBehaviour
|
|||
.Take(TimeSpan.FromSeconds(adWalkerDuration))
|
||||
.AsUnitObservable();
|
||||
}
|
||||
|
||||
public void StartVip()
|
||||
{
|
||||
vipCustomerSubject.OnNext(Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(vipCustomerInterval))
|
||||
.Take(vipCustomerCount)
|
||||
.AsUnitObservable());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace MyGame.Scenes.marketing.Scripts
|
||||
{
|
||||
|
|
@ -18,13 +20,19 @@ namespace MyGame.Scenes.marketing.Scripts
|
|||
(0, 5f),
|
||||
};
|
||||
|
||||
public (bool isSpecial, int orderCount) GetCustomerData (bool isCustomer)
|
||||
public (bool isSpecial, int orderCount) GetCustomerData (CustomerType customerType)
|
||||
{
|
||||
var specialRate = isCustomer ? walkerSpecialRate : customerSpecialRate;
|
||||
var isSpecial = Random.value < specialRate;
|
||||
|
||||
// セレブは5個購入固定
|
||||
return isSpecial ? (true, specialOrderCount) : (false, GetOrderCount());
|
||||
switch (customerType)
|
||||
{
|
||||
case CustomerType.Walker:
|
||||
return Random.value < walkerSpecialRate ? (true, specialOrderCount) : (false, GetOrderCount());
|
||||
case CustomerType.Customer:
|
||||
return Random.value < customerSpecialRate ? (true, specialOrderCount) : (false, GetOrderCount());
|
||||
case CustomerType.Vip:
|
||||
return (true, specialOrderCount);
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(customerType), customerType, null);
|
||||
}
|
||||
}
|
||||
|
||||
// お客さん出現パターン確率計算と行動パターン計算
|
||||
|
|
|
|||
|
|
@ -12,17 +12,36 @@ namespace MyGame.Scenes.marketing.Scripts
|
|||
[SerializeField] private GameObject DisableObject;
|
||||
[SerializeField] private Text remainTimeText;
|
||||
public IObservable<Unit> RewardButton => rewardButton.OnClickAsObservable().TakeUntilDestroy(this);
|
||||
private IDisposable timerDisposable;
|
||||
|
||||
public void SetButtonActive(bool active)
|
||||
private void SetButtonActive(bool active)
|
||||
{
|
||||
rewardButton.gameObject.SetActive(active);
|
||||
DisableObject.SetActive(!active);
|
||||
}
|
||||
|
||||
public void SetTime(int seconds)
|
||||
private void SetTime(int seconds)
|
||||
{
|
||||
seconds = Mathf.Max(0, seconds);
|
||||
remainTimeText.text = string.Format(remainTimeFormat, seconds / 60, seconds % 60);
|
||||
}
|
||||
|
||||
public void ResetTimer(int time)
|
||||
{
|
||||
// タイマーの更新処理
|
||||
timerDisposable?.Dispose();
|
||||
SetButtonActive(time <= 0);
|
||||
SetTime(time);
|
||||
timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f))
|
||||
.Select(x => (int)(time - x))
|
||||
.TakeWhile(x => x > 0)
|
||||
.Subscribe(x =>
|
||||
{
|
||||
SetTime(x);
|
||||
}, () =>
|
||||
{
|
||||
SetButtonActive(true);
|
||||
}).AddTo(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -285,7 +285,7 @@ public class Market : SingletonMonoBehaviour<Market>
|
|||
}).AddTo(this);
|
||||
|
||||
// 客湧き
|
||||
customerFlow.Flow.Subscribe(isCustomer =>
|
||||
customerFlow.Flow.Subscribe(customerType =>
|
||||
{
|
||||
if (IsPause.Value)
|
||||
{
|
||||
|
|
@ -298,17 +298,32 @@ public class Market : SingletonMonoBehaviour<Market>
|
|||
return;
|
||||
}
|
||||
// 一般客orセレブ
|
||||
var (isSpecial, orderCount) = GetCustomerData(isCustomer);
|
||||
CustomerState customerState;
|
||||
|
||||
// 複数パターンある場合ChooseRandom
|
||||
var prefab = isSpecial ? customerData.ChooseSpecialPrefab() : customerData.ChooseNormalPrefab();
|
||||
switch (customerType)
|
||||
{
|
||||
case CustomerType.Walker:
|
||||
customerState = CustomerState.Walk;
|
||||
break;
|
||||
case CustomerType.Customer:
|
||||
customerState = CustomerState.WalkShop;
|
||||
break;
|
||||
case CustomerType.Vip:
|
||||
customerState = CustomerState.WalkShop;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(customerType), customerType, null);
|
||||
}
|
||||
|
||||
var (isSpecial, orderCount) = GetCustomerData(customerType);
|
||||
var customerController = SpawnCustomer();
|
||||
customerController.Setup(orderPosisionObject.transform.GetComponentsInChildren<Transform>().ToList().Skip(1).ToList());
|
||||
customerController.ChangeCustomerState(customerState);
|
||||
// 複数パターンある場合ChooseRandom
|
||||
customerController.CustomerPrefab = isSpecial ? customerData.ChooseSpecialPrefab() : customerData.ChooseNormalPrefab();
|
||||
customerController.OrderCount = orderCount;
|
||||
customerController.CustomerPrefab = prefab;
|
||||
customerControllerList.Add(customerController);
|
||||
|
||||
customerController.ChangeCustomerState(isCustomer ? CustomerState.WalkShop : CustomerState.Walk);
|
||||
|
||||
customerController.TappedObservable
|
||||
.Take(1)
|
||||
.Subscribe(_ =>
|
||||
|
|
@ -355,9 +370,9 @@ public class Market : SingletonMonoBehaviour<Market>
|
|||
}
|
||||
|
||||
|
||||
public (bool isSpecial, int orderCount) GetCustomerData (bool isCustomer)
|
||||
public (bool isSpecial, int orderCount) GetCustomerData (CustomerType customerType)
|
||||
{
|
||||
return customerSetting.GetCustomerData(isCustomer);
|
||||
return customerSetting.GetCustomerData(customerType);
|
||||
}
|
||||
|
||||
private CustomerController SpawnCustomer()
|
||||
|
|
@ -540,6 +555,11 @@ public class Market : SingletonMonoBehaviour<Market>
|
|||
});
|
||||
}
|
||||
|
||||
public void VipAction()
|
||||
{
|
||||
customerFlow.StartVip();
|
||||
}
|
||||
|
||||
public CustomerController SetTutorialCustomer()
|
||||
{
|
||||
var customerController = SpawnCustomer();
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ public class MarketManager : MonoBehaviour
|
|||
[SerializeField] private MarketCartView cartView;
|
||||
[SerializeField] private BrotherBlueView blueView;
|
||||
[SerializeField] private IncreaseCustomerButtonView rewardButtonView;
|
||||
[SerializeField] private VipCustomerButtonView vipCustomerButtonView;
|
||||
[SerializeField] private MarketSignBoardView signBoardView;
|
||||
[SerializeField] private Transform pinkTarget;
|
||||
[SerializeField] private Transform coinPrefab;
|
||||
|
|
@ -25,13 +26,15 @@ public class MarketManager : MonoBehaviour
|
|||
private Market market;
|
||||
List<ProductData> productDataList;
|
||||
|
||||
private readonly Subject<Unit> resetRefreshTimer = new Subject<Unit>();
|
||||
private readonly Subject<Unit> customerRewardTimerUpdateSubject = new Subject<Unit>();
|
||||
private readonly Subject<Unit> vipTimerUpdateSubject = new Subject<Unit>();
|
||||
private readonly CompositeDisposable ShopClosedCompositeDisposable = new CompositeDisposable();
|
||||
|
||||
private void Start()
|
||||
{
|
||||
ShopClosedCompositeDisposable.AddTo(this);
|
||||
resetRefreshTimer.AddTo(this);
|
||||
customerRewardTimerUpdateSubject.AddTo(this);
|
||||
vipTimerUpdateSubject.AddTo(this);
|
||||
market = Market.Instance;
|
||||
|
||||
SoundManager.Instance.PlayBGM("bgm_marketing");
|
||||
|
|
@ -68,7 +71,7 @@ public class MarketManager : MonoBehaviour
|
|||
gameData.FinishTutorial();
|
||||
GameDataManager.SaveGameData();
|
||||
walkerMask.gameObject.SetActive(false);
|
||||
resetRefreshTimer.OnNext(Unit.Default);
|
||||
customerRewardTimerUpdateSubject.OnNext(Unit.Default);
|
||||
rewardButtonView.gameObject.SetActive(true);
|
||||
}).AddTo(controller).AddTo(this);
|
||||
});
|
||||
|
|
@ -120,40 +123,57 @@ public class MarketManager : MonoBehaviour
|
|||
gameData.increaseCustomerTime = DateTime.UtcNow.AddSeconds(10).ToBinary();
|
||||
#endif
|
||||
GameDataManager.SaveGameData();
|
||||
resetRefreshTimer.OnNext(Unit.Default);
|
||||
customerRewardTimerUpdateSubject.OnNext(Unit.Default);
|
||||
});
|
||||
}).AddTo(this);
|
||||
|
||||
// VIP宣伝ボタン
|
||||
vipCustomerButtonView.VipButton.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ =>
|
||||
{
|
||||
GetRewardDialog.ShowVipCustomerDialog(() =>
|
||||
{
|
||||
market.VipAction();
|
||||
// 現在時刻に設定して期限切れにする
|
||||
gameData.vipCustomerLimitTime = DateTime.UtcNow.ToBinary();
|
||||
vipTimerUpdateSubject.OnNext(Unit.Default);
|
||||
}, () =>
|
||||
{
|
||||
// 現在時刻に設定して期限切れにする
|
||||
gameData.vipCustomerLimitTime = DateTime.UtcNow.ToBinary();
|
||||
vipTimerUpdateSubject.OnNext(Unit.Default);
|
||||
});
|
||||
}).AddTo(this);
|
||||
|
||||
// onNextをトリガーに実行
|
||||
IDisposable timerDisposable = null;
|
||||
resetRefreshTimer
|
||||
customerRewardTimerUpdateSubject
|
||||
.Select(_ => (int) DateTime.FromBinary(gameData.increaseCustomerTime).Subtract(DateTime.UtcNow).TotalSeconds)
|
||||
.Subscribe(time =>
|
||||
{
|
||||
// タイマーの更新処理
|
||||
timerDisposable?.Dispose();
|
||||
rewardButtonView.SetButtonActive(time <= 0);
|
||||
rewardButtonView.SetTime(time);
|
||||
timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f))
|
||||
.Select(x => (int)(time - x))
|
||||
.TakeWhile(x => x > 0)
|
||||
.Subscribe(x =>
|
||||
{
|
||||
rewardButtonView.SetTime(x);
|
||||
}, () =>
|
||||
{
|
||||
rewardButtonView.SetButtonActive(true);
|
||||
}).AddTo(this);
|
||||
rewardButtonView.ResetTimer(time);
|
||||
}).AddTo(this);
|
||||
|
||||
resetRefreshTimer.OnNext(Unit.Default);
|
||||
if (DateTime.FromBinary(gameData.vipCustomerLimitTime) >= DateTime.UtcNow)
|
||||
{
|
||||
vipCustomerButtonView.ShowButton(gameData.vipCustomerFirstOpen);
|
||||
gameData.vipCustomerFirstOpen = false;
|
||||
vipTimerUpdateSubject
|
||||
.Select(_ => (int) DateTime.FromBinary(gameData.vipCustomerLimitTime).Subtract(DateTime.UtcNow).TotalSeconds)
|
||||
.Subscribe(time =>
|
||||
{
|
||||
vipCustomerButtonView.ResetTimer(time);
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
customerRewardTimerUpdateSubject.OnNext(Unit.Default);
|
||||
vipTimerUpdateSubject.OnNext(Unit.Default);
|
||||
|
||||
// アプリ復帰時に残り時間更新
|
||||
Observable.EveryApplicationPause()
|
||||
.Where(pause => !pause)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
resetRefreshTimer.OnNext(Unit.Default);
|
||||
customerRewardTimerUpdateSubject.OnNext(Unit.Default);
|
||||
vipTimerUpdateSubject.OnNext(Unit.Default);
|
||||
}).AddTo(this);
|
||||
|
||||
market.IsPromotion.Subscribe(active =>
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ using UniRx;
|
|||
using UnityEngine;
|
||||
using UnityEngine.PlayerLoop;
|
||||
using UnityEngine.UI;
|
||||
using GameAnalyticsSDK;
|
||||
|
||||
public class ShopLevelUp : MonoBehaviour
|
||||
{
|
||||
|
|
@ -93,6 +94,13 @@ public class ShopLevelUp : MonoBehaviour
|
|||
LocalCacheManager.Load<Action>(CallbackTag, null)?.Invoke();
|
||||
LocalCacheManager.Remove(CallbackTag);
|
||||
}
|
||||
#if !DEVELOPMENT_BUILD && !UNITY_EDITOR
|
||||
// 進捗計測
|
||||
var progress = "level_" + String.Format("{0:00}", shopLevel);
|
||||
// 進捗スコアを保存 TODO:暫定的にログインカウントを保存する
|
||||
var score = GameDataManager.GameData.dailyLoginCount;
|
||||
GameAnalytics.NewProgressionEvent(GAProgressionStatus.Complete, progress, score);
|
||||
#endif
|
||||
}
|
||||
|
||||
public static void ShowDialog(int level, Action onComplete = null)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,105 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UniRx.Triggers;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace MyGame.Scenes.marketing.Scripts
|
||||
{
|
||||
public class VipCustomerButtonView : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private Button vipButton;
|
||||
[SerializeField] private Animator buttonAnimator;
|
||||
[SerializeField] private Animator vipCustomerAnimator;
|
||||
[SerializeField] private CustomerDirection customerDirection;
|
||||
[SerializeField] private GameObject vipSpeechBubbleObject;
|
||||
[SerializeField] private Transform vipStayPosTransform;
|
||||
[SerializeField] private float vipMoveSpeed;
|
||||
public IObservable<Unit> VipButton { get; private set; }
|
||||
private IDisposable timerDisposable;
|
||||
private IDisposable moveDisposable;
|
||||
private Vector3 initialPos;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
vipButton.transform.SetLocalScale(0f);
|
||||
vipCustomerAnimator.transform.SetLocalScale(0f);
|
||||
initialPos = vipCustomerAnimator.transform.localPosition;
|
||||
var eventTrigger = vipSpeechBubbleObject.AddComponent<ObservableEventTrigger>();
|
||||
VipButton = vipButton.OnClickAsObservable()
|
||||
.Merge(eventTrigger.OnPointerClickAsObservable().AsUnitObservable())
|
||||
.TakeUntilDestroy(this);
|
||||
}
|
||||
|
||||
public void ShowButton(bool animated)
|
||||
{
|
||||
buttonAnimator.Play("Button_vip", 0, animated ? 0 : 1);
|
||||
vipButton.transform.SetLocalScale(1f);
|
||||
vipCustomerAnimator.transform.SetLocalScale(1f);
|
||||
vipSpeechBubbleObject.SetActive(false);
|
||||
customerDirection.SetDefaultSide();
|
||||
if (animated)
|
||||
{
|
||||
// 左から歩いてきて立ち止まってmovie_Vip再生
|
||||
vipCustomerAnimator.speed = 1f;
|
||||
vipCustomerAnimator.Play("customer_nomal_walk_side");
|
||||
var vipTransform = vipCustomerAnimator.transform;
|
||||
moveDisposable?.Dispose();
|
||||
moveDisposable = this.UpdateAsObservable()
|
||||
.TakeWhile(_ => Vector2.Distance(vipTransform.localPosition, vipStayPosTransform.localPosition) > .01f)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
vipTransform.localPosition = Vector2.MoveTowards(vipTransform.localPosition, vipStayPosTransform.localPosition, vipMoveSpeed * Time.deltaTime);
|
||||
}, () =>
|
||||
{
|
||||
vipCustomerAnimator.speed = 0f;
|
||||
vipCustomerAnimator.Play("customer_nomal");
|
||||
vipSpeechBubbleObject.SetActive(true);
|
||||
}).AddTo(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
vipCustomerAnimator.speed = 0f;
|
||||
vipCustomerAnimator.Play("customer_nomal");
|
||||
vipSpeechBubbleObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void CloseButton()
|
||||
{
|
||||
if (vipSpeechBubbleObject.TryGetComponent<Collider2D>(out var target))
|
||||
{
|
||||
target.enabled = false;
|
||||
}
|
||||
// vip左にはける
|
||||
customerDirection.SetFlipSide();
|
||||
vipCustomerAnimator.speed = 1f;
|
||||
vipCustomerAnimator.Play("customer_nomal_walk_side");
|
||||
vipButton.transform.SetLocalScale(0f);
|
||||
var vipTransform = vipCustomerAnimator.transform;
|
||||
moveDisposable?.Dispose();
|
||||
moveDisposable = this.UpdateAsObservable()
|
||||
.TakeWhile(_ => Vector2.Distance(vipTransform.localPosition, initialPos) > .01f)
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
vipTransform.localPosition = Vector2.MoveTowards(vipTransform.localPosition, initialPos, vipMoveSpeed * Time.deltaTime);
|
||||
}, () =>
|
||||
{
|
||||
vipCustomerAnimator.transform.SetLocalScale(0f);
|
||||
}).AddTo(this);
|
||||
}
|
||||
|
||||
public void ResetTimer(int time)
|
||||
{
|
||||
// タイマーの更新処理
|
||||
timerDisposable?.Dispose();
|
||||
timerDisposable = Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(1f))
|
||||
.Select(x => (int)(time - x))
|
||||
.TakeWhile(x => x > 0)
|
||||
.Subscribe(x => { }, () =>
|
||||
{
|
||||
CloseButton();
|
||||
}).AddTo(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 817f9d5cab724bb8a22de5e9dbd2f967
|
||||
timeCreated: 1643868118
|
||||
|
|
@ -702,6 +702,36 @@ SpriteRenderer:
|
|||
m_WasSpriteAssigned: 1
|
||||
m_MaskInteraction: 0
|
||||
m_SpriteSortPoint: 0
|
||||
--- !u!1 &172087639
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 172087640}
|
||||
m_Layer: 0
|
||||
m_Name: StayPos
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &172087640
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 172087639}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -3.71, y: -2.1827226, z: 0}
|
||||
m_LocalScale: {x: 0.9, y: 0.9, z: 0.9}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 2017358937}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &183110189
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -2908,6 +2938,8 @@ MonoBehaviour:
|
|||
walkerInterval: 10
|
||||
adWalkerDuration: 60
|
||||
adWalkerCount: 20
|
||||
vipCustomerCount: 6
|
||||
vipCustomerInterval: 5
|
||||
tastingCustomerInterval: 5
|
||||
--- !u!114 &658817262
|
||||
MonoBehaviour:
|
||||
|
|
@ -2994,7 +3026,7 @@ Transform:
|
|||
m_Children:
|
||||
- {fileID: 1717315656}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 7
|
||||
m_RootOrder: 8
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &668553842
|
||||
GameObject:
|
||||
|
|
@ -3717,8 +3749,33 @@ PrefabInstance:
|
|||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: 21300000, guid: e644184ee7cac4454a2ebc1fc479ecb4,
|
||||
objectReference: {fileID: 21300000, guid: 88b678672e5bca548bedbae7386e4346,
|
||||
type: 3}
|
||||
- target: {fileID: 512143980313251866, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: vipMoveSpeed
|
||||
value: 1.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 512143980313251866, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: customerDirection
|
||||
value:
|
||||
objectReference: {fileID: 985747657}
|
||||
- target: {fileID: 512143980313251866, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: vipCustomerAnimator
|
||||
value:
|
||||
objectReference: {fileID: 985747656}
|
||||
- target: {fileID: 512143980313251866, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: vipStayPosTransform
|
||||
value:
|
||||
objectReference: {fileID: 172087640}
|
||||
- target: {fileID: 512143980313251866, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: vipSpeechBubbleObject
|
||||
value:
|
||||
objectReference: {fileID: 985747654}
|
||||
- target: {fileID: 1174152333972670060, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: m_fontColor.a
|
||||
|
|
@ -3817,12 +3874,12 @@ PrefabInstance:
|
|||
- target: {fileID: 1408184404978035950, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 8
|
||||
value: 7
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1909038109161790577, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 7
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1913713732571476837, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
|
|
@ -3853,13 +3910,13 @@ PrefabInstance:
|
|||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: 21300000, guid: 3e8106fd24f7946e2a20ebd081ebb0b9,
|
||||
objectReference: {fileID: 21300000, guid: 401e6b14583a46443be3b7124b78ac09,
|
||||
type: 3}
|
||||
- target: {fileID: 3664916832434116137, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: 21300000, guid: dab0cd6adf1694bd6b96c224ad8c38e6,
|
||||
objectReference: {fileID: 21300000, guid: e8fb21ace44c3e748959b969f895dd23,
|
||||
type: 3}
|
||||
- target: {fileID: 3664916832512110618, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
|
|
@ -4010,7 +4067,7 @@ PrefabInstance:
|
|||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: 21300000, guid: 0469694e83769479fa737c3a3b9f6b06,
|
||||
objectReference: {fileID: 21300000, guid: 0a13c07b1bd21434d801188fb9b7546d,
|
||||
type: 3}
|
||||
- target: {fileID: 3664916832825273575, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
|
|
@ -4051,7 +4108,7 @@ PrefabInstance:
|
|||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: 21300000, guid: afb06cd566c9b4c0eba30dd082477478,
|
||||
objectReference: {fileID: 21300000, guid: 7597f863b51829447a8afd00534fe6e4,
|
||||
type: 3}
|
||||
- target: {fileID: 3664916834267713207, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
|
|
@ -4083,6 +4140,11 @@ PrefabInstance:
|
|||
propertyPath: m_AnchoredPosition.y
|
||||
value: 274
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7129812585269745309, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7545339558603919741, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
|
|
@ -4112,7 +4174,7 @@ PrefabInstance:
|
|||
type: 3}
|
||||
propertyPath: m_Sprite
|
||||
value:
|
||||
objectReference: {fileID: 21300000, guid: b128a700ffcf24ec29e2a2ce7af50858,
|
||||
objectReference: {fileID: 21300000, guid: 3be9a3bcc8d7c864a97b5be41e33418f,
|
||||
type: 3}
|
||||
- target: {fileID: 8591874021033984247, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
|
|
@ -4133,6 +4195,18 @@ RectTransform:
|
|||
type: 3}
|
||||
m_PrefabInstance: {fileID: 714437464}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &714437466 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 512143980313251866, guid: caaa748dbeed576499e8cae74d33f689,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 714437464}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 817f9d5cab724bb8a22de5e9dbd2f967, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &716489324
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -4861,7 +4935,7 @@ Transform:
|
|||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 5
|
||||
m_RootOrder: 6
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &876376901
|
||||
GameObject:
|
||||
|
|
@ -5386,6 +5460,110 @@ SortingGroup:
|
|||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 3
|
||||
--- !u!1001 &985747653
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
m_TransformParent: {fileID: 2017358937}
|
||||
m_Modifications:
|
||||
- target: {fileID: 5353524989891006842, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: -10.0789995
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: -2.1827226
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -35.82837
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8476357288433061819, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: customer_Luxury_Gray
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: cd3da4efffd34614794276964fca59c7, type: 3}
|
||||
--- !u!1 &985747654 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 6877570175858391367, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 985747653}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &985747655 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8476357288433061812, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 985747653}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!95 &985747656 stripped
|
||||
Animator:
|
||||
m_CorrespondingSourceObject: {fileID: 8476357288433061813, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 985747653}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &985747657 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 9067878707261228985, guid: cd3da4efffd34614794276964fca59c7,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 985747653}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0eb44b30c9454383898faae0c3666b94, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &990563154
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -5710,7 +5888,7 @@ Transform:
|
|||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 6
|
||||
m_RootOrder: 7
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1025201118
|
||||
MonoBehaviour:
|
||||
|
|
@ -5729,6 +5907,7 @@ MonoBehaviour:
|
|||
cartView: {fileID: 2048621276}
|
||||
blueView: {fileID: 1506158581}
|
||||
rewardButtonView: {fileID: 820175261}
|
||||
vipCustomerButtonView: {fileID: 714437466}
|
||||
signBoardView: {fileID: 1732899481}
|
||||
pinkTarget: {fileID: 1749782974}
|
||||
coinPrefab: {fileID: 8159396421809467538, guid: 9fc8076f17c26ff4d9be53b90a7dad4c,
|
||||
|
|
@ -19780,6 +19959,38 @@ Transform:
|
|||
type: 3}
|
||||
m_PrefabInstance: {fileID: 2011193247}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &2017358936
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2017358937}
|
||||
m_Layer: 0
|
||||
m_Name: VipReward
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2017358937
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2017358936}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 172087640}
|
||||
- {fileID: 985747655}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &2031857953
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
@ -25091,7 +25302,7 @@ PrefabInstance:
|
|||
- target: {fileID: 3667080857874733261, guid: b875e6e94a97840ca8490ce0718fca6e,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 8
|
||||
value: 9
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3667080857874733261, guid: b875e6e94a97840ca8490ce0718fca6e,
|
||||
type: 3}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,16 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
using GameAnalyticsSDK;
|
||||
|
||||
public sealed class AdManager : SingletonMonoBehaviour<AdManager> {
|
||||
|
||||
public static readonly string AD_PLACEMENT_COIN = "coin";
|
||||
public static readonly string AD_PLACEMENT_CORNFIELD = "cornfield";
|
||||
public static readonly string AD_PLACEMENT_CUSTOMER = "increase_customer";
|
||||
public static readonly string AD_PLACEMENT_PERFECT = "perfect_popcorn";
|
||||
public static readonly string AD_PLACEMENT_VIP = "vip_customer";
|
||||
public static readonly string AD_PLACEMENT_AUTO = "auto_popcorn";
|
||||
|
||||
//-- ironSource --//
|
||||
#if UNITY_IOS
|
||||
private static readonly string IRONSOURCE_APP_KEY = "11bc8b5ad";
|
||||
|
|
@ -107,7 +115,7 @@ public sealed class AdManager : SingletonMonoBehaviour<AdManager> {
|
|||
return IronSource.Agent.isRewardedVideoAvailable();
|
||||
#endif
|
||||
}
|
||||
public void ShowRewardVideo(Action<bool> callback){
|
||||
public void ShowRewardVideo(Action<bool> callback, string ad_placement = "none"){
|
||||
#if UNITY_EDITOR
|
||||
callback(true);
|
||||
#else
|
||||
|
|
@ -120,6 +128,9 @@ public sealed class AdManager : SingletonMonoBehaviour<AdManager> {
|
|||
_rewardAdClose = false;
|
||||
_async_frame_count = 0;
|
||||
IronSource.Agent.showRewardedVideo();
|
||||
#if !DEVELOPMENT_BUILD && !UNITY_EDITOR
|
||||
GameAnalytics.NewAdEvent(GAAdAction.FailedShow, GAAdType.RewardedVideo, "ironsource", ad_placement);
|
||||
#endif
|
||||
}else{
|
||||
_rewardAdCallback(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ public static class Const {
|
|||
|
||||
public static readonly string UnityVersion = "2019.4.19f1";
|
||||
|
||||
public static readonly string DefaultAppVersion = "0.1.0";
|
||||
public static readonly string DefaultAppVersion = "1.1.0";
|
||||
|
||||
// parameter
|
||||
public static readonly int DefaultMachineLevel = 1;
|
||||
|
|
@ -22,6 +22,8 @@ public static class Const {
|
|||
public static readonly int[] FieldTutorial = { 5, 12, 6 };
|
||||
public static readonly int[] ShoppingTutorial = { 7, 13, 8};
|
||||
public static readonly int[] ManagementTutorial = { 9 };
|
||||
public static readonly float VipCustomerRewardStock = 20; // Market.ShopStockCount以下にする
|
||||
public static readonly float VipCustomerRewardRate = 0.01f;
|
||||
|
||||
// tag
|
||||
public static readonly string GameDataTag = "GameData";
|
||||
|
|
|
|||
|
|
@ -144,6 +144,12 @@ public sealed class GameData {
|
|||
public int WaitAddHeart;
|
||||
[DataMember(Name = "Data42")]
|
||||
public ProductStockData WaitAddStock;
|
||||
|
||||
// reward(v1.1追加)
|
||||
[DataMember(Name = "Data51")]
|
||||
public long vipCustomerLimitTime = DateTime.UtcNow.ToBinary();
|
||||
[DataMember(Name = "Data52")]
|
||||
public bool vipCustomerFirstOpen;
|
||||
|
||||
// mission
|
||||
[DataMember(Name = "Data1001")]
|
||||
|
|
|
|||
|
|
@ -14,9 +14,11 @@ namespace MyGame.Scripts
|
|||
Coin,
|
||||
CornField,
|
||||
IncreaseCustomer,
|
||||
PerfectPopcorn
|
||||
PerfectPopcorn,
|
||||
VipCustomer
|
||||
}
|
||||
private static readonly string OkCallbackTag = "GetRewardDialogOkCallbackTag";
|
||||
private static readonly string CloseCallbackTag = "GetRewardDialogCloseCallbackTag";
|
||||
private static readonly string RewardTypeTag = "GetRewardDialogRewardTypeTag";
|
||||
|
||||
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
|
||||
|
|
@ -35,6 +37,7 @@ namespace MyGame.Scripts
|
|||
[SerializeField] private GameObject coinObject;
|
||||
[SerializeField] private GameObject fertilizerObject;
|
||||
[SerializeField] private GameObject publicityObject;
|
||||
[SerializeField] private GameObject vipObject;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
|
|
@ -42,37 +45,44 @@ namespace MyGame.Scripts
|
|||
coinObject.SetActive(false);
|
||||
fertilizerObject.SetActive(false);
|
||||
publicityObject.SetActive(false);
|
||||
vipObject.SetActive(false);
|
||||
switch (LocalCacheManager.Load<RewardType>(RewardTypeTag))
|
||||
{
|
||||
case RewardType.Coin:
|
||||
normalWindow.SetActive(true);
|
||||
coinObject.SetActive(true);
|
||||
messageText.text = ScriptLocalization.System.CoinMainMessage;
|
||||
SetButtonAction(closeButton, okButton);
|
||||
SetButtonAction(closeButton, okButton, AdManager.AD_PLACEMENT_COIN);
|
||||
break;
|
||||
case RewardType.CornField:
|
||||
normalWindow.SetActive(true);
|
||||
fertilizerObject.SetActive(true);
|
||||
messageText.text = ScriptLocalization.System.CornFieldMessage;
|
||||
SetButtonAction(closeButton, okButton);
|
||||
SetButtonAction(closeButton, okButton, AdManager.AD_PLACEMENT_CORNFIELD);
|
||||
break;
|
||||
case RewardType.IncreaseCustomer:
|
||||
normalWindow.SetActive(true);
|
||||
publicityObject.SetActive(true);
|
||||
messageText.text = ScriptLocalization.System.IncreaseCustomerMessage;
|
||||
SetButtonAction(closeButton, okButton);
|
||||
SetButtonAction(closeButton, okButton, AdManager.AD_PLACEMENT_CUSTOMER);
|
||||
break;
|
||||
case RewardType.PerfectPopcorn:
|
||||
normalWindow.SetActive(true);
|
||||
messageText.text = ScriptLocalization.System.PerfectPopcornMessage;
|
||||
SetButtonAction(closeButton, okButton);
|
||||
SetButtonAction(closeButton, okButton, AdManager.AD_PLACEMENT_PERFECT);
|
||||
break;
|
||||
case RewardType.VipCustomer:
|
||||
normalWindow.SetActive(true);
|
||||
vipObject.SetActive(true);
|
||||
messageText.text = ScriptLocalization.System.VipCustomerMessage;
|
||||
SetButtonAction(closeButton, okButton, AdManager.AD_PLACEMENT_VIP);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetButtonAction(Button closeButton, Button okButton)
|
||||
private void SetButtonAction(Button closeButton, Button okButton, string Placement)
|
||||
{
|
||||
closeButton.OnClickAsObservable().Take(1).Subscribe(_ =>
|
||||
{
|
||||
|
|
@ -80,6 +90,8 @@ namespace MyGame.Scripts
|
|||
backgroundAnimator.SetTrigger(CloseTrigger);
|
||||
this.CallWaitForSeconds(.25f, () =>
|
||||
{
|
||||
LocalCacheManager.Load<Action>(CloseCallbackTag, null)?.Invoke();
|
||||
LocalCacheManager.Remove(CloseCallbackTag);
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.WatchMovieCoin);
|
||||
});
|
||||
}).AddTo(this);
|
||||
|
|
@ -96,7 +108,7 @@ namespace MyGame.Scripts
|
|||
LocalCacheManager.Remove(OkCallbackTag);
|
||||
}
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.WatchMovieCoin);
|
||||
});
|
||||
}, Placement);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -106,31 +118,37 @@ namespace MyGame.Scripts
|
|||
}).AddTo(this);
|
||||
}
|
||||
|
||||
private static void ShowDialog(Action okCallback, RewardType rewardType)
|
||||
private static void ShowDialog(RewardType rewardType, Action okCallback, Action closeCallback)
|
||||
{
|
||||
LocalCacheManager.Save(OkCallbackTag, okCallback);
|
||||
LocalCacheManager.Save(CloseCallbackTag, closeCallback);
|
||||
LocalCacheManager.Save(RewardTypeTag, rewardType);
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.WatchMovieCoin);
|
||||
}
|
||||
|
||||
public static void ShowCoinDialog(Action okCallback)
|
||||
public static void ShowCoinDialog(Action okCallback = null, Action closeCallback = null)
|
||||
{
|
||||
ShowDialog(okCallback, RewardType.Coin);
|
||||
ShowDialog(RewardType.Coin, okCallback, closeCallback);
|
||||
}
|
||||
|
||||
public static void ShowCornFieldDialog(Action okCallback)
|
||||
public static void ShowCornFieldDialog(Action okCallback = null, Action closeCallback = null)
|
||||
{
|
||||
ShowDialog(okCallback, RewardType.CornField);
|
||||
ShowDialog(RewardType.CornField, okCallback, closeCallback);
|
||||
}
|
||||
|
||||
public static void ShowIncreaseCustomerDialog(Action okCallback)
|
||||
public static void ShowIncreaseCustomerDialog(Action okCallback = null, Action closeCallback = null)
|
||||
{
|
||||
ShowDialog(okCallback, RewardType.IncreaseCustomer);
|
||||
ShowDialog(RewardType.IncreaseCustomer, okCallback, closeCallback);
|
||||
}
|
||||
|
||||
public static void ShowPerfectPopcornDialog(Action okCallback)
|
||||
public static void ShowPerfectPopcornDialog(Action okCallback = null, Action closeCallback = null)
|
||||
{
|
||||
ShowDialog(okCallback, RewardType.PerfectPopcorn);
|
||||
ShowDialog(RewardType.PerfectPopcorn, okCallback, closeCallback);
|
||||
}
|
||||
|
||||
public static void ShowVipCustomerDialog(Action okCallback = null, Action closeCallback = null)
|
||||
{
|
||||
ShowDialog(RewardType.VipCustomer, okCallback, closeCallback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -32,8 +32,8 @@ MonoBehaviour:
|
|||
- d078eab3b8d4a6b44ccfb7d9258a8e0bddad1337
|
||||
- 41e0f225a9f8751a3fc893cae6eb933df7d0214e
|
||||
Build:
|
||||
- 1.0.1
|
||||
- 1.0.0
|
||||
- 1.1.0
|
||||
- 1.1.0
|
||||
SelectedPlatformOrganization:
|
||||
- usaya
|
||||
- usaya
|
||||
|
|
@ -174,7 +174,6 @@ MonoBehaviour:
|
|||
VerboseLogBuild: 0
|
||||
UseManualSessionHandling: 0
|
||||
SendExampleGameDataToMyGame: 0
|
||||
UseIMEI: 0
|
||||
InternetConnectivity: 0
|
||||
CustomDimensions01: []
|
||||
CustomDimensions02: []
|
||||
|
|
|
|||
|
|
@ -8419,6 +8419,16 @@ MonoBehaviour:
|
|||
-
|
||||
Flags: 00000000
|
||||
Languages_Touch: []
|
||||
- Term: System/VipCustomerMessage
|
||||
TermType: 0
|
||||
Description:
|
||||
Languages:
|
||||
- "VIP\u306A\u304A\u5BA2\u306B\u304A\u9858\u3044\u3059\u308B\u3068\nVIP\u306A\u304A\u53CB\u9054\u3092\u9023\u308C\u3066\u304D\u3066\u304F\u308C\u308B\u3088\uFF01\n\u52D5\u753B\u3092\u898B\u3066\u304A\u9858\u3044\u3057\u307E\u3059\u304B\uFF1F"
|
||||
-
|
||||
-
|
||||
-
|
||||
Flags: 00000000
|
||||
Languages_Touch: []
|
||||
CaseInsensitiveTerms: 0
|
||||
OnMissingTranslation: 3
|
||||
mTerm_AppName:
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ namespace I2.Loc
|
|||
public static string CornFieldMessage { get{ return LocalizationManager.GetTranslation ("System/CornFieldMessage"); } }
|
||||
public static string IncreaseCustomerMessage { get{ return LocalizationManager.GetTranslation ("System/IncreaseCustomerMessage"); } }
|
||||
public static string PerfectPopcornMessage { get{ return LocalizationManager.GetTranslation ("System/PerfectPopcornMessage"); } }
|
||||
public static string VipCustomerMessage { get{ return LocalizationManager.GetTranslation ("System/VipCustomerMessage"); } }
|
||||
}
|
||||
|
||||
public static class UI
|
||||
|
|
@ -66,6 +67,7 @@ namespace I2.Loc
|
|||
public const string CornFieldMessage = "System/CornFieldMessage";
|
||||
public const string IncreaseCustomerMessage = "System/IncreaseCustomerMessage";
|
||||
public const string PerfectPopcornMessage = "System/PerfectPopcornMessage";
|
||||
public const string VipCustomerMessage = "System/VipCustomerMessage";
|
||||
}
|
||||
|
||||
public static class UI
|
||||
|
|
|
|||
Loading…
Reference in New Issue