Skip to content

Commit

Permalink
Add room flag tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mpewsey committed Jun 2, 2024
1 parent 10e1f35 commit 629daca
Show file tree
Hide file tree
Showing 9 changed files with 266 additions and 2 deletions.
3 changes: 3 additions & 0 deletions addons/mpewsey.maniamap/scripts/runtime/CellChild3D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

namespace MPewsey.ManiaMapGodot
{
/// <summary>
/// The base class for elements tied to a RoomNode3D's cell index.
/// </summary>
[Tool]
[GlobalClass]
public abstract partial class CellChild3D : Node3D, ICellChild
Expand Down
13 changes: 13 additions & 0 deletions samples/2d_rooms/room_flag_2d.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[gd_scene load_steps=3 format=3 uid="uid://bbpnjxxkk1k0n"]

[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/RoomFlag2D.cs" id="1_0xcd1"]
[ext_resource type="TileSet" uid="uid://ykn7rmdr2b4y" path="res://samples/2d_rooms/tile_sets/dungeon_tile_set.tres" id="2_u01be"]

[node name="RoomFlag2D" type="Node2D"]
script = ExtResource("1_0xcd1")

[node name="TileMap" type="TileMap" parent="."]
position = Vector2(-8, -8)
tile_set = ExtResource("2_u01be")
format = 2
layer_0/tile_data = PackedInt32Array(0, 393216, 8)
12 changes: 11 additions & 1 deletion samples/2d_rooms/square_3x3_room_2d.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://q5m1xi8abbjp"]
[gd_scene load_steps=10 format=3 uid="uid://q5m1xi8abbjp"]

[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/RoomNode2D.cs" id="1_c0wlp"]
[ext_resource type="Resource" uid="uid://bkwrb8mkh8tol" path="res://samples/2d_rooms/square_3x3_room_2d.room_template.tres" id="2_alrqx"]
Expand All @@ -8,6 +8,7 @@
[ext_resource type="PackedScene" uid="uid://xkhj4cw4nxkw" path="res://samples/2d_rooms/west_door_node_2d.tscn" id="5_2qq6f"]
[ext_resource type="PackedScene" uid="uid://b6kteenwbvjcj" path="res://samples/2d_rooms/east_door_node_2d.tscn" id="6_1puma"]
[ext_resource type="PackedScene" uid="uid://bdeivfhh25np3" path="res://samples/2d_rooms/collectable_spot_2d.tscn" id="8_vgecj"]
[ext_resource type="PackedScene" uid="uid://bbpnjxxkk1k0n" path="res://samples/2d_rooms/room_flag_2d.tscn" id="9_8ddb5"]

[node name="Square3x3Room2D" type="Node2D"]
script = ExtResource("1_c0wlp")
Expand Down Expand Up @@ -122,3 +123,12 @@ Id = 1751608605
Room = NodePath("../..")
Row = 2
Column = 2

[node name="RoomFlags" type="Node2D" parent="."]

[node name="RoomFlag2D" parent="RoomFlags" node_paths=PackedStringArray("Room") instance=ExtResource("9_8ddb5")]
position = Vector2(144, 144)
Id = 626746143
Room = NodePath("../..")
Row = 1
Column = 1
20 changes: 20 additions & 0 deletions samples/3d_rooms/room_flag_3d.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[gd_scene load_steps=4 format=3 uid="uid://q4v0d0mtto26"]

[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/RoomFlag3D.cs" id="1_yj6px"]

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vptg8"]
vertex_color_use_as_albedo = true
albedo_color = Color(1, 1, 0, 1)

[sub_resource type="CylinderMesh" id="CylinderMesh_uf3ou"]
top_radius = 0.4
bottom_radius = 0.4
height = 0.1

[node name="RoomFlag3D" type="Node3D"]
script = ExtResource("1_yj6px")

[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_vptg8")
mesh = SubResource("CylinderMesh_uf3ou")
12 changes: 11 additions & 1 deletion samples/3d_rooms/square_3x3_room_3d.tscn
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=3 uid="uid://i0l4nkbmjqye"]
[gd_scene load_steps=13 format=3 uid="uid://i0l4nkbmjqye"]

[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/RoomNode3D.cs" id="1_sxisd"]
[ext_resource type="Resource" uid="uid://vde0h7n6mse5" path="res://samples/3d_rooms/square_3x3_room_3d.room_template.tres" id="2_1c1c4"]
Expand All @@ -7,6 +7,7 @@
[ext_resource type="PackedScene" uid="uid://5eymjw33lylv" path="res://samples/3d_rooms/bottom_door_node_3d.tscn" id="5_5nabe"]
[ext_resource type="PackedScene" uid="uid://qd7xvywc8cjw" path="res://samples/3d_rooms/top_door_node_3d.tscn" id="5_ag8ud"]
[ext_resource type="Material" uid="uid://vdejptctpmtk" path="res://samples/3d_rooms/wall_material.tres" id="6_yshji"]
[ext_resource type="PackedScene" uid="uid://q4v0d0mtto26" path="res://samples/3d_rooms/room_flag_3d.tscn" id="8_bqqxb"]

[sub_resource type="BoxMesh" id="BoxMesh_pmtfc"]
size = Vector3(2, 0.1, 2)
Expand Down Expand Up @@ -584,3 +585,12 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 0, 1)
Id = 141321685
Room = NodePath("../..")
Column = 2

[node name="RoomFlags" type="Node3D" parent="."]

[node name="RoomFlag3D" parent="RoomFlags" node_paths=PackedStringArray("Room") instance=ExtResource("8_bqqxb")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9, 1, 10)
Id = 1375822846
Room = NodePath("../..")
Row = 1
Column = 1
50 changes: 50 additions & 0 deletions tests/scenes/test_room_2d.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
[gd_scene load_steps=12 format=3 uid="uid://dsyp4281u8x3n"]

[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/GenerationPipeline.cs" id="1_lbkuj"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/GenerationIntInput.cs" id="2_ecn8f"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/RandomSeedInput.cs" id="3_sn0uq"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGraphsInput.cs" id="4_irfgy"]
[ext_resource type="Resource" uid="uid://c2vpyp38ge6oo" path="res://samples/2d_rooms/graphs/cross_graph_2d.tres" id="5_kivkf"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/CollectableGroupsInput.cs" id="6_88goh"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGraphSelectorStep.cs" id="7_gqw7m"]
[ext_resource type="Resource" uid="uid://bq7q406xfxw5t" path="res://samples/2d_rooms/collectable_group_2d.tres" id="7_uyvor"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGraphRandomizerStep.cs" id="8_fe031"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGeneratorStep.cs" id="9_ag5oc"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/CollectableGeneratorStep.cs" id="10_2iygp"]

[node name="TestRoom2DCellAreas" type="Node"]

[node name="GenerationPipeline" type="Node" parent="."]
script = ExtResource("1_lbkuj")

[node name="Inputs" type="Node" parent="GenerationPipeline"]

[node name="LayoutIdInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("2_ecn8f")
InputName = "LayoutId"
Value = 530369953

[node name="RandomSeedInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("3_sn0uq")

[node name="LayoutGraphsInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("4_irfgy")
LayoutGraphs = [ExtResource("5_kivkf")]

[node name="CollectableGroupsInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("6_88goh")
CollectableGroups = [ExtResource("7_uyvor")]

[node name="Steps" type="Node" parent="GenerationPipeline"]

[node name="LayoutGraphSelectorStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("7_gqw7m")

[node name="LayoutGraphRandomizerStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("8_fe031")

[node name="LayoutGeneratorStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("9_ag5oc")

[node name="CollectableGeneratorStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("10_2iygp")
70 changes: 70 additions & 0 deletions tests/scenes/test_room_3d.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
[gd_scene load_steps=15 format=3 uid="uid://chi7ur84wslyu"]

[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/GenerationPipeline.cs" id="1_uiu4r"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/GenerationIntInput.cs" id="2_mgqko"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/RandomSeedInput.cs" id="3_x132s"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGraphsInput.cs" id="4_f6cwk"]
[ext_resource type="Resource" uid="uid://e4d85cd7126l" path="res://samples/3d_rooms/graphs/cross_graph_3d.tres" id="5_6stf3"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/CollectableGroupsInput.cs" id="6_ta3tv"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGraphSelectorStep.cs" id="7_8juyy"]
[ext_resource type="Resource" uid="uid://5cjmos17qwf2" path="res://samples/3d_rooms/collectable_group_3d.tres" id="7_f1v1t"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGraphRandomizerStep.cs" id="8_02fmc"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/LayoutGeneratorStep.cs" id="9_4kaw6"]
[ext_resource type="Script" path="res://addons/mpewsey.maniamap/scripts/runtime/generators/CollectableGeneratorStep.cs" id="10_ak3d7"]

[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_5qrng"]
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)

[sub_resource type="Sky" id="Sky_rhlmc"]
sky_material = SubResource("ProceduralSkyMaterial_5qrng")

[sub_resource type="Environment" id="Environment_srts6"]
background_mode = 2
sky = SubResource("Sky_rhlmc")
tonemap_mode = 2
glow_enabled = true

[node name="TestRoom3DCellAreas" type="Node"]

[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
shadow_enabled = true

[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_srts6")

[node name="GenerationPipeline" type="Node" parent="."]
script = ExtResource("1_uiu4r")

[node name="Inputs" type="Node" parent="GenerationPipeline"]

[node name="LayoutIdInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("2_mgqko")
InputName = "LayoutId"
Value = 530369953

[node name="RandomSeedInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("3_x132s")

[node name="LayoutGraphsInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("4_f6cwk")
LayoutGraphs = [ExtResource("5_6stf3")]

[node name="CollectableGroupsInput" type="Node" parent="GenerationPipeline/Inputs"]
script = ExtResource("6_ta3tv")
CollectableGroups = [ExtResource("7_f1v1t")]

[node name="Steps" type="Node" parent="GenerationPipeline"]

[node name="LayoutGraphSelectorStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("7_8juyy")

[node name="LayoutGraphRandomizerStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("8_02fmc")

[node name="LayoutGeneratorStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("9_4kaw6")

[node name="CollectableGeneratorStep" type="Node" parent="GenerationPipeline/Steps"]
script = ExtResource("10_ak3d7")
44 changes: 44 additions & 0 deletions tests/scripts/TestRoomNode2D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ namespace MPewsey.ManiaMapGodot.Tests
public class TestRoomNode2D
{
private const string TestCellAreasScene = "uid://i1ywx2t50wxg";
private const string TestRoomScene = "uid://dsyp4281u8x3n";
private const string RoomTemplateDatabase = "uid://cpbx1jxf4xwvd";
private const string ArtifactDirectory = "user://tests/room2d/";

Expand Down Expand Up @@ -127,6 +128,49 @@ public void TestCellIndexExists()
room.QueueFree();
}

[TestCase]
public void TestRoomFlag()
{
var database = ResourceLoader.Load<RoomTemplateDatabase>(RoomTemplateDatabase);
var runner = SceneRunner.RunScene(TestRoomScene);
var root = runner.Scene();
var pipeline = root.FindChild(nameof(GenerationPipeline)) as GenerationPipeline;
Assertions.AssertThat(pipeline != null).IsTrue();
var results = pipeline.Run(logger: GD.Print);
Assertions.AssertThat(results.Success).IsTrue();
var layout = results.GetOutput<Layout>("Layout");
var state = new LayoutState(layout);
var roomId = layout.Rooms.Keys.First();
var roomState = state.RoomStates[roomId];
ManiaMapManager.Initialize(layout, state, new ManiaMapSettings());

var room = database.CreateRoom2DInstance(roomId, root);
var roomFlags = room.FindChildren("*", nameof(RoomFlag2D), true, false);
Assertions.AssertThat(roomFlags.Count).IsGreater(0);
var roomFlag = roomFlags[0] as RoomFlag2D;
Assertions.AssertThat(roomFlag != null).IsTrue();

Assertions.AssertThat(roomFlag.FlagIsSet()).IsFalse();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsFalse();

Assertions.AssertThat(roomFlag.SetFlag()).IsTrue();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsTrue();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsTrue();

Assertions.AssertThat(roomFlag.RemoveFlag()).IsTrue();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsFalse();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsFalse();
Assertions.AssertThat(roomFlag.RemoveFlag()).IsFalse();

Assertions.AssertThat(roomFlag.ToggleFlag()).IsTrue();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsTrue();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsTrue();

Assertions.AssertThat(roomFlag.ToggleFlag()).IsFalse();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsFalse();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsFalse();
}

[TestCase]
public async Task TestOnAreaEnteredCellArea()
{
Expand Down
44 changes: 44 additions & 0 deletions tests/scripts/TestRoomNode3D.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class TestRoomNode3D
{
private const string EmptyScene = "uid://m8fcccufss1";
private const string TestCellAreasScene = "uid://duaufvulkyino";
private const string TestRoomScene = "uid://chi7ur84wslyu";
private const string RoomTemplateDatabase = "uid://l38x064m8j7q";
private const string ArtifactDirectory = "user://tests/room3d/";

Expand Down Expand Up @@ -135,6 +136,49 @@ public void TestCellIndexExists()
room.QueueFree();
}

[TestCase]
public void TestRoomFlag()
{
var database = ResourceLoader.Load<RoomTemplateDatabase>(RoomTemplateDatabase);
var runner = SceneRunner.RunScene(TestRoomScene);
var root = runner.Scene();
var pipeline = root.FindChild(nameof(GenerationPipeline)) as GenerationPipeline;
Assertions.AssertThat(pipeline != null).IsTrue();
var results = pipeline.Run(logger: GD.Print);
Assertions.AssertThat(results.Success).IsTrue();
var layout = results.GetOutput<Layout>("Layout");
var state = new LayoutState(layout);
var roomId = layout.Rooms.Keys.First();
var roomState = state.RoomStates[roomId];
ManiaMapManager.Initialize(layout, state, new ManiaMapSettings());

var room = database.CreateRoom3DInstance(roomId, root);
var roomFlags = room.FindChildren("*", nameof(RoomFlag3D), true, false);
Assertions.AssertThat(roomFlags.Count).IsGreater(0);
var roomFlag = roomFlags[0] as RoomFlag3D;
Assertions.AssertThat(roomFlag != null).IsTrue();

Assertions.AssertThat(roomFlag.FlagIsSet()).IsFalse();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsFalse();

Assertions.AssertThat(roomFlag.SetFlag()).IsTrue();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsTrue();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsTrue();

Assertions.AssertThat(roomFlag.RemoveFlag()).IsTrue();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsFalse();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsFalse();
Assertions.AssertThat(roomFlag.RemoveFlag()).IsFalse();

Assertions.AssertThat(roomFlag.ToggleFlag()).IsTrue();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsTrue();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsTrue();

Assertions.AssertThat(roomFlag.ToggleFlag()).IsFalse();
Assertions.AssertThat(roomState.Flags.Contains(roomFlag.Id)).IsFalse();
Assertions.AssertThat(roomFlag.FlagIsSet()).IsFalse();
}

[TestCase]
public async Task TestOnAreaEnteredCellArea()
{
Expand Down

0 comments on commit 629daca

Please sign in to comment.