Persistent data & game state controller

This commit is contained in:
Pedro Gomes 2024-05-12 16:26:56 +01:00
parent a61d82dc39
commit 1fe25cee9a
41 changed files with 8516 additions and 7490 deletions

View File

@ -24,15 +24,13 @@ namespace Kryz.CharacterStats.Examples
Health health; Health health;
Mana mana; Mana mana;
readonly object allocatedSource = "Allocated";
[Header("Runtime Data:")] [Header("Runtime Data:")]
public List<int> AllocatedStatPoints = new List<int>(); public List<int> AllocatedStatPoints = new List<int>();
public int AvailablePointsToAllocate; public int AvailablePointsToAllocate;
PlayerData playerLevelData = new PlayerData(); CharacterData characterData = new CharacterData();
string playerLevelKey; string characterDataKey;
protected override void Awake() protected override void Awake()
{ {
@ -41,25 +39,38 @@ namespace Kryz.CharacterStats.Examples
health = player.GetComponent<Health>(); health = player.GetComponent<Health>();
mana = player.GetComponent<Mana>(); mana = player.GetComponent<Mana>();
playerLevelKey = GameStatePersistenceManager.Instance.playerLevelKey; characterDataKey = GameConstants.PlayerPrefsKeys.GetCharacterDataKey(photonView.Owner.NickName);
if (GameStatePersistenceManager.Instance.HasDataForKey(playerLevelKey))
{
playerLevelData = GameStatePersistenceManager.Instance.LoadData<PlayerData>(playerLevelKey);
level = new Level(playerLevelData.currentLevel, playerLevelData.currentExperience);
}
else
level = new Level(); level = new Level();
base.Awake(); base.Awake();
if (!photonView.IsMine) return; if (!photonView.IsMine) return;
if (GameStatePersistenceManager.Instance.HasDataForKey(characterDataKey))
{
characterData = GameStatePersistenceManager.Instance.LoadData<CharacterData>(characterDataKey);
level = new Level(characterData.currentLevel, characterData.currentExperience);
for (int i = 0; i < statsDictionary.Keys.Count; i++)
{
AllocatedStatPoints.Add(characterData.allocatedStatPoints[i]);
}
AvailablePointsToAllocate = characterData.availablePointsToAllocate;
UpdateAllocatedStats();
UpdateStatsBasedOnLevel();
}
else
{
for (int i = 0; i < statsDictionary.Keys.Count; i++) for (int i = 0; i < statsDictionary.Keys.Count; i++)
{ {
AllocatedStatPoints.Add(0); AllocatedStatPoints.Add(0);
} }
AvailablePointsToAllocate = 1; AvailablePointsToAllocate = 3;
}
if (statPanel == null) if (statPanel == null)
statPanel = FindObjectOfType<StatPanel>(); statPanel = FindObjectOfType<StatPanel>();
@ -85,14 +96,16 @@ namespace Kryz.CharacterStats.Examples
level.OnLevelUpEvent.AddListener(OnLevelUp); level.OnLevelUpEvent.AddListener(OnLevelUp);
level.OnExperienceChanged.AddListener(OnExperienceChanged); level.OnExperienceChanged.AddListener(OnExperienceChanged);
experienceOnNPCDeath.Response.AddListener(level.GainExperience); experienceOnNPCDeath.Response.AddListener(level.GainExperience);
UpdateLevelOnOthers();
} }
private void OnExperienceChanged() private void OnExperienceChanged()
{ {
playerLevelData.currentLevel = level.currentLevel; characterData.currentLevel = level.currentLevel;
playerLevelData.currentExperience = level.GetCurrentExperience(); characterData.currentExperience = level.GetCurrentExperience();
GameStatePersistenceManager.Instance.SaveData(GameStatePersistenceManager.Instance.playerLevelKey, playerLevelData); GameStatePersistenceManager.Instance.SaveData(characterDataKey, characterData);
} }
private void OnLevelUp() private void OnLevelUp()
@ -101,9 +114,11 @@ namespace Kryz.CharacterStats.Examples
statPanel.UpdateLevelInfo(level.currentLevel.ToString()); statPanel.UpdateLevelInfo(level.currentLevel.ToString());
IncreaseAllStatPoints(1); UpdateStatsBasedOnLevel();
AvailablePointsToAllocate += 2; AvailablePointsToAllocate += 3;
characterData.availablePointsToAllocate = AvailablePointsToAllocate;
statPanel.ToggleAllocateButtonsInteractable(AvailablePointsToAllocate > 0); statPanel.ToggleAllocateButtonsInteractable(AvailablePointsToAllocate > 0);
@ -111,6 +126,7 @@ namespace Kryz.CharacterStats.Examples
mana.ChangeValue(mana.GetMaxValue() * 0.2f); mana.ChangeValue(mana.GetMaxValue() * 0.2f);
} }
private void EquipFromInventory(Item item) private void EquipFromInventory(Item item)
{ {
if (item is EquippableItem) if (item is EquippableItem)
@ -179,17 +195,43 @@ namespace Kryz.CharacterStats.Examples
public void UpdateAllocatedStats() public void UpdateAllocatedStats()
{ {
Strength.RemoveAllModifiersFromSource(allocatedSource); Strength.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AllocatedSource);
Agility.RemoveAllModifiersFromSource(allocatedSource); Agility.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AllocatedSource);
Intelligence.RemoveAllModifiersFromSource(allocatedSource); Intelligence.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AllocatedSource);
Spirit.RemoveAllModifiersFromSource(allocatedSource); Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AllocatedSource);
Vitality.RemoveAllModifiersFromSource(allocatedSource); Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AllocatedSource);
Strength.AddModifier(new StatModifier(AllocatedStatPoints[0], StatModType.Flat, allocatedSource)); Strength.AddModifier(new StatModifier(AllocatedStatPoints[0], StatModType.Flat, GameConstants.ObjectSources.AllocatedSource));
Agility.AddModifier(new StatModifier(AllocatedStatPoints[1], StatModType.Flat, allocatedSource)); Agility.AddModifier(new StatModifier(AllocatedStatPoints[1], StatModType.Flat, GameConstants.ObjectSources.AllocatedSource));
Intelligence.AddModifier(new StatModifier(AllocatedStatPoints[2], StatModType.Flat, allocatedSource)); Intelligence.AddModifier(new StatModifier(AllocatedStatPoints[2], StatModType.Flat, GameConstants.ObjectSources.AllocatedSource));
Spirit.AddModifier(new StatModifier(AllocatedStatPoints[3], StatModType.Flat, allocatedSource)); Spirit.AddModifier(new StatModifier(AllocatedStatPoints[3], StatModType.Flat, GameConstants.ObjectSources.AllocatedSource));
Vitality.AddModifier(new StatModifier(AllocatedStatPoints[4], StatModType.Flat, allocatedSource)); Vitality.AddModifier(new StatModifier(AllocatedStatPoints[4], StatModType.Flat, GameConstants.ObjectSources.AllocatedSource));
characterData.availablePointsToAllocate = AvailablePointsToAllocate;
for (int i = 0; i < AllocatedStatPoints.Count; i++)
{
characterData.allocatedStatPoints[i] = AllocatedStatPoints[i];
}
GameStatePersistenceManager.Instance.SaveData(characterDataKey, characterData);
onUpdateStatValues.Invoke();
}
public void UpdateStatsBasedOnLevel()
{
Strength.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Agility.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Intelligence.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Strength.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
Agility.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
Intelligence.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
Spirit.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
Vitality.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
onUpdateStatValues.Invoke(); onUpdateStatValues.Invoke();
} }

