試食ポップアップ実装
This commit is contained in:
parent
99b2e9c039
commit
82d09102cb
|
|
@ -34,7 +34,19 @@ AnimatorController:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Window_mat
|
||||
serializedVersion: 5
|
||||
m_AnimatorParameters: []
|
||||
m_AnimatorParameters:
|
||||
- m_Name: OpenTrigger
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 0}
|
||||
- m_Name: CloseTrigger
|
||||
m_Type: 9
|
||||
m_DefaultFloat: 0
|
||||
m_DefaultInt: 0
|
||||
m_DefaultBool: 0
|
||||
m_Controller: {fileID: 0}
|
||||
m_AnimatorLayers:
|
||||
- serializedVersion: 5
|
||||
m_Name: Base Layer
|
||||
|
|
@ -59,12 +71,13 @@ AnimatorStateMachine:
|
|||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -5860134569191910913}
|
||||
m_Position: {x: 200, y: 0, z: 0}
|
||||
m_Position: {x: 300, y: 0, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 5199939482728463630}
|
||||
m_Position: {x: 230, y: 60, z: 0}
|
||||
m_Position: {x: 290, y: 120, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_AnyStateTransitions:
|
||||
- {fileID: 1858806721725369727}
|
||||
m_EntryTransitions: []
|
||||
m_StateMachineTransitions: {}
|
||||
m_StateMachineBehaviours: []
|
||||
|
|
@ -73,6 +86,31 @@ AnimatorStateMachine:
|
|||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||
m_DefaultState: {fileID: -5860134569191910913}
|
||||
--- !u!1101 &1858806721725369727
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: CloseTrigger
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 5199939482728463630}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.75
|
||||
m_HasExitTime: 0
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &5199939482728463630
|
||||
AnimatorState:
|
||||
serializedVersion: 5
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0da1dd32f93cb4fe4881d732047679ec
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -89,7 +89,7 @@ public class ProductManagement : MonoBehaviour
|
|||
tankView.SetData(tankData);
|
||||
tankView.SetState(TankState.Unlock);
|
||||
var totalStock = gameData.ShopStock.Sum(x => x) + gameData.StorageTanks.Where(x => x.FlavorId == tankData.FlavorId).Sum(x => x.Stock);
|
||||
var recipe = RecipeData.GetAllRecipe().First(x => x.RecipeId == tankData.FlavorId);
|
||||
var recipe = RecipeData.GetRecipe(tankData.FlavorId);
|
||||
var price = recipe?.Price ?? 0;
|
||||
List<(ProductRarity rarity, int price, int stock)> raritySummaryData = rarityDataList.Select(x =>
|
||||
(x.Rarity, price * x.rate / 100, tankData.Stocks.FirstOrDefault(sd => sd.Rarity == x.Rarity)?.Stock ?? 0)
|
||||
|
|
@ -106,10 +106,12 @@ public class ProductManagement : MonoBehaviour
|
|||
tankView.SetDetailButtonActive(x != ManagementState.Tasting);
|
||||
}).AddTo(tankView);
|
||||
}
|
||||
|
||||
state.Subscribe(x =>
|
||||
|
||||
var selectedTankSubject = new Subject<(int num, RecipeData recipe)>().AddTo(this);
|
||||
var selectedTankObservable = selectedTankSubject.AsObservable();
|
||||
state.Subscribe(mState =>
|
||||
{
|
||||
switch (x)
|
||||
switch (mState)
|
||||
{
|
||||
case ManagementState.None:
|
||||
ClearSelectedTank(tankList);
|
||||
|
|
@ -117,14 +119,16 @@ public class ProductManagement : MonoBehaviour
|
|||
case ManagementState.Replacing:
|
||||
break;
|
||||
case ManagementState.Tasting:
|
||||
ClearSelectedTank(tankList);
|
||||
// 1番目選択
|
||||
ClearSelectedTank(tankList);
|
||||
tankList[0].SetState(TankState.Selected);
|
||||
// TastingシーンAdditive
|
||||
// tasting閉じたあとの処理コールバックAction渡す
|
||||
var tankData = gameData.StorageTanks.First(x => x.Id == gameData.TankOrder[tankList[0].TankNumber - 1]);
|
||||
selectedTankSubject.OnNext((1, RecipeData.GetRecipe(tankData.FlavorId)));
|
||||
LocalCacheManager.Save(TastingView.TastingDataTag, (selectedTankObservable, new Action(() => state.Value = ManagementState.None), new Action<int>(Tasting)));
|
||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.Tasting);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException(nameof(x), x, null);
|
||||
throw new ArgumentOutOfRangeException(nameof(mState), mState, null);
|
||||
}
|
||||
}).AddTo(this);
|
||||
|
||||
|
|
@ -146,6 +150,8 @@ public class ProductManagement : MonoBehaviour
|
|||
case ManagementState.Tasting:
|
||||
ClearSelectedTank(tankList);
|
||||
tankView.SetState(TankState.Selected);
|
||||
var tankData = gameData.StorageTanks.First(x => x.Id == gameData.TankOrder[tankView.TankNumber - 1]);
|
||||
selectedTankSubject.OnNext((tankView.TankNumber, RecipeData.GetRecipe(tankData.FlavorId)));
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
|
|
@ -201,4 +207,10 @@ public class ProductManagement : MonoBehaviour
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Tasting(int tankNumber)
|
||||
{
|
||||
state.Value = ManagementState.None;
|
||||
Debug.Log($"tasting:{tankNumber}");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,45 @@
|
|||
using System;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class TastingView : MonoBehaviour
|
||||
{
|
||||
public static readonly string TastingDataTag = "TastingData";
|
||||
private static readonly int OpenTrigger = Animator.StringToHash("OpenTrigger");
|
||||
private static readonly int CloseTrigger = Animator.StringToHash("CloseTrigger");
|
||||
|
||||
[SerializeField] private Animator backgroundAnimator;
|
||||
[SerializeField] private Button closeButton;
|
||||
[SerializeField] private Button tastingButton;
|
||||
[SerializeField] private Text popcornName;
|
||||
[SerializeField] private Image popcornImage;
|
||||
[SerializeField] private Image packageImage;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
var data = LocalCacheManager.Load<(IObservable<(int tankNum, RecipeData recipe)> selectedObservable, Action closeButtonAction, Action<int> tastingButtonAction)>(TastingDataTag);
|
||||
data.selectedObservable.Subscribe(x =>
|
||||
{
|
||||
popcornName.text = x.recipe.Name;
|
||||
}).AddTo(this);
|
||||
closeButton.OnClickAsObservable().Subscribe(_ =>
|
||||
{
|
||||
backgroundAnimator.SetTrigger(CloseTrigger);
|
||||
this.CallWaitForSeconds(.25f, () =>
|
||||
{
|
||||
data.closeButtonAction?.Invoke();
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.Tasting);
|
||||
});
|
||||
}).AddTo(this);
|
||||
tastingButton.OnClickAsObservable().WithLatestFrom(data.selectedObservable, (_, x) => x.tankNum).Subscribe(tankNum =>
|
||||
{
|
||||
backgroundAnimator.SetTrigger(CloseTrigger);
|
||||
this.CallWaitForSeconds(.25f, () =>
|
||||
{
|
||||
data.tastingButtonAction?.Invoke(tankNum);
|
||||
TransitionManager.Instance.UnloadScene(GameScenes.Tasting);
|
||||
});
|
||||
}).AddTo(this);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6a0f7919d4584fa897c08e605da53e53
|
||||
timeCreated: 1631692755
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,4 +1,5 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
public class RecipeData
|
||||
{
|
||||
|
|
@ -10,6 +11,11 @@ public class RecipeData
|
|||
public int CornAmount;
|
||||
public List<(int id, int amount)> Flavors;
|
||||
|
||||
public static RecipeData GetRecipe(int flavorId)
|
||||
{
|
||||
return GetAllRecipe().FirstOrDefault(x => x.RecipeId == flavorId);
|
||||
}
|
||||
|
||||
public static List<RecipeData> GetAllRecipe()
|
||||
{
|
||||
return new List<RecipeData>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ public enum GameScenes
|
|||
Purchase,
|
||||
ProductManagement,
|
||||
PopcornDescription,
|
||||
Tasting,
|
||||
SettingsDialog,
|
||||
DebugOption,
|
||||
UnableWatchVideoDialog,
|
||||
|
|
|
|||
|
|
@ -29,6 +29,9 @@ EditorBuildSettings:
|
|||
- enabled: 1
|
||||
path: Assets/MyGame/Scenes/marketing/PopcornDescription.unity
|
||||
guid: 8df4aed2b83d2eb48ab515858b956dd5
|
||||
- enabled: 1
|
||||
path: Assets/MyGame/Scenes/marketing/Tasting.unity
|
||||
guid: 79a0196644bebaa49a6d8e1df6ada879
|
||||
- enabled: 1
|
||||
path: Assets/MyGame/Scenes/shopping/shopping.unity
|
||||
guid: 9c9b9e2851656c84e91e3c457a81433d
|
||||
|
|
|
|||
Loading…
Reference in New Issue