character now teleports to specified marker when switching maps
parent
8d20d96059
commit
9de1b41acd
|
@ -29,20 +29,13 @@ public partial class ConnectorBox : Area2D
|
||||||
[Export]
|
[Export]
|
||||||
public InteractionTrigger InteractionTrigger { get; set; }
|
public InteractionTrigger InteractionTrigger { get; set; }
|
||||||
|
|
||||||
[Export]
|
|
||||||
public CollisionShape2D Collision { get; set; }
|
|
||||||
|
|
||||||
private Player _player = null;
|
private Player _player = null;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
if (Collision is null)
|
|
||||||
{
|
|
||||||
throw new NullReferenceException("Collision not specified");
|
|
||||||
}
|
|
||||||
|
|
||||||
BodyEntered += (Node2D body) =>
|
BodyEntered += (Node2D body) =>
|
||||||
{
|
{
|
||||||
|
GD.Print(body.Name + " entered");
|
||||||
if (body is Player && InteractionTrigger is null)
|
if (body is Player && InteractionTrigger is null)
|
||||||
{
|
{
|
||||||
OnInteraction();
|
OnInteraction();
|
||||||
|
|
|
@ -29,13 +29,11 @@ offset_bottom = -28.0
|
||||||
[node name="Label" parent="InteractionTrigger/Popup" index="0"]
|
[node name="Label" parent="InteractionTrigger/Popup" index="0"]
|
||||||
text = "Enter"
|
text = "Enter"
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="." node_paths=PackedStringArray("InteractionTrigger", "Collision")]
|
[node name="Area2D" type="Area2D" parent="." node_paths=PackedStringArray("InteractionTrigger")]
|
||||||
script = ExtResource("3_4rsih")
|
script = ExtResource("3_4rsih")
|
||||||
ToArea = "res://Scenes/Maps/Arena.tscn"
|
ToArea = "res://Scenes/Maps/Arena.tscn"
|
||||||
ToConnector = "entrance"
|
ToConnector = "Entrance"
|
||||||
Identifier = "arena_entrance"
|
|
||||||
InteractionTrigger = NodePath("../InteractionTrigger")
|
InteractionTrigger = NodePath("../InteractionTrigger")
|
||||||
Collision = NodePath("CollisionShape2D")
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||||
shape = SubResource("RectangleShape2D_djn8q")
|
shape = SubResource("RectangleShape2D_djn8q")
|
||||||
|
|
|
@ -1832,7 +1832,7 @@ background_mode = 3
|
||||||
glow_enabled = true
|
glow_enabled = true
|
||||||
glow_hdr_threshold = 1.4
|
glow_hdr_threshold = 1.4
|
||||||
|
|
||||||
[node name="TileMap" type="TileMap" node_paths=PackedStringArray("Entities", "Areas", "Spawners")]
|
[node name="TileMap" type="TileMap" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
|
||||||
y_sort_enabled = true
|
y_sort_enabled = true
|
||||||
texture_filter = 3
|
texture_filter = 3
|
||||||
tile_set = SubResource("TileSet_18c7j")
|
tile_set = SubResource("TileSet_18c7j")
|
||||||
|
@ -1878,11 +1878,7 @@ script = ExtResource("2_4m0a1")
|
||||||
Entities = NodePath("Entities")
|
Entities = NodePath("Entities")
|
||||||
Areas = NodePath("Areas")
|
Areas = NodePath("Areas")
|
||||||
Spawners = NodePath("Spawners")
|
Spawners = NodePath("Spawners")
|
||||||
CameraLowerBound = null
|
Markers = NodePath("Markers")
|
||||||
CameraUpperBound = null
|
|
||||||
ClearColor = null
|
|
||||||
AreaName = null
|
|
||||||
MapName = null
|
|
||||||
|
|
||||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
[node name="CanvasModulate" type="CanvasModulate" parent="."]
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,9 @@ public partial class Map : TileMap
|
||||||
[Export]
|
[Export]
|
||||||
public Node2D Spawners { get; set; }
|
public Node2D Spawners { get; set; }
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public Node2D Markers { get; set; }
|
||||||
|
|
||||||
[Export]
|
[Export]
|
||||||
public Vector2 CameraLowerBound { get; set; }
|
public Vector2 CameraLowerBound { get; set; }
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -27,6 +27,7 @@ public partial class LocationDisplay : CenterContainer
|
||||||
_subtitle.Visible = map.AreaName != map.MapName;
|
_subtitle.Visible = map.AreaName != map.MapName;
|
||||||
_mapName.Text = map.MapName;
|
_mapName.Text = map.MapName;
|
||||||
_subtitle.Text = map.AreaName;
|
_subtitle.Text = map.AreaName;
|
||||||
|
_animPlayer.Stop();
|
||||||
_animPlayer.Play("show");
|
_animPlayer.Play("show");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ public partial class World : Node
|
||||||
EventBus = this.GetEventBus();
|
EventBus = this.GetEventBus();
|
||||||
EventBus.RequestMoveToArea += (Events.RequestAreaArgs args) =>
|
EventBus.RequestMoveToArea += (Events.RequestAreaArgs args) =>
|
||||||
{
|
{
|
||||||
MoveToArea(args.Area, args.Connector);
|
CallDeferred(MethodName.MoveToArea, args.Area, args.Connector);
|
||||||
};
|
};
|
||||||
EventBus.RegisteredBoss += RegisterBoss;
|
EventBus.RegisteredBoss += RegisterBoss;
|
||||||
EventBus.DeregisteredBoss += DeregisterBoss;
|
EventBus.DeregisteredBoss += DeregisterBoss;
|
||||||
|
@ -138,14 +138,17 @@ public partial class World : Node
|
||||||
{
|
{
|
||||||
GD.Print("Loading map " + map.Name);
|
GD.Print("Loading map " + map.Name);
|
||||||
|
|
||||||
|
var root = GetTree().Root;
|
||||||
|
|
||||||
if (CurrentMap is not null)
|
if (CurrentMap is not null)
|
||||||
{
|
{
|
||||||
|
_maps.Update(CurrentMap.SceneFilePath);
|
||||||
CurrentMap.Entities.RemoveChild(CurrentPlayer);
|
CurrentMap.Entities.RemoveChild(CurrentPlayer);
|
||||||
GetTree().Root.RemoveChild(CurrentMap);
|
root.RemoveChild(CurrentMap);
|
||||||
CurrentMap.Active = false;
|
CurrentMap.Active = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
GetTree().Root.AddChild(map);
|
root.AddChild(map);
|
||||||
InitTilemap(map);
|
InitTilemap(map);
|
||||||
|
|
||||||
CurrentMap = map;
|
CurrentMap = map;
|
||||||
|
@ -168,11 +171,6 @@ public partial class World : Node
|
||||||
|
|
||||||
public void LoadScene(PackedScene scene)
|
public void LoadScene(PackedScene scene)
|
||||||
{
|
{
|
||||||
if (CurrentMap is not null)
|
|
||||||
{
|
|
||||||
_maps.Update(CurrentMap.SceneFilePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
Map map;
|
Map map;
|
||||||
string path = scene.ResourcePath;
|
string path = scene.ResourcePath;
|
||||||
|
|
||||||
|
@ -251,19 +249,8 @@ public partial class World : Node
|
||||||
|
|
||||||
private void MovePlayerToConnector(string name)
|
private void MovePlayerToConnector(string name)
|
||||||
{
|
{
|
||||||
// find the first connector with the specified name
|
var marker = CurrentMap.Markers.GetNode<Marker2D>(name);
|
||||||
// TODO: replace this with event buses
|
CurrentPlayer.GlobalPosition = marker?.GlobalPosition ?? Vector2.Zero;
|
||||||
//var connector = CurrentMap.Areas.GetChildren().First((child) =>
|
|
||||||
//{
|
|
||||||
// if (child is BoundingBoxes.ConnectorBox connector)
|
|
||||||
// {
|
|
||||||
// return connector.Identifier == name;
|
|
||||||
// }
|
|
||||||
// return false;
|
|
||||||
//}) as BoundingBoxes.ConnectorBox;
|
|
||||||
|
|
||||||
//CurrentPlayer.GlobalPosition = connector.GlobalPosition;
|
|
||||||
CurrentPlayer.GlobalPosition = Vector2.Zero;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MoveToArea(string path, string connector)
|
public void MoveToArea(string path, string connector)
|
||||||
|
|
Loading…
Reference in New Issue