Fixed names for a better traceability of code errors with orignal code lesson. End of lesson 25. Player is moving on the map viewport!
This commit is contained in:
parent
68a1e19ebe
commit
10fc584d1e
|
|
@ -122,8 +122,11 @@ animations = [{
|
||||||
"speed": 5.0
|
"speed": 5.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
[node name="Mob" type="Node2D"]
|
[node name="Mob" type="Node2D" node_paths=PackedStringArray("animator", "collisionRay_1", "collisionRay_2")]
|
||||||
script = ExtResource("1_mu6cs")
|
script = ExtResource("1_mu6cs")
|
||||||
|
animator = NodePath("AnimatedSprite2D")
|
||||||
|
collisionRay_1 = NodePath("CollisionRayCast_1")
|
||||||
|
collisionRay_2 = NodePath("CollisionRayCast_2")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||||
position = Vector2(8, 8)
|
position = Vector2(8, 8)
|
||||||
|
|
|
||||||
|
|
@ -5,3 +5,6 @@
|
||||||
|
|
||||||
[node name="Player" instance=ExtResource("1_7y2qh")]
|
[node name="Player" instance=ExtResource("1_7y2qh")]
|
||||||
script = ExtResource("2_us7jc")
|
script = ExtResource("2_us7jc")
|
||||||
|
|
||||||
|
[node name="Camera2D" type="Camera2D" parent="." index="3"]
|
||||||
|
zoom = Vector2(2, 2)
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,26 +1,21 @@
|
||||||
[gd_scene load_steps=7 format=3 uid="uid://c0b5w48jk67qd"]
|
[gd_scene load_steps=8 format=3 uid="uid://c0b5w48jk67qd"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://c0uvlwmkm3r8o" path="res://scripts/game/game_screen.gd" id="1_uwrxv"]
|
[ext_resource type="Script" uid="uid://c0uvlwmkm3r8o" path="res://scripts/game/game_screen.gd" id="1_dthvl"]
|
||||||
[ext_resource type="Script" uid="uid://dcqqr8b42tn0x" path="res://scripts/game/CommandProcessor.gd" id="2_lbhrr"]
|
[ext_resource type="Script" uid="uid://dcqqr8b42tn0x" path="res://scripts/game/CommandProcessor.gd" id="2_r01d7"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ccxs3ctob15es" path="res://gfx/ui/main_frame.png" id="2_lnu2h"]
|
[ext_resource type="Script" uid="uid://b63jt1uexm120" path="res://scripts/game/maps/MapContainer.gd" id="3_vnpv3"]
|
||||||
[ext_resource type="FontFile" uid="uid://1u28cjgctsn7" path="res://fonts/alagard_by_pix3m-d6awiwp.ttf" id="3_lbhrr"]
|
[ext_resource type="Script" uid="uid://bjic7g285omo8" path="res://scripts/ui/UI.gd" id="4_4m8lb"]
|
||||||
[ext_resource type="Script" uid="uid://b63jt1uexm120" path="res://scripts/game/maps/MapContainer.gd" id="3_p57ef"]
|
[ext_resource type="Texture2D" uid="uid://ccxs3ctob15es" path="res://gfx/ui/main_frame.png" id="5_mjl5p"]
|
||||||
[ext_resource type="Script" uid="uid://dv3fd112uj8o1" path="res://scripts/ui/Message Console.gd" id="5_iywne"]
|
[ext_resource type="FontFile" uid="uid://1u28cjgctsn7" path="res://fonts/alagard_by_pix3m-d6awiwp.ttf" id="6_2yu03"]
|
||||||
|
[ext_resource type="Script" uid="uid://dv3fd112uj8o1" path="res://scripts/ui/Message Console.gd" id="7_5vo8s"]
|
||||||
|
|
||||||
[node name="Game" type="Node" node_paths=PackedStringArray("map")]
|
[node name="Game" type="Node" node_paths=PackedStringArray("map")]
|
||||||
script = ExtResource("1_uwrxv")
|
script = ExtResource("1_dthvl")
|
||||||
map = NodePath("MapContainer")
|
map = NodePath("UI/Map View/SubViewport/MapContainer")
|
||||||
|
|
||||||
[node name="Command Processor" type="Timer" parent="."]
|
[node name="Command Processor" type="Timer" parent="."]
|
||||||
wait_time = 3.0
|
wait_time = 3.0
|
||||||
autostart = true
|
autostart = true
|
||||||
script = ExtResource("2_lbhrr")
|
script = ExtResource("2_r01d7")
|
||||||
|
|
||||||
[node name="MapContainer" type="Node" parent="." node_paths=PackedStringArray("entities")]
|
|
||||||
script = ExtResource("3_p57ef")
|
|
||||||
entities = NodePath("Entities")
|
|
||||||
|
|
||||||
[node name="Entities" type="Node" parent="MapContainer"]
|
|
||||||
|
|
||||||
[node name="UI" type="Control" parent="."]
|
[node name="UI" type="Control" parent="."]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
|
@ -29,6 +24,7 @@ anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
script = ExtResource("4_4m8lb")
|
||||||
|
|
||||||
[node name="Background Frame" type="TextureRect" parent="UI"]
|
[node name="Background Frame" type="TextureRect" parent="UI"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
@ -37,7 +33,7 @@ anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
texture = ExtResource("2_lnu2h")
|
texture = ExtResource("5_mjl5p")
|
||||||
|
|
||||||
[node name="Left Display" type="MarginContainer" parent="UI"]
|
[node name="Left Display" type="MarginContainer" parent="UI"]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
|
|
@ -58,7 +54,7 @@ layout_mode = 2
|
||||||
|
|
||||||
[node name="Pass Button" type="Button" parent="UI/Left Display/Contents/Command Menu"]
|
[node name="Pass Button" type="Button" parent="UI/Left Display/Contents/Command Menu"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_fonts/font = ExtResource("3_lbhrr")
|
theme_override_fonts/font = ExtResource("6_2yu03")
|
||||||
text = "Pass"
|
text = "Pass"
|
||||||
|
|
||||||
[node name="Message Console" type="MarginContainer" parent="UI" node_paths=PackedStringArray("scrollContainer", "messages")]
|
[node name="Message Console" type="MarginContainer" parent="UI" node_paths=PackedStringArray("scrollContainer", "messages")]
|
||||||
|
|
@ -67,7 +63,7 @@ offset_left = 13.0
|
||||||
offset_top = 231.0
|
offset_top = 231.0
|
||||||
offset_right = 627.0
|
offset_right = 627.0
|
||||||
offset_bottom = 345.0
|
offset_bottom = 345.0
|
||||||
script = ExtResource("5_iywne")
|
script = ExtResource("7_5vo8s")
|
||||||
scrollContainer = NodePath("ScrollContainer")
|
scrollContainer = NodePath("ScrollContainer")
|
||||||
messages = NodePath("ScrollContainer/Messages")
|
messages = NodePath("ScrollContainer/Messages")
|
||||||
|
|
||||||
|
|
@ -83,6 +79,24 @@ horizontal_scroll_mode = 0
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="Map View" type="SubViewportContainer" parent="UI"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 181.0
|
||||||
|
offset_top = 15.0
|
||||||
|
offset_right = 627.0
|
||||||
|
offset_bottom = 216.0
|
||||||
|
stretch = true
|
||||||
|
|
||||||
|
[node name="SubViewport" type="SubViewport" parent="UI/Map View"]
|
||||||
|
size = Vector2i(446, 201)
|
||||||
|
|
||||||
|
[node name="MapContainer" type="Node" parent="UI/Map View/SubViewport" node_paths=PackedStringArray("entities")]
|
||||||
|
script = ExtResource("3_vnpv3")
|
||||||
|
entities = NodePath("Entities")
|
||||||
|
|
||||||
|
[node name="Entities" type="Node2D" parent="UI/Map View/SubViewport/MapContainer"]
|
||||||
|
z_index = 1
|
||||||
|
|
||||||
[connection signal="BROADCAST_COMMAND" from="Command Processor" to="UI/Message Console" method="_on_command"]
|
[connection signal="BROADCAST_COMMAND" from="Command Processor" to="UI/Message Console" method="_on_command"]
|
||||||
[connection signal="timeout" from="Command Processor" to="Command Processor" method="_on_timeout"]
|
[connection signal="timeout" from="Command Processor" to="Command Processor" method="_on_timeout"]
|
||||||
[connection signal="pressed" from="UI/Left Display/Contents/Command Menu/Pass Button" to="." method="_on_pass_button_pressed"]
|
[connection signal="pressed" from="UI/Left Display/Contents/Command Menu/Pass Button" to="UI" method="_on_pass_button_pressed"]
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
[ext_resource type="Script" uid="uid://bklj1ua1qok02" path="res://scripts/title/title_screen.gd" id="1_r23qo"]
|
[ext_resource type="Script" uid="uid://bklj1ua1qok02" path="res://scripts/title/title_screen.gd" id="1_r23qo"]
|
||||||
[ext_resource type="FontFile" uid="uid://1u28cjgctsn7" path="res://fonts/alagard_by_pix3m-d6awiwp.ttf" id="2_aqpy5"]
|
[ext_resource type="FontFile" uid="uid://1u28cjgctsn7" path="res://fonts/alagard_by_pix3m-d6awiwp.ttf" id="2_aqpy5"]
|
||||||
[ext_resource type="Theme" uid="uid://dnxny0n7ti7eq" path="res://themes/default_theme.tres" id="3_w8uqo"]
|
[ext_resource type="Theme" uid="uid://dnxny0n7ti7eq" path="res://themes/default_theme.tres" id="3_w8uqo"]
|
||||||
[ext_resource type="Script" uid="uid://bfc7ybsw6riri" path="res://scripts/title/version_number.gd" id="4_a4ium"]
|
[ext_resource type="Script" uid="uid://bfc7ybsw6riri" path="res://scripts/title/Version Number.gd" id="4_a4ium"]
|
||||||
|
|
||||||
[sub_resource type="LabelSettings" id="LabelSettings_w8uqo"]
|
[sub_resource type="LabelSettings" id="LabelSettings_w8uqo"]
|
||||||
font = ExtResource("2_aqpy5")
|
font = ExtResource("2_aqpy5")
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
var defaultMapPath:String = "res://scenes/game/maps/world_map.tscn"
|
var startMap:String = "res://scenes/game/maps/world_map.tscn"
|
||||||
|
|
||||||
var currentMapPath
|
var currentMap:String
|
||||||
|
|
||||||
func startNewGame():
|
func startNewGame():
|
||||||
currentMapPath = defaultMapPath
|
currentMap = startMap
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,4 @@ signal DISPLAY_MESSAGE(message)
|
||||||
signal DISPLAY_COMMAND_PROMPT
|
signal DISPLAY_COMMAND_PROMPT
|
||||||
signal DISPLAY_CLEAR
|
signal DISPLAY_CLEAR
|
||||||
|
|
||||||
signal LOAD_MAP(currentMap, newMap, spawnpoint, facing)
|
signal LOAD_MAP(currentMap, newMapPath, spawnpoint, facing)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ func _init(dir):
|
||||||
|
|
||||||
func execute():
|
func execute():
|
||||||
CommandDispatcher.PLAYER_MOVE.emit(direction)
|
CommandDispatcher.PLAYER_MOVE.emit(direction)
|
||||||
emit_signal("COMMAND_PROCESSED", getCommandText())
|
COMMAND_PROCESSED.emit(getCommandText())
|
||||||
|
|
||||||
|
|
||||||
func getDirectionString() -> String:
|
func getDirectionString() -> String:
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,4 @@ class_name GameScreen
|
||||||
@export var map:Node
|
@export var map:Node
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
CommandDispatcher.LOAD_MAP.emit(null, GameManager.defaultMapPath, null, Map.Direction.North)
|
CommandDispatcher.LOAD_MAP.emit(GameManager.startMap, null, Map.Direction.North)
|
||||||
|
|
||||||
|
|
||||||
func _on_pass_button_pressed():
|
|
||||||
CommandDispatcher.PROCESS_COMMAND.emit(PassCommand.new())
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
extends TileMap
|
||||||
|
|
||||||
|
class_name Map
|
||||||
|
|
||||||
|
enum Direction { North, East, South, West }
|
||||||
|
|
||||||
|
@export var defaultPlayerStartPosition:Vector2i
|
||||||
|
@export var stepIncrement:float = 1.0
|
||||||
|
|
||||||
|
var player
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
CommandDispatcher.PLAYER_MOVE.connect(onPlayerMove)
|
||||||
|
|
||||||
|
|
||||||
|
func spawnPlayerAtPosition(position, facing):
|
||||||
|
var spawnposition:Vector2i
|
||||||
|
|
||||||
|
if (position == null):
|
||||||
|
spawnposition = defaultPlayerStartPosition
|
||||||
|
else:
|
||||||
|
spawnposition = position
|
||||||
|
|
||||||
|
player.position = Vector2(spawnposition.x * 16, spawnposition.y * 16)
|
||||||
|
|
||||||
|
|
||||||
|
func onPlayerMove(direction):
|
||||||
|
var newPos = Vector2(player.position)
|
||||||
|
var moveIncrement = tile_set.tile_size.x * stepIncrement
|
||||||
|
|
||||||
|
match(direction):
|
||||||
|
Direction.North:
|
||||||
|
newPos.y -= moveIncrement
|
||||||
|
Direction.South:
|
||||||
|
newPos.y += moveIncrement
|
||||||
|
Direction.West:
|
||||||
|
newPos.x -= moveIncrement
|
||||||
|
Direction.East:
|
||||||
|
newPos.x += moveIncrement
|
||||||
|
|
||||||
|
if (playerCanMoveTo(newPos)):
|
||||||
|
player.position = newPos
|
||||||
|
player.updateAnimation(direction)
|
||||||
|
|
||||||
|
|
||||||
|
func playerCanMoveTo(position) -> bool:
|
||||||
|
return false
|
||||||
|
|
@ -12,9 +12,10 @@ func getTerrainDataForTile(layer, data, x, y):
|
||||||
else:
|
else:
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
|
||||||
func spawnPlayerAtPosition(position, facing):
|
func spawnPlayerAtPosition(position, facing):
|
||||||
player = load("res://scenes/game/maps/entities/player.tscn").instantiate()
|
player = load("res://scenes/game/maps/entities/player.tscn").instantiate()
|
||||||
|
|
||||||
super.spawnPlayerAtPosition(position, facing)
|
super.spawnPlayerAtPosition(position, facing)
|
||||||
|
|
||||||
return player
|
return player
|
||||||
|
|
@ -8,16 +8,39 @@ func _ready():
|
||||||
CommandDispatcher.LOAD_MAP.connect(loadMap)
|
CommandDispatcher.LOAD_MAP.connect(loadMap)
|
||||||
|
|
||||||
|
|
||||||
func loadMap(currentMapPath, newMapPath, spawnpoint, facing):
|
func loadMap(newMapPath, spawnpoint, facing):
|
||||||
var newMap:Map = load(newMapPath).instantiate()
|
var newMap:Map
|
||||||
|
|
||||||
CommandDispatcher.PAUSE_PROCESSOR.emit()
|
CommandDispatcher.PAUSE_PROCESSOR.emit()
|
||||||
|
|
||||||
if (currentMapPath != null):
|
if (map != null):
|
||||||
currentMapPath.queue_free()
|
map.queue_free()
|
||||||
|
|
||||||
|
map = load(newMapPath).instantiate()
|
||||||
|
|
||||||
|
add_child(map)
|
||||||
|
|
||||||
|
entities.add_child(map.spawnPlayerAtPosition(spawnpoint, facing))
|
||||||
|
|
||||||
|
GameManager.currentMap = newMapPath
|
||||||
|
|
||||||
add_child(newMap)
|
|
||||||
|
|
||||||
entities.add_child(newMap.spawnPlayerAtPosition(spawnpoint, facing))
|
|
||||||
|
|
||||||
CommandDispatcher.WAIT_FOR_COMMAND.emit()
|
CommandDispatcher.WAIT_FOR_COMMAND.emit()
|
||||||
|
|
||||||
|
|
||||||
|
func _unhandled_key_input(event):
|
||||||
|
var direction
|
||||||
|
|
||||||
|
if (Input.is_action_pressed("ui_right")):
|
||||||
|
direction = Map.Direction.East
|
||||||
|
|
||||||
|
if (Input.is_action_pressed("ui_left")):
|
||||||
|
direction = Map.Direction.West
|
||||||
|
|
||||||
|
if (Input.is_action_pressed("ui_up")):
|
||||||
|
direction = Map.Direction.North
|
||||||
|
|
||||||
|
if (Input.is_action_pressed("ui_down")):
|
||||||
|
direction = Map.Direction.South
|
||||||
|
|
||||||
|
if (direction != null):
|
||||||
|
CommandDispatcher.PROCESS_COMMAND.emit(MoveCommand.new(direction))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
extends Map2d
|
||||||
|
|
||||||
|
class_name WorldMap
|
||||||
|
|
||||||
|
func playerCanMoveTo(position:Vector2) -> bool:
|
||||||
|
var tilesize = tile_set.tile_size.x
|
||||||
|
var cast_cell_1
|
||||||
|
var cast_cell_2
|
||||||
|
|
||||||
|
player.updateRaycasts(position)
|
||||||
|
|
||||||
|
cast_cell_1 = local_to_map(position + player.collisionRay_1.position)
|
||||||
|
cast_cell_2 = local_to_map(position + player.collisionRay_2.position)
|
||||||
|
|
||||||
|
if (getTerrainDataForTile(0, TerrainDataTypes.TerrainType, cast_cell_1.x, cast_cell_1.y) != "Water" and
|
||||||
|
getTerrainDataForTile(0, TerrainDataTypes.TerrainType, cast_cell_2.x, cast_cell_2.y) != "Water"):
|
||||||
|
return true
|
||||||
|
else:
|
||||||
|
CommandDispatcher.DISPLAY_MESSAGE.emit("Your path is blocked.")
|
||||||
|
return false
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
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)
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
extends Map2d
|
|
||||||
|
|
||||||
#func _ready() -> void:
|
|
||||||
# super._ready()
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
extends Label
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
text = text + ProjectSettings.get_setting("application/config/version")
|
||||||
|
|
@ -4,4 +4,4 @@ extends Control
|
||||||
func _on_new_game_button_pressed():
|
func _on_new_game_button_pressed():
|
||||||
GameManager.startNewGame()
|
GameManager.startNewGame()
|
||||||
|
|
||||||
Loader.loadScene(self, "res://scenes/game.tscn")
|
Loader.loadScene(self, "res://scenes/game_screen.tscn")
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
extends Label
|
|
||||||
|
|
||||||
func _ready():
|
|
||||||
text += ProjectSettings.get_setting("application/config/version")
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
extends Control
|
||||||
|
|
||||||
|
class_name UI
|
||||||
|
|
||||||
|
func _on_pass_button_pressed():
|
||||||
|
CommandDispatcher.PROCESS_COMMAND.emit(PassCommand.new())
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bjic7g285omo8
|
||||||
Loading…
Reference in New Issue