diff --git a/Assets/03.Images/Ui/Tycoon/Tile.meta b/Assets/03.Images/Ui/Tycoon/Tile.meta new file mode 100644 index 000000000..2d98857de --- /dev/null +++ b/Assets/03.Images/Ui/Tycoon/Tile.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7925bf4ddbff8564e90c78e31d29629b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/03.Images/Ui/Tycoon/Tile/White Box Rounded.png b/Assets/03.Images/Ui/Tycoon/Tile/White Box Rounded.png new file mode 100644 index 000000000..56d679402 Binary files /dev/null and b/Assets/03.Images/Ui/Tycoon/Tile/White Box Rounded.png differ diff --git a/Assets/03.Images/Ui/Tycoon/Tile/White Box Rounded.png.meta b/Assets/03.Images/Ui/Tycoon/Tile/White Box Rounded.png.meta new file mode 100644 index 000000000..ed5f93598 --- /dev/null +++ b/Assets/03.Images/Ui/Tycoon/Tile/White Box Rounded.png.meta @@ -0,0 +1,130 @@ +fileFormatVersion: 2 +guid: 3f7e2890dfe9e6748b793ed18a7db18e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 256 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: +AssetOrigin: + serializedVersion: 1 + productId: 239234 + packageName: Easy Grid Builder Pro + packageVersion: 1.1.1 + assetPath: Assets/EasyGridBuilder Pro/Prefabs/Canvas Grid Samples/White Box Rounded.png + uploadId: 666238 diff --git a/Assets/Scirpts/CellManager.cs b/Assets/Scirpts/CellManager.cs new file mode 100644 index 000000000..314ffd93e --- /dev/null +++ b/Assets/Scirpts/CellManager.cs @@ -0,0 +1,68 @@ +using UnityEngine; + +public class CellManager : MonoBehaviour +{ + public RectTransform cellCanvas; + public RectTransform cell; + + // 0 == 비어있음, 1 == 차있음, 2 == 잠김 + private const int mapSize = 30; + private int[] tiles; + private RectTransform[] tileUIs; + + void Start() + { + tiles = new int [mapSize * mapSize]; + + // TODO: 데이터 입력 + for (int i = 0; i < mapSize * mapSize; i++) + { + tiles[i] = 0; + } + + cell.SetParent(null); + cell.gameObject.SetActive(false); + + tileUIs = new RectTransform[mapSize * mapSize]; + for (int i = 0; i < mapSize * mapSize; i++) + { + var newCell = Instantiate(cell, cellCanvas); + newCell.gameObject.SetActive(true); + tileUIs[i] = newCell.GetComponent(); + } + + UpdateCells(); + } + + Vector3 CellToWorld(Vector2Int cellPos) + { + var worldX = (cellPos.x - cellPos.y) * 0.5f * 1.414f; + var worldZ = -(cellPos.x + cellPos.y) * 0.5f * 1.414f; + return new Vector3(worldX, 0f, worldZ); + } + + Vector2Int WorldToCell(Vector3 worldPos) + { + var cellX = Mathf.RoundToInt((worldPos.x - worldPos.z)/ 1.414f); + var cellY = Mathf.RoundToInt((-worldPos.z - worldPos.x) / 1.414f); + return new Vector2Int(cellX, cellY); + } + + int GetCellID(Vector2Int cellPos) + { + return cellPos.x + cellPos.y * mapSize; + } + + Vector3 GetCellWorldPos(int cellPos) + { + return CellToWorld(new Vector2Int(cellPos / mapSize, cellPos % mapSize)); + } + + public void UpdateCells() + { + for (int i = 0; i < mapSize * mapSize; i++) + { + tileUIs[i].anchoredPosition3D = GetCellWorldPos(i); + } + } +} \ No newline at end of file diff --git a/Assets/Scirpts/CellManager.cs.meta b/Assets/Scirpts/CellManager.cs.meta new file mode 100644 index 000000000..1b938305d --- /dev/null +++ b/Assets/Scirpts/CellManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0cf09e2bb72956a419b94848ab48c404 \ No newline at end of file