From 0e4e85ff5aced814ae95b923ee94574ebaa112bb Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Sat, 23 Dec 2023 23:28:55 +0000 Subject: [PATCH] Todos updated --- Assets/GenerateTileMap.cs | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 45 insertions(+), 5 deletions(-) diff --git a/Assets/GenerateTileMap.cs b/Assets/GenerateTileMap.cs index 2d3e10f..46742ed 100644 --- a/Assets/GenerateTileMap.cs +++ b/Assets/GenerateTileMap.cs @@ -1,15 +1,18 @@ using System; using System.Collections; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Tilemaps; +using UnityEngine.UIElements; public class GenerateTileMap : MonoBehaviour { + public int? seed; public int width = 256; public int height = 256; - public float scale = 20f; - public float offsetX = 0f; - public float offsetY = 0f; + private float scale; + private float offsetX; + private float offsetY; Tilemap tilemap; public RuleTile ruleTile; //public List<TileBase> tiles; @@ -17,9 +20,43 @@ private void Awake() { tilemap = GetComponent<Tilemap>(); +#if DEBUG + //seed = 0123456789; +#endif + if (seed == null) + { + seed = GenerateSeed(9); + } + + SetSettingsFromSeed(seed.Value); } - public IEnumerator GenerateTiles(Action finishedCallback) + public void SetSettingsFromSeed(int seed) + { + UnityEngine.Random.State randomState = UnityEngine.Random.state; + + UnityEngine.Random.InitState(seed); + scale = UnityEngine.Random.Range(17f, 23f); + offsetX = UnityEngine.Random.Range(-10000f, 10000f); + offsetY = UnityEngine.Random.Range(-10000f, 10000f); + + UnityEngine.Random.state = randomState; + + } + + private int GenerateSeed(int size) + { + System.Random rand = new System.Random(); + string seedNumbers = "0123456789"; + char[] chars = new char[size]; + for (int i = 0; i < size; i++) + { + chars[i] = seedNumbers[rand.Next(seedNumbers.Length)]; + } + return int.Parse(new string(chars)); + } + + public IEnumerator GenerateTiles(Action finishedCallback, List<Vector3Int> destroyedTiles) { for (int x = 0; x < width; x++) { @@ -31,7 +68,10 @@ if (perlinNoise >= 0.3f) { - tilemap.SetTile(new Vector3Int(x, y), ruleTile); + if (!destroyedTiles.Contains(new Vector3Int(x, y, 0))) + { + tilemap.SetTile(new Vector3Int(x, y), ruleTile); + } } } -- Gitblit v1.9.3