試食ポップアップ実装
This commit is contained in:
parent
99b2e9c039
commit
82d09102cb
|
|
@ -34,7 +34,19 @@ AnimatorController:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: Window_mat
|
m_Name: Window_mat
|
||||||
serializedVersion: 5
|
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:
|
m_AnimatorLayers:
|
||||||
- serializedVersion: 5
|
- serializedVersion: 5
|
||||||
m_Name: Base Layer
|
m_Name: Base Layer
|
||||||
|
|
@ -59,12 +71,13 @@ AnimatorStateMachine:
|
||||||
m_ChildStates:
|
m_ChildStates:
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: -5860134569191910913}
|
m_State: {fileID: -5860134569191910913}
|
||||||
m_Position: {x: 200, y: 0, z: 0}
|
m_Position: {x: 300, y: 0, z: 0}
|
||||||
- serializedVersion: 1
|
- serializedVersion: 1
|
||||||
m_State: {fileID: 5199939482728463630}
|
m_State: {fileID: 5199939482728463630}
|
||||||
m_Position: {x: 230, y: 60, z: 0}
|
m_Position: {x: 290, y: 120, z: 0}
|
||||||
m_ChildStateMachines: []
|
m_ChildStateMachines: []
|
||||||
m_AnyStateTransitions: []
|
m_AnyStateTransitions:
|
||||||
|
- {fileID: 1858806721725369727}
|
||||||
m_EntryTransitions: []
|
m_EntryTransitions: []
|
||||||
m_StateMachineTransitions: {}
|
m_StateMachineTransitions: {}
|
||||||
m_StateMachineBehaviours: []
|
m_StateMachineBehaviours: []
|
||||||
|
|
@ -73,6 +86,31 @@ AnimatorStateMachine:
|
||||||
m_ExitPosition: {x: 800, y: 120, z: 0}
|
m_ExitPosition: {x: 800, y: 120, z: 0}
|
||||||
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
m_DefaultState: {fileID: -5860134569191910913}
|
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
|
--- !u!1102 &5199939482728463630
|
||||||
AnimatorState:
|
AnimatorState:
|
||||||
serializedVersion: 5
|
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.SetData(tankData);
|
||||||
tankView.SetState(TankState.Unlock);
|
tankView.SetState(TankState.Unlock);
|
||||||
var totalStock = gameData.ShopStock.Sum(x => x) + gameData.StorageTanks.Where(x => x.FlavorId == tankData.FlavorId).Sum(x => x.Stock);
|
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;
|
var price = recipe?.Price ?? 0;
|
||||||
List<(ProductRarity rarity, int price, int stock)> raritySummaryData = rarityDataList.Select(x =>
|
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)
|
(x.Rarity, price * x.rate / 100, tankData.Stocks.FirstOrDefault(sd => sd.Rarity == x.Rarity)?.Stock ?? 0)
|
||||||
|
|
@ -107,9 +107,11 @@ public class ProductManagement : MonoBehaviour
|
||||||
}).AddTo(tankView);
|
}).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:
|
case ManagementState.None:
|
||||||
ClearSelectedTank(tankList);
|
ClearSelectedTank(tankList);
|
||||||
|
|
@ -117,14 +119,16 @@ public class ProductManagement : MonoBehaviour
|
||||||
case ManagementState.Replacing:
|
case ManagementState.Replacing:
|
||||||
break;
|
break;
|
||||||
case ManagementState.Tasting:
|
case ManagementState.Tasting:
|
||||||
ClearSelectedTank(tankList);
|
|
||||||
// 1番目選択
|
// 1番目選択
|
||||||
|
ClearSelectedTank(tankList);
|
||||||
tankList[0].SetState(TankState.Selected);
|
tankList[0].SetState(TankState.Selected);
|
||||||
// TastingシーンAdditive
|
var tankData = gameData.StorageTanks.First(x => x.Id == gameData.TankOrder[tankList[0].TankNumber - 1]);
|
||||||
// tasting閉じたあとの処理コールバックAction渡す
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException(nameof(x), x, null);
|
throw new ArgumentOutOfRangeException(nameof(mState), mState, null);
|
||||||
}
|
}
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
||||||
|
|
@ -146,6 +150,8 @@ public class ProductManagement : MonoBehaviour
|
||||||
case ManagementState.Tasting:
|
case ManagementState.Tasting:
|
||||||
ClearSelectedTank(tankList);
|
ClearSelectedTank(tankList);
|
||||||
tankView.SetState(TankState.Selected);
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
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.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
public class RecipeData
|
public class RecipeData
|
||||||
{
|
{
|
||||||
|
|
@ -10,6 +11,11 @@ public class RecipeData
|
||||||
public int CornAmount;
|
public int CornAmount;
|
||||||
public List<(int id, int amount)> Flavors;
|
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()
|
public static List<RecipeData> GetAllRecipe()
|
||||||
{
|
{
|
||||||
return new List<RecipeData>
|
return new List<RecipeData>
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ public enum GameScenes
|
||||||
Purchase,
|
Purchase,
|
||||||
ProductManagement,
|
ProductManagement,
|
||||||
PopcornDescription,
|
PopcornDescription,
|
||||||
|
Tasting,
|
||||||
SettingsDialog,
|
SettingsDialog,
|
||||||
DebugOption,
|
DebugOption,
|
||||||
UnableWatchVideoDialog,
|
UnableWatchVideoDialog,
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,9 @@ EditorBuildSettings:
|
||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/MyGame/Scenes/marketing/PopcornDescription.unity
|
path: Assets/MyGame/Scenes/marketing/PopcornDescription.unity
|
||||||
guid: 8df4aed2b83d2eb48ab515858b956dd5
|
guid: 8df4aed2b83d2eb48ab515858b956dd5
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/MyGame/Scenes/marketing/Tasting.unity
|
||||||
|
guid: 79a0196644bebaa49a6d8e1df6ada879
|
||||||
- enabled: 1
|
- enabled: 1
|
||||||
path: Assets/MyGame/Scenes/shopping/shopping.unity
|
path: Assets/MyGame/Scenes/shopping/shopping.unity
|
||||||
guid: 9c9b9e2851656c84e91e3c457a81433d
|
guid: 9c9b9e2851656c84e91e3c457a81433d
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue