//creates a new array of terrain based on the size and traits passed to it //called whenever the player changes something in the GridSetupUI public static void CreateNewGrid(GridSize size, GridTraits trait, float maxheight) { switch (size) { case GridSize.Small: _battleGrid = new Character[6, 6]; break; case GridSize.Medium: _battleGrid = new Character[8, 8]; break; case GridSize.Large: _battleGrid = new Character[10, 10]; break; default: break; } _moveGrid = new int[_battleGrid.GetLength(0), _battleGrid.GetLength(1)]; ResetMoveGrid(); _distanceGrid = new int[_battleGrid.GetLength(0), _battleGrid.GetLength(1)]; GenerateTerrain(trait, maxheight); _worldGrid.GenerateWorldGrid(_terrainGrid); }
//called whenever the player is messing around with the Grid setup UI public void ChangeGrid() { _gsChoice = (GridSize)_gridSizeDD.value; _gtChoice = (GridTraits)_gridTraitsDD.value; GridHandler.CreateNewGrid(_gsChoice, _gtChoice, _elevation); CheckGridPopulationMath(); }
//creates a single instance of a full grid public static void GenerateTerrain(GridTraits terrainTrait, float maxHeight) { _terrainGrid = new TerrainSpace[_battleGrid.GetLength(0), _battleGrid.GetLength(1)]; for (int y = 0; y < _terrainGrid.GetLength(1); y++) { for (int x = 0; x < _terrainGrid.GetLength(0); x++) { _terrainGrid[x, y] = GenerateTile(terrainTrait, maxHeight); } } }
//sets all relevent UI void SetUI() { GameObject enemiesholder = transform.GetChild(1).gameObject; GameObject enemytextempty = enemiesholder.transform.GetChild(1).gameObject; _numberOfEnemiesText = enemytextempty.transform.GetChild(0).GetComponent <InputField>(); SetEnemiesText(); GameObject ddHolder = transform.GetChild(2).gameObject; _gridSizeDD = ddHolder.transform.GetChild(1).GetComponent <Dropdown>(); GameObject terrainOptionHolder = ddHolder.transform.GetChild(2).gameObject; _gridTraitsDD = terrainOptionHolder.transform.GetChild(2).GetComponent <Dropdown>(); _ElevationSlide = terrainOptionHolder.transform.GetChild(4).GetComponent <Slider>(); _gsChoice = GridSize.Small; _gtChoice = GridTraits.NONE; _elevation = _ElevationSlide.value; }
//creates a single Tile(Terrain script) that populates the grid in data static TerrainSpace GenerateTile(GridTraits terrain, float maxheight) { int rand = UnityEngine.Random.Range(0, 101); float heightfloatvalue = UnityEngine.Random.Range(0f, maxheight); float height = (float)Math.Round(heightfloatvalue * 2f, MidpointRounding.AwayFromZero) / 2; //Debug.Log(height); int forestChance, waterChance, holeChance; switch (terrain) { case GridTraits.NONE: return(new TerrainSpace(height)); case GridTraits.FORESTS: forestChance = 75; if (rand < forestChance) { return(new ForestSpace(height)); } else { return(new TerrainSpace(height)); } case GridTraits.MARSH: waterChance = 50; if (rand < waterChance) { return(new WaterSpace(height)); } else { return(new TerrainSpace(height)); } case GridTraits.HOLES: holeChance = 30; if (rand < holeChance) { return(new HoleSpace(height)); } else { return(new TerrainSpace(height)); } case GridTraits.RANDOM: forestChance = 30; waterChance = 20; holeChance = 10; if (rand < forestChance) { return(new ForestSpace(height)); } else if (rand < forestChance + waterChance) { return(new WaterSpace(height)); } else if (rand < forestChance + waterChance + holeChance) { return(new HoleSpace(height)); } else { return(new TerrainSpace(height)); } default: return(new TerrainSpace()); } }