diff --git a/.idea/.idea.LunarInfantry/.idea/indexLayout.xml b/.idea/.idea.LunarInfantry/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.LunarInfantry/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.LunarInfantry/.idea/vcs.xml b/.idea/.idea.LunarInfantry/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/.idea.LunarInfantry/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Assets/Prefabs/Tile.prefab b/Assets/Prefabs/Tile.prefab
new file mode 100644
index 0000000..c3bdef7
--- /dev/null
+++ b/Assets/Prefabs/Tile.prefab
@@ -0,0 +1,579 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &34053551853932083
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2314119196799214922}
+ - component: {fileID: 5963408725662121310}
+ m_Layer: 0
+ m_Name: Square (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2314119196799214922
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 34053551853932083}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0.495, y: 0, z: 0}
+ m_LocalScale: {x: 0.01, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6749926303589179707}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &5963408725662121310
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 34053551853932083}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -10
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &1767920619852235015
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1317785139066134182}
+ - component: {fileID: 9211852804282108949}
+ m_Layer: 0
+ m_Name: Square (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1317785139066134182
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1767920619852235015}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.495, z: 0}
+ m_LocalScale: {x: 0.98, y: 0.01, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6749926303589179707}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &9211852804282108949
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1767920619852235015}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -10
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &2231700349162190119
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6749926303589179707}
+ m_Layer: 0
+ m_Name: Lines
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6749926303589179707
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2231700349162190119}
+ 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: 7544881510937694445}
+ - {fileID: 2314119196799214922}
+ - {fileID: 1317785139066134182}
+ - {fileID: 7617270969882136899}
+ m_Father: {fileID: 6392866861283185573}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2451272469029758330
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7544881510937694445}
+ - component: {fileID: 8936262062868761968}
+ m_Layer: 0
+ m_Name: Square
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7544881510937694445
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2451272469029758330}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -0.495, y: 0, z: 0}
+ m_LocalScale: {x: 0.01, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6749926303589179707}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &8936262062868761968
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2451272469029758330}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -10
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &2530996602262175354
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5775752739148890985}
+ - component: {fileID: 795349770586334226}
+ m_Layer: 0
+ m_Name: Highlight
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &5775752739148890985
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2530996602262175354}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0.98, y: 0.98, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6392866861283185573}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &795349770586334226
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2530996602262175354}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -9
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 0.8627451}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!1 &3763083152295056695
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6392866861283185573}
+ - component: {fileID: 7359796968934163911}
+ - component: {fileID: -6983208405962868106}
+ m_Layer: 0
+ m_Name: Tile
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6392866861283185573
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3763083152295056695}
+ 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: 6749926303589179707}
+ - {fileID: 5775752739148890985}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &7359796968934163911
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3763083152295056695}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -11
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0.5377358, g: 0.5377358, b: 0.5377358, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!114 &-6983208405962868106
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3763083152295056695}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a693893494730262783d7c528fec97bb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ highlight: {fileID: 2530996602262175354}
+ neighbors: []
+ sprite: {fileID: 7359796968934163911}
+ blocked: 0
+ hasUnit: 0
+--- !u!1 &8639074956751750509
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7617270969882136899}
+ - component: {fileID: 1967495836787330851}
+ m_Layer: 0
+ m_Name: Square (3)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7617270969882136899
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8639074956751750509}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.495, z: 0}
+ m_LocalScale: {x: 0.98, y: 0.01, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6749926303589179707}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &1967495836787330851
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8639074956751750509}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: -10
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0, g: 0, b: 0, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
diff --git a/Assets/Prefabs/Tile.prefab.meta b/Assets/Prefabs/Tile.prefab.meta
new file mode 100644
index 0000000..5f3163e
--- /dev/null
+++ b/Assets/Prefabs/Tile.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: da6a24e46891b2ed09fda1a256f63c62
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Prototype.unity b/Assets/Scenes/Prototype.unity
index a7c459d..3a705db 100644
--- a/Assets/Scenes/Prototype.unity
+++ b/Assets/Scenes/Prototype.unity
@@ -168,6 +168,9 @@ MonoBehaviour:
templateObject: {fileID: 214183925}
isMoving: 0
debounceDuration: 0.2
+ playerLayer:
+ serializedVersion: 2
+ m_Bits: 0
--- !u!1 &201300560
GameObject:
m_ObjectHideFlags: 0
@@ -311,7 +314,7 @@ GameObject:
- component: {fileID: 287802162}
- component: {fileID: 287802166}
- component: {fileID: 287802165}
- - component: {fileID: 287802164}
+ - component: {fileID: 287802167}
m_Layer: 0
m_Name: PlayerEntity
m_TagString: Untagged
@@ -384,28 +387,11 @@ Transform:
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 2.5, y: 3.5, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalScale: {x: 0.8, y: 0.8, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &287802164
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 287802161}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: accbecb6e5743481d886ca88a71415e7, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- health: 100
- maxHealth: 100
- maxMovement: 5
- canMove: 0
- invincible: 0
--- !u!50 &287802165
Rigidbody2D:
serializedVersion: 5
@@ -479,6 +465,26 @@ BoxCollider2D:
m_AutoTiling: 0
m_Size: {x: 1, y: 1}
m_EdgeRadius: 0
+--- !u!114 &287802167
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 287802161}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 87b2f3acfe362ceb498b8129365d99a9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ health: 100
+ maxHealth: 100
+ maxMovement: 3
+ currentTile: {fileID: 0}
+ canMove: 1
+ invincible: 0
+ hasMoved: 0
+ hasAttacked: 0
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
@@ -733,6 +739,56 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1049538432
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1049538434}
+ - component: {fileID: 1049538433}
+ m_Layer: 0
+ m_Name: TurnHandler
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1049538433
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1049538432}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b500f9191e72a9dfa887fcf64a93e315, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ playerEntities:
+ - {fileID: 287802167}
+ - {fileID: 1716557180}
+ - {fileID: 1710585246}
+ enemyEntities: []
+ currentGameState: 0
+--- !u!4 &1049538434
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1049538432}
+ 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: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1389484817
GameObject:
m_ObjectHideFlags: 0
@@ -808,6 +864,420 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1710585245
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1710585250}
+ - component: {fileID: 1710585249}
+ - component: {fileID: 1710585248}
+ - component: {fileID: 1710585247}
+ - component: {fileID: 1710585246}
+ m_Layer: 0
+ m_Name: PlayerEntity (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1710585246
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710585245}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 87b2f3acfe362ceb498b8129365d99a9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ health: 100
+ maxHealth: 100
+ maxMovement: 3
+ currentTile: {fileID: 0}
+ canMove: 1
+ invincible: 0
+ hasMoved: 0
+ hasAttacked: 0
+--- !u!50 &1710585247
+Rigidbody2D:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710585245}
+ m_BodyType: 2
+ m_Simulated: 1
+ m_UseFullKinematicContacts: 0
+ m_UseAutoMass: 0
+ m_Mass: 1
+ m_LinearDamping: 0
+ m_AngularDamping: 0.05
+ m_GravityScale: 1
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_Interpolate: 0
+ m_SleepingMode: 1
+ m_CollisionDetection: 0
+ m_Constraints: 0
+--- !u!61 &1710585248
+BoxCollider2D:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710585245}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Density: 1
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ForceSendLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_ForceReceiveLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_ContactCaptureLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_CallbackLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_IsTrigger: 0
+ m_UsedByEffector: 0
+ m_CompositeOperation: 0
+ m_CompositeOrder: 0
+ m_Offset: {x: 0, y: 0}
+ m_SpriteTilingProperty:
+ border: {x: 0, y: 0, z: 0, w: 0}
+ pivot: {x: 0.5, y: 0.5}
+ oldSize: {x: 1, y: 1}
+ newSize: {x: 1, y: 1}
+ adaptiveTilingThreshold: 0.5
+ drawMode: 0
+ adaptiveTiling: 0
+ m_AutoTiling: 0
+ m_Size: {x: 1, y: 1}
+ m_EdgeRadius: 0
+--- !u!212 &1710585249
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710585245}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0.5424528, g: 0.9869612, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1710585250
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1710585245}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 7.5, y: -0.5, z: 0}
+ m_LocalScale: {x: 0.8, y: 0.8, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1716557179
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1716557184}
+ - component: {fileID: 1716557183}
+ - component: {fileID: 1716557182}
+ - component: {fileID: 1716557181}
+ - component: {fileID: 1716557180}
+ m_Layer: 0
+ m_Name: PlayerEntity (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1716557180
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716557179}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 87b2f3acfe362ceb498b8129365d99a9, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ health: 100
+ maxHealth: 100
+ maxMovement: 3
+ currentTile: {fileID: 0}
+ canMove: 1
+ invincible: 0
+ hasMoved: 0
+ hasAttacked: 0
+--- !u!50 &1716557181
+Rigidbody2D:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716557179}
+ m_BodyType: 2
+ m_Simulated: 1
+ m_UseFullKinematicContacts: 0
+ m_UseAutoMass: 0
+ m_Mass: 1
+ m_LinearDamping: 0
+ m_AngularDamping: 0.05
+ m_GravityScale: 1
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_Interpolate: 0
+ m_SleepingMode: 1
+ m_CollisionDetection: 0
+ m_Constraints: 0
+--- !u!61 &1716557182
+BoxCollider2D:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716557179}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Density: 1
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ForceSendLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_ForceReceiveLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_ContactCaptureLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_CallbackLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_IsTrigger: 0
+ m_UsedByEffector: 0
+ m_CompositeOperation: 0
+ m_CompositeOrder: 0
+ m_Offset: {x: 0, y: 0}
+ m_SpriteTilingProperty:
+ border: {x: 0, y: 0, z: 0, w: 0}
+ pivot: {x: 0.5, y: 0.5}
+ oldSize: {x: 1, y: 1}
+ newSize: {x: 1, y: 1}
+ adaptiveTilingThreshold: 0.5
+ drawMode: 0
+ adaptiveTiling: 0
+ m_AutoTiling: 0
+ m_Size: {x: 1, y: 1}
+ m_EdgeRadius: 0
+--- !u!212 &1716557183
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716557179}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
+ m_Color: {r: 0.5424528, g: 0.9869612, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!4 &1716557184
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1716557179}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -2.5, y: -3.5, z: 0}
+ m_LocalScale: {x: 0.8, y: 0.8, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1764165477
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1764165478}
+ - component: {fileID: 1764165479}
+ m_Layer: 0
+ m_Name: GridManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1764165478
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1764165477}
+ 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: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &1764165479
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1764165477}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4edc7f2a8c49b96c98785f81b8172eaf, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ width: 40
+ height: 40
+ tilePrefab: {fileID: -6983208405962868106, guid: da6a24e46891b2ed09fda1a256f63c62, type: 3}
+ cam: {fileID: 519420031}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -818,4 +1288,8 @@ SceneRoots:
- {fileID: 42915309}
- {fileID: 214183927}
- {fileID: 287802163}
+ - {fileID: 1716557184}
+ - {fileID: 1710585250}
- {fileID: 1389484819}
+ - {fileID: 1049538434}
+ - {fileID: 1764165478}
diff --git a/Assets/Scripts/Enemy.cs b/Assets/Scripts/Enemy.cs
new file mode 100644
index 0000000..aed5298
--- /dev/null
+++ b/Assets/Scripts/Enemy.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+
+public class Enemy : Entity
+{
+ public int turnSpeed;
+ public int minimumAttackRange;
+ private PlayerEntity closestPlayer;
+
+ void Start()
+ {
+ turnSpeed = Random.Range(0, 100);
+ }
+
+ public void StartTurn()
+ {
+ //attack the nearest player?
+ TurnHandler.instance.UpdateTurns();
+ closestPlayer = FindClosestPlayer();
+ }
+
+ private PlayerEntity FindClosestPlayer()
+ {
+ PlayerEntity currentClosestPlayer = null;
+ foreach (PlayerEntity player in TurnHandler.instance.playerEntities)
+ {
+ if (!currentClosestPlayer || Vector3.Distance(player.transform.position, transform.position) < Vector3.Distance(currentClosestPlayer.transform.position, transform.position))
+ {
+ currentClosestPlayer = player;
+ }
+ }
+ return currentClosestPlayer;
+ }
+}
diff --git a/Assets/Scripts/Enemy.cs.meta b/Assets/Scripts/Enemy.cs.meta
new file mode 100644
index 0000000..b25a19c
--- /dev/null
+++ b/Assets/Scripts/Enemy.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 441b69580fe55f47ead9c7266bb4d363
\ No newline at end of file
diff --git a/Assets/Scripts/Entity.cs b/Assets/Scripts/Entity.cs
index e2c69bf..f1d0b76 100644
--- a/Assets/Scripts/Entity.cs
+++ b/Assets/Scripts/Entity.cs
@@ -9,9 +9,10 @@ public class Entity : MonoBehaviour
[Header("Movement")]
public int maxMovement;
+ public TileObject currentTile;
[Header("Flags")]
- public bool canMove;
+ public bool canMove = true;
public bool invincible;
public void TakeDamage(float damage)
@@ -33,9 +34,4 @@ public class Entity : MonoBehaviour
{
}
-
- private void OnMouseDown()
- {
- PlayerEntityMovement.instance.SelectEntity(this);
- }
}
diff --git a/Assets/Scripts/GridManager.cs b/Assets/Scripts/GridManager.cs
new file mode 100644
index 0000000..2718d5d
--- /dev/null
+++ b/Assets/Scripts/GridManager.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Tilemaps;
+
+public class GridManager : MonoBehaviour
+{
+ #region Statication
+
+ public static GridManager instance;
+
+ private void Awake()
+ {
+ if (instance != null && instance != this)
+ {
+ Destroy(gameObject);
+ return;
+ }
+ instance = this;
+ }
+
+ #endregion
+ [SerializeField] private int width;
+ [SerializeField] private int height;
+
+ [SerializeField] private TileObject tilePrefab;
+
+ [SerializeField] Camera cam;
+
+ private Dictionary allTiles = new();
+ private void Start()
+ {
+ GenerateGrid();
+ cam.transform.position = new Vector3((float)width / 2, (float)height / 2, 0);
+ foreach (PlayerEntity player in TurnHandler.instance.playerEntities)
+ {
+ player.currentTile = GetTile(player.transform.position);
+ }
+ foreach (Enemy enemy in TurnHandler.instance.enemyEntities)
+ {
+ enemy.currentTile = GetTile(enemy.transform.position);
+ }
+ }
+
+ private void GenerateGrid()
+ {
+ for (int x = 0; x < width; x++)
+ {
+ for (int y = 0; y < height; y++)
+ {
+ Vector2 pos = new Vector2(x - ((float)width / 2) + 0.5f, y - ((float)height / 2) + 0.5f);
+ TileObject newTile = Instantiate(tilePrefab, pos, Quaternion.identity);
+ newTile.name = $"Tile {x} {y}";
+ allTiles[pos] = newTile;
+ }
+ }
+ GetTileNeighbors();
+ }
+
+ private void GetTileNeighbors()
+ {
+ for (int x = 0; x < width; x++)
+ {
+ for (int y = 0; y < height; y++)
+ {
+ Vector2 pos = new Vector2(x - ((float)width / 2) + 0.5f, y - ((float)height / 2) + 0.5f);
+ TileObject currentTile = allTiles[pos];
+ if (GetTile(pos + Vector2.up)) { currentTile.neighbors.Add(GetTile(pos+Vector2.up));}
+ if (GetTile(pos + Vector2.down)) { currentTile.neighbors.Add(GetTile(pos+Vector2.down));}
+ if (GetTile(pos + Vector2.left)) { currentTile.neighbors.Add(GetTile(pos+Vector2.left));}
+ if (GetTile(pos + Vector2.right)) { currentTile.neighbors.Add(GetTile(pos+Vector2.right));}
+ }
+ }
+ }
+
+ public TileObject GetTile(Vector2 pos)
+ {
+ if (allTiles.TryGetValue(pos, out TileObject tile))
+ {
+ return tile;
+ }
+ return null;
+ }
+}
diff --git a/Assets/Scripts/GridManager.cs.meta b/Assets/Scripts/GridManager.cs.meta
new file mode 100644
index 0000000..6c5cce5
--- /dev/null
+++ b/Assets/Scripts/GridManager.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 4edc7f2a8c49b96c98785f81b8172eaf
\ No newline at end of file
diff --git a/Assets/Scripts/PlayerEntity.cs b/Assets/Scripts/PlayerEntity.cs
new file mode 100644
index 0000000..65e28f7
--- /dev/null
+++ b/Assets/Scripts/PlayerEntity.cs
@@ -0,0 +1,34 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PlayerEntity : Entity
+{
+ public bool hasMoved = false;
+ public bool hasAttacked = false;
+ private List moveableTiles = new();
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+
+ public void SkipTurn()
+ {
+ hasMoved = true;
+ hasAttacked = true;
+ TurnHandler.instance.UpdateTurns();
+ }
+ private void OnMouseDown()
+ {
+ if (!hasMoved && !PlayerEntityMovement.instance.isMoving)
+ {
+ PlayerEntityMovement.instance.SelectEntity(this);
+ SkipTurn();
+ }
+ }
+}
diff --git a/Assets/Scripts/PlayerEntity.cs.meta b/Assets/Scripts/PlayerEntity.cs.meta
new file mode 100644
index 0000000..b271ab1
--- /dev/null
+++ b/Assets/Scripts/PlayerEntity.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 87b2f3acfe362ceb498b8129365d99a9
\ No newline at end of file
diff --git a/Assets/Scripts/PlayerEntityMovement.cs b/Assets/Scripts/PlayerEntityMovement.cs
index 67ef28b..431c97c 100644
--- a/Assets/Scripts/PlayerEntityMovement.cs
+++ b/Assets/Scripts/PlayerEntityMovement.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using UnityEngine;
public class PlayerEntityMovement : MonoBehaviour
@@ -26,11 +27,16 @@ public class PlayerEntityMovement : MonoBehaviour
public bool isMoving;
private Vector3 mouseWorldPos;
+ private Vector3 mouseGridPos;
private Camera cam;
private float debounceTime;
[SerializeField] private float debounceDuration;
+ public LayerMask playerLayer;
+
+ private List currentMovableTiles = new();
+
private void Start()
{
cam = Camera.main;
@@ -39,16 +45,16 @@ public class PlayerEntityMovement : MonoBehaviour
private void Update()
{
mouseWorldPos = cam.ScreenToWorldPoint(Input.mousePosition);
+ mouseGridPos = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
if (debounceTime > 0)
{
debounceTime -= Time.deltaTime;
}
if (isMoving)
{
- templateObject.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
- if (Input.GetMouseButtonDown(0) && debounceTime <= 0)
+ templateObject.transform.position = mouseGridPos;
+ if (Input.GetMouseButtonDown(0) && debounceTime <= 0 && SelectLocation())
{
- SelectLocation();
isMoving = false;
}
}
@@ -58,19 +64,61 @@ public class PlayerEntityMovement : MonoBehaviour
{
selectedEntity = entitySelected;
isMoving = true;
- debounceTime = debounceDuration;
+ debounceTime = debounceDuration; //alotta for loops here
+ UncolorGrid();
+ currentMovableTiles.Clear();
+ foreach (TileObject tileObject in selectedEntity.currentTile.neighbors)
+ {
+ if (!tileObject.blocked && !tileObject.hasUnit)
+ {
+ currentMovableTiles.Add(tileObject);
+ tileObject.sprite.color = Color.green;
+ }
+ }
+ for (int i = 0; i < selectedEntity.maxMovement - 1; i++)
+ {
+ foreach (TileObject tileObject in currentMovableTiles.ToArray())
+ {
+ foreach (TileObject neighboringTiles in tileObject.neighbors)
+ {
+ if (!neighboringTiles.blocked && !neighboringTiles.hasUnit)
+ {
+ currentMovableTiles.Add(neighboringTiles);
+ neighboringTiles.sprite.color = Color.green;
+ }
+ }
+ }
+ }
CreateTemplate();
}
- private void SelectLocation()
+ private void UncolorGrid()
{
- selectedEntity.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
+ foreach (TileObject tileObject in currentMovableTiles)
+ {
+ tileObject.sprite.color = new Color(137,137,137);
+ }
+ }
+
+ private bool SelectLocation()
+ {
+ TileObject selectedTile = GridManager.instance.GetTile(mouseGridPos);
+ if (!selectedTile || selectedTile.blocked || selectedTile.hasUnit || !currentMovableTiles.Contains(selectedTile))
+ {
+ return false;
+ }
+ selectedEntity.currentTile.hasUnit = false;
+ selectedTile.hasUnit = true;
+ selectedEntity.currentTile = selectedTile;
+ selectedEntity.transform.position = mouseGridPos;
templateObject.SetActive(false);
+ UncolorGrid();
+ return true;
}
private void CreateTemplate()
{
templateObject.SetActive(true);
- templateObject.transform.position = gameplayGrid.GetCellCenterWorld(gameplayGrid.WorldToCell(mouseWorldPos));
+ templateObject.transform.position = mouseGridPos;
}
}
diff --git a/Assets/Scripts/TileObject.cs b/Assets/Scripts/TileObject.cs
new file mode 100644
index 0000000..212d845
--- /dev/null
+++ b/Assets/Scripts/TileObject.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TileObject : MonoBehaviour
+{
+ [SerializeField] private GameObject highlight;
+ public List neighbors = new();
+ public SpriteRenderer sprite;
+ [Header("Status")]
+ public bool blocked = false;
+ public bool hasUnit = false;
+ private void OnMouseEnter()
+ {
+ //highlight.SetActive(true);
+ }
+
+ private void OnMouseExit()
+ {
+ //highlight.SetActive(false);
+ }
+}
diff --git a/Assets/Scripts/TileObject.cs.meta b/Assets/Scripts/TileObject.cs.meta
new file mode 100644
index 0000000..d86aa49
--- /dev/null
+++ b/Assets/Scripts/TileObject.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: a693893494730262783d7c528fec97bb
\ No newline at end of file
diff --git a/Assets/Scripts/TurnHandler.cs b/Assets/Scripts/TurnHandler.cs
new file mode 100644
index 0000000..accc708
--- /dev/null
+++ b/Assets/Scripts/TurnHandler.cs
@@ -0,0 +1,78 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+public class TurnHandler : MonoBehaviour
+{
+ #region Statication
+
+ public static TurnHandler instance;
+
+ private void Awake()
+ {
+ if (instance != null && instance != this)
+ {
+ Destroy(gameObject);
+ return;
+ }
+ instance = this;
+ }
+
+ #endregion
+
+ public List playerEntities = new();
+ public List enemyEntities = new();
+ public enum GameState {PlayerTurn, EnemyTurn}
+ public GameState currentGameState = GameState.PlayerTurn;
+
+ private int currentEnemy;
+
+ private void SortEnemies()
+ {
+ enemyEntities = enemyEntities.OrderBy(o=>o.turnSpeed).ToList();
+ }
+
+ private void Start()
+ {
+ SortEnemies();
+ }
+
+ public void UpdateTurns()
+ {
+ if (currentGameState == GameState.PlayerTurn)
+ {
+ bool allDone = true;
+ foreach (PlayerEntity player in playerEntities)
+ {
+ if (!player.hasMoved || !player.hasAttacked)
+ {
+ allDone = false;
+ }
+ }
+ if (allDone)
+ {
+ foreach (PlayerEntity player in playerEntities)
+ {
+ player.hasMoved = false;
+ player.hasAttacked = false;
+ }
+ //currentGameState = GameState.EnemyTurn;
+ }
+ }
+ else if (currentGameState == GameState.EnemyTurn)
+ {
+ enemyEntities[currentEnemy].StartTurn();
+ currentEnemy++;
+ if (currentEnemy > enemyEntities.Count)
+ {
+ currentGameState = GameState.PlayerTurn;
+ foreach (PlayerEntity player in playerEntities)
+ {
+ player.hasMoved = false;
+ player.hasAttacked = false;
+ }
+ }
+ }
+ }
+}
diff --git a/Assets/Scripts/TurnHandler.cs.meta b/Assets/Scripts/TurnHandler.cs.meta
new file mode 100644
index 0000000..fe53211
--- /dev/null
+++ b/Assets/Scripts/TurnHandler.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: b500f9191e72a9dfa887fcf64a93e315
\ No newline at end of file
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
index 1c92a78..b0cd0b7 100644
--- a/ProjectSettings/TagManager.asset
+++ b/ProjectSettings/TagManager.asset
@@ -2,7 +2,7 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
- serializedVersion: 2
+ serializedVersion: 3
tags: []
layers:
- Default
@@ -11,7 +11,7 @@ TagManager:
-
- Water
- UI
- -
+ - Tile
-
-
-
@@ -41,3 +41,5 @@ TagManager:
- name: Default
uniqueID: 0
locked: 0
+ m_RenderingLayers:
+ - Default