View File

@ -15,6 +15,8 @@ namespace Kryz.CharacterStats.Examples
private CharacterStat[] stats; private CharacterStat[] stats;
private PlayerCharacterStats playerStats; private PlayerCharacterStats playerStats;
private bool InitializedListeners = false;
private void OnValidate() private void OnValidate()
{ {
if (statDisplaysParent != null) if (statDisplaysParent != null)
@ -50,6 +52,9 @@ namespace Kryz.CharacterStats.Examples
unallocated.ValueText.text = playerStats.AvailablePointsToAllocate.ToString(); unallocated.ValueText.text = playerStats.AvailablePointsToAllocate.ToString();
unallocated.gameObject.SetActive(playerStats.AvailablePointsToAllocate > 0); unallocated.gameObject.SetActive(playerStats.AvailablePointsToAllocate > 0);
if (InitializedListeners) return;
InitializedListeners = true;
addStatButtons[0].onClick.AddListener(() => AllocateStat(0)); addStatButtons[0].onClick.AddListener(() => AllocateStat(0));
addStatButtons[1].onClick.AddListener(() => AllocateStat(1)); addStatButtons[1].onClick.AddListener(() => AllocateStat(1));
addStatButtons[2].onClick.AddListener(() => AllocateStat(2)); addStatButtons[2].onClick.AddListener(() => AllocateStat(2));

8
Assets/Developer.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dc80d6444e69acc40b38265a3b154ece
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a224877d41002984d96ae19fef40b545
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 161bd8840e3476343b9a3480c50867d9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1 m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0} m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.057803705, g: 0.11606337, b: 0.12115526, a: 1} m_IndirectSpecularColor: {r: 0.05918527, g: 0.11863911, b: 0.12385166, a: 1}
m_UseRadianceAmbientProbe: 0 m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
@ -324,7 +324,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3} - target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 8 value: 5
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3} - target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -376,6 +376,40 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3}
--- !u!1 &300421732
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 300421733}
m_Layer: 0
m_Name: SceneSystems
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &300421733
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 300421732}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1581953137}
- {fileID: 874882671}
- {fileID: 694588456}
m_Father: {fileID: 0}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &301773743 --- !u!1 &301773743
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -682,7 +716,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3} - target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 5 value: 2
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3} - target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -758,13 +792,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 694588455} m_GameObject: {fileID: 694588455}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 300421733}
m_RootOrder: 4 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &694588457 --- !u!114 &694588457
MonoBehaviour: MonoBehaviour:
@ -817,13 +851,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 874882669} m_GameObject: {fileID: 874882669}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 300421733}
m_RootOrder: 3 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &966793465 --- !u!1 &966793465
GameObject: GameObject:
@ -1094,74 +1128,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1376262977} m_GameObject: {fileID: 1376262977}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1513366103
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1513366106}
- component: {fileID: 1513366105}
- component: {fileID: 1513366104}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1513366104
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1513366105
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1513366106
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1581953135 --- !u!1 &1581953135
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1199,13 +1165,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1581953135} m_GameObject: {fileID: 1581953135}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 300421733}
m_RootOrder: 10 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1792413851 --- !u!1001 &1792413851
PrefabInstance: PrefabInstance:
@ -1220,7 +1186,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3} - target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 6 value: 3
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3} - target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -1420,7 +1386,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3} - target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 9 value: 6
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3} - target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -1620,7 +1586,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3} - target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 7 value: 4
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3} - target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1 m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0} m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.03494937, g: 0.07314549, b: 0.076757714, a: 1} m_IndirectSpecularColor: {r: 0.05918527, g: 0.11863911, b: 0.12385166, a: 1}
m_UseRadianceAmbientProbe: 0 m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
@ -1388,7 +1388,7 @@ Transform:
- {fileID: 2012809889} - {fileID: 2012809889}
- {fileID: 1822752581} - {fileID: 1822752581}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 7 m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &475167000 --- !u!1 &475167000
GameObject: GameObject:
@ -1572,13 +1572,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 694588455} m_GameObject: {fileID: 694588455}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 1377185790}
m_RootOrder: 3 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &694588457 --- !u!114 &694588457
MonoBehaviour: MonoBehaviour:
@ -1703,7 +1703,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 13 m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &718777343 --- !u!1 &718777343
GameObject: GameObject:
@ -1815,7 +1815,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 12 m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &766227084 stripped --- !u!1 &766227084 stripped
GameObject: GameObject:
@ -2498,7 +2498,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 11 m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &1342093264 --- !u!1 &1342093264
GameObject: GameObject:
@ -2610,7 +2610,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 14 m_RootOrder: 10
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &1376262977 --- !u!1 &1376262977
GameObject: GameObject:
@ -2747,6 +2747,40 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1376262977} m_GameObject: {fileID: 1376262977}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1377185789
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1377185790}
m_Layer: 0
m_Name: SceneSystems
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1377185790
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1377185789}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 694588456}
- {fileID: 1581953137}
- {fileID: 1903974504}
m_Father: {fileID: 0}
m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1396130696 --- !u!1001 &1396130696
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -2927,7 +2961,7 @@ RectTransform:
- {fileID: 75797600} - {fileID: 75797600}
- {fileID: 772337588} - {fileID: 772337588}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 9 m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0} m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0}
@ -2947,74 +2981,6 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_AllowSwitchOff: 0 m_AllowSwitchOff: 0
--- !u!1 &1513366103
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1513366106}
- component: {fileID: 1513366105}
- component: {fileID: 1513366104}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1513366104
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1513366105
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1513366106
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1581953135 --- !u!1 &1581953135
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3052,13 +3018,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1581953135} m_GameObject: {fileID: 1581953135}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 1377185790}
m_RootOrder: 4 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1603731596 stripped --- !u!1 &1603731596 stripped
GameObject: GameObject:
@ -3185,7 +3151,7 @@ Transform:
- {fileID: 78738296} - {fileID: 78738296}
- {fileID: 418321840} - {fileID: 418321840}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 8 m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1792413851 --- !u!1001 &1792413851
PrefabInstance: PrefabInstance:
@ -3587,7 +3553,7 @@ Transform:
- {fileID: 1820647247} - {fileID: 1820647247}
- {fileID: 1944154660} - {fileID: 1944154660}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 6 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1902206354 stripped --- !u!1 &1902206354 stripped
GameObject: GameObject:
@ -3645,13 +3611,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1903974502} m_GameObject: {fileID: 1903974502}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 1377185790}
m_RootOrder: 5 m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1915668138 --- !u!1 &1915668138
GameObject: GameObject:
@ -4353,7 +4319,7 @@ Transform:
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_RootOrder: 10 m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &2113954741 --- !u!1 &2113954741
GameObject: GameObject:

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1 m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0} m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.057803705, g: 0.11606337, b: 0.12115526, a: 1} m_IndirectSpecularColor: {r: 0.05918527, g: 0.11863911, b: 0.12385166, a: 1}
m_UseRadianceAmbientProbe: 0 m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
@ -328,7 +328,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3} - target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 8 value: 6
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3} - target: {fileID: 479838, guid: 220408bf957d7d941ae64bf85c18ddc6, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -397,7 +397,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3} - target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 6 value: 4
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3} - target: {fileID: 435062, guid: a25b3d9a8119bf047b7609dba7f57302, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -675,7 +675,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3} - target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 7 value: 5
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3} - target: {fileID: 496276, guid: 27856c31c3afe6244a0f17a4fef0905a, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -848,13 +848,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 514430461} m_GameObject: {fileID: 514430461}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 785568044}
m_RootOrder: 9 m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &694588455 --- !u!1 &694588455
GameObject: GameObject:
@ -880,13 +880,13 @@ Transform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 694588455} m_GameObject: {fileID: 694588455}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 785568044}
m_RootOrder: 3 m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &694588459 --- !u!114 &694588459
MonoBehaviour: MonoBehaviour:
@ -902,6 +902,39 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
partyName: {fileID: 11400000, guid: dd13737dd7be13c4bb920013e3cf884d, type: 2} partyName: {fileID: 11400000, guid: dd13737dd7be13c4bb920013e3cf884d, type: 2}
button: {fileID: 966793467} button: {fileID: 966793467}
--- !u!1 &785568043
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 785568044}
m_Layer: 0
m_Name: SceneSystems
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &785568044
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785568043}
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_ConstrainProportionsScale: 0
m_Children:
- {fileID: 514430463}
- {fileID: 694588456}
m_Father: {fileID: 0}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &829583725 --- !u!1001 &829583725
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -919,7 +952,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3} - target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 5 value: 3
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3} - target: {fileID: 473298, guid: 12b4881e50528bb41b2a8973a5ad4ddc, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
@ -1378,74 +1411,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1376262977} m_GameObject: {fileID: 1376262977}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!1 &1513366103
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1513366106}
- component: {fileID: 1513366105}
- component: {fileID: 1513366104}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1513366104
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_SendPointerHoverToParent: 1
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0
--- !u!114 &1513366105
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1513366106
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1513366103}
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_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1598170556 --- !u!1001 &1598170556
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1463,7 +1428,7 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3} - target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3}
propertyPath: m_RootOrder propertyPath: m_RootOrder
value: 4 value: 2
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3} - target: {fileID: 464602, guid: 4caaae2897c6836438838e1a44287ce7, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 96ca2de4326426a41b20874c46b4aee3, type: 3}
m_Name: OnCurrentGameStateChanged
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7f67731bda7d8ad4d9a344ed20ea2147
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 83fe5321976e21d4b96c6d7182a5b8e2, type: 3}
m_Name: OnLoadLevelStarting
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c86d4c85a149f9648adda7cdcbdefbd9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -50,6 +50,8 @@ public class GameDifficultyController : MonoBehaviour, IPunObservable
// If this is the first instance, set it as the singleton // If this is the first instance, set it as the singleton
_instance = this; _instance = this;
DontDestroyOnLoad(gameObject); DontDestroyOnLoad(gameObject);
SetDifficultyLevel(0);
} }
// Start is called before the first frame update // Start is called before the first frame update

