From f0c3035a5f88aa375b4a201b66a224759fbb525b Mon Sep 17 00:00:00 2001 From: Martin Felis Date: Thu, 6 Jan 2022 22:26:53 +0100 Subject: [PATCH] Made rendering more interesting --- project.godot | 5 +++- scenes/HexTileDrawer.gd | 8 ++++-- scenes/Island.gd | 60 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/project.godot b/project.godot index 80bdcd8..354375f 100644 --- a/project.godot +++ b/project.godot @@ -43,6 +43,9 @@ window/stretch/aspect="expand" view=false android=false export=false +environ=false +clear=false +clear_color=false [input] @@ -82,5 +85,5 @@ common/enable_pause_aware_picking=true [rendering] -environment/default_clear_color=Color( 0.0745098, 0.388235, 0.576471, 1 ) +environment/default_clear_color=Color( 0.027451, 0.133333, 0.34902, 1 ) environment/default_environment="res://default_env.tres" diff --git a/scenes/HexTileDrawer.gd b/scenes/HexTileDrawer.gd index 598f42d..69ab578 100644 --- a/scenes/HexTileDrawer.gd +++ b/scenes/HexTileDrawer.gd @@ -3,7 +3,8 @@ extends Node2D enum TileType { None, Sand, - Grass + Grass, + DeepGrass } var TileTypeFromString = { "None": TileType.None, "Sand": TileType.Sand, "Grass": TileType.Grass } @@ -30,11 +31,13 @@ func set_hex_scale(scale): var NoneColors = create_color_array ("#885555") var SandColors = create_color_array ("#ffa106") var GrassColors = create_color_array ("#4b9635") + var DeepGrassColors = create_color_array ("#2b5d1d") HexColors = { TileType.None: NoneColors, TileType.Sand: SandColors, - TileType.Grass: GrassColors + TileType.Grass: GrassColors, + TileType.DeepGrass: DeepGrassColors } func create_color_array(color: Color): @@ -50,4 +53,5 @@ func get_tile_color (type_name: String): "None": return HexColors[TileType.None] "Sand": return HexColors[TileType.Sand] "Grass": return HexColors[TileType.Grass] + "DeepGrass": return HexColors[TileType.DeepGrass] _ : return null diff --git a/scenes/Island.gd b/scenes/Island.gd index cd1a728..f7a30e0 100644 --- a/scenes/Island.gd +++ b/scenes/Island.gd @@ -95,12 +95,38 @@ func mark_grass(): +func mark_deep_grass(): + var old_tiles = tiles + tiles = {} + + for tile in old_tiles: + if old_tiles[tile] != "Grass": + tiles[tile] = old_tiles[tile] + continue + + var hex_coord = Globals.WorldToHex(tile) + + var neighbours = Globals.HexGrid.get_hex_at(hex_coord).get_all_adjacent() + var is_center_cell = true + for cell in neighbours: + var world_coord = Globals.HexToWorld(hex_coord + cell.axial_coords) + if world_coord in old_tiles.keys() and old_tiles[world_coord] != "Grass": + is_center_cell = false + break + + if is_center_cell: + tiles[tile] = "DeepGrass" + else: + tiles[tile] = "Grass" + + func generate(): var size = 62 generate_random_walk(size) extrude_island() mark_grass() + mark_deep_grass() calc_bbox() update() @@ -231,10 +257,44 @@ func draw_bsphere(): func _draw(): var transform = get_transform() + # draw transitions beach to deep water + for coord in tiles.keys(): + var color_array = null + + if tiles[coord] == "Sand": + draw_set_transform (coord + offset_world, 0, Vector2.ONE * 6) + color_array = HexTileDrawer.create_color_array(Color("#10479bcd")) + draw_polygon(HexTileDrawer.HexPoints, color_array) + + draw_set_transform (coord + offset_world, 0, Vector2.ONE * 4) + color_array = HexTileDrawer.create_color_array(Color("#10479bcd")) + draw_polygon(HexTileDrawer.HexPoints, color_array) + + draw_set_transform (coord + offset_world, 0, Vector2.ONE * 2) + color_array = HexTileDrawer.create_color_array(Color("#10479bcd")) + draw_polygon(HexTileDrawer.HexPoints, color_array) + + # draw white line around island as breaking waves + for coord in tiles.keys(): + if tiles[coord] == "Sand": + draw_set_transform (coord + offset_world, 0, Vector2.ONE * 1.05) + var color_array = HexTileDrawer.create_color_array(Color("#ffffffff")) + draw_polygon(HexTileDrawer.HexPoints, color_array) + + # regular tile drawing for coord in tiles.keys(): draw_set_transform (coord + offset_world, 0, Vector2.ONE) draw_polygon(HexTileDrawer.HexPoints, HexTileDrawer.get_tile_color(tiles[coord])) + # make grass tiles a bit more irregular + for coord in tiles.keys(): + var color_array = null + if tiles[coord] == "Grass": + draw_set_transform (coord + offset_world, 0, Vector2.ONE * 2) + color_array = HexTileDrawer.create_color_array(Color("#4f4b9635")) + draw_polygon(HexTileDrawer.HexPoints, color_array) + + if highlight_treasure and treasure_local_coords: draw_set_transform (treasure_local_coords + offset_world, 0, Vector2.ONE) draw_polygon(HexTileDrawer.HexPoints, HexTileDrawer.create_color_array("#922"))