From acf737cbadf12ab7d564d5b1245a4a54158c2ab3 Mon Sep 17 00:00:00 2001 From: Maciekxdabu <40292375+Maciekxdabu@users.noreply.github.com> Date: Mon, 16 May 2022 14:32:01 +0200 Subject: [PATCH] merloj: base tilemap done --- The project/Assets/Prefabs.meta | 8 + .../Assets/Prefabs/Dummy Soldier.prefab | 113 +++++++ .../Assets/Prefabs/Dummy Soldier.prefab.meta | 7 + The project/Assets/Scenes/Merloj.unity | 302 +++++++++++++++++- The project/Assets/Scripts.meta | 8 + The project/Assets/Scripts/DummySoldier.cs | 8 + .../Assets/Scripts/DummySoldier.cs.meta | 11 + The project/Assets/Scripts/TilemapManager.cs | 139 ++++++++ .../Assets/Scripts/TilemapManager.cs.meta | 11 + The project/Assets/Tilemap.meta | 8 + .../Assets/Tilemap/Soldier Palette.prefab | 182 +++++++++++ .../Tilemap/Soldier Palette.prefab.meta | 7 + The project/Packages/manifest.json | 2 + The project/Packages/packages-lock.json | 18 ++ 14 files changed, 822 insertions(+), 2 deletions(-) create mode 100644 The project/Assets/Prefabs.meta create mode 100644 The project/Assets/Prefabs/Dummy Soldier.prefab create mode 100644 The project/Assets/Prefabs/Dummy Soldier.prefab.meta create mode 100644 The project/Assets/Scripts.meta create mode 100644 The project/Assets/Scripts/DummySoldier.cs create mode 100644 The project/Assets/Scripts/DummySoldier.cs.meta create mode 100644 The project/Assets/Scripts/TilemapManager.cs create mode 100644 The project/Assets/Scripts/TilemapManager.cs.meta create mode 100644 The project/Assets/Tilemap.meta create mode 100644 The project/Assets/Tilemap/Soldier Palette.prefab create mode 100644 The project/Assets/Tilemap/Soldier Palette.prefab.meta diff --git a/The project/Assets/Prefabs.meta b/The project/Assets/Prefabs.meta new file mode 100644 index 00000000..fd0294ea --- /dev/null +++ b/The project/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44a57377b5f59704fb1006cb425512a8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Assets/Prefabs/Dummy Soldier.prefab b/The project/Assets/Prefabs/Dummy Soldier.prefab new file mode 100644 index 00000000..aaf25db9 --- /dev/null +++ b/The project/Assets/Prefabs/Dummy Soldier.prefab @@ -0,0 +1,113 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7329575924073430320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7329575924073430335} + - component: {fileID: 7329575924073430332} + - component: {fileID: 7329575924073430333} + - component: {fileID: 7329575924073430322} + - component: {fileID: 7329575924073430323} + m_Layer: 0 + m_Name: Dummy Soldier + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7329575924073430335 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7329575924073430320} + 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: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &7329575924073430332 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7329575924073430320} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7329575924073430333 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7329575924073430320} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &7329575924073430322 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7329575924073430320} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 0.5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &7329575924073430323 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7329575924073430320} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8cb9ceee24755fa4880d17603fefc63a, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/The project/Assets/Prefabs/Dummy Soldier.prefab.meta b/The project/Assets/Prefabs/Dummy Soldier.prefab.meta new file mode 100644 index 00000000..47aff1f4 --- /dev/null +++ b/The project/Assets/Prefabs/Dummy Soldier.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0cea408c577cfdf4fa0c7295d22ba421 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Assets/Scenes/Merloj.unity b/The project/Assets/Scenes/Merloj.unity index 5374151f..aefc50e1 100644 --- a/The project/Assets/Scenes/Merloj.unity +++ b/The project/Assets/Scenes/Merloj.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -123,6 +123,56 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &282616947 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 282616949} + - component: {fileID: 282616948} + m_Layer: 0 + m_Name: Managers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &282616948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282616947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2c5c3a8b933d60d48a4d66bd1e0d3489, type: 3} + m_Name: + m_EditorClassIdentifier: + mapSize: {x: 10, y: 5} + soldierStartingPosition: {x: 0, y: 0} + enemyStartingPosition: {x: 1, y: 0} + tilemap: {fileID: 1853262998} + soldierPrefab: {fileID: 7329575924073430320, guid: 0cea408c577cfdf4fa0c7295d22ba421, + type: 3} +--- !u!4 &282616949 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 282616947} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.9636345, y: 6.377094, z: 3.499856} + 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 &453924353 GameObject: m_ObjectHideFlags: 0 @@ -207,6 +257,82 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1067482839 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1067482841} + - component: {fileID: 1067482840} + m_Layer: 0 + m_Name: Grid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!156049354 &1067482840 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067482839} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 1 +--- !u!4 &1067482841 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1067482839} + 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: 1853262996} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1242078932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1242078933} + m_Layer: 0 + m_Name: ------- Other + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1242078933 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1242078932} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.9636345, y: 6.377094, z: 3.499856} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1460622992 GameObject: m_ObjectHideFlags: 0 @@ -217,6 +343,7 @@ GameObject: m_Component: - component: {fileID: 1460622994} - component: {fileID: 1460622993} + - component: {fileID: 1460622995} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -299,5 +426,176 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &1460622995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1460622992} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 1 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} +--- !u!1 &1773236752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1773236753} + m_Layer: 0 + m_Name: ------- Managers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1773236753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1773236752} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.9636345, y: 6.377094, z: 3.499856} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1853262995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1853262996} + - component: {fileID: 1853262998} + - component: {fileID: 1853262997} + m_Layer: 0 + m_Name: Soldier Map + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1853262996 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1853262995} + 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: 1067482841} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!483693784 &1853262997 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1853262995} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1839735485 &1853262998 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1853262995} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 diff --git a/The project/Assets/Scripts.meta b/The project/Assets/Scripts.meta new file mode 100644 index 00000000..4f91705e --- /dev/null +++ b/The project/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec79924713bd1874fa98d4a39406aaef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Assets/Scripts/DummySoldier.cs b/The project/Assets/Scripts/DummySoldier.cs new file mode 100644 index 00000000..06a166cc --- /dev/null +++ b/The project/Assets/Scripts/DummySoldier.cs @@ -0,0 +1,8 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DummySoldier : MonoBehaviour +{ + +} diff --git a/The project/Assets/Scripts/DummySoldier.cs.meta b/The project/Assets/Scripts/DummySoldier.cs.meta new file mode 100644 index 00000000..d01f6628 --- /dev/null +++ b/The project/Assets/Scripts/DummySoldier.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cb9ceee24755fa4880d17603fefc63a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Assets/Scripts/TilemapManager.cs b/The project/Assets/Scripts/TilemapManager.cs new file mode 100644 index 00000000..fe6c55c0 --- /dev/null +++ b/The project/Assets/Scripts/TilemapManager.cs @@ -0,0 +1,139 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Tilemaps; + +public class TilemapManager : MonoBehaviour +{ + private enum TileState + { + free, + taken, + outOfBounds + } + + public struct Tile + { + public DummySoldier standingSoldier; + } + + [Header("Common Values")] + + [SerializeField] private Vector2Int mapSize = new Vector2Int(5,5); + + [Header("Soldiers values")] + + [SerializeField] private Vector2Int soldierStartingPosition = Vector2Int.zero; + + [Header("Enemies values")] + + [SerializeField] private Vector2Int enemyStartingPosition = Vector2Int.zero; + + [Header("References")] + + [SerializeField] private Tilemap tilemap = null; + [SerializeField] private GameObject soldierPrefab = null; + + // private (do not edit) variables + + [Header("Debug (do not change)")] + + private Tile[,] tiles = null; + + // ---------- Unity messages + + private void Awake() + { + tiles = new Tile[mapSize.x, mapSize.y]; + } + + private void Start() + { + SpawnSoldier(soldierStartingPosition.x, soldierStartingPosition.y); + SpawnSoldier(enemyStartingPosition.x, enemyStartingPosition.y); + } + + private void OnValidate() + { + if (soldierStartingPosition.x < 0) + soldierStartingPosition.x = 0; + if (soldierStartingPosition.y < 0) + soldierStartingPosition.y = 0; + if (soldierStartingPosition.x >= mapSize.x) + soldierStartingPosition.x = mapSize.x - 1; + if (soldierStartingPosition.y >= mapSize.y) + soldierStartingPosition.y = mapSize.y - 1; + + if (enemyStartingPosition.x < 0) + enemyStartingPosition.x = 0; + if (enemyStartingPosition.y < 0) + enemyStartingPosition.y = 0; + if (enemyStartingPosition.x >= mapSize.x) + enemyStartingPosition.x = mapSize.x - 1; + if (enemyStartingPosition.y >= mapSize.y) + enemyStartingPosition.y = mapSize.y - 1; + } + + // ---------- public functions + + public bool SpawnSoldier(int x, int y) + { + if (GetTileState(x, y) != TileState.free) + return false; + + tiles[x, y].standingSoldier = Instantiate(soldierPrefab, tilemap.CellToWorld(new Vector3Int(x, y, 0)), Quaternion.identity).GetComponent(); + + if (tiles[x, y].standingSoldier != null) + return true; + + return false; + } + + public bool DespawnSoldier(int x, int y) + { + if (GetTileState(x, y) != TileState.taken) + return false; + + Destroy(tiles[x, y].standingSoldier.gameObject); + tiles[x, y].standingSoldier = null; + Debug.Log("Despaned a soldier"); + + return true; + } + + public DummySoldier GetSoldier(int x, int y) + { + if (GetTileState(x, y) != TileState.taken) + return null; + + return tiles[x,y].standingSoldier; + } + + public bool MoveSoldier(int x1, int y1, int x2, int y2) + { + if (GetTileState(x1, y1) == TileState.taken && GetTileState(x2, y2) == TileState.free) + { + tiles[x2, y2].standingSoldier = tiles[x1, y1].standingSoldier; + tiles[x1, y1].standingSoldier = null; + + tiles[x2, y2].standingSoldier.transform.position = tilemap.CellToWorld(new Vector3Int(x2, y2, 0)); + + return true; + } + + return false; + } + + // ---------- private methods + + private TileState GetTileState(int x, int y) + { + if (x < 0 || y < 0 || x >= mapSize.x || y >= mapSize.y) + return TileState.outOfBounds; + + if (tiles[x, y].standingSoldier == null) + return TileState.free; + + return TileState.taken; + } +} diff --git a/The project/Assets/Scripts/TilemapManager.cs.meta b/The project/Assets/Scripts/TilemapManager.cs.meta new file mode 100644 index 00000000..202d6f1c --- /dev/null +++ b/The project/Assets/Scripts/TilemapManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c5c3a8b933d60d48a4d66bd1e0d3489 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Assets/Tilemap.meta b/The project/Assets/Tilemap.meta new file mode 100644 index 00000000..b2e47968 --- /dev/null +++ b/The project/Assets/Tilemap.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7f3340806a75474f90df3f00ee737b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Assets/Tilemap/Soldier Palette.prefab b/The project/Assets/Tilemap/Soldier Palette.prefab new file mode 100644 index 00000000..03d102dc --- /dev/null +++ b/The project/Assets/Tilemap/Soldier Palette.prefab @@ -0,0 +1,182 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &855491699575970931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 824887088071817156} + - component: {fileID: 6446056160993035381} + - component: {fileID: 7055861002863317596} + m_Layer: 0 + m_Name: Layer1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &824887088071817156 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855491699575970931} + 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: 7651004929541920995} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1839735485 &6446056160993035381 +Tilemap: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855491699575970931} + m_Enabled: 1 + m_Tiles: {} + m_AnimatedTiles: {} + m_TileAssetArray: [] + m_TileSpriteArray: [] + m_TileMatrixArray: [] + m_TileColorArray: [] + m_TileObjectToInstantiateArray: [] + m_AnimationFrameRate: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Origin: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0, z: 1} + m_TileAnchor: {x: 0.5, y: 0.5, z: 0} + m_TileOrientation: 0 + m_TileOrientationMatrix: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 +--- !u!483693784 &7055861002863317596 +TilemapRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 855491699575970931} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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_ChunkSize: {x: 32, y: 32, z: 32} + m_ChunkCullingBounds: {x: 0, y: 0, z: 0} + m_MaxChunkCount: 16 + m_MaxFrameAge: 16 + m_SortOrder: 0 + m_Mode: 0 + m_DetectChunkCullingBounds: 0 + m_MaskInteraction: 0 +--- !u!1 &5152731241859247297 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7651004929541920995} + - component: {fileID: 1018106082772749047} + m_Layer: 0 + m_Name: Soldier Palette + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7651004929541920995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5152731241859247297} + 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: 824887088071817156} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!156049354 &1018106082772749047 +Grid: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5152731241859247297} + m_Enabled: 1 + m_CellSize: {x: 1, y: 1, z: 0} + m_CellGap: {x: 0, y: 0, z: 0} + m_CellLayout: 0 + m_CellSwizzle: 0 +--- !u!114 &2294619823297962897 +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: 12395, guid: 0000000000000000e000000000000000, type: 0} + m_Name: Palette Settings + m_EditorClassIdentifier: + cellSizing: 0 + m_TransparencySortMode: 0 + m_TransparencySortAxis: {x: 0, y: 0, z: 1} diff --git a/The project/Assets/Tilemap/Soldier Palette.prefab.meta b/The project/Assets/Tilemap/Soldier Palette.prefab.meta new file mode 100644 index 00000000..106bbf15 --- /dev/null +++ b/The project/Assets/Tilemap/Soldier Palette.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1775bbe27640f184186476034ad642c8 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/The project/Packages/manifest.json b/The project/Packages/manifest.json index 8a0cc114..b92b6a05 100644 --- a/The project/Packages/manifest.json +++ b/The project/Packages/manifest.json @@ -1,5 +1,7 @@ { "dependencies": { + "com.unity.2d.tilemap": "1.0.0", + "com.unity.2d.tilemap.extras": "2.2.2", "com.unity.collab-proxy": "1.15.16", "com.unity.ide.rider": "3.0.13", "com.unity.ide.visualstudio": "2.0.14", diff --git a/The project/Packages/packages-lock.json b/The project/Packages/packages-lock.json index d6d01b81..42510d6d 100644 --- a/The project/Packages/packages-lock.json +++ b/The project/Packages/packages-lock.json @@ -1,5 +1,23 @@ { "dependencies": { + "com.unity.2d.tilemap": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": {} + }, + "com.unity.2d.tilemap.extras": { + "version": "2.2.2", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.tilemap": "1.0.0", + "com.unity.2d.tilemap": "1.0.0", + "com.unity.ugui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.burst": { "version": "1.6.5", "depth": 1,