From 75119a5510452e2ae08fff9456eee29ab402d525 Mon Sep 17 00:00:00 2001 From: Samir Badi Date: Thu, 27 Nov 2025 12:19:48 -0500 Subject: [PATCH] Refactor Entity spawn --- Assets/{ScriptableObjects.meta => Datas.meta} | 0 .../Characters.meta | 0 .../Characters/Daisy.asset | 0 .../Characters/Daisy.asset.meta | 0 .../Characters/Luigi.asset | 0 .../Characters/Luigi.asset.meta | 0 .../Characters/Mario.asset | 0 .../Characters/Mario.asset.meta | 0 .../Characters/Peach.asset | 0 .../Characters/Peach.asset.meta | 0 .../Characters/_Charaters.asset | 0 .../Characters/_Charaters.asset.meta | 0 .../{Scripts/Map.meta => Prefabs/Entity.meta} | 2 +- Assets/Prefabs/Entity/AIEntity.prefab | 79 ++++++ .../AIEntity.prefab.meta} | 2 +- Assets/Prefabs/Entity/PlayerEntity.prefab | 79 ++++++ .../Prefabs/Entity/PlayerEntity.prefab.meta | 7 + .../_EntityPrefab.prefab} | 23 +- .../Prefabs/Entity/_EntityPrefab.prefab.meta | 7 + Assets/Scenes/TestScene.unity | 267 ++++++++++++------ Assets/Scripts/Core/CharacterListSO.cs | 11 - Assets/Scripts/Core/CharacterObject.cs | 12 - Assets/Scripts/Core/CharacterSO.cs | 10 - Assets/Scripts/Core/Game.meta | 3 + .../Game/GameManager_SpawningEntityState.cs | 45 +++ .../GameManager_SpawningEntityState.cs.meta | 2 + Assets/Scripts/Core/GameManager.cs | 43 +++ Assets/Scripts/Core/GameManager.cs.meta | 3 + Assets/Scripts/Entity.meta | 3 + Assets/Scripts/Entity/AI.meta | 3 + Assets/Scripts/Entity/AI/AIObject.cs | 9 + Assets/Scripts/Entity/AI/AIObject.cs.meta | 3 + Assets/Scripts/Entity/EntityListSO.cs | 11 + .../EntityListSO.cs.meta} | 0 Assets/Scripts/Entity/EntityObject.cs | 12 + .../EntityObject.cs.meta} | 0 Assets/Scripts/Entity/EntitySO.cs | 10 + .../EntitySO.cs.meta} | 0 Assets/Scripts/Entity/Player.meta | 3 + Assets/Scripts/Entity/Player/PlayerObject.cs | 9 + .../Entity/Player/PlayerObject.cs.meta | 3 + Assets/Scripts/Map/MapManager.cs | 31 -- Assets/Scripts/Map/MapManager.cs.meta | 3 - Assets/Scripts/Map/States.meta | 3 - .../Map/States/MapManager_SpawnState.cs | 55 ---- .../Map/States/MapManager_SpawnState.cs.meta | 3 - 46 files changed, 525 insertions(+), 231 deletions(-) rename Assets/{ScriptableObjects.meta => Datas.meta} (100%) rename Assets/{ScriptableObjects => Datas}/Characters.meta (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Daisy.asset (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Daisy.asset.meta (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Luigi.asset (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Luigi.asset.meta (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Mario.asset (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Mario.asset.meta (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Peach.asset (100%) rename Assets/{ScriptableObjects => Datas}/Characters/Peach.asset.meta (100%) rename Assets/{ScriptableObjects => Datas}/Characters/_Charaters.asset (100%) rename Assets/{ScriptableObjects => Datas}/Characters/_Charaters.asset.meta (100%) rename Assets/{Scripts/Map.meta => Prefabs/Entity.meta} (77%) create mode 100644 Assets/Prefabs/Entity/AIEntity.prefab rename Assets/Prefabs/{CharacterObject.prefab.meta => Entity/AIEntity.prefab.meta} (74%) create mode 100644 Assets/Prefabs/Entity/PlayerEntity.prefab create mode 100644 Assets/Prefabs/Entity/PlayerEntity.prefab.meta rename Assets/Prefabs/{CharacterObject.prefab => Entity/_EntityPrefab.prefab} (55%) create mode 100644 Assets/Prefabs/Entity/_EntityPrefab.prefab.meta delete mode 100644 Assets/Scripts/Core/CharacterListSO.cs delete mode 100644 Assets/Scripts/Core/CharacterObject.cs delete mode 100644 Assets/Scripts/Core/CharacterSO.cs create mode 100644 Assets/Scripts/Core/Game.meta create mode 100644 Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs create mode 100644 Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs.meta create mode 100644 Assets/Scripts/Core/GameManager.cs create mode 100644 Assets/Scripts/Core/GameManager.cs.meta create mode 100644 Assets/Scripts/Entity.meta create mode 100644 Assets/Scripts/Entity/AI.meta create mode 100644 Assets/Scripts/Entity/AI/AIObject.cs create mode 100644 Assets/Scripts/Entity/AI/AIObject.cs.meta create mode 100644 Assets/Scripts/Entity/EntityListSO.cs rename Assets/Scripts/{Core/CharacterListSO.cs.meta => Entity/EntityListSO.cs.meta} (100%) create mode 100644 Assets/Scripts/Entity/EntityObject.cs rename Assets/Scripts/{Core/CharacterObject.cs.meta => Entity/EntityObject.cs.meta} (100%) create mode 100644 Assets/Scripts/Entity/EntitySO.cs rename Assets/Scripts/{Core/CharacterSO.cs.meta => Entity/EntitySO.cs.meta} (100%) create mode 100644 Assets/Scripts/Entity/Player.meta create mode 100644 Assets/Scripts/Entity/Player/PlayerObject.cs create mode 100644 Assets/Scripts/Entity/Player/PlayerObject.cs.meta delete mode 100644 Assets/Scripts/Map/MapManager.cs delete mode 100644 Assets/Scripts/Map/MapManager.cs.meta delete mode 100644 Assets/Scripts/Map/States.meta delete mode 100644 Assets/Scripts/Map/States/MapManager_SpawnState.cs delete mode 100644 Assets/Scripts/Map/States/MapManager_SpawnState.cs.meta diff --git a/Assets/ScriptableObjects.meta b/Assets/Datas.meta similarity index 100% rename from Assets/ScriptableObjects.meta rename to Assets/Datas.meta diff --git a/Assets/ScriptableObjects/Characters.meta b/Assets/Datas/Characters.meta similarity index 100% rename from Assets/ScriptableObjects/Characters.meta rename to Assets/Datas/Characters.meta diff --git a/Assets/ScriptableObjects/Characters/Daisy.asset b/Assets/Datas/Characters/Daisy.asset similarity index 100% rename from Assets/ScriptableObjects/Characters/Daisy.asset rename to Assets/Datas/Characters/Daisy.asset diff --git a/Assets/ScriptableObjects/Characters/Daisy.asset.meta b/Assets/Datas/Characters/Daisy.asset.meta similarity index 100% rename from Assets/ScriptableObjects/Characters/Daisy.asset.meta rename to Assets/Datas/Characters/Daisy.asset.meta diff --git a/Assets/ScriptableObjects/Characters/Luigi.asset b/Assets/Datas/Characters/Luigi.asset similarity index 100% rename from Assets/ScriptableObjects/Characters/Luigi.asset rename to Assets/Datas/Characters/Luigi.asset diff --git a/Assets/ScriptableObjects/Characters/Luigi.asset.meta b/Assets/Datas/Characters/Luigi.asset.meta similarity index 100% rename from Assets/ScriptableObjects/Characters/Luigi.asset.meta rename to Assets/Datas/Characters/Luigi.asset.meta diff --git a/Assets/ScriptableObjects/Characters/Mario.asset b/Assets/Datas/Characters/Mario.asset similarity index 100% rename from Assets/ScriptableObjects/Characters/Mario.asset rename to Assets/Datas/Characters/Mario.asset diff --git a/Assets/ScriptableObjects/Characters/Mario.asset.meta b/Assets/Datas/Characters/Mario.asset.meta similarity index 100% rename from Assets/ScriptableObjects/Characters/Mario.asset.meta rename to Assets/Datas/Characters/Mario.asset.meta diff --git a/Assets/ScriptableObjects/Characters/Peach.asset b/Assets/Datas/Characters/Peach.asset similarity index 100% rename from Assets/ScriptableObjects/Characters/Peach.asset rename to Assets/Datas/Characters/Peach.asset diff --git a/Assets/ScriptableObjects/Characters/Peach.asset.meta b/Assets/Datas/Characters/Peach.asset.meta similarity index 100% rename from Assets/ScriptableObjects/Characters/Peach.asset.meta rename to Assets/Datas/Characters/Peach.asset.meta diff --git a/Assets/ScriptableObjects/Characters/_Charaters.asset b/Assets/Datas/Characters/_Charaters.asset similarity index 100% rename from Assets/ScriptableObjects/Characters/_Charaters.asset rename to Assets/Datas/Characters/_Charaters.asset diff --git a/Assets/ScriptableObjects/Characters/_Charaters.asset.meta b/Assets/Datas/Characters/_Charaters.asset.meta similarity index 100% rename from Assets/ScriptableObjects/Characters/_Charaters.asset.meta rename to Assets/Datas/Characters/_Charaters.asset.meta diff --git a/Assets/Scripts/Map.meta b/Assets/Prefabs/Entity.meta similarity index 77% rename from Assets/Scripts/Map.meta rename to Assets/Prefabs/Entity.meta index e4c2366..5009420 100644 --- a/Assets/Scripts/Map.meta +++ b/Assets/Prefabs/Entity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a37d91f7155dad14a9e9a2e5c50c9e67 +guid: ebc7015247ecf204d9497288213b9513 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Prefabs/Entity/AIEntity.prefab b/Assets/Prefabs/Entity/AIEntity.prefab new file mode 100644 index 0000000..f1843d0 --- /dev/null +++ b/Assets/Prefabs/Entity/AIEntity.prefab @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &5439311404955432371 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_Name + value: AIEntity + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + insertIndex: -1 + addedObject: {fileID: -2439176753553472379} + m_SourcePrefab: {fileID: 100100000, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} +--- !u!1 &901642561250106903 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + m_PrefabInstance: {fileID: 5439311404955432371} + m_PrefabAsset: {fileID: 0} +--- !u!114 &-2439176753553472379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901642561250106903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e760319f9324fe896ee84eacad61e2b, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/CharacterObject.prefab.meta b/Assets/Prefabs/Entity/AIEntity.prefab.meta similarity index 74% rename from Assets/Prefabs/CharacterObject.prefab.meta rename to Assets/Prefabs/Entity/AIEntity.prefab.meta index 820d6a8..703cc56 100644 --- a/Assets/Prefabs/CharacterObject.prefab.meta +++ b/Assets/Prefabs/Entity/AIEntity.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fa26d7cdbf173f243b5247f94743d6dc +guid: b9dcf43e40292684a91afec135d66362 PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Prefabs/Entity/PlayerEntity.prefab b/Assets/Prefabs/Entity/PlayerEntity.prefab new file mode 100644 index 0000000..efc2dd3 --- /dev/null +++ b/Assets/Prefabs/Entity/PlayerEntity.prefab @@ -0,0 +1,79 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &5439311404955432371 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 522593612081797045, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + propertyPath: m_Name + value: PlayerEntity + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + insertIndex: -1 + addedObject: {fileID: -7990606747838050484} + m_SourcePrefab: {fileID: 100100000, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} +--- !u!1 &901642561250106903 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 5187891437386525604, guid: d08db87d041c1744abb1b94b454c8cb6, type: 3} + m_PrefabInstance: {fileID: 5439311404955432371} + m_PrefabAsset: {fileID: 0} +--- !u!114 &-7990606747838050484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 901642561250106903} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 27b78ede8ae04ba889029b8c75136bca, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/Entity/PlayerEntity.prefab.meta b/Assets/Prefabs/Entity/PlayerEntity.prefab.meta new file mode 100644 index 0000000..35ee49e --- /dev/null +++ b/Assets/Prefabs/Entity/PlayerEntity.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4bcc57c2df33eef4f90639808b9388c2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/CharacterObject.prefab b/Assets/Prefabs/Entity/_EntityPrefab.prefab similarity index 55% rename from Assets/Prefabs/CharacterObject.prefab rename to Assets/Prefabs/Entity/_EntityPrefab.prefab index 2ed8360..aed64c3 100644 --- a/Assets/Prefabs/CharacterObject.prefab +++ b/Assets/Prefabs/Entity/_EntityPrefab.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &2524050652412672907 +--- !u!1 &5187891437386525604 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,22 +8,21 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 3129035878156639630} - - component: {fileID: 3354258396458769265} + - component: {fileID: 522593612081797045} m_Layer: 0 - m_Name: CharacterObject + m_Name: _EntityPrefab m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &3129035878156639630 +--- !u!4 &522593612081797045 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2524050652412672907} + m_GameObject: {fileID: 5187891437386525604} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} @@ -32,15 +31,3 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &3354258396458769265 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2524050652412672907} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d0f9d5c017974107acb0bb6e6e117cf8, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Prefabs/Entity/_EntityPrefab.prefab.meta b/Assets/Prefabs/Entity/_EntityPrefab.prefab.meta new file mode 100644 index 0000000..8635a15 --- /dev/null +++ b/Assets/Prefabs/Entity/_EntityPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d08db87d041c1744abb1b94b454c8cb6 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/TestScene.unity b/Assets/Scenes/TestScene.unity index cdb98c4..c5c82c2 100644 --- a/Assets/Scenes/TestScene.unity +++ b/Assets/Scenes/TestScene.unity @@ -277,6 +277,37 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c7726a6ea1f8ea2409bb7e95bd89fff1, type: 3} +--- !u!1 &221641347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 221641348} + m_Layer: 0 + m_Name: SpawningPosition (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &221641348 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 221641347} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1095701397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &241099713 GameObject: m_ObjectHideFlags: 0 @@ -725,7 +756,7 @@ Transform: m_GameObject: {fileID: 617865562} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: -0.5, z: 0} m_LocalScale: {x: 20, y: 1, z: 20} m_ConstrainProportionsScale: 0 m_Children: [] @@ -854,6 +885,37 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &838201966 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 838201967} + m_Layer: 0 + m_Name: SpawningPosition (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &838201967 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 838201966} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1095701397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1063375176 GameObject: m_ObjectHideFlags: 0 @@ -916,6 +978,41 @@ Transform: m_Children: [] m_Father: {fileID: 241099714} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1095701396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1095701397} + m_Layer: 0 + m_Name: SpawningPositions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1095701397 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1095701396} + serializedVersion: 2 + 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: 1670126725} + - {fileID: 1257198775} + - {fileID: 838201967} + - {fileID: 221641348} + m_Father: {fileID: 1786723715} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1197839770 GameObject: m_ObjectHideFlags: 0 @@ -947,6 +1044,37 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1257198774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1257198775} + m_Layer: 0 + m_Name: SpawningPosition (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1257198775 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1257198774} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1095701397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1346566915 GameObject: m_ObjectHideFlags: 0 @@ -1009,6 +1137,37 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1670126724 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1670126725} + m_Layer: 0 + m_Name: SpawningPosition (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1670126725 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670126724} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1095701397} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1786723713 GameObject: m_ObjectHideFlags: 0 @@ -1018,35 +1177,14 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 1786723715} - - component: {fileID: 1786723714} + - component: {fileID: 1786723716} m_Layer: 0 - m_Name: MapManager + m_Name: GameManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1786723714 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1786723713} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e2c07e2ea440472a8e65c55a9ba005b3, type: 3} - m_Name: - m_EditorClassIdentifier: - characterList: {fileID: 11400000, guid: 1c7c20b63697f2845a5a5c2b32254770, type: 2} - characterPrefab: {fileID: 3354258396458769265, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - spawnPoints: - - {fileID: 1074654351} - - {fileID: 1941532538} - - {fileID: 404278099} - - {fileID: 332114629} - delayBeforeFirstSpawn: 1 - delayBetweenSpawn: 0.6 --- !u!4 &1786723715 Transform: m_ObjectHideFlags: 0 @@ -1059,9 +1197,30 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1095701397} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1786723716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1786723713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a08f275ee4964c31a339dd725df70431, type: 3} + m_Name: + m_EditorClassIdentifier: + playerPrefab: {fileID: -7990606747838050484, guid: 4bcc57c2df33eef4f90639808b9388c2, type: 3} + aiPrefab: {fileID: -2439176753553472379, guid: b9dcf43e40292684a91afec135d66362, type: 3} + entityList: {fileID: 11400000, guid: 1c7c20b63697f2845a5a5c2b32254770, type: 2} + spawnPositions: + - {fileID: 1670126725} + - {fileID: 1257198775} + - {fileID: 838201967} + - {fileID: 221641348} --- !u!1 &1868741663 GameObject: m_ObjectHideFlags: 0 @@ -1156,63 +1315,6 @@ Transform: m_Children: [] m_Father: {fileID: 241099714} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &7266953330162516684 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 2524050652412672907, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_Name - value: CharacterObject - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 3129035878156639630, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: fa26d7cdbf173f243b5247f94743d6dc, type: 3} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -1229,4 +1331,3 @@ SceneRoots: - {fileID: 88031185} - {fileID: 171304467} - {fileID: 1888508550} - - {fileID: 7266953330162516684} diff --git a/Assets/Scripts/Core/CharacterListSO.cs b/Assets/Scripts/Core/CharacterListSO.cs deleted file mode 100644 index 700b1a3..0000000 --- a/Assets/Scripts/Core/CharacterListSO.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace MedievalParty.Core -{ - [CreateAssetMenu(menuName = "ScriptableObjects/Characters/List", fileName = "Character")] - public class CharacterListSO: ScriptableObject - { - public List Characters; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Core/CharacterObject.cs b/Assets/Scripts/Core/CharacterObject.cs deleted file mode 100644 index b26f1c5..0000000 --- a/Assets/Scripts/Core/CharacterObject.cs +++ /dev/null @@ -1,12 +0,0 @@ -using UnityEngine; - -namespace MedievalParty.Core -{ - public class CharacterObject: MonoBehaviour - { - public void SetCharacter(CharacterSO character) - { - Instantiate(character.visual, transform); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Core/CharacterSO.cs b/Assets/Scripts/Core/CharacterSO.cs deleted file mode 100644 index 710712f..0000000 --- a/Assets/Scripts/Core/CharacterSO.cs +++ /dev/null @@ -1,10 +0,0 @@ -using UnityEngine; - -namespace MedievalParty.Core -{ - [CreateAssetMenu(menuName = "ScriptableObjects/Characters/Info", fileName = "Character")] - public class CharacterSO: ScriptableObject - { - public GameObject visual; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Core/Game.meta b/Assets/Scripts/Core/Game.meta new file mode 100644 index 0000000..26b3368 --- /dev/null +++ b/Assets/Scripts/Core/Game.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 63f3c439952a4a9c838bbb0d4fac1acc +timeCreated: 1764260237 \ No newline at end of file diff --git a/Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs b/Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs new file mode 100644 index 0000000..475d13a --- /dev/null +++ b/Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using MedievalParty.Entity; +using MedievalParty.Entity.AI; +using MedievalParty.Entity.Player; +using UnityEngine; + +namespace MedievalParty.Core.Game +{ + public class GameManager_SpawningEntityState: IState + { + private readonly PlayerObject _playerPrefab; + private readonly AIObject _AIPrefab; + private readonly List _spawningPositions; + private readonly EntityListSO _entityList; + private readonly Action _onSpawnCompleted; + + public GameManager_SpawningEntityState(PlayerObject playerPrefab, AIObject aiPrefab, List spawningPositions, EntityListSO entityList, Action onSpawnCompleted) + { + _playerPrefab = playerPrefab; + _AIPrefab = aiPrefab; + _spawningPositions = spawningPositions; + _entityList = entityList; + _onSpawnCompleted = onSpawnCompleted; + } + + public void OnEnter() + { + CreateEntity(_playerPrefab, _spawningPositions[0].position, _entityList.Characters[0]); + for (int i = 1; i < _spawningPositions.Count; i++) + CreateEntity(_AIPrefab, _spawningPositions[i].position, _entityList.Characters[i]); + + _onSpawnCompleted(); + } + + public void OnExit() { } + public void OnUpdate() { } + + private void CreateEntity(EntityObject prefab, Vector3 spawn, EntitySO entity) + { + EntityObject obj = GameObject.Instantiate(prefab, spawn, Quaternion.identity); + obj.SetCharacter(entity); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs.meta b/Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs.meta new file mode 100644 index 0000000..00ba96d --- /dev/null +++ b/Assets/Scripts/Core/Game/GameManager_SpawningEntityState.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 602473e47fcfafd4cb52793f4747e538 \ No newline at end of file diff --git a/Assets/Scripts/Core/GameManager.cs b/Assets/Scripts/Core/GameManager.cs new file mode 100644 index 0000000..7d988d2 --- /dev/null +++ b/Assets/Scripts/Core/GameManager.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using MedievalParty.Core.Game; +using MedievalParty.Entity; +using MedievalParty.Entity.AI; +using MedievalParty.Entity.Player; +using UnityEngine; +using UnityEngine.Serialization; + +namespace MedievalParty.Core +{ + public class GameManager: StateBehaviour + { + public static GameManager Instance { get; private set; } + + [Header("Spawn")] + [SerializeField] private PlayerObject playerPrefab; + [SerializeField] private AIObject aiPrefab; + [SerializeField] private EntityListSO entityList; + [SerializeField] private List spawnPositions; + + private void Awake() + { + if (Instance) + { + Debug.LogWarning($"{typeof(GameManager)} already exist! {transform}"); + Destroy(gameObject); + return; + } + + Instance = this; + } + + protected override void Start() + { + base.Start(); + + GameManager_SpawningEntityState spawningEntity = new GameManager_SpawningEntityState(playerPrefab, aiPrefab, spawnPositions, entityList, ChangeState); + + ChangeState(spawningEntity); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/GameManager.cs.meta b/Assets/Scripts/Core/GameManager.cs.meta new file mode 100644 index 0000000..f0b14d4 --- /dev/null +++ b/Assets/Scripts/Core/GameManager.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a08f275ee4964c31a339dd725df70431 +timeCreated: 1764259980 \ No newline at end of file diff --git a/Assets/Scripts/Entity.meta b/Assets/Scripts/Entity.meta new file mode 100644 index 0000000..cb7193b --- /dev/null +++ b/Assets/Scripts/Entity.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4735949433c945c8803757603e376e49 +timeCreated: 1764259209 \ No newline at end of file diff --git a/Assets/Scripts/Entity/AI.meta b/Assets/Scripts/Entity/AI.meta new file mode 100644 index 0000000..6632233 --- /dev/null +++ b/Assets/Scripts/Entity/AI.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8902e1f13d7949318d1f6ecb43b7ae11 +timeCreated: 1764259681 \ No newline at end of file diff --git a/Assets/Scripts/Entity/AI/AIObject.cs b/Assets/Scripts/Entity/AI/AIObject.cs new file mode 100644 index 0000000..54cf75f --- /dev/null +++ b/Assets/Scripts/Entity/AI/AIObject.cs @@ -0,0 +1,9 @@ +using MedievalParty.Core; + +namespace MedievalParty.Entity.AI +{ + public class AIObject: EntityObject + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/Entity/AI/AIObject.cs.meta b/Assets/Scripts/Entity/AI/AIObject.cs.meta new file mode 100644 index 0000000..38e2c92 --- /dev/null +++ b/Assets/Scripts/Entity/AI/AIObject.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5e760319f9324fe896ee84eacad61e2b +timeCreated: 1764259743 \ No newline at end of file diff --git a/Assets/Scripts/Entity/EntityListSO.cs b/Assets/Scripts/Entity/EntityListSO.cs new file mode 100644 index 0000000..0444cb9 --- /dev/null +++ b/Assets/Scripts/Entity/EntityListSO.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace MedievalParty.Entity +{ + [CreateAssetMenu(menuName = "ScriptableObjects/Entities/List", fileName = "Character")] + public class EntityListSO: ScriptableObject + { + public List Characters; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/CharacterListSO.cs.meta b/Assets/Scripts/Entity/EntityListSO.cs.meta similarity index 100% rename from Assets/Scripts/Core/CharacterListSO.cs.meta rename to Assets/Scripts/Entity/EntityListSO.cs.meta diff --git a/Assets/Scripts/Entity/EntityObject.cs b/Assets/Scripts/Entity/EntityObject.cs new file mode 100644 index 0000000..9f107fb --- /dev/null +++ b/Assets/Scripts/Entity/EntityObject.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace MedievalParty.Entity +{ + public abstract class EntityObject: MonoBehaviour + { + public void SetCharacter(EntitySO entity) + { + Instantiate(entity.visual, transform); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/CharacterObject.cs.meta b/Assets/Scripts/Entity/EntityObject.cs.meta similarity index 100% rename from Assets/Scripts/Core/CharacterObject.cs.meta rename to Assets/Scripts/Entity/EntityObject.cs.meta diff --git a/Assets/Scripts/Entity/EntitySO.cs b/Assets/Scripts/Entity/EntitySO.cs new file mode 100644 index 0000000..c84a0d1 --- /dev/null +++ b/Assets/Scripts/Entity/EntitySO.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace MedievalParty.Entity +{ + [CreateAssetMenu(menuName = "ScriptableObjects/Entities/Info", fileName = "Entity")] + public class EntitySO: ScriptableObject + { + public GameObject visual; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Core/CharacterSO.cs.meta b/Assets/Scripts/Entity/EntitySO.cs.meta similarity index 100% rename from Assets/Scripts/Core/CharacterSO.cs.meta rename to Assets/Scripts/Entity/EntitySO.cs.meta diff --git a/Assets/Scripts/Entity/Player.meta b/Assets/Scripts/Entity/Player.meta new file mode 100644 index 0000000..44d9c6f --- /dev/null +++ b/Assets/Scripts/Entity/Player.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 651336f7d4134bd2b74fe8aff4fbf0e4 +timeCreated: 1764259658 \ No newline at end of file diff --git a/Assets/Scripts/Entity/Player/PlayerObject.cs b/Assets/Scripts/Entity/Player/PlayerObject.cs new file mode 100644 index 0000000..656887a --- /dev/null +++ b/Assets/Scripts/Entity/Player/PlayerObject.cs @@ -0,0 +1,9 @@ +using MedievalParty.Core; + +namespace MedievalParty.Entity.Player +{ + public class PlayerObject: EntityObject + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/Entity/Player/PlayerObject.cs.meta b/Assets/Scripts/Entity/Player/PlayerObject.cs.meta new file mode 100644 index 0000000..fff9275 --- /dev/null +++ b/Assets/Scripts/Entity/Player/PlayerObject.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 27b78ede8ae04ba889029b8c75136bca +timeCreated: 1764259766 \ No newline at end of file diff --git a/Assets/Scripts/Map/MapManager.cs b/Assets/Scripts/Map/MapManager.cs deleted file mode 100644 index fe0ed71..0000000 --- a/Assets/Scripts/Map/MapManager.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System.Collections.Generic; -using MedievalParty.Core; -using MedievalParty.Map.States; -using UnityEngine; - -namespace MedievalParty.Map -{ - public class MapManager: StateBehaviour - { - [Header("Characters")] - [SerializeField] private CharacterListSO characterList; - [SerializeField] private CharacterObject characterPrefab; - - [Header("Spawn")] - [SerializeField] private List spawnPoints; - [SerializeField] private float delayBeforeFirstSpawn = 1f; - [SerializeField] private float delayBetweenSpawn = .6f; - - protected override void Start() - { - base.Start(); - - MapManager_SpawnState spawnState = - new MapManager_SpawnState(characterList, characterPrefab, spawnPoints, delayBeforeFirstSpawn, delayBetweenSpawn); - - spawnState.onSpawnOver += (_, _) => ChangeState(); - - ChangeState(spawnState); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Map/MapManager.cs.meta b/Assets/Scripts/Map/MapManager.cs.meta deleted file mode 100644 index 7039cc6..0000000 --- a/Assets/Scripts/Map/MapManager.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: e2c07e2ea440472a8e65c55a9ba005b3 -timeCreated: 1759432414 \ No newline at end of file diff --git a/Assets/Scripts/Map/States.meta b/Assets/Scripts/Map/States.meta deleted file mode 100644 index b1f385a..0000000 --- a/Assets/Scripts/Map/States.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 2dd8bd760a7040bfa6d661420f71de39 -timeCreated: 1759433080 \ No newline at end of file diff --git a/Assets/Scripts/Map/States/MapManager_SpawnState.cs b/Assets/Scripts/Map/States/MapManager_SpawnState.cs deleted file mode 100644 index ca5476c..0000000 --- a/Assets/Scripts/Map/States/MapManager_SpawnState.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using MedievalParty.Core; -using UnityEngine; - -namespace MedievalParty.Map.States -{ - public class MapManager_SpawnState: IState - { - public event EventHandler onSpawnOver; - - private CharacterListSO _characterList; - private readonly CharacterObject _characterPrefab; - - private readonly List _spawnPoints; - private readonly float _delayBeforeFirstSpawn; - private readonly float _delayBetweenSpawn; - - private float _delay; - private int _index; - - public MapManager_SpawnState(CharacterListSO characterList, CharacterObject characterPrefab, List spawnPoints, float delayBeforeFirstSpawn, float delayBetweenSpawn) - { - _characterList = characterList; - _characterPrefab = characterPrefab; - _spawnPoints = spawnPoints; - _delayBeforeFirstSpawn = delayBeforeFirstSpawn; - _delayBetweenSpawn = delayBetweenSpawn; - } - - public void OnEnter() - { - _delay = _delayBeforeFirstSpawn; - _index = 0; - } - public void OnExit() { } - - public void OnUpdate() - { - _delay -= Time.deltaTime; - - if (_delay <= 0) - { - CharacterObject obj = GameObject.Instantiate(_characterPrefab, _spawnPoints[_index].position, Quaternion.identity); - obj.SetCharacter(_characterList.Characters[_index]); - - _delay = _delayBetweenSpawn; - _index ++; - - if(_index >= _characterList.Characters.Count) - onSpawnOver?.Invoke(this, EventArgs.Empty); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Map/States/MapManager_SpawnState.cs.meta b/Assets/Scripts/Map/States/MapManager_SpawnState.cs.meta deleted file mode 100644 index 6b1da37..0000000 --- a/Assets/Scripts/Map/States/MapManager_SpawnState.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 1584604e3d7644b288bca00e76b8d0d1 -timeCreated: 1759433169 \ No newline at end of file