diff --git a/game/game.gd b/game/game.gd index 0a20b84..854db54 100644 --- a/game/game.gd +++ b/game/game.gd @@ -3,6 +3,7 @@ extends Node @onready var pause_screen : Control = $PauseScreen @onready var game_over_screen : Control = $GameOverScreen +@onready var world_generator : WorldGenerator = $WorldGenerator func _ready() -> void: diff --git a/game/game.tscn b/game/game.tscn index 56aa626..6f13272 100644 --- a/game/game.tscn +++ b/game/game.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=5 format=3 uid="uid://dl7m4rqyj8mck"] +[gd_scene load_steps=6 format=3 uid="uid://dl7m4rqyj8mck"] [ext_resource type="Script" uid="uid://1wfu4iuddo25" path="res://game/game.gd" id="1_l1rk1"] [ext_resource type="PackedScene" uid="uid://d34nh3lc1gpb" path="res://menu/pause_screen.tscn" id="2_h7iqs"] [ext_resource type="PackedScene" uid="uid://dgc0087kvarx6" path="res://game/passage.tscn" id="3_4fuuu"] [ext_resource type="PackedScene" uid="uid://duxm8n62j2qt6" path="res://menu/game_over_screen.tscn" id="4_4fuuu"] +[ext_resource type="Script" uid="uid://b7e3xk14le68j" path="res://game/world/generators/world_generator.gd" id="5_dxrkv"] [node name="Game" type="Node2D"] script = ExtResource("1_l1rk1") @@ -26,6 +27,10 @@ offset_top = 172.0 offset_right = 320.0 offset_bottom = 172.0 +[node name="WorldGenerator" type="Node" parent="."] +script = ExtResource("5_dxrkv") +metadata/_custom_type_script = "uid://b7e3xk14le68j" + [connection signal="player_died" from="Passage" to="." method="_on_passage_player_died"] [connection signal="continue_game" from="PauseScreen" to="." method="_on_pause_screen_continue_game"] [connection signal="show_main_menu" from="PauseScreen" to="." method="_on_show_main_menu"] diff --git a/game/world/data/area_data.gd b/game/world/data/area_data.gd index d701e5a..a08d22f 100644 --- a/game/world/data/area_data.gd +++ b/game/world/data/area_data.gd @@ -7,4 +7,4 @@ extends Resource @export var inner_stages : Array[StageData] = [] @export var passages : Array[PassageData] = [] -@export var seed_string : String = "" +@export var seed_value : int = 0 diff --git a/game/world/data/enemy_data.gd b/game/world/data/enemy_data.gd index 67762a2..f68d0a5 100644 --- a/game/world/data/enemy_data.gd +++ b/game/world/data/enemy_data.gd @@ -2,6 +2,6 @@ class_name EnemyData extends Resource -@export var seed_string : String = "" +@export var seed_value : int = 0 @export var spawn_point : Vector2 diff --git a/game/world/data/passage_data.gd b/game/world/data/passage_data.gd index 3b260c6..d093f89 100644 --- a/game/world/data/passage_data.gd +++ b/game/world/data/passage_data.gd @@ -7,4 +7,4 @@ extends Resource @export var enemies : Array[EnemyData] = [] -@export var seed_string : String = "" +@export var seed_value : int = 0 diff --git a/game/world/data/sector_data.gd b/game/world/data/sector_data.gd index a8db563..59d85d5 100644 --- a/game/world/data/sector_data.gd +++ b/game/world/data/sector_data.gd @@ -5,4 +5,4 @@ extends Resource @export var previous_passages : Array[PassageData] = [] @export var next_passages : Array[PassageData] = [] -@export var seed_string : String = "" +@export var seed_value : int = 0 diff --git a/game/world/data/stage_data.gd b/game/world/data/stage_data.gd index 275dd69..afbe4c3 100644 --- a/game/world/data/stage_data.gd +++ b/game/world/data/stage_data.gd @@ -4,4 +4,4 @@ extends Resource @export var sectors : Array[SectorData] = [] -@export var seed_string : String = "" +@export var seed_value : int = 0 diff --git a/game/world/data/world_data.gd b/game/world/data/world_data.gd index 4258cd7..99cf8f1 100644 --- a/game/world/data/world_data.gd +++ b/game/world/data/world_data.gd @@ -4,4 +4,4 @@ extends Resource @export var areas : Array[AreaData] = [] -@export var seed_string : String = "" +@export var seed_value : int = 0 diff --git a/game/world/generators/area_generator.gd b/game/world/generators/area_generator.gd new file mode 100644 index 0000000..c62c1d2 --- /dev/null +++ b/game/world/generators/area_generator.gd @@ -0,0 +1,18 @@ +class_name AreaGenerator +extends Node + + +func generate(seed_value: int) -> AreaData: + var rng := RandomNumberGenerator.new() + rng.seed = seed_value + + var data : AreaData = AreaData.new() + data.seed_value = seed_value + + _fill_stages(rng, data) + + return data + + +func _fill_stages(rng: RandomNumberGenerator, data : AreaData) -> void: + pass diff --git a/game/world/generators/area_generator.gd.uid b/game/world/generators/area_generator.gd.uid new file mode 100644 index 0000000..ff700ab --- /dev/null +++ b/game/world/generators/area_generator.gd.uid @@ -0,0 +1 @@ +uid://bcq74qwnbylg2 diff --git a/game/world/generators/area_generator.tscn b/game/world/generators/area_generator.tscn new file mode 100644 index 0000000..a5b9fc6 --- /dev/null +++ b/game/world/generators/area_generator.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://c4l1cv3o25lhv"] + +[ext_resource type="Script" uid="uid://bcq74qwnbylg2" path="res://game/world/generators/area_generator.gd" id="1_hahgo"] + +[node name="AreaGenerator" type="Node"] +script = ExtResource("1_hahgo") diff --git a/game/world/generators/world_generator.gd b/game/world/generators/world_generator.gd index 1adee97..786914b 100644 --- a/game/world/generators/world_generator.gd +++ b/game/world/generators/world_generator.gd @@ -1,20 +1,27 @@ +class_name WorldGenerator extends Node -func generate(seed_string: String) -> WorldData: +@onready var area_generator : AreaGenerator = $AreaGenerator + + +const MAX_AREA_COUNT = 3 + + +func generate(seed_value: int) -> WorldData: + var rng := RandomNumberGenerator.new() + rng.seed = seed_value + var data : WorldData = WorldData.new() + data.seed_value = seed_value - data.seed_string = seed_string - - _fill_areas(data) + _fill_areas(rng, data) return data -func _fill_areas(data : WorldData) -> void: - const MAX_AREA_COUNT = 3 - var rng := RandomNumberGenerator.new() - rng.seed = hash(data.seed_string) - +func _fill_areas(rng: RandomNumberGenerator, data : WorldData) -> void: for i in MAX_AREA_COUNT: - pass + var seed_value := rng.randi() + var area := area_generator.generate(seed_value) + data.areas.append(area) diff --git a/game/world/generators/world_generator.tscn b/game/world/generators/world_generator.tscn index 63a3b13..0be9c0e 100644 --- a/game/world/generators/world_generator.tscn +++ b/game/world/generators/world_generator.tscn @@ -1,6 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://ggf76ayl53bb"] +[gd_scene load_steps=3 format=3 uid="uid://ggf76ayl53bb"] [ext_resource type="Script" uid="uid://b7e3xk14le68j" path="res://game/world/generators/world_generator.gd" id="1_c1jvo"] +[ext_resource type="PackedScene" uid="uid://c4l1cv3o25lhv" path="res://game/world/generators/area_generator.tscn" id="2_exe4n"] [node name="WorldGenerator" type="Node"] script = ExtResource("1_c1jvo") + +[node name="AreaGenerator" parent="." instance=ExtResource("2_exe4n")] diff --git a/images/main_font.png.import b/images/main_font.png.import index 5a8e918..670d9fe 100644 --- a/images/main_font.png.import +++ b/images/main_font.png.import @@ -22,4 +22,4 @@ ascent=0 descent=0 fallbacks=[] compress=true -scaling_mode=2 +scaling_mode=1 diff --git a/images/menu_font.png.import b/images/menu_font.png.import index c1c0441..412734c 100644 --- a/images/menu_font.png.import +++ b/images/menu_font.png.import @@ -22,4 +22,4 @@ ascent=0 descent=0 fallbacks=[] compress=true -scaling_mode=2 +scaling_mode=1