Upgrade Godot Version & Work Towards Level Gen

This commit is contained in:
2023-12-10 00:22:06 +01:00
parent 0fa604298f
commit 51beabf526
866 changed files with 265 additions and 1302 deletions

View File

@ -0,0 +1,19 @@
class_name StandardRoom
extends TileMap
@export_category("Room Openings")
@export var left: bool = false
@export var right: bool = false
@export var top: bool = false
@export var bottom: bool = false
@onready
var room_size: Vector2i = self.get_used_rect().size
@onready
var cell_size: Vector2i = self.tile_set.tile_size
func is_block() -> bool:
if self.left or self.right or self.top or self.bottom:
return false
return true

View File

@ -2,7 +2,49 @@ class_name StandardWorldGenerator
extends WorldGenerator
@export
var parts: Array[PackedScene] = []
var rooms: Array[PackedScene] = []
var _rooms_left: Array[PackedScene] = []
var _rooms_right: Array[PackedScene] = []
var _rooms_top: Array[PackedScene] = []
var _rooms_bottom: Array[PackedScene] = []
var _rooms_blocking: Array[PackedScene] = []
var _progress_tracker: ProgressTracker = ProgressTracker.new(1)
func _generate(map: TileMap) -> void:
pass
self._sort_rooms(_progress_tracker.next_step("Sorting Rooms"))
func _sort_rooms(step_tracker: ProgressStepTracker) -> void:
step_tracker.complete.call_deferred()
step_tracker.set_substeps(len(self.rooms))
for room_scene in rooms:
step_tracker.substep(room_scene.get_name())
var room: StandardRoom = room_scene.instantiate()
if room.left:
self._rooms_left.append(room_scene)
if room.right:
self._rooms_right.append(room_scene)
if room.top:
self._rooms_top.append(room_scene)
if room.bottom:
self._rooms_bottom.append(room_scene)
if room.is_block():
self._rooms_blocking.append(room_scene)
room.queue_free()
if len(self._rooms_left) == 0:
push_error("0 left rooms!")
if len(self._rooms_right) == 0:
push_error("0 right rooms!")
if len(self._rooms_top) == 0:
push_error("0 top rooms!")
if len(self._rooms_bottom) == 0:
push_error("0 bottom rooms!")
if len(self._rooms_blocking) == 0:
push_warning("0 blocking rooms!")
func _get_progress_tracker() -> ProgressTracker:
return self._progress_tracker

View File

@ -7,3 +7,10 @@ func generate(map: TileMap) -> void:
return
self.call("_generate", map)
func get_progress_tracker() -> ProgressTracker:
if not self.has_method("_get_progress_tracker"):
push_error("Generator missing `_get_progress_tracker` method")
return null
return self.call("_get_progress_tracker")