diff --git a/godot/local_map/LocalMap.gd b/godot/local_map/LocalMap.gd index 81621245af74baf9c4835240a1f23e664e86f9f6..c5fac11df52dada0972dd3457461659092df9c9e 100644 --- a/godot/local_map/LocalMap.gd +++ b/godot/local_map/LocalMap.gd @@ -6,6 +6,7 @@ signal combat_finished() signal dialogue_finished() onready var dialogue_box = $MapInterface/DialogueBox +onready var grid = $Grid func _ready() -> void: assert dialogue_box @@ -13,7 +14,7 @@ func _ready() -> void: (action as MapAction).initialize(self) func spawn_party(party) -> void: - $Grid/Pawns.spawn_party(party, $Grid.calculate_world_pos(Vector2(2,2))) + grid.pawns.spawn_party(party, grid.spawning_point.position) func start_encounter(formation) -> void: emit_signal("enemies_encountered", formation.instance()) diff --git a/godot/local_map/LocalMap.tscn b/godot/local_map/LocalMap.tscn index d6cf5eee05973936edb82aeebaa081c1ad88f8d9..c047d01242dba26112981b81de48c2a40122956e 100644 --- a/godot/local_map/LocalMap.tscn +++ b/godot/local_map/LocalMap.tscn @@ -1,16 +1,17 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=13 format=2] [ext_resource path="res://local_map/LocalMap.gd" type="Script" id=1] [ext_resource path="res://local_map/tilesets/grid_lines/grid_lines_tileset.tres" type="TileSet" id=2] [ext_resource path="res://local_map/tilesets/grid/grid_tileset.tres" type="TileSet" id=3] [ext_resource path="res://local_map/grid/GameBoard.gd" type="Script" id=4] -[ext_resource path="res://local_map/grid/PawnContainer.gd" type="Script" id=5] -[ext_resource path="res://party/Party.tscn" type="PackedScene" id=6] -[ext_resource path="res://local_map/pawns/InteractivePawn.tscn" type="PackedScene" id=7] -[ext_resource path="res://local_map/pawns/actions/StartCombatAction.tscn" type="PackedScene" id=8] -[ext_resource path="res://combat/battlers/formations/PorcupineFormation001.tscn" type="PackedScene" id=9] -[ext_resource path="res://local_map/pawns/actions/DialogueAction.tscn" type="PackedScene" id=10] -[ext_resource path="res://interface/gui/DialogueBox.tscn" type="PackedScene" id=11] +[ext_resource path="res://local_map/grid/SpawningPoint.tscn" type="PackedScene" id=5] +[ext_resource path="res://local_map/grid/PawnContainer.gd" type="Script" id=6] +[ext_resource path="res://party/Party.tscn" type="PackedScene" id=7] +[ext_resource path="res://local_map/pawns/InteractivePawn.tscn" type="PackedScene" id=8] +[ext_resource path="res://local_map/pawns/actions/StartCombatAction.tscn" type="PackedScene" id=9] +[ext_resource path="res://combat/battlers/formations/PorcupineFormation001.tscn" type="PackedScene" id=10] +[ext_resource path="res://local_map/pawns/actions/DialogueAction.tscn" type="PackedScene" id=11] +[ext_resource path="res://interface/gui/DialogueBox.tscn" type="PackedScene" id=12] [node name="LocalMap" type="Node2D"] script = ExtResource( 1 ) @@ -64,13 +65,16 @@ __meta__ = { } map_size = Vector2( 20, 20 ) +[node name="SpawningPoint" parent="Grid" instance=ExtResource( 5 )] +position = Vector2( 224, 160 ) + [node name="Pawns" type="YSort" parent="Grid"] sort_enabled = true -script = ExtResource( 5 ) -party_scene = ExtResource( 6 ) +script = ExtResource( 6 ) +party_scene = ExtResource( 7 ) -[node name="EncounterPawn" parent="Grid/Pawns" instance=ExtResource( 7 )] -position = Vector2( 420, 479 ) +[node name="EncounterPawn" parent="Grid/Pawns" instance=ExtResource( 8 )] +position = Vector2( 416, 480 ) facing = { "down": true, "left": true, @@ -78,11 +82,11 @@ facing = { "up": true } -[node name="StartCombat" parent="Grid/Pawns/EncounterPawn/Actions" index="0" instance=ExtResource( 8 )] -formation = ExtResource( 9 ) +[node name="StartCombat" parent="Grid/Pawns/EncounterPawn/Actions" index="0" instance=ExtResource( 9 )] +formation = ExtResource( 10 ) -[node name="DialoguePawn" parent="Grid/Pawns" instance=ExtResource( 7 )] -position = Vector2( 350, 290 ) +[node name="DialoguePawn" parent="Grid/Pawns" instance=ExtResource( 8 )] +position = Vector2( 352, 288 ) facing = { "down": true, "left": true, @@ -90,11 +94,11 @@ facing = { "up": true } -[node name="Dialogue" parent="Grid/Pawns/DialoguePawn/Actions" index="0" instance=ExtResource( 10 )] +[node name="Dialogue" parent="Grid/Pawns/DialoguePawn/Actions" index="0" instance=ExtResource( 11 )] dialogue_file_path = "res://dialogue/data/test_conversation.json" -[node name="DialogueCombatPawn" parent="Grid/Pawns" instance=ExtResource( 7 )] -position = Vector2( 1440, 479 ) +[node name="DialogueCombatPawn" parent="Grid/Pawns" instance=ExtResource( 8 )] +position = Vector2( 1440, 480 ) facing = { "down": true, "left": true, @@ -102,11 +106,11 @@ facing = { "up": true } -[node name="Dialogue" parent="Grid/Pawns/DialogueCombatPawn/Actions" index="0" instance=ExtResource( 10 )] +[node name="Dialogue" parent="Grid/Pawns/DialogueCombatPawn/Actions" index="0" instance=ExtResource( 11 )] dialogue_file_path = "res://dialogue/data/test_conversation.json" -[node name="StartCombat" parent="Grid/Pawns/DialogueCombatPawn/Actions" index="1" instance=ExtResource( 8 )] -formation = ExtResource( 9 ) +[node name="StartCombat" parent="Grid/Pawns/DialogueCombatPawn/Actions" index="1" instance=ExtResource( 9 )] +formation = ExtResource( 10 ) [node name="MapInterface" type="CanvasLayer" parent="."] layer = 100 @@ -115,7 +119,7 @@ rotation = 0.0 scale = Vector2( 1, 1 ) transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -[node name="DialogueBox" parent="MapInterface" instance=ExtResource( 11 )] +[node name="DialogueBox" parent="MapInterface" instance=ExtResource( 12 )] visible = false diff --git a/godot/local_map/grid/GameBoard.gd b/godot/local_map/grid/GameBoard.gd index 4d1a5010699286164eae02ea2411f1a187529105..5915078dd505be1c3ae9455455b57df09ad43c8a 100644 --- a/godot/local_map/grid/GameBoard.gd +++ b/godot/local_map/grid/GameBoard.gd @@ -10,8 +10,11 @@ enum CELL_TYPES { EMPTY = -1, ACTOR, OBSTACLE, OBJECT } var pathfinder : Pathfinder = preload("res://local_map/grid/Pathfinder.gd").new() onready var pawns : YSort = $Pawns +onready var spawning_point = $SpawningPoint + export var map_size : Vector2 + func _ready(): var occupied_cells : Array for child in pawns.get_children(): diff --git a/godot/local_map/grid/SpawningPoint.gd b/godot/local_map/grid/SpawningPoint.gd new file mode 100644 index 0000000000000000000000000000000000000000..8457f8437d48ec7f9ce692c614779198f47a9bdc --- /dev/null +++ b/godot/local_map/grid/SpawningPoint.gd @@ -0,0 +1,11 @@ +tool +extends Position2D + +export var DRAW_COLOR : = Color("#e231b6") + +func _draw() -> void: + if not Engine.editor_hint: + return + var size := Vector2(64, 64) + var rect := Rect2(-size / 2, size) + draw_rect(rect, DRAW_COLOR, false) diff --git a/godot/local_map/grid/SpawningPoint.tscn b/godot/local_map/grid/SpawningPoint.tscn new file mode 100644 index 0000000000000000000000000000000000000000..b5fabf8118bd336efe91705aba130745b3c25bfc --- /dev/null +++ b/godot/local_map/grid/SpawningPoint.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://local_map/grid/SpawningPoint.gd" type="Script" id=1] + +[node name="SpawningPoint" type="Position2D"] +script = ExtResource( 1 ) +DRAW_COLOR = Color( 0.886275, 0.192157, 0.713726, 1 ) + diff --git a/godot/project.godot b/godot/project.godot index e08260609dd9a3ef7d6d650257f4d05b0254ed68..55aa36cb8b35bf4e2ea899c1a955ca9cf479156d 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -134,12 +134,12 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://local_map/pawns/Pawn.gd" }, { -"base": "Pawn", +"base": "Node2D", "class": "PawnActor", "language": "GDScript", "path": "res://local_map/pawns/PawnActor.gd" }, { -"base": "PawnActor", +"base": "Node2D", "class": "PawnFollower", "language": "GDScript", "path": "res://local_map/pawns/PawnFollower.gd"