End of lesson 24.

This commit is contained in:
2025-04-07 21:12:10 -03:00
parent d44f69f731
commit 68a1e19ebe
13 changed files with 127 additions and 18 deletions

View File

@@ -0,0 +1,23 @@
extends Node
@export var entities:Node
var map:Map
func _ready():
CommandDispatcher.LOAD_MAP.connect(loadMap)
func loadMap(currentMapPath, newMapPath, spawnpoint, facing):
var newMap:Map = load(newMapPath).instantiate()
CommandDispatcher.PAUSE_PROCESSOR.emit()
if (currentMapPath != null):
currentMapPath.queue_free()
add_child(newMap)
entities.add_child(newMap.spawnPlayerAtPosition(spawnpoint, facing))
CommandDispatcher.WAIT_FOR_COMMAND.emit()

View File

@@ -0,0 +1 @@
uid://b63jt1uexm120

View File

@@ -0,0 +1 @@
extends Mob

View File

@@ -0,0 +1 @@
uid://dsguwthn2datq

View File

@@ -0,0 +1,56 @@
extends Node2D
class_name Mob
@export var animator:AnimatedSprite2D
@export var collisionRay_1:RayCast2D
@export var collisionRay_2:RayCast2D
func updateRaycasts(destination):
var direction = destination - position
if (direction.x != 0):
collisionRay_1.position = Vector2(8, 1)
collisionRay_2.position = Vector2(8, 15)
if (direction.y != 0):
collisionRay_1.position = Vector2(1, 8)
collisionRay_2.position = Vector2(15, 8)
if (direction.x < 0):
collisionRay_1.position.x -= 1
collisionRay_2.position.x -= 1
if (direction.y < 0):
collisionRay_1.position.y -= 1
collisionRay_2.position.y -= 1
collisionRay_1.target_position = Vector2(direction)
collisionRay_1.force_raycast_update()
collisionRay_2.target_position = Vector2(direction)
collisionRay_2.force_raycast_update()
func updateAnimation(direction):
var sequence
match(direction):
Map.Direction.East:
sequence = "Walk Right"
Map.Direction.West:
sequence = "Walk Left"
Map.Direction.North:
sequence = "Walk Up"
Map.Direction.South:
sequence = "Walk Down"
if (animator.animation != sequence):
animator.animation = sequence
animator.frame = 0
else:
if (animator.frame == animator.sprite_frames.get_frame_count(animator.animation) - 1):
animator.frame = 0
else:
animator.frame += 1

View File

@@ -0,0 +1 @@
uid://bo0had2vq4r7h

View File

@@ -3,3 +3,17 @@ extends TileMap
class_name Map
enum Direction { North, East, South, West }
@export var defaultPlayerStartPosition:Vector2i
var player
func spawnPlayerAtPosition(position, facing):
var spawnposition
if (position == null):
spawnposition = defaultPlayerStartPosition
else:
spawnposition = position
player.position = Vector2(spawnposition.x * 16, spawnposition.y * 16)

View File

@@ -12,15 +12,9 @@ func getTerrainDataForTile(layer, data, x, y):
else:
return null
# Called when the node enters the scene tree for the first time.
#func _ready() -> void:
# print(getTerrainDataForTile(0, TerrainDataTypes.TerrainType, 39, 17))
# print(getTerrainDataForTile(0, TerrainDataTypes.TerrainType, 0, 0))
# print(getTerrainDataForTile(0, TerrainDataTypes.TerrainType, 11, 11))
# print(getTerrainDataForTile(0, TerrainDataTypes.TerrainType, 6, 9))
# print(getTerrainDataForTile(0, TerrainDataTypes.TerrainType, 22, 22))
#
#
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta: float) -> void:
# pass
func spawnPlayerAtPosition(position, facing):
player = load("res://scenes/game/maps/entities/player.tscn").instantiate()
super.spawnPlayerAtPosition(position, facing)
return player