End of lesson 30
This commit is contained in:
parent
2d87794af9
commit
f4e4de59f5
|
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://864h4oam7qfk"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://c50fmagffbdas" path="res://scripts/game/maps/entities/ToggleRoofTrigger.gd" id="1_58sfy"]
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_58sfy"]
|
||||||
|
size = Vector2(48, 16)
|
||||||
|
|
||||||
|
[node name="ToggleRoofTrigger" type="Area2D"]
|
||||||
|
script = ExtResource("1_58sfy")
|
||||||
|
metadata/_custom_type_script = "uid://c50fmagffbdas"
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
position = Vector2(8, 8)
|
||||||
|
shape = SubResource("RectangleShape2D_58sfy")
|
||||||
|
|
||||||
|
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -15,3 +15,5 @@ signal DISPLAY_CLEAR
|
||||||
|
|
||||||
signal LOAD_MAP(currentMap, newMapPath, spawnpoint, facing)
|
signal LOAD_MAP(currentMap, newMapPath, spawnpoint, facing)
|
||||||
signal LOAD_COMPLETE
|
signal LOAD_COMPLETE
|
||||||
|
|
||||||
|
signal TOGGLE_TILEMAP_LAYER(layerName)
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,17 @@ var player
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
CommandDispatcher.PLAYER_MOVE.connect(onPlayerMove)
|
CommandDispatcher.PLAYER_MOVE.connect(onPlayerMove)
|
||||||
|
CommandDispatcher.TOGGLE_TILEMAP_LAYER.connect(onToggleRequest)
|
||||||
|
|
||||||
|
|
||||||
|
@warning_ignore("unused_parameter")
|
||||||
func spawnPlayerAtPosition(position, facing):
|
func spawnPlayerAtPosition(newPosition, facing):
|
||||||
var spawnposition:Vector2i
|
var spawnposition:Vector2i
|
||||||
|
|
||||||
if (position == null):
|
if (newPosition == null):
|
||||||
spawnposition = defaultPlayerStartPosition
|
spawnposition = defaultPlayerStartPosition
|
||||||
else:
|
else:
|
||||||
spawnposition = position
|
spawnposition = newPosition
|
||||||
|
|
||||||
player.position = Vector2(spawnposition.x * 16, spawnposition.y * 16)
|
player.position = Vector2(spawnposition.x * 16, spawnposition.y * 16)
|
||||||
|
|
||||||
|
|
@ -43,5 +45,15 @@ func onPlayerMove(direction):
|
||||||
player.updateAnimation(direction)
|
player.updateAnimation(direction)
|
||||||
|
|
||||||
|
|
||||||
func playerCanMoveTo(position) -> bool:
|
@warning_ignore("unused_parameter")
|
||||||
|
func playerCanMoveTo(newPosition) -> bool:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
|
func onToggleRequest(layerName):
|
||||||
|
for layer in range(get_layers_count()):
|
||||||
|
if(get_layer_name(layer) == layerName):
|
||||||
|
if(is_layer_enabled(layer)):
|
||||||
|
set_layer_enabled(layer, false)
|
||||||
|
else:
|
||||||
|
set_layer_enabled(layer, true)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ class_name Map2d
|
||||||
|
|
||||||
enum TerrainDataTypes { TerrainType }
|
enum TerrainDataTypes { TerrainType }
|
||||||
|
|
||||||
|
|
||||||
func getTerrainDataForTile(layer, data, x, y):
|
func getTerrainDataForTile(layer, data, x, y):
|
||||||
var tile:TileData = get_cell_tile_data(layer, Vector2i(x, y))
|
var tile:TileData = get_cell_tile_data(layer, Vector2i(x, y))
|
||||||
|
|
||||||
|
|
@ -13,15 +14,15 @@ func getTerrainDataForTile(layer, data, x, y):
|
||||||
return null
|
return null
|
||||||
|
|
||||||
|
|
||||||
func spawnPlayerAtPosition(position, facing):
|
func spawnPlayerAtPosition(newPosition, 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(newPosition, facing)
|
||||||
|
|
||||||
player.updateFacing(facing)
|
player.updateFacing(facing)
|
||||||
|
|
||||||
get_node("Entities").add_child(player)
|
get_node("Entities").add_child(player)
|
||||||
|
|
||||||
|
|
||||||
func playerCanMoveTo(position:Vector2) -> bool:
|
func playerCanMoveTo(newPosition:Vector2) -> bool:
|
||||||
return !player.wouldCollideAt(position)
|
return !player.wouldCollideAt(newPosition)
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,6 @@ class_name ChangeMapTrigger
|
||||||
@export var spawnpoint: Vector2i
|
@export var spawnpoint: Vector2i
|
||||||
@export var facing:Map.Direction
|
@export var facing:Map.Direction
|
||||||
|
|
||||||
|
@warning_ignore("unused_parameter")
|
||||||
func execute(target):
|
func execute(target):
|
||||||
CommandDispatcher.LOAD_MAP.emit(map, spawnpoint, facing)
|
CommandDispatcher.LOAD_MAP.emit(map, spawnpoint, facing)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
extends MapEntity
|
||||||
|
|
||||||
|
class_name ToggleRoofTrigger
|
||||||
|
|
||||||
|
@export var layerName:String
|
||||||
|
|
||||||
|
func execute(target):
|
||||||
|
CommandDispatcher.TOGGLE_TILEMAP_LAYER.emit(layerName)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_area_entered(area: Area2D) -> void:
|
||||||
|
execute(area.get_parent())
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
uid://c50fmagffbdas
|
||||||
|
|
@ -3,7 +3,7 @@ extends Area2D
|
||||||
class_name MapEntity
|
class_name MapEntity
|
||||||
|
|
||||||
func execute(target):
|
func execute(target):
|
||||||
print(target.name)
|
print("MapEntity.execute(%s)" % target.name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue