vip宣伝ボタン表示処理をManagerに追加

This commit is contained in:
kimura 2022-02-04 17:12:08 +09:00
parent 48dce0fcfc
commit e6ffd80e7a
3 changed files with 259 additions and 40 deletions

View File

@ -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);
}
}
}

View File

@ -26,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");
@ -69,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);
});
@ -121,49 +123,54 @@ public class MarketManager : MonoBehaviour
gameData.increaseCustomerTime = DateTime.UtcNow.AddSeconds(10).ToBinary();
#endif
GameDataManager.SaveGameData();
resetRefreshTimer.OnNext(Unit.Default);
customerRewardTimerUpdateSubject.OnNext(Unit.Default);
});
}).AddTo(this);
vipCustomerButtonView.ShowButton();
// VIP宣伝ボタン
vipCustomerButtonView.VipButton.ThrottleFirst(TimeSpan.FromSeconds(.3f)).Subscribe(_ =>
{
GetRewardDialog.ShowVipCustomerDialog(() =>
{
market.VipAction();
}, () =>
{
// 現在時刻に設定して期限切れにする
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 =>

View File

@ -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}
@ -4117,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}
@ -4878,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:
@ -5403,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
@ -5727,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:
@ -19798,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
@ -25109,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}