diff --git a/ui/map/map.gd b/ui/map/map.gd index 0521719..71fefbe 100644 --- a/ui/map/map.gd +++ b/ui/map/map.gd @@ -2,10 +2,8 @@ extends Node2D signal map_clicked -var terrain - func heightmap(): - for triangle in terrain.get_triangles(): + for triangle in Global.terrain.get_triangles(): var colors = Gradient.new() colors.add_point(0.999, Color("#9e0142")) # red colors.add_point(0.5, Color("#dc865d")) # orange @@ -21,7 +19,7 @@ func heightmap(): draw_polygon(triangle.polygon(), PoolColorArray([color])) var coastline = PoolVector2Array() - for edge in terrain.get_edges(): + for edge in Global.terrain.get_edges(): if edge.get_data("coast"): coastline.append(edge.line()[0]) coastline.append(edge.line()[1]) @@ -30,26 +28,26 @@ func heightmap(): draw_multiline(coastline, Color.black) func draw_triangles_edges(color=Color("#000000")): - for line in terrain.get_edges_as_line(): + for line in Global.terrain.get_edges_as_line(): draw_line(line[0], line[1], color) func draw_voronoi_edges(color=Color("#000000")): - for line in terrain.get_voronoi_edges_as_line(): + for line in Global.terrain.get_voronoi_edges_as_line(): draw_line(line[0], line[1], color) func draw_voronoi_cells_old(): var seen = [] - for edge_idx in terrain.edges(): + for edge_idx in Global.terrain.edges(): var triangles = [] var vertices = [] - var p = terrain._triangles[terrain.next_half_edge(edge_idx)] + var p = Global.terrain._triangles[Global.terrain.next_half_edge(edge_idx)] if not seen.has(p): seen.append(p) - var edges = terrain.edges_around_point(edge_idx) + var edges = Global.terrain.edges_around_point(edge_idx) for edge_around_idx in edges: - triangles.append(terrain.triangle_of_edge(edge_around_idx)) + triangles.append(Global.terrain.triangle_of_edge(edge_around_idx)) for triangle in triangles: - vertices.append(terrain.triangle_center(triangle)) + vertices.append(Global.terrain.triangle_center(triangle)) if triangles.size() > 2: var color = Color(randf(), randf(), randf(), 1) @@ -58,26 +56,26 @@ func draw_voronoi_cells_old(): voronoi_cell.append(Vector2(vertice.x, vertice.z)) draw_polygon(voronoi_cell, PoolColorArray([color])) func draw_voronoi_cells(): - for polygon in terrain.get_voronoi_cells_as_polygon(): + for polygon in Global.terrain.get_voronoi_cells_as_polygon(): var color = Color(randf(), randf(), randf(), 1) if polygon.size() > 2: draw_polygon(polygon, PoolColorArray([color])) func draw_voronoi_cells_convex_hull(): - for point_idx in terrain.points(): + for point_idx in Global.terrain.points(): var triangles = [] var vertices = [] - var incoming = terrain._points_to_half_edges.get(point_idx) + var incoming = Global.terrain._points_to_half_edges.get(point_idx) if incoming == null: triangles.append(0) else: - var edges = terrain.edges_around_point(incoming) + var edges = Global.terrain.edges_around_point(incoming) for edge_idx in edges: - triangles.append(terrain.triangle_of_edge(edge_idx)) + triangles.append(Global.terrain.triangle_of_edge(edge_idx)) for triangle_idx in triangles: - vertices.append(terrain.triangle_center(triangle_idx)) + vertices.append(Global.terrain.triangle_center(triangle_idx)) if triangles.size() > 2: var color = Color(randf(), randf(), randf(), 1) @@ -100,6 +98,5 @@ func _process(_delta): if new_position.x <= 2000 and new_position.y <= 2000: emit_signal("map_clicked", new_position) -func _on_Game_world_loaded(game_terrain): - terrain = game_terrain +func _on_Game_world_loaded(): update() diff --git a/world/World3d.gd b/world/World3d.gd index 36a8e0f..e20a3af 100644 --- a/world/World3d.gd +++ b/world/World3d.gd @@ -1,7 +1,5 @@ extends Spatial -var terrain - func _ready(): pass @@ -13,7 +11,7 @@ func draw_world(): st.begin(Mesh.PRIMITIVE_TRIANGLES) # st.add_smooth_group(true) - for triangle in terrain.get_triangles(): + for triangle in Global.terrain.get_triangles(): if not triangle.is_water(): if triangle.get_elevation() < 0: print(triangle.get_elevation()) @@ -46,6 +44,5 @@ func draw_world(): print(mi) add_child(mi) -func _on_Game_world_loaded(game_terrain): - terrain = game_terrain +func _on_Game_world_loaded(): draw_world() diff --git a/world/game.gd b/world/game.gd index 2c99216..5fb94b4 100644 --- a/world/game.gd +++ b/world/game.gd @@ -16,39 +16,32 @@ export(int) var river_proba = 200 var rng = RandomNumberGenerator.new() var noise = OpenSimplexNoise.new() -var terrain - func _ready(): rng.randomize() noise.seed = rng.randi() noise.octaves = octaves - - # var Global.terrain_name="bonjour90" - terrain = Global.terrain - - print(terrain.list()) - - if terrain.exists(Global.terrain_name): - terrain.load(Global.terrain_name) + + if Global.terrain.exists(Global.terrain_name): + Global.terrain.load(Global.terrain_name) else: - terrain.create(width,height,spacing,Global.terrain_name) + Global.terrain.create(width,height,spacing,Global.terrain_name) - if terrain.is_created(): + if Global.terrain.is_created(): init_data() - terrain.save_data() + Global.terrain.save_data() - if terrain.is_created() or terrain.is_loaded(): - + if Global.terrain.is_created() or Global.terrain.is_loaded(): + Global.terrain.load_data(Global.terrain_name) add_trees() - emit_signal("world_loaded", terrain) + emit_signal("world_loaded") else: - Global.print_debug("Pas de terrain, pas de construction ...") + Global.print_debug("Pas de Global.terrain, pas de construction ...") Global.print_debug("Pas de construction ..., pas de palais ...") Global.print_debug("Pas de palais ..., pas de palais.") func init_data(): - # for point in terrain.get_points(): + # for point in Global.terrain.get_points(): # point.set_elevation(point_find_elevation(point.point2d())) # point.set_data("water", point_is_water(point)) # point.set_data("mountain", point_is_mountain(point)) @@ -56,14 +49,14 @@ func init_data(): # fill_oceans() - # for point in terrain.get_points(): + # for point in Global.terrain.get_points(): # if point.get_data("water") and not point.get_data("ocean"): # point.set_elevation(0.1) # point.set_data("water", false) # point.set_data("coast", point_is_coast(point)) # if point.get_data("river"): # set_river_path(point) - for triangle in terrain.get_triangles(): + for triangle in Global.terrain.get_triangles(): triangle.set_elevation(find_elevation(triangle.center2d())) # triangle.set_data("elevation", triangle_find_elevation(triangle)) triangle.set_data("water", triangle_is_water(triangle)) @@ -76,19 +69,19 @@ func init_data(): # for point in triangle.points(): # if point.get_data("ocean"): # triangle.set_data("ocean", true) - # for edge in terrain.get_edges(): + # for edge in Global.terrain.get_edges(): # edge.set_data("coast", edge_is_coast(edge)) # edge.set_data("river", edge_is_river(edge)) func fill_oceans(): var stack = [] - for point in terrain.get_points(): + for point in Global.terrain.get_points(): if point.point2d().x < 10 and point.get_data("water") and not point.get_data("ocean"): stack.append(point.get_index()) while stack.size(): var current_point_id = stack.pop_back() - terrain.get_point(current_point_id).set_data("ocean", true) - for neighbour in terrain.get_point(current_point_id).points_around(): + Global.terrain.get_point(current_point_id).set_data("ocean", true) + for neighbour in Global.terrain.get_point(current_point_id).points_around(): if neighbour.get_data("water") and not neighbour.get_data("ocean"): stack.append(neighbour.get_index()) break @@ -103,13 +96,13 @@ func set_river_path(point): while stack.size(): var current_point_id = stack.pop_front() - if terrain.get_point(current_point_id).get_elevation() < start_elevation: + if Global.terrain.get_point(current_point_id).get_elevation() < start_elevation: waypoints.append(current_point_id) - start_elevation = terrain.get_point(current_point_id).get_elevation() + start_elevation = Global.terrain.get_point(current_point_id).get_elevation() stack = [] - if terrain.get_point(current_point_id).get_data("ocean"): + if Global.terrain.get_point(current_point_id).get_data("ocean"): break - for neighbour in terrain.get_point(current_point_id).points_around(): + for neighbour in Global.terrain.get_point(current_point_id).points_around(): if not came_from.has(neighbour.get_index()): stack.append(neighbour.get_index()) came_from[neighbour.get_index()] = current_point_id @@ -124,8 +117,8 @@ func set_river_path(point): path.append(point.get_index()) for index in path: - terrain.get_point(index).set_data("river", true) - # terrain.get_point(index).set_data("water", true) + Global.terrain.get_point(index).set_data("river", true) + # Global.terrain.get_point(index).set_data("water", true) # Point @@ -207,7 +200,7 @@ func edge_is_river(edge): func add_trees(): rng.randomize() var treescene = load("res://entities/environment/birchtree/birchtree.tscn") - for triangle in terrain.get_triangles(): + for triangle in Global.terrain.get_triangles(): if not triangle.get_data("water"): var num = rng.randi_range(0, 5) if num == 1: