Browse Source

Cleaning up functions and using Marker for spawn location

pull/14/head
Ryan Reed 1 month ago
parent
commit
727dca5a03
2 changed files with 33 additions and 32 deletions
  1. +29
    -31
      scenes/world/world.gd
  2. +4
    -1
      scenes/world/world.tscn

+ 29
- 31
scenes/world/world.gd View File

@ -2,25 +2,24 @@ class_name World
extends Node3D extends Node3D
@export var default_spawn_position: Vector3 = Vector3.ZERO
@export_group("Nodes and Scenes") @export_group("Nodes and Scenes")
@export var blocks_container: Node3D ## Container where spawned blocks are added @export var blocks_container: Node3D ## Container where spawned blocks are added
@export var dropped_items_container: Node3D ## Container where spawned dropped items are added @export var dropped_items_container: Node3D ## Container where spawned dropped items are added
@export var player_scene: PackedScene @export var player_scene: PackedScene
@export var spawn_position: Marker3D
func _ready() -> void: func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
EntityManager.create_block.connect(_create_block) EntityManager.create_block.connect(_create_block)
EntityManager.drop_block.connect(_create_dropped_block) EntityManager.drop_block.connect(_create_dropped_block)
EntityManager.reset_world.connect(_on_reset_world)
EntityManager.spawn_player.connect(_spawn_player)
EntityManager.reset_world.connect(clear_world)
EntityManager.spawn_player.connect(spawn_player)
clear_world() clear_world()
create_world() create_world()
## For resetting/emptying the world to allow for load_game or generating a new world
func clear_world() -> void: func clear_world() -> void:
for block: Block in blocks_container.get_children(): for block: Block in blocks_container.get_children():
block.queue_free() block.queue_free()
@ -29,12 +28,34 @@ func clear_world() -> void:
block.queue_free() block.queue_free()
func create_world() -> void: func create_world() -> void:
_initialize_ground()
generate_world()
_create_test_blocks() _create_test_blocks()
var default_transform: Transform3D = Transform3D() var default_transform: Transform3D = Transform3D()
default_transform.origin = default_spawn_position
_spawn_player(default_transform)
default_transform.origin = spawn_position.position
spawn_player(default_transform)
func generate_world() -> void:
for x: int in range(-10, 11):
for z: int in range(-10, 11):
var ground_position: Vector3 = Vector3(x, 0, z)
var random: int = randi_range(0, 1)
if random:
# Just for testing.. Would make more sense to just call _create_block() directly
EntityManager.create_block.emit("001", ground_position)
else:
EntityManager.create_block.emit("002", ground_position)
func spawn_player(player_position: Transform3D) -> void:
if has_node("Player"):
$Player.queue_free()
await $Player.tree_exited
var player: Player = player_scene.instantiate()
player.transform = player_position
player.name = "Player"
add_child(player)
func _create_block(id: String, block_position: Vector3) -> void: func _create_block(id: String, block_position: Vector3) -> void:
@ -57,29 +78,6 @@ func _create_test_blocks() -> void:
_create_block("00" + str(index), Vector3(index, 3, -5)) _create_block("00" + str(index), Vector3(index, 3, -5))
_create_dropped_block("00" + str(index), Vector3(index, 2, -3)) _create_dropped_block("00" + str(index), Vector3(index, 2, -3))
func _spawn_player(player_position: Transform3D) -> void:
if has_node("Player"):
$Player.queue_free()
await $Player.tree_exited
var player: Player = player_scene.instantiate()
player.transform = player_position
player.name = "Player"
add_child(player)
func _initialize_ground() -> void:
for x: int in range(-10, 11):
for z: int in range(-10, 11):
var ground_position: Vector3 = Vector3(x, 0, z)
var random: int = randi_range(0, 1)
if random:
# Just for testing.. Would make more sense to just call _create_block() directly
EntityManager.create_block.emit("001", ground_position)
else:
EntityManager.create_block.emit("002", ground_position)
## Generally for resetting/emptying the world to allow for load_game
func _on_reset_world() -> void: func _on_reset_world() -> void:
clear_world() clear_world()

+ 4
- 1
scenes/world/world.tscn View File

@ -17,11 +17,12 @@ sky = SubResource("Sky_dphjl")
tonemap_mode = 2 tonemap_mode = 2
glow_enabled = true glow_enabled = true
[node name="World" type="Node3D" node_paths=PackedStringArray("blocks_container", "dropped_items_container")]
[node name="World" type="Node3D" node_paths=PackedStringArray("blocks_container", "dropped_items_container", "spawn_position")]
script = ExtResource("1_6m72w") script = ExtResource("1_6m72w")
blocks_container = NodePath("BlocksContainer") blocks_container = NodePath("BlocksContainer")
dropped_items_container = NodePath("DroppedItemsContainer") dropped_items_container = NodePath("DroppedItemsContainer")
player_scene = ExtResource("2_sl2e5") player_scene = ExtResource("2_sl2e5")
spawn_position = NodePath("SpawnPosition")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_sl2e5") environment = SubResource("Environment_sl2e5")
@ -35,3 +36,5 @@ shadow_enabled = true
[node name="DroppedItemsContainer" type="Node3D" parent="."] [node name="DroppedItemsContainer" type="Node3D" parent="."]
[node name="SaveLevelDataComponent" parent="." instance=ExtResource("3_1fp7r")] [node name="SaveLevelDataComponent" parent="." instance=ExtResource("3_1fp7r")]
[node name="SpawnPosition" type="Marker3D" parent="."]

Loading…
Cancel
Save