View File

@ -0,0 +1,12 @@
using UnityEngine;
using UnityEditor;
public class PlayerPrefsEditor : EditorWindow
{
[MenuItem("RiftMayhem/Clear PlayerPrefs")]
public static void ClearPlayerPrefs()
{
PlayerPrefs.DeleteAll();
Debug.Log("PlayerPrefs cleared.");
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0cf7f179b2cd2b04e93d65bb06ed9336
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

8
Assets/Scripts/Game.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dc0dcececd2d05f42bbb4081799989cd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,44 @@
public static class GameConstants
{
public static class PlayerPrefsKeys
{
#region PlayerPrefs Keys
public static string CharacterDataKey = "characterData";
public static string PlayerCoinKey = "playerCoin";
public static string GetCharacterDataKey(string characterName)
{
return CharacterDataKey + "-" + characterName;
}
public static string GetPlayerCoinKey(string playerName)
{
return PlayerCoinKey + "-" + playerName;
}
#endregion
}
public static class ObjectSources
{
#region Object Sources (example stat increase source)
public static object AllocatedSource = "Allocated";
public static object LevelSource = "Level";
#endregion
}
public static class NetworkEventCodes
{
#region Network Event Codes
public static byte ChangeLevelVoted = 112;
public static byte LoadLevelStarting = 113;
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 03a9da4f4b321ca4980053e0c9d30faa
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,101 @@
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class GameStateController : MonoBehaviour
{
#region Singleton
private static GameStateController _instance;
// Public reference to the singleton instance
public static GameStateController Instance
{
get
{
// If the instance doesn't exist, try to find it in the scene
if (_instance == null)
{
_instance = FindObjectOfType<GameStateController>();
// If it's still null, create a new GameObject and add the component
if (_instance == null)
{
GameObject singletonObject = new GameObject(typeof(GameStateController).Name);
_instance = singletonObject.AddComponent<GameStateController>();
}
}
return _instance;
}
}
#endregion
private GameState currentState;
public GameState CurrentState
{
get
{
return currentState;
}
private set
{
if (value != currentState)
{
currentState = value;
if (onCurrentGameStateChanged != null)
onCurrentGameStateChanged.Raise((int)currentState);
}
}
}
[Header("Events:")]
[SerializeField] private GameEvent_Int onCurrentGameStateChanged;
[Header("Listeners:")]
[SerializeField] private GameEventListener onLoadLevelStarting;
[SerializeField] private GameEventListener onGameSceneLoaded;
private void Awake()
{
DontDestroyOnLoad(this);
onLoadLevelStarting.Response.AddListener(HandleLoadLevelStartingEvent);
onGameSceneLoaded.Response.AddListener(HandleGameSceneLoadedEvent);
}
// Start is called before the first frame update
void Start()
{
CurrentState = GameState.Intro;
}
private void HandleLoadLevelStartingEvent()
{
CurrentState = GameState.Loading;
}
private void HandleGameSceneLoadedEvent()
{
if (PhotonNetwork.InRoom)
CurrentState = GameState.GameScene;
else
StartCoroutine(WaitForRoomConnection());
}
IEnumerator WaitForRoomConnection()
{
yield return new WaitUntil(() => PhotonNetwork.InRoom);
CurrentState = GameState.GameScene;
}
}
public enum GameState
{
Intro,
Menu,
Loading,
GameScene
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5ad9267625541ba46a79dca78ae62444
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class OnGameStateChanged : MonoBehaviour
{
[SerializeField] private GameEventListener_Int onCurrentGameStateChanged;
[Header("Settings:")]
[SerializeField] private GameState validState;
[Space(40f)]
public UnityEvent onValidStateActive = new UnityEvent();
public UnityEvent onInvalidStateActive = new UnityEvent();
private void Awake()
{
onCurrentGameStateChanged.Response.AddListener((newState) =>
{
if ((GameState)newState == validState)
onValidStateActive.Invoke();
else
onInvalidStateActive.Invoke();
});
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ef27cd93aa95dd84cb4d84c6e5fda899
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -152,6 +152,12 @@ public class NPCController : MonoBehaviour
} }
else else
{ {
if (possibleTargets[0] == null)
{
possibleTargets.RemoveAt(0);
return;
}
currentTarget = possibleTargets[0]; currentTarget = possibleTargets[0];
agent.speed = chasingAgentSpeed; agent.speed = chasingAgentSpeed;
patrolDestination = currentTarget.transform.position; patrolDestination = currentTarget.transform.position;
@ -165,7 +171,7 @@ public class NPCController : MonoBehaviour
if (counter >= timeBetweenAttacks) if (counter >= timeBetweenAttacks)
{ {
counter = 0f; counter = 0f;
if(!abilityBinder.ValidCoreAbility()) if (!abilityBinder.ValidCoreAbility())
abilityBinder.UsePrimaryAbility(); abilityBinder.UsePrimaryAbility();
else else

View File

@ -17,15 +17,16 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
[SerializeField] private GameEvent_Player onPlayerJoinedParty; [SerializeField] private GameEvent_Player onPlayerJoinedParty;
[SerializeField] private GameEvent_Player onPlayerLeftParty; [SerializeField] private GameEvent_Player onPlayerLeftParty;
[SerializeField] private GameEvent onLoadLevelStarting;
[SerializeField] private GameEventListener onGameSceneLoaded; [SerializeField] private GameEventListener onGameSceneLoaded;
[SerializeField] private GameEventListener_PhotonView onPlayerSpawned; [SerializeField] private GameEventListener_PhotonView onPlayerSpawned;
//[SerializeField] private TMP_Text nextRiftVoteText; //[SerializeField] private TMP_Text nextRiftVoteText;
private const byte nextRiftCommand = 112;
private int count = 0; private int count = 0;
private bool nextRiftVoted = false; private bool changeLevelVoted = false;
//private object inProgress = false; //private object inProgress = false;
private Dictionary<Player, bool> playerVoted = new Dictionary<Player, bool>(); private Dictionary<Player, bool> playerVoted = new Dictionary<Player, bool>();
@ -81,15 +82,14 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
public void OnGameSceneLoaded() public void OnGameSceneLoaded()
{ {
StartCoroutine(SpawnCharacterWithDelay()); StartCoroutine(SpawnCharacterWithDelay());
if (PhotonNetwork.LocalPlayer.IsMasterClient) if (PhotonNetwork.LocalPlayer.IsMasterClient && SceneManager.GetActiveScene().name != huntersInn)
StartCoroutine(SpawnEnemiesWithDelay()); StartCoroutine(SpawnEnemiesWithDelay());
} }
public IEnumerator SpawnCharacterWithDelay() public IEnumerator SpawnCharacterWithDelay()
{ {
yield return new WaitForSeconds(1f); yield return new WaitUntil(() => PhotonNetwork.InRoom);
PhotonNetwork.Instantiate("PlayableCharacters/" + charSelected.Value, Vector3.zero + new Vector3(3 * PhotonNetwork.LocalPlayer.ActorNumber, 0, 0), Quaternion.identity); PhotonNetwork.Instantiate("PlayableCharacters/" + charSelected.Value, Vector3.zero + new Vector3(3 * PhotonNetwork.LocalPlayer.ActorNumber, 0, 0), Quaternion.identity);
} }
@ -183,37 +183,43 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
onPlayerJoinedParty.Raise(photonView.Owner); onPlayerJoinedParty.Raise(photonView.Owner);
} }
public void RestartVote(Button button) public void ChangeLevelVote(Button button)
{ {
if (!PhotonNetwork.IsConnected) return; if (!PhotonNetwork.IsConnected) return;
if (nextRiftVoted) return; if (changeLevelVoted) return;
nextRiftVoted = true; changeLevelVoted = true;
button.interactable = false; button.interactable = false;
if (PhotonNetwork.CurrentRoom.PlayerCount == 1) if (PhotonNetwork.CurrentRoom.PlayerCount == 1)
{ {
CountVote(PhotonNetwork.LocalPlayer); CountVote(PhotonNetwork.LocalPlayer);
NetworkLoadRestart(); Send_All_OnLoadLevelStarting();
} }
else else
{ {
CountVote(PhotonNetwork.LocalPlayer); CountVote(PhotonNetwork.LocalPlayer);
RaiseEventOptions raiseEventOptions = new RaiseEventOptions { Receivers = ReceiverGroup.Others }; RaiseEventOptions raiseEventOptions = new RaiseEventOptions { Receivers = ReceiverGroup.Others };
PhotonNetwork.RaiseEvent(nextRiftCommand, PhotonNetwork.LocalPlayer, raiseEventOptions, SendOptions.SendReliable); PhotonNetwork.RaiseEvent(GameConstants.NetworkEventCodes.ChangeLevelVoted, PhotonNetwork.LocalPlayer, raiseEventOptions, SendOptions.SendReliable);
if (PhotonNetwork.IsMasterClient) if (PhotonNetwork.IsMasterClient)
{ {
if (count >= PhotonNetwork.CurrentRoom.PlayerCount) if (count >= PhotonNetwork.CurrentRoom.PlayerCount)
{ {
NetworkLoadRestart(); Send_All_OnLoadLevelStarting();
} }
} }
} }
} }
private void Send_All_OnLoadLevelStarting()
{
RaiseEventOptions raiseEventOptions = new RaiseEventOptions { Receivers = ReceiverGroup.All };
PhotonNetwork.RaiseEvent(GameConstants.NetworkEventCodes.LoadLevelStarting, 0, raiseEventOptions, SendOptions.SendReliable);
}
public void OnEvent(EventData photonEvent) public void OnEvent(EventData photonEvent)
{ {
if (photonEvent.Code == nextRiftCommand) if (photonEvent.Code == GameConstants.NetworkEventCodes.ChangeLevelVoted)
{ {
Player player = (Player)photonEvent.CustomData; Player player = (Player)photonEvent.CustomData;
Debug.Log(player); Debug.Log(player);
@ -224,7 +230,7 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
CountVote(player); CountVote(player);
if (count >= PhotonNetwork.CurrentRoom.PlayerCount) if (count >= PhotonNetwork.CurrentRoom.PlayerCount)
{ {
NetworkLoadRestart(); Send_All_OnLoadLevelStarting();
} }
} }
else else
@ -232,6 +238,13 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
CountVote(player); CountVote(player);
} }
} }
if (photonEvent.Code == GameConstants.NetworkEventCodes.LoadLevelStarting)
{
Debug.Log("loadlevelStarting");
UpdateGameStateOnLoadLevelStarting();
if (PhotonNetwork.IsMasterClient)
NetworkLoadVotedLevel();
}
} }
private void CountVote(Player player) private void CountVote(Player player)
@ -241,7 +254,7 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
//nextRiftVoteText.text = $"{count}/{PhotonNetwork.PlayerList.Length}"; //nextRiftVoteText.text = $"{count}/{PhotonNetwork.PlayerList.Length}";
} }
private void NetworkLoadRestart() private void NetworkLoadVotedLevel()
{ {
UpdateRoomPropertiesInProgress(false); UpdateRoomPropertiesInProgress(false);
@ -251,7 +264,12 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
{ {
yield return new WaitForSeconds(1.5f); yield return new WaitForSeconds(1.5f);
PhotonNetwork.LoadLevel(SceneManager.GetActiveScene().name == "Network_Initializer" ? "Network_Initializer_Replay" : "Network_Initializer"); PhotonNetwork.LoadLevel(SceneManager.GetActiveScene().name == huntersInn ? skellyard : huntersInn);
}
private void UpdateGameStateOnLoadLevelStarting()
{
onLoadLevelStarting.Raise();
} }
private void CheckRoomProperties() private void CheckRoomProperties()

View File

@ -0,0 +1,11 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Persistent : MonoBehaviour
{
private void Awake()
{
DontDestroyOnLoad(this);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2e00d8ecf7f34264684e360223789028
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,3 +1,4 @@
using Photon.Pun;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using TMPro; using TMPro;
@ -10,8 +11,21 @@ public class CoinBag : MonoBehaviour
public int currentCoin; public int currentCoin;
CoinData coinData = new CoinData();
string playerCoinKey;
private void Awake() private void Awake()
{ {
playerCoinKey = GameConstants.PlayerPrefsKeys.GetPlayerCoinKey(PhotonNetwork.NickName);
if (GameStatePersistenceManager.Instance.HasDataForKey(playerCoinKey))
{
coinData = GameStatePersistenceManager.Instance.LoadData<CoinData>(playerCoinKey);
currentCoin = coinData.totalCoin;
}
else
currentCoin = 0;
onCoinDrop.Response.AddListener(ChangeAmount); onCoinDrop.Response.AddListener(ChangeAmount);
UpdateCoinText(); UpdateCoinText();
@ -21,11 +35,35 @@ public class CoinBag : MonoBehaviour
public void ChangeAmount(int amount) public void ChangeAmount(int amount)
{ {
currentCoin += amount; currentCoin += amount;
SaveCoinData();
UpdateCoinText(); UpdateCoinText();
} }
public bool SpendCoin(int amount)
{
if (currentCoin - amount < 0)
return false;
currentCoin -= amount;
SaveCoinData();
UpdateCoinText();
return true;
}
private void UpdateCoinText() private void UpdateCoinText()
{ {
coinText.text = currentCoin.ToString(); coinText.text = currentCoin.ToString();
} }
private void SaveCoinData()
{
coinData.totalCoin = currentCoin;
GameStatePersistenceManager.Instance.SaveData(playerCoinKey, coinData);
}
} }

View File

@ -0,0 +1,22 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class CharacterData
{
public string playerOwnerID; //Future multiple accounts on same device + character selection
public int currentLevel;
public float currentExperience;
public int availablePointsToAllocate;
public int[] allocatedStatPoints;
public CharacterData()
{
currentLevel = 1;
currentExperience = 0;
availablePointsToAllocate = 0;
allocatedStatPoints = new int[5];
}
}

View File

@ -0,0 +1,14 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class CoinData
{
public int totalCoin;
public CoinData()
{
totalCoin = 0;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f230bae7726e24640a9acdff4fc90ac4
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -29,8 +29,6 @@ public class GameStatePersistenceManager : MonoBehaviour
} }
#endregion #endregion
public readonly string playerLevelKey = "playerLevel";
protected void Awake() protected void Awake()
{ {

View File

@ -1,12 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class PlayerData
{
public int currentLevel;
public float currentExperience;
public int availablePointsToAllocate;
public int[] allocatedStatPoints;
}

View File

@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CastBar : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d8bf7fd1bc940bb47a092a8838f66728
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CastBarFill : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8d8e7aab312c7744fbd0383567ab2d54
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: