diff --git a/.devtools/dialog_visualizations/README.md b/.devtools/dialog_visualizations/README.md index c7fb3c33..7721dfac 100644 --- a/.devtools/dialog_visualizations/README.md +++ b/.devtools/dialog_visualizations/README.md @@ -4,5 +4,5 @@ The `.png`s are not checked in to the repository. Use the following command to generate the `.png`s and watch for changes to the `.toml`s: ```bash -./bin/visualize_dialog +./dev/visualize_dialog ``` diff --git a/Cargo.lock b/Cargo.lock index 8311daa3..59dbe7df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2906,6 +2906,7 @@ dependencies = [ "main_game_lib", "scene_building1_basement1", "scene_building1_player_floor", + "scene_clinic", "scene_downtown", "scene_mall", "scene_meditation", @@ -3819,6 +3820,28 @@ dependencies = [ "strum", ] +[[package]] +name = "scene_clinic" +version = "0.1.0" +dependencies = [ + "bevy", + "bevy_grid_squared", + "bevy_pixel_camera", + "common_action", + "common_assets", + "common_loading_screen", + "common_store", + "common_story", + "common_visuals", + "itertools", + "lazy_static", + "main_game_lib", + "rand", + "serde", + "smallvec", + "strum", +] + [[package]] name = "scene_downtown" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 16665510..b2dcea7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ members = [ "main_game", "scenes/building1_basement1", "scenes/building1_player_floor", + "scenes/clinic", "scenes/downtown", "scenes/mall", "scenes/meditation", @@ -54,6 +55,7 @@ bevy_egui = "0.27" scene_building1_basement1 = { path = "scenes/building1_basement1" } scene_building1_player_floor = { path = "scenes/building1_player_floor" } +scene_clinic = { path = "scenes/clinic" } scene_downtown = { path = "scenes/downtown" } scene_mall = { path = "scenes/mall" } scene_meditation = { path = "scenes/meditation" } diff --git a/README.md b/README.md index bfd22074..1ca53f69 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A top down pixelart game created with [Bevy](https://bevyengine.org/). -Run `$ ./bin/wiki` to open the game's [wiki](wiki/README.md) locally in your browser. +Run `$ ./dev/wiki` to open the game's [wiki](wiki/README.md) locally in your browser. # Repo organization diff --git a/bin/visualize_dialog b/bin/visualize_dialog deleted file mode 100755 index 08b7c211..00000000 --- a/bin/visualize_dialog +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -python3 bin/visualize_dialog.py --watch diff --git a/bin/check b/dev/check similarity index 100% rename from bin/check rename to dev/check diff --git a/dev/visualize_dialog b/dev/visualize_dialog new file mode 100755 index 00000000..7b016b0a --- /dev/null +++ b/dev/visualize_dialog @@ -0,0 +1,3 @@ +#!/bin/bash + +python3 dev/visualize_dialog.py --watch diff --git a/bin/visualize_dialog.py b/dev/visualize_dialog.py similarity index 100% rename from bin/visualize_dialog.py rename to dev/visualize_dialog.py diff --git a/bin/wiki b/dev/wiki similarity index 100% rename from bin/wiki rename to dev/wiki diff --git a/main_game/Cargo.toml b/main_game/Cargo.toml index dcebfa34..7d72d993 100644 --- a/main_game/Cargo.toml +++ b/main_game/Cargo.toml @@ -28,6 +28,7 @@ common_story.workspace = true main_game_lib.workspace = true scene_building1_basement1.workspace = true scene_building1_player_floor.workspace = true +scene_clinic.workspace = true scene_downtown.workspace = true scene_mall.workspace = true scene_meditation.workspace = true diff --git a/main_game/assets/characters/atlases/Phoebe1.png b/main_game/assets/characters/atlases/phoebe1.png similarity index 100% rename from main_game/assets/characters/atlases/Phoebe1.png rename to main_game/assets/characters/atlases/phoebe1.png diff --git a/main_game/assets/downtown/jehlicnan_flipped.png b/main_game/assets/downtown/jehlicnan_flipped.png deleted file mode 100644 index 7de27ba1..00000000 Binary files a/main_game/assets/downtown/jehlicnan_flipped.png and /dev/null differ diff --git a/main_game/assets/maps/clinic.ron b/main_game/assets/maps/clinic.ron new file mode 100644 index 00000000..cb0a8255 --- /dev/null +++ b/main_game/assets/maps/clinic.ron @@ -0,0 +1,829 @@ +( + squares: { + (x: -60, y: -20): [Wall], + (x: -59, y: -20): [Wall], + (x: -58, y: -20): [Wall], + (x: -57, y: -20): [Wall], + (x: -56, y: -20): [Wall], + (x: -55, y: -20): [Wall], + (x: -54, y: -33): [Wall], + (x: -54, y: -32): [Wall], + (x: -54, y: -31): [Wall], + (x: -54, y: -30): [Wall], + (x: -54, y: -29): [Wall], + (x: -54, y: -28): [Wall], + (x: -54, y: -27): [Wall], + (x: -54, y: -26): [Wall], + (x: -54, y: -25): [Wall], + (x: -54, y: -24): [Wall], + (x: -54, y: -23): [Wall], + (x: -54, y: -22): [Wall], + (x: -54, y: -21): [Wall], + (x: -54, y: -20): [Wall], + (x: -54, y: -19): [Wall], + (x: -54, y: -18): [Wall], + (x: -54, y: -17): [Wall], + (x: -54, y: -16): [Wall], + (x: -54, y: -15): [Wall], + (x: -54, y: -14): [Wall], + (x: -54, y: -13): [Wall], + (x: -54, y: -12): [Wall], + (x: -54, y: -11): [Wall], + (x: -54, y: -10): [Wall], + (x: -54, y: -9): [Wall], + (x: -54, y: -8): [Wall], + (x: -54, y: -7): [Wall], + (x: -54, y: -6): [Wall], + (x: -54, y: -5): [Wall], + (x: -54, y: -4): [Wall], + (x: -54, y: -3): [Wall], + (x: -54, y: -2): [Wall], + (x: -54, y: -1): [Wall], + (x: -54, y: 0): [Wall], + (x: -54, y: 1): [Wall], + (x: -54, y: 2): [Wall], + (x: -54, y: 3): [Wall], + (x: -54, y: 4): [Wall], + (x: -54, y: 5): [Wall], + (x: -53, y: -33): [Wall], + (x: -53, y: -23): [Wall], + (x: -53, y: -20): [Wall], + (x: -53, y: -7): [Wall], + (x: -53, y: -6): [Wall], + (x: -53, y: 5): [Wall], + (x: -52, y: -33): [Wall], + (x: -52, y: -23): [Wall], + (x: -52, y: -20): [Wall], + (x: -52, y: -7): [Wall], + (x: -52, y: -6): [Wall], + (x: -52, y: 5): [Wall], + (x: -51, y: -33): [Wall], + (x: -51, y: -23): [Wall], + (x: -51, y: -20): [Wall], + (x: -51, y: -7): [Wall], + (x: -51, y: -6): [Wall], + (x: -51, y: 5): [Wall], + (x: -50, y: -33): [Wall], + (x: -50, y: -23): [Wall], + (x: -50, y: -20): [Wall], + (x: -50, y: -7): [Wall], + (x: -50, y: -6): [Wall], + (x: -50, y: 5): [Wall], + (x: -49, y: -33): [Wall], + (x: -49, y: -23): [Wall], + (x: -49, y: -20): [Wall], + (x: -49, y: -7): [Wall], + (x: -49, y: -6): [Wall], + (x: -49, y: 5): [Wall], + (x: -48, y: -33): [Wall], + (x: -48, y: -23): [Wall], + (x: -48, y: -20): [Wall], + (x: -48, y: -7): [Wall], + (x: -48, y: -6): [Wall], + (x: -48, y: 5): [Wall], + (x: -47, y: -33): [Wall], + (x: -47, y: -23): [Wall], + (x: -47, y: -22): [Wall], + (x: -47, y: -20): [Wall], + (x: -47, y: -7): [Wall], + (x: -47, y: -6): [Wall], + (x: -47, y: 5): [Wall], + (x: -46, y: -33): [Wall], + (x: -46, y: -22): [Wall], + (x: -46, y: -21): [Wall], + (x: -46, y: -20): [Wall], + (x: -46, y: -7): [Wall], + (x: -46, y: -6): [Wall], + (x: -46, y: 5): [Wall], + (x: -45, y: -33): [Wall], + (x: -45, y: -21): [Wall], + (x: -45, y: -20): [Wall], + (x: -45, y: -7): [Wall], + (x: -45, y: -6): [Wall], + (x: -45, y: 5): [Wall], + (x: -44, y: -33): [Wall], + (x: -44, y: -20): [Wall], + (x: -44, y: -19): [Local(DoorZone)], + (x: -44, y: -18): [Local(DoorZone)], + (x: -44, y: -17): [Local(DoorZone)], + (x: -44, y: -16): [Local(DoorZone)], + (x: -44, y: -15): [Local(DoorZone)], + (x: -44, y: -7): [Wall], + (x: -44, y: -6): [Wall], + (x: -44, y: 5): [Wall], + (x: -43, y: -33): [Wall], + (x: -43, y: -32): [Local(ExitZone)], + (x: -43, y: -31): [Local(ExitZone)], + (x: -43, y: -30): [Local(ExitZone)], + (x: -43, y: -29): [Local(ExitZone)], + (x: -43, y: -28): [Local(ExitZone)], + (x: -43, y: -27): [Local(ExitZone)], + (x: -43, y: -24): [Local(DoorZone)], + (x: -43, y: -23): [Local(DoorZone)], + (x: -43, y: -22): [Local(DoorZone)], + (x: -43, y: -21): [Local(DoorZone)], + (x: -43, y: -20): [Wall], + (x: -43, y: -19): [Local(DoorZone)], + (x: -43, y: -18): [Local(DoorZone)], + (x: -43, y: -17): [Local(DoorZone)], + (x: -43, y: -16): [Local(DoorZone)], + (x: -43, y: -15): [Local(DoorZone)], + (x: -43, y: -7): [Wall], + (x: -43, y: -6): [Wall], + (x: -43, y: 5): [Wall], + (x: -42, y: -33): [Wall], + (x: -42, y: -32): [Local(ExitZone)], + (x: -42, y: -31): [Local(ExitZone)], + (x: -42, y: -30): [Local(ExitZone)], + (x: -42, y: -29): [Local(ExitZone)], + (x: -42, y: -28): [Local(ExitZone)], + (x: -42, y: -27): [Local(ExitZone)], + (x: -42, y: -24): [Local(DoorZone)], + (x: -42, y: -23): [Local(DoorZone)], + (x: -42, y: -22): [Local(DoorZone)], + (x: -42, y: -21): [Local(DoorZone)], + (x: -42, y: -20): [Wall], + (x: -42, y: -19): [Local(DoorZone)], + (x: -42, y: -18): [Local(DoorZone)], + (x: -42, y: -17): [Local(DoorZone)], + (x: -42, y: -16): [Local(DoorZone)], + (x: -42, y: -15): [Local(DoorZone)], + (x: -42, y: -7): [Wall], + (x: -42, y: -6): [Wall], + (x: -42, y: 5): [Wall], + (x: -41, y: -33): [Wall], + (x: -41, y: -32): [Local(ExitZone)], + (x: -41, y: -31): [Local(ExitZone)], + (x: -41, y: -30): [Local(ExitZone)], + (x: -41, y: -29): [Local(ExitZone)], + (x: -41, y: -28): [Local(ExitZone)], + (x: -41, y: -27): [Local(ExitZone)], + (x: -41, y: -24): [Local(DoorZone)], + (x: -41, y: -23): [Local(DoorZone)], + (x: -41, y: -22): [Local(DoorZone)], + (x: -41, y: -21): [Local(DoorZone)], + (x: -41, y: -20): [Local(DoorZone)], + (x: -41, y: -19): [Local(DoorZone)], + (x: -41, y: -18): [Local(DoorZone)], + (x: -41, y: -17): [Local(DoorZone)], + (x: -41, y: -16): [Local(DoorZone)], + (x: -41, y: -15): [Local(DoorZone)], + (x: -41, y: -7): [Wall], + (x: -41, y: -6): [Wall], + (x: -41, y: 5): [Wall], + (x: -40, y: -33): [Wall], + (x: -40, y: -32): [Local(ExitZone)], + (x: -40, y: -31): [Local(ExitZone)], + (x: -40, y: -30): [Local(ExitZone)], + (x: -40, y: -29): [Local(ExitZone)], + (x: -40, y: -28): [Local(ExitZone)], + (x: -40, y: -27): [Local(ExitZone)], + (x: -40, y: -24): [Local(DoorZone)], + (x: -40, y: -23): [Local(DoorZone)], + (x: -40, y: -22): [Local(DoorZone)], + (x: -40, y: -21): [Local(DoorZone)], + (x: -40, y: -20): [Local(DoorZone)], + (x: -40, y: -19): [Local(DoorZone)], + (x: -40, y: -18): [Local(DoorZone)], + (x: -40, y: -17): [Local(DoorZone)], + (x: -40, y: -16): [Local(DoorZone)], + (x: -40, y: -15): [Local(DoorZone)], + (x: -40, y: -7): [Wall], + (x: -40, y: -6): [Wall], + (x: -40, y: 5): [Wall], + (x: -39, y: -33): [Wall], + (x: -39, y: -32): [Local(ExitZone)], + (x: -39, y: -31): [Local(ExitZone)], + (x: -39, y: -30): [Local(ExitZone)], + (x: -39, y: -29): [Local(ExitZone)], + (x: -39, y: -28): [Local(ExitZone)], + (x: -39, y: -27): [Local(ExitZone)], + (x: -39, y: -24): [Local(DoorZone)], + (x: -39, y: -23): [Local(DoorZone)], + (x: -39, y: -22): [Local(DoorZone)], + (x: -39, y: -21): [Local(DoorZone)], + (x: -39, y: -20): [Local(DoorZone)], + (x: -39, y: -19): [Local(DoorZone)], + (x: -39, y: -18): [Local(DoorZone)], + (x: -39, y: -17): [Local(DoorZone)], + (x: -39, y: -16): [Local(DoorZone)], + (x: -39, y: -15): [Local(DoorZone)], + (x: -39, y: -7): [Wall], + (x: -39, y: -6): [Wall], + (x: -39, y: 5): [Wall], + (x: -38, y: -33): [Wall], + (x: -38, y: -32): [Local(ExitZone)], + (x: -38, y: -31): [Local(ExitZone)], + (x: -38, y: -30): [Local(ExitZone)], + (x: -38, y: -29): [Local(ExitZone)], + (x: -38, y: -28): [Local(ExitZone)], + (x: -38, y: -27): [Local(ExitZone)], + (x: -38, y: -24): [Local(DoorZone)], + (x: -38, y: -23): [Local(DoorZone)], + (x: -38, y: -22): [Local(DoorZone)], + (x: -38, y: -21): [Local(DoorZone)], + (x: -38, y: -20): [Local(DoorZone)], + (x: -38, y: -19): [Local(DoorZone)], + (x: -38, y: -18): [Local(DoorZone)], + (x: -38, y: -17): [Local(DoorZone)], + (x: -38, y: -16): [Local(DoorZone)], + (x: -38, y: -15): [Local(DoorZone)], + (x: -38, y: -7): [Wall], + (x: -38, y: -6): [Wall], + (x: -38, y: 5): [Wall], + (x: -37, y: -33): [Wall], + (x: -37, y: -32): [Local(ExitZone)], + (x: -37, y: -31): [Local(ExitZone)], + (x: -37, y: -30): [Local(ExitZone)], + (x: -37, y: -29): [Local(ExitZone)], + (x: -37, y: -28): [Local(ExitZone)], + (x: -37, y: -27): [Local(ExitZone)], + (x: -37, y: -24): [Local(DoorZone)], + (x: -37, y: -23): [Local(DoorZone)], + (x: -37, y: -22): [Local(DoorZone)], + (x: -37, y: -21): [Local(DoorZone)], + (x: -37, y: -20): [Local(DoorZone)], + (x: -37, y: -19): [Local(DoorZone)], + (x: -37, y: -18): [Local(DoorZone)], + (x: -37, y: -17): [Local(DoorZone)], + (x: -37, y: -16): [Local(DoorZone)], + (x: -37, y: -15): [Local(DoorZone)], + (x: -37, y: -7): [Wall], + (x: -37, y: -6): [Wall], + (x: -37, y: 5): [Wall], + (x: -36, y: -33): [Wall], + (x: -36, y: -32): [Local(ExitZone)], + (x: -36, y: -31): [Local(ExitZone)], + (x: -36, y: -30): [Local(ExitZone)], + (x: -36, y: -29): [Local(ExitZone)], + (x: -36, y: -28): [Local(ExitZone)], + (x: -36, y: -27): [Local(ExitZone)], + (x: -36, y: -24): [Local(DoorZone)], + (x: -36, y: -23): [Local(DoorZone)], + (x: -36, y: -22): [Local(DoorZone)], + (x: -36, y: -21): [Local(DoorZone)], + (x: -36, y: -20): [Local(DoorZone)], + (x: -36, y: -19): [Local(DoorZone)], + (x: -36, y: -18): [Local(DoorZone)], + (x: -36, y: -17): [Local(DoorZone)], + (x: -36, y: -16): [Local(DoorZone)], + (x: -36, y: -15): [Local(DoorZone)], + (x: -36, y: -7): [Wall], + (x: -36, y: -6): [Wall], + (x: -36, y: 5): [Wall], + (x: -35, y: -33): [Wall], + (x: -35, y: -32): [Local(ExitZone)], + (x: -35, y: -31): [Local(ExitZone)], + (x: -35, y: -30): [Local(ExitZone)], + (x: -35, y: -29): [Local(ExitZone)], + (x: -35, y: -28): [Local(ExitZone)], + (x: -35, y: -27): [Local(ExitZone)], + (x: -35, y: -24): [Local(DoorZone)], + (x: -35, y: -23): [Local(DoorZone)], + (x: -35, y: -22): [Local(DoorZone)], + (x: -35, y: -21): [Local(DoorZone)], + (x: -35, y: -20): [Local(DoorZone)], + (x: -35, y: -19): [Local(DoorZone)], + (x: -35, y: -18): [Local(DoorZone)], + (x: -35, y: -17): [Local(DoorZone)], + (x: -35, y: -16): [Local(DoorZone)], + (x: -35, y: -15): [Local(DoorZone)], + (x: -35, y: -6): [Wall], + (x: -35, y: -5): [Wall], + (x: -35, y: -4): [Wall], + (x: -35, y: -3): [Wall], + (x: -35, y: -2): [Wall], + (x: -35, y: -1): [Wall], + (x: -35, y: 0): [Wall], + (x: -35, y: 1): [Wall], + (x: -35, y: 2): [Wall], + (x: -35, y: 3): [Wall], + (x: -35, y: 4): [Wall], + (x: -35, y: 5): [Wall], + (x: -34, y: -33): [Wall], + (x: -34, y: -32): [Local(ExitZone)], + (x: -34, y: -31): [Local(ExitZone)], + (x: -34, y: -30): [Local(ExitZone)], + (x: -34, y: -29): [Local(ExitZone)], + (x: -34, y: -28): [Local(ExitZone)], + (x: -34, y: -27): [Local(ExitZone)], + (x: -34, y: -24): [Local(DoorZone)], + (x: -34, y: -23): [Local(DoorZone)], + (x: -34, y: -22): [Local(DoorZone)], + (x: -34, y: -21): [Local(DoorZone)], + (x: -34, y: -20): [Wall], + (x: -34, y: -19): [Local(DoorZone)], + (x: -34, y: -18): [Local(DoorZone)], + (x: -34, y: -17): [Local(DoorZone)], + (x: -34, y: -16): [Local(DoorZone)], + (x: -34, y: -15): [Local(DoorZone)], + (x: -34, y: 5): [Wall], + (x: -33, y: -33): [Wall], + (x: -33, y: -24): [Local(DoorZone)], + (x: -33, y: -23): [Local(DoorZone)], + (x: -33, y: -22): [Local(DoorZone)], + (x: -33, y: -21): [Local(DoorZone)], + (x: -33, y: -20): [Wall], + (x: -33, y: -19): [Local(DoorZone)], + (x: -33, y: -18): [Local(DoorZone)], + (x: -33, y: -17): [Local(DoorZone)], + (x: -33, y: -16): [Local(DoorZone)], + (x: -33, y: -15): [Local(DoorZone)], + (x: -33, y: 5): [Wall], + (x: -32, y: -33): [Wall], + (x: -32, y: -24): [Local(DoorZone)], + (x: -32, y: -23): [Local(DoorZone)], + (x: -32, y: -22): [Local(DoorZone)], + (x: -32, y: -21): [Local(DoorZone)], + (x: -32, y: -20): [Wall], + (x: -32, y: -19): [Local(DoorZone)], + (x: -32, y: -18): [Local(DoorZone)], + (x: -32, y: -17): [Local(DoorZone)], + (x: -32, y: -16): [Local(DoorZone)], + (x: -32, y: -15): [Local(DoorZone)], + (x: -32, y: 5): [Wall], + (x: -31, y: -33): [Wall], + (x: -31, y: -24): [Local(DoorZone)], + (x: -31, y: -23): [Local(DoorZone)], + (x: -31, y: -22): [Local(DoorZone)], + (x: -31, y: -21): [Local(DoorZone)], + (x: -31, y: -20): [Wall], + (x: -31, y: -19): [Local(DoorZone)], + (x: -31, y: -18): [Local(DoorZone)], + (x: -31, y: -17): [Local(DoorZone)], + (x: -31, y: -16): [Local(DoorZone)], + (x: -31, y: -15): [Local(DoorZone)], + (x: -31, y: 4): [Wall], + (x: -31, y: 5): [Wall], + (x: -30, y: -33): [Wall], + (x: -30, y: -24): [Local(DoorZone)], + (x: -30, y: -23): [Local(DoorZone)], + (x: -30, y: -22): [Local(DoorZone)], + (x: -30, y: -21): [Local(DoorZone)], + (x: -30, y: -20): [Wall], + (x: -30, y: -19): [Local(DoorZone)], + (x: -30, y: -18): [Local(DoorZone)], + (x: -30, y: -17): [Local(DoorZone)], + (x: -30, y: -16): [Local(DoorZone)], + (x: -30, y: -15): [Local(DoorZone)], + (x: -30, y: 3): [Wall], + (x: -30, y: 4): [Wall], + (x: -30, y: 5): [Wall], + (x: -29, y: -33): [Wall], + (x: -29, y: -21): [Wall], + (x: -29, y: -20): [Wall], + (x: -29, y: -19): [Local(DoorZone)], + (x: -29, y: -18): [Local(DoorZone)], + (x: -29, y: -17): [Local(DoorZone)], + (x: -29, y: -16): [Local(DoorZone)], + (x: -29, y: -15): [Local(DoorZone)], + (x: -29, y: 2): [Wall], + (x: -29, y: 3): [Wall], + (x: -29, y: 5): [Wall], + (x: -28, y: -33): [Wall], + (x: -28, y: -21): [Wall], + (x: -28, y: -20): [Wall], + (x: -28, y: 2): [Wall], + (x: -28, y: 5): [Wall], + (x: -27, y: -33): [Wall], + (x: -27, y: -21): [Wall], + (x: -27, y: -20): [Wall], + (x: -27, y: 2): [Wall], + (x: -27, y: 5): [Wall], + (x: -26, y: -33): [Wall], + (x: -26, y: -21): [Wall], + (x: -26, y: -20): [Wall], + (x: -26, y: 2): [Wall], + (x: -26, y: 5): [Wall], + (x: -25, y: -33): [Wall], + (x: -25, y: -21): [Wall], + (x: -25, y: -20): [Wall], + (x: -25, y: -11): [Wall], + (x: -25, y: -10): [Wall], + (x: -25, y: -9): [Wall], + (x: -25, y: -8): [Wall], + (x: -25, y: -7): [Wall], + (x: -25, y: -6): [Wall], + (x: -25, y: -5): [Wall], + (x: -25, y: -4): [Wall], + (x: -25, y: -3): [Wall], + (x: -25, y: -2): [Wall], + (x: -25, y: -1): [Wall], + (x: -25, y: 0): [Wall], + (x: -25, y: 1): [Wall], + (x: -25, y: 2): [Wall], + (x: -25, y: 3): [Wall], + (x: -25, y: 4): [Wall], + (x: -25, y: 5): [Wall], + (x: -24, y: -33): [Wall], + (x: -24, y: -21): [Wall], + (x: -24, y: -20): [Wall], + (x: -24, y: -11): [Wall], + (x: -24, y: -10): [Wall], + (x: -24, y: -9): [Wall], + (x: -24, y: -8): [Wall], + (x: -24, y: -7): [Wall], + (x: -24, y: -6): [Wall], + (x: -24, y: -5): [Wall], + (x: -24, y: -4): [Wall], + (x: -24, y: -3): [Wall], + (x: -24, y: -2): [Wall], + (x: -24, y: -1): [Wall], + (x: -24, y: 0): [Wall], + (x: -24, y: 1): [Wall], + (x: -24, y: 2): [Wall], + (x: -24, y: 3): [Wall], + (x: -24, y: 4): [Wall], + (x: -24, y: 5): [Wall], + (x: -23, y: -33): [Wall], + (x: -23, y: -21): [Wall], + (x: -23, y: -20): [Wall], + (x: -23, y: 4): [Wall], + (x: -23, y: 5): [Wall], + (x: -22, y: -33): [Wall], + (x: -22, y: -21): [Wall], + (x: -22, y: -20): [Wall], + (x: -22, y: 4): [Wall], + (x: -22, y: 5): [Wall], + (x: -21, y: -33): [Wall], + (x: -21, y: -21): [Wall], + (x: -21, y: -20): [Wall], + (x: -21, y: 4): [Wall], + (x: -21, y: 5): [Wall], + (x: -20, y: -33): [Wall], + (x: -20, y: -21): [Wall], + (x: -20, y: -20): [Wall], + (x: -20, y: 4): [Wall], + (x: -20, y: 5): [Wall], + (x: -19, y: -33): [Wall], + (x: -19, y: -21): [Wall], + (x: -19, y: -20): [Wall], + (x: -19, y: 4): [Wall], + (x: -19, y: 5): [Wall], + (x: -18, y: -33): [Wall], + (x: -18, y: -21): [Wall], + (x: -18, y: -20): [Wall], + (x: -18, y: 4): [Wall], + (x: -18, y: 5): [Wall], + (x: -17, y: -33): [Wall], + (x: -17, y: -21): [Wall], + (x: -17, y: -20): [Wall], + (x: -17, y: 4): [Wall], + (x: -17, y: 5): [Wall], + (x: -16, y: -33): [Wall], + (x: -16, y: -21): [Wall], + (x: -16, y: -20): [Wall], + (x: -16, y: 4): [Wall], + (x: -16, y: 5): [Wall], + (x: -15, y: -33): [Wall], + (x: -15, y: -21): [Wall], + (x: -15, y: -20): [Wall], + (x: -15, y: 4): [Wall], + (x: -15, y: 5): [Wall], + (x: -14, y: -33): [Wall], + (x: -14, y: -21): [Wall], + (x: -14, y: -20): [Wall], + (x: -14, y: 4): [Wall], + (x: -14, y: 5): [Wall], + (x: -13, y: -33): [Wall], + (x: -13, y: -21): [Wall], + (x: -13, y: -20): [Wall], + (x: -13, y: 4): [Wall], + (x: -13, y: 5): [Wall], + (x: -12, y: -33): [Wall], + (x: -12, y: -21): [Wall], + (x: -12, y: -20): [Wall], + (x: -12, y: 4): [Wall], + (x: -12, y: 5): [Wall], + (x: -11, y: -33): [Wall], + (x: -11, y: -21): [Wall], + (x: -11, y: -20): [Wall], + (x: -11, y: 4): [Wall], + (x: -11, y: 5): [Wall], + (x: -10, y: -33): [Wall], + (x: -10, y: -21): [Wall], + (x: -10, y: -20): [Wall], + (x: -10, y: 4): [Wall], + (x: -10, y: 5): [Wall], + (x: -9, y: -33): [Wall], + (x: -9, y: -21): [Wall], + (x: -9, y: -20): [Wall], + (x: -9, y: 4): [Wall], + (x: -9, y: 5): [Wall], + (x: -8, y: -33): [Wall], + (x: -8, y: -22): [Wall], + (x: -8, y: -21): [Wall], + (x: -8, y: -20): [Wall], + (x: -8, y: 4): [Wall], + (x: -8, y: 5): [Wall], + (x: -7, y: -33): [Wall], + (x: -7, y: -22): [Wall], + (x: -7, y: -21): [Wall], + (x: -7, y: -20): [Wall], + (x: -7, y: 4): [Wall], + (x: -7, y: 5): [Wall], + (x: -6, y: -33): [Wall], + (x: -6, y: -22): [Wall], + (x: -6, y: -21): [Wall], + (x: -6, y: -20): [Wall], + (x: -6, y: 4): [Wall], + (x: -6, y: 5): [Wall], + (x: -5, y: -33): [Wall], + (x: -5, y: -22): [Wall], + (x: -5, y: -21): [Wall], + (x: -5, y: -20): [Wall], + (x: -5, y: 4): [Wall], + (x: -5, y: 5): [Wall], + (x: -4, y: -33): [Wall], + (x: -4, y: -22): [Wall], + (x: -4, y: -21): [Wall], + (x: -4, y: -20): [Wall], + (x: -4, y: 4): [Wall], + (x: -4, y: 5): [Wall], + (x: -3, y: -33): [Wall], + (x: -3, y: -22): [Wall], + (x: -3, y: -21): [Wall], + (x: -3, y: -20): [Wall], + (x: -3, y: 4): [Wall], + (x: -3, y: 5): [Wall], + (x: -2, y: -33): [Wall], + (x: -2, y: -22): [Wall], + (x: -2, y: -21): [Wall], + (x: -2, y: -20): [Wall], + (x: -2, y: 4): [Wall], + (x: -2, y: 5): [Wall], + (x: -1, y: -33): [Wall], + (x: -1, y: -22): [Wall], + (x: -1, y: -21): [Wall], + (x: -1, y: -20): [Wall], + (x: -1, y: 4): [Wall], + (x: -1, y: 5): [Wall], + (x: 0, y: -33): [Wall], + (x: 0, y: -22): [Wall], + (x: 0, y: -21): [Wall], + (x: 0, y: -20): [Wall], + (x: 0, y: 4): [Wall], + (x: 0, y: 5): [Wall], + (x: 1, y: -33): [Wall], + (x: 1, y: -22): [Wall], + (x: 1, y: -21): [Wall], + (x: 1, y: -20): [Wall], + (x: 1, y: 4): [Wall], + (x: 1, y: 5): [Wall], + (x: 2, y: -33): [Wall], + (x: 2, y: -22): [Wall], + (x: 2, y: -21): [Wall], + (x: 2, y: -20): [Wall], + (x: 2, y: 4): [Wall], + (x: 2, y: 5): [Wall], + (x: 3, y: -33): [Wall], + (x: 3, y: -22): [Wall], + (x: 3, y: -21): [Wall], + (x: 3, y: -20): [Wall], + (x: 3, y: 4): [Wall], + (x: 3, y: 5): [Wall], + (x: 4, y: -33): [Wall], + (x: 4, y: -22): [Wall], + (x: 4, y: -21): [Wall], + (x: 4, y: -20): [Wall], + (x: 4, y: 4): [Wall], + (x: 4, y: 5): [Wall], + (x: 5, y: -33): [Wall], + (x: 5, y: -22): [Wall], + (x: 5, y: -21): [Wall], + (x: 5, y: -20): [Wall], + (x: 5, y: 3): [Wall], + (x: 5, y: 4): [Wall], + (x: 5, y: 5): [Wall], + (x: 6, y: -33): [Wall], + (x: 6, y: -22): [Wall], + (x: 6, y: -21): [Wall], + (x: 6, y: -20): [Wall], + (x: 6, y: 3): [Wall], + (x: 6, y: 4): [Wall], + (x: 6, y: 5): [Wall], + (x: 7, y: -33): [Wall], + (x: 7, y: -22): [Wall], + (x: 7, y: -21): [Wall], + (x: 7, y: -20): [Wall], + (x: 7, y: 3): [Wall], + (x: 7, y: 4): [Wall], + (x: 7, y: 5): [Wall], + (x: 8, y: -33): [Wall], + (x: 8, y: -22): [Wall], + (x: 8, y: -21): [Wall], + (x: 8, y: -20): [Wall], + (x: 8, y: 3): [Wall], + (x: 8, y: 4): [Wall], + (x: 8, y: 5): [Wall], + (x: 9, y: -33): [Wall], + (x: 9, y: -22): [Wall], + (x: 9, y: -21): [Wall], + (x: 9, y: -20): [Wall], + (x: 9, y: 2): [Wall], + (x: 9, y: 3): [Wall], + (x: 9, y: 4): [Wall], + (x: 9, y: 5): [Wall], + (x: 10, y: -33): [Wall], + (x: 10, y: -22): [Wall], + (x: 10, y: -21): [Wall], + (x: 10, y: -20): [Wall], + (x: 10, y: -8): [Wall], + (x: 10, y: -7): [Wall], + (x: 10, y: -6): [Wall], + (x: 10, y: -5): [Wall], + (x: 10, y: -4): [Wall], + (x: 10, y: -3): [Wall], + (x: 10, y: -2): [Wall], + (x: 10, y: -1): [Wall], + (x: 10, y: 0): [Wall], + (x: 10, y: 1): [Wall], + (x: 10, y: 2): [Wall], + (x: 10, y: 3): [Wall], + (x: 10, y: 4): [Wall], + (x: 10, y: 5): [Wall], + (x: 11, y: -33): [Wall], + (x: 11, y: -22): [Wall], + (x: 11, y: -21): [Wall], + (x: 11, y: -20): [Wall], + (x: 11, y: -9): [Wall], + (x: 11, y: -8): [Wall], + (x: 11, y: -7): [Wall], + (x: 11, y: -6): [Wall], + (x: 11, y: -5): [Wall], + (x: 11, y: -4): [Wall], + (x: 11, y: -3): [Wall], + (x: 11, y: -2): [Wall], + (x: 11, y: -1): [Wall], + (x: 11, y: 0): [Wall], + (x: 11, y: 1): [Wall], + (x: 11, y: 2): [Wall], + (x: 11, y: 3): [Wall], + (x: 11, y: 4): [Wall], + (x: 11, y: 5): [Wall], + (x: 12, y: -33): [Wall], + (x: 12, y: -22): [Wall], + (x: 12, y: -21): [Wall], + (x: 12, y: -20): [Wall], + (x: 12, y: -9): [Wall], + (x: 12, y: 4): [Wall], + (x: 12, y: 5): [Wall], + (x: 13, y: -33): [Wall], + (x: 13, y: -22): [Wall], + (x: 13, y: -21): [Wall], + (x: 13, y: -20): [Wall], + (x: 13, y: -9): [Wall], + (x: 13, y: 4): [Wall], + (x: 13, y: 5): [Wall], + (x: 14, y: -33): [Wall], + (x: 14, y: -21): [Wall], + (x: 14, y: -20): [Wall], + (x: 14, y: -9): [Wall], + (x: 14, y: 4): [Wall], + (x: 14, y: 5): [Wall], + (x: 15, y: -33): [Wall], + (x: 15, y: -21): [Wall], + (x: 15, y: -20): [Wall], + (x: 15, y: -9): [Wall], + (x: 15, y: 4): [Wall], + (x: 15, y: 5): [Wall], + (x: 16, y: -33): [Wall], + (x: 16, y: -21): [Wall], + (x: 16, y: -20): [Wall], + (x: 16, y: -9): [Wall], + (x: 16, y: 4): [Wall], + (x: 16, y: 5): [Wall], + (x: 17, y: -33): [Wall], + (x: 17, y: -21): [Wall], + (x: 17, y: -20): [Wall], + (x: 17, y: -9): [Wall], + (x: 17, y: 4): [Wall], + (x: 17, y: 5): [Wall], + (x: 18, y: -33): [Wall], + (x: 18, y: -21): [Wall], + (x: 18, y: -20): [Wall], + (x: 18, y: -9): [Wall], + (x: 18, y: 4): [Wall], + (x: 18, y: 5): [Wall], + (x: 19, y: -33): [Wall], + (x: 19, y: -21): [Wall], + (x: 19, y: -20): [Wall], + (x: 19, y: -9): [Wall], + (x: 19, y: 4): [Wall], + (x: 19, y: 5): [Wall], + (x: 20, y: -33): [Wall], + (x: 20, y: -21): [Wall], + (x: 20, y: -20): [Wall], + (x: 20, y: -9): [Wall], + (x: 20, y: 4): [Wall], + (x: 20, y: 5): [Wall], + (x: 21, y: -33): [Wall], + (x: 21, y: -21): [Wall], + (x: 21, y: -20): [Wall], + (x: 21, y: -9): [Wall], + (x: 21, y: -8): [Wall], + (x: 21, y: -7): [Wall], + (x: 21, y: -6): [Wall], + (x: 21, y: 4): [Wall], + (x: 21, y: 5): [Wall], + (x: 22, y: -33): [Wall], + (x: 22, y: -21): [Wall], + (x: 22, y: -20): [Wall], + (x: 22, y: -8): [Wall], + (x: 22, y: -7): [Wall], + (x: 22, y: -6): [Wall], + (x: 22, y: 4): [Wall], + (x: 22, y: 5): [Wall], + (x: 23, y: -33): [Wall], + (x: 23, y: -21): [Wall], + (x: 23, y: -20): [Wall], + (x: 23, y: -7): [Wall], + (x: 23, y: -6): [Wall], + (x: 23, y: 4): [Wall], + (x: 23, y: 5): [Wall], + (x: 24, y: -33): [Wall], + (x: 24, y: -21): [Wall], + (x: 24, y: -20): [Wall], + (x: 24, y: -6): [Wall], + (x: 24, y: -5): [Wall], + (x: 24, y: -4): [Wall], + (x: 24, y: -3): [Wall], + (x: 24, y: -2): [Wall], + (x: 24, y: -1): [Wall], + (x: 24, y: 0): [Wall], + (x: 24, y: 1): [Wall], + (x: 24, y: 2): [Wall], + (x: 24, y: 3): [Wall], + (x: 24, y: 4): [Wall], + (x: 24, y: 5): [Wall], + (x: 25, y: -33): [Wall], + (x: 25, y: -21): [Wall], + (x: 25, y: -20): [Wall], + (x: 25, y: -5): [Wall], + (x: 25, y: -4): [Wall], + (x: 25, y: -3): [Wall], + (x: 25, y: -2): [Wall], + (x: 25, y: -1): [Wall], + (x: 25, y: 0): [Wall], + (x: 25, y: 1): [Wall], + (x: 25, y: 2): [Wall], + (x: 25, y: 3): [Wall], + (x: 25, y: 4): [Wall], + (x: 25, y: 5): [Wall], + (x: 26, y: -33): [Wall], + (x: 26, y: -20): [Wall], + (x: 26, y: 4): [Wall], + (x: 26, y: 5): [Wall], + (x: 27, y: -33): [Wall], + (x: 27, y: -20): [Wall], + (x: 27, y: 4): [Wall], + (x: 27, y: 5): [Wall], + (x: 28, y: -33): [Wall], + (x: 28, y: -20): [Wall], + (x: 28, y: 4): [Wall], + (x: 28, y: 5): [Wall], + (x: 29, y: -33): [Wall], + (x: 29, y: -20): [Wall], + (x: 29, y: 4): [Wall], + (x: 29, y: 5): [Wall], + (x: 30, y: -33): [Wall], + (x: 30, y: -32): [Wall], + (x: 30, y: -31): [Wall], + (x: 30, y: -30): [Wall], + (x: 30, y: -29): [Wall], + (x: 30, y: -28): [Wall], + (x: 30, y: -27): [Wall], + (x: 30, y: -26): [Wall], + (x: 30, y: -25): [Wall], + (x: 30, y: -24): [Wall], + (x: 30, y: -23): [Wall], + (x: 30, y: -22): [Wall], + (x: 30, y: -21): [Wall], + (x: 30, y: -20): [Wall], + (x: 30, y: -19): [Wall], + (x: 30, y: -18): [Wall], + (x: 30, y: -17): [Wall], + (x: 30, y: -16): [Wall], + (x: 30, y: -15): [Wall], + (x: 30, y: -14): [Wall], + (x: 30, y: -13): [Wall], + (x: 30, y: -12): [Wall], + (x: 30, y: -11): [Wall], + (x: 30, y: -10): [Wall], + (x: 30, y: -9): [Wall], + (x: 30, y: -8): [Wall], + (x: 30, y: -7): [Wall], + (x: 30, y: -6): [Wall], + (x: 30, y: -5): [Wall], + (x: 30, y: -4): [Wall], + (x: 30, y: -3): [Wall], + (x: 30, y: -2): [Wall], + (x: 30, y: -1): [Wall], + (x: 30, y: 0): [Wall], + (x: 30, y: 1): [Wall], + (x: 30, y: 2): [Wall], + (x: 30, y: 3): [Wall], + (x: 30, y: 4): [Wall], + (x: 30, y: 5): [Wall], + }, +) \ No newline at end of file diff --git a/main_game/assets/maps/downtown.ron b/main_game/assets/maps/downtown.ron index c04e4c9d..72176ff0 100644 --- a/main_game/assets/maps/downtown.ron +++ b/main_game/assets/maps/downtown.ron @@ -2225,6 +2225,7 @@ (x: -27, y: -263): [Wall], (x: -27, y: -262): [Wall], (x: -27, y: -243): [Wall], + (x: -27, y: -242): [Local(ClinicEntrance)], (x: -27, y: -241): [Wall], (x: -27, y: -219): [Wall], (x: -27, y: -218): [Wall], @@ -2244,6 +2245,7 @@ (x: -26, y: -263): [Wall], (x: -26, y: -262): [Wall], (x: -26, y: -243): [Wall], + (x: -26, y: -242): [Local(ClinicEntrance)], (x: -26, y: -241): [Wall], (x: -26, y: -219): [Wall], (x: -26, y: -218): [Wall], @@ -2262,6 +2264,7 @@ (x: -25, y: -263): [Wall], (x: -25, y: -262): [Wall], (x: -25, y: -243): [Wall], + (x: -25, y: -242): [Local(ClinicEntrance)], (x: -25, y: -241): [Wall], (x: -25, y: -219): [Wall], (x: -25, y: -218): [Wall], @@ -2282,6 +2285,7 @@ (x: -24, y: -263): [Wall], (x: -24, y: -262): [Wall], (x: -24, y: -243): [Wall], + (x: -24, y: -242): [Local(ClinicEntrance)], (x: -24, y: -241): [Wall], (x: -24, y: -219): [Wall], (x: -24, y: -218): [Wall], @@ -2343,6 +2347,7 @@ (x: -23, y: -263): [Wall], (x: -23, y: -262): [Wall], (x: -23, y: -243): [Wall], + (x: -23, y: -242): [Local(ClinicEntrance)], (x: -23, y: -241): [Wall], (x: -23, y: -219): [Wall], (x: -23, y: -218): [Wall], @@ -2358,6 +2363,7 @@ (x: -22, y: -263): [Wall], (x: -22, y: -262): [Wall], (x: -22, y: -243): [Wall], + (x: -22, y: -242): [Local(ClinicEntrance)], (x: -22, y: -241): [Wall], (x: -22, y: -219): [Wall], (x: -22, y: -218): [Wall], @@ -2371,6 +2377,7 @@ (x: -21, y: -263): [Wall], (x: -21, y: -262): [Wall], (x: -21, y: -243): [Wall], + (x: -21, y: -242): [Local(ClinicEntrance)], (x: -21, y: -241): [Wall], (x: -21, y: -219): [Wall], (x: -21, y: -218): [Wall], @@ -2470,6 +2477,7 @@ (x: -20, y: -263): [Wall], (x: -20, y: -262): [Wall], (x: -20, y: -243): [Wall], + (x: -20, y: -242): [Local(ClinicEntrance)], (x: -20, y: -241): [Wall], (x: -20, y: -219): [Wall], (x: -20, y: -218): [Wall], @@ -2577,6 +2585,7 @@ (x: -19, y: -263): [Wall], (x: -19, y: -262): [Wall], (x: -19, y: -243): [Wall], + (x: -19, y: -242): [Local(ClinicEntrance)], (x: -19, y: -241): [Wall], (x: -19, y: -219): [Wall], (x: -19, y: -218): [Wall], diff --git a/main_game/assets/scenes/building1_player_floor.tscn b/main_game/assets/scenes/building1_player_floor.tscn index 54c97853..46dc0f7a 100644 --- a/main_game/assets/scenes/building1_player_floor.tscn +++ b/main_game/assets/scenes/building1_player_floor.tscn @@ -1,35 +1,35 @@ [gd_scene load_steps=86 format=3 uid="uid://dyrtqlwb1xtvf"] -[ext_resource type="Texture2D" uid="uid://bnqtsambvpfxr" path="res://assets/residential/indoors/player_apartment_bg.png" id="1_70osf"] -[ext_resource type="Texture2D" uid="uid://vjrort40gbtp" path="res://assets/residential/indoors/cloud_atlas.png" id="2_yacc0"] -[ext_resource type="Texture2D" uid="uid://dw7ycks4ocdi3" path="res://assets/residential/indoors/player_apartment_backwall_furniture.png" id="3_e2w78"] -[ext_resource type="Texture2D" uid="uid://bt7s2d3mqb5q5" path="res://assets/residential/indoors/meditation_chair.png" id="4_njet2"] -[ext_resource type="Texture2D" uid="uid://chxk4vf038lwr" path="res://assets/residential/indoors/winnie_sleeping.png" id="5_u86a4"] -[ext_resource type="Texture2D" uid="uid://bub5mvfhprlwr" path="res://assets/residential/indoors/winnie_meditating.png" id="6_5id1h"] -[ext_resource type="Texture2D" uid="uid://cy2uenx3ka0m7" path="res://assets/residential/indoors/toilet.png" id="7_3q0vg"] -[ext_resource type="Texture2D" uid="uid://bwnf0jk7b6fjo" path="res://assets/residential/indoors/hallway1.png" id="8_uh48f"] -[ext_resource type="Texture2D" uid="uid://bfqm58ggdqvps" path="res://assets/residential/indoors/elevator_atlas.png" id="9_hc3bl"] -[ext_resource type="Texture2D" uid="uid://cucclesngt72y" path="res://assets/environment/vending_machine_atlas.png" id="10_sp5dx"] -[ext_resource type="Texture2D" uid="uid://isvggywplh28" path="res://assets/residential/indoors/cupboard1.png" id="11_iijqm"] -[ext_resource type="Texture2D" uid="uid://bx8bftj8gtpq7" path="res://assets/residential/indoors/laundry_basket.png" id="12_b5il1"] -[ext_resource type="Texture2D" uid="uid://dvwb0f5ospqe2" path="res://assets/residential/indoors/shoerack.png" id="13_7ojeu"] -[ext_resource type="Texture2D" uid="uid://bfe326eekse0g" path="res://assets/residential/indoors/kitchen_table.png" id="14_aqp0s"] -[ext_resource type="Texture2D" uid="uid://o3lvnnwlx58x" path="res://assets/residential/indoors/brown_light_door_atlas.png" id="15_8oxyo"] -[ext_resource type="Texture2D" uid="uid://c8k0iew7oac88" path="res://assets/residential/indoors/fridge.png" id="16_0n6p3"] -[ext_resource type="Texture2D" uid="uid://746dhnn7rf8e" path="res://assets/residential/indoors/brown_dark_door_atlas.png" id="17_mm1s1"] -[ext_resource type="Texture2D" uid="uid://142vyo5apuj2" path="res://assets/environment/package.png" id="18_fe7mm"] -[ext_resource type="Texture2D" uid="uid://bi5q7b2nayy0w" path="res://assets/environment/water_bottle_empty.png" id="19_fe26e"] -[ext_resource type="Texture2D" uid="uid://cxtp28isvo36" path="res://assets/residential/indoors/player_neighbours_bg.png" id="20_alp5o"] -[ext_resource type="Texture2D" uid="uid://ck0d0ox20muxk" path="res://assets/residential/indoors/cupboard2.png" id="21_vnmpr"] -[ext_resource type="Texture2D" uid="uid://duu1ec5psiv3n" path="res://assets/environment/can.png" id="22_i1pqp"] -[ext_resource type="Texture2D" uid="uid://dtty1epwmwmed" path="res://assets/residential/indoors/skrabadlo.png" id="23_kalpq"] -[ext_resource type="Texture2D" uid="uid://cinpx6e0t2ywt" path="res://assets/residential/indoors/sofa_yellow.png" id="24_tij75"] -[ext_resource type="Texture2D" uid="uid://7gj1w81mpy8h" path="res://assets/residential/indoors/chair_yellow.png" id="25_o5v0o"] -[ext_resource type="Texture2D" uid="uid://c54ja72cv37g2" path="res://assets/residential/indoors/coffee_table.png" id="26_trfib"] -[ext_resource type="Texture2D" uid="uid://ct0u616o3oc8x" path="res://assets/residential/indoors/green_kitchen_set.png" id="27_oe34g"] -[ext_resource type="Texture2D" uid="uid://cyywe12pvg8wd" path="res://assets/residential/indoors/blue_bed.png" id="28_6pfto"] -[ext_resource type="Texture2D" uid="uid://cskl5m8h5o3n8" path="res://assets/environment/beer.png" id="29_t2bpu"] -[ext_resource type="Texture2D" uid="uid://bmvpodknaiv1g" path="res://assets/environment/fruit_bowl.png" id="30_3c4bq"] +[ext_resource type="Texture2D" uid="uid://ciwlf0c0gyyyq" path="res://assets/residential/indoors/player_apartment_bg.png" id="1_70osf"] +[ext_resource type="Texture2D" uid="uid://kytoyoyhjxxv" path="res://assets/residential/indoors/cloud_atlas.png" id="2_yacc0"] +[ext_resource type="Texture2D" uid="uid://dn0f5bt32acd5" path="res://assets/residential/indoors/player_apartment_backwall_furniture.png" id="3_e2w78"] +[ext_resource type="Texture2D" uid="uid://d4gt4aikjid7a" path="res://assets/residential/indoors/meditation_chair.png" id="4_njet2"] +[ext_resource type="Texture2D" uid="uid://2irnfvapged1" path="res://assets/residential/indoors/winnie_sleeping.png" id="5_u86a4"] +[ext_resource type="Texture2D" uid="uid://c44rfsmy150fo" path="res://assets/residential/indoors/winnie_meditating.png" id="6_5id1h"] +[ext_resource type="Texture2D" uid="uid://d07qq5e0nd3h1" path="res://assets/residential/indoors/toilet.png" id="7_3q0vg"] +[ext_resource type="Texture2D" uid="uid://2nr502qjl1fn" path="res://assets/residential/indoors/hallway1.png" id="8_uh48f"] +[ext_resource type="Texture2D" uid="uid://cq4dga042qxr" path="res://assets/residential/indoors/elevator_atlas.png" id="9_hc3bl"] +[ext_resource type="Texture2D" uid="uid://cqsdb5tp644w6" path="res://assets/environment/vending_machine_atlas.png" id="10_sp5dx"] +[ext_resource type="Texture2D" uid="uid://bycuegh5eiofi" path="res://assets/residential/indoors/cupboard1.png" id="11_iijqm"] +[ext_resource type="Texture2D" uid="uid://btsd7or6tk701" path="res://assets/residential/indoors/laundry_basket.png" id="12_b5il1"] +[ext_resource type="Texture2D" uid="uid://kbsekm7v1fbk" path="res://assets/residential/indoors/shoerack.png" id="13_7ojeu"] +[ext_resource type="Texture2D" uid="uid://cxrax8hnp6oxo" path="res://assets/residential/indoors/kitchen_table.png" id="14_aqp0s"] +[ext_resource type="Texture2D" uid="uid://iwunrdjegi2a" path="res://assets/residential/indoors/brown_light_door_atlas.png" id="15_8oxyo"] +[ext_resource type="Texture2D" uid="uid://mn6fsc2pn682" path="res://assets/residential/indoors/fridge.png" id="16_0n6p3"] +[ext_resource type="Texture2D" uid="uid://3212443mchtu" path="res://assets/residential/indoors/brown_dark_door_atlas.png" id="17_mm1s1"] +[ext_resource type="Texture2D" uid="uid://p6o4g707hml2" path="res://assets/environment/package.png" id="18_fe7mm"] +[ext_resource type="Texture2D" uid="uid://cgv4cowr33sy2" path="res://assets/environment/water_bottle_empty.png" id="19_fe26e"] +[ext_resource type="Texture2D" uid="uid://cyup11yq6ir8q" path="res://assets/residential/indoors/player_neighbours_bg.png" id="20_alp5o"] +[ext_resource type="Texture2D" uid="uid://bkv7f7wxjfce5" path="res://assets/residential/indoors/cupboard2.png" id="21_vnmpr"] +[ext_resource type="Texture2D" uid="uid://cs2tcnoaxbeyx" path="res://assets/environment/can.png" id="22_i1pqp"] +[ext_resource type="Texture2D" uid="uid://cut0xsw6oogl2" path="res://assets/residential/indoors/skrabadlo.png" id="23_kalpq"] +[ext_resource type="Texture2D" uid="uid://chulfyf6ra3u4" path="res://assets/residential/indoors/sofa_yellow.png" id="24_tij75"] +[ext_resource type="Texture2D" uid="uid://cr7obpji6bsm8" path="res://assets/residential/indoors/chair_yellow.png" id="25_o5v0o"] +[ext_resource type="Texture2D" uid="uid://cnj3joi5hqv65" path="res://assets/residential/indoors/coffee_table.png" id="26_trfib"] +[ext_resource type="Texture2D" uid="uid://gufxulf5gqud" path="res://assets/residential/indoors/green_kitchen_set.png" id="27_oe34g"] +[ext_resource type="Texture2D" uid="uid://bbwbyf5acduh3" path="res://assets/residential/indoors/blue_bed.png" id="28_6pfto"] +[ext_resource type="Texture2D" uid="uid://d2v4j1m6u8ek1" path="res://assets/environment/beer.png" id="29_t2bpu"] +[ext_resource type="Texture2D" uid="uid://cgpp7lomv0qoy" path="res://assets/environment/fruit_bowl.png" id="30_3c4bq"] [sub_resource type="AtlasTexture" id="AtlasTexture_nte4w"] atlas = ExtResource("2_yacc0") @@ -589,73 +589,103 @@ metadata/label = "Open package" position = Vector2(-98, -68) texture = ExtResource("19_fe26e") -[node name="ExtraRoom" type="Sprite2D" parent="."] +[node name="OtherApartments" type="Node2D" parent="."] + +[node name="OtherApartmentsBg" type="Sprite2D" parent="OtherApartments"] self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) z_index = -4 position = Vector2(0, 128) texture = ExtResource("20_alp5o") -[node name="PolickaKocka" type="Sprite2D" parent="."] +[node name="PolickaKocka" type="Sprite2D" parent="OtherApartments"] self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(93, 119) texture = ExtResource("21_vnmpr") -[node name="Can" type="Sprite2D" parent="PolickaKocka"] +[node name="Can" type="Sprite2D" parent="OtherApartments/PolickaKocka"] self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(9, -12) texture = ExtResource("22_i1pqp") -[node name="Skrabadlo" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="OtherApartments/PolickaKocka"] +position = Vector2(0, 10) + +[node name="Skrabadlo" type="Sprite2D" parent="OtherApartments"] self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(190, 118) texture = ExtResource("23_kalpq") -[node name="Points" type="Node2D" parent="."] - -[node name="AfterSleepSpawn" type="Node2D" parent="Points"] -position = Vector2(-144, -58) - -[node name="Point" type="Node" parent="Points/AfterSleepSpawn"] - -[node name="MeditationSpawn" type="Node2D" parent="Points"] -position = Vector2(25, -60) - -[node name="Point" type="Node" parent="Points/MeditationSpawn"] - -[node name="NewGameSpawn" type="Node2D" parent="Points"] -position = Vector2(-15, -15) - -[node name="Point" type="Node" parent="Points/NewGameSpawn"] +[node name="YSort" type="Node2D" parent="OtherApartments/Skrabadlo"] +position = Vector2(0, 15) -[node name="InElevator" type="Node2D" parent="Points"] -position = Vector2(-192, 76) - -[node name="Point" type="Node" parent="Points/InElevator"] - -[node name="SofaYellow" type="Sprite2D" parent="."] +[node name="SofaYellow" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-10, 172) texture = ExtResource("24_tij75") -[node name="ChairYellow" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="OtherApartments/SofaYellow"] +position = Vector2(0, 15) + +[node name="ChairYellow" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-59, 189) texture = ExtResource("25_o5v0o") -[node name="CoffeeTable" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="OtherApartments/ChairYellow"] +position = Vector2(0, 13) + +[node name="CoffeeTable" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-10, 208) texture = ExtResource("26_trfib") -[node name="GreenKitchenSet" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="OtherApartments/CoffeeTable"] +position = Vector2(-2, 10) + +[node name="GreenKitchenSet" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-9, 120) texture = ExtResource("27_oe34g") -[node name="BlueBed" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="OtherApartments/GreenKitchenSet"] +position = Vector2(0, 11) + +[node name="BlueBed" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-263, 143) texture = ExtResource("28_6pfto") -[node name="Beer" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="OtherApartments/BlueBed"] +position = Vector2(0, 29) + +[node name="Beer" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-12, 197) texture = ExtResource("29_t2bpu") -[node name="FruitBowl" type="Sprite2D" parent="."] +[node name="FruitBowl" type="Sprite2D" parent="OtherApartments"] +self_modulate = Color(0.0509804, 0.054902, 0.121569, 1) position = Vector2(-26, 200) texture = ExtResource("30_3c4bq") + +[node name="Points" type="Node2D" parent="."] + +[node name="AfterSleepSpawn" type="Node2D" parent="Points"] +position = Vector2(-144, -58) + +[node name="Point" type="Node" parent="Points/AfterSleepSpawn"] + +[node name="MeditationSpawn" type="Node2D" parent="Points"] +position = Vector2(25, -60) + +[node name="Point" type="Node" parent="Points/MeditationSpawn"] + +[node name="NewGameSpawn" type="Node2D" parent="Points"] +position = Vector2(-15, -15) + +[node name="Point" type="Node" parent="Points/NewGameSpawn"] + +[node name="InElevator" type="Node2D" parent="Points"] +position = Vector2(-192, 76) + +[node name="Point" type="Node" parent="Points/InElevator"] diff --git a/main_game/assets/scenes/clinic.tscn b/main_game/assets/scenes/clinic.tscn index d3165020..9ec94bef 100644 --- a/main_game/assets/scenes/clinic.tscn +++ b/main_game/assets/scenes/clinic.tscn @@ -1,22 +1,22 @@ [gd_scene load_steps=26 format=3 uid="uid://bl1kr7uql87cg"] -[ext_resource type="Texture2D" uid="uid://dbsqahk1d8up6" path="res://assets/residential/indoors/clinic_interior.png" id="1_v4nqd"] -[ext_resource type="Texture2D" uid="uid://cucclesngt72y" path="res://assets/environment/vending_machine_atlas.png" id="2_ape1y"] -[ext_resource type="Texture2D" uid="uid://bwt8l2nfovdrb" path="res://assets/downtown/bamboo_rooftop.png" id="3_o3esx"] -[ext_resource type="Texture2D" uid="uid://o3lvnnwlx58x" path="res://assets/residential/indoors/brown_light_door_atlas.png" id="4_dp2ef"] -[ext_resource type="Texture2D" uid="uid://7gj1w81mpy8h" path="res://assets/residential/indoors/chair_yellow.png" id="6_wlrbh"] -[ext_resource type="Texture2D" uid="uid://ck0d0ox20muxk" path="res://assets/residential/indoors/cupboard2.png" id="7_bkx0a"] -[ext_resource type="Texture2D" uid="uid://bmvpodknaiv1g" path="res://assets/environment/fruit_bowl.png" id="8_6810t"] -[ext_resource type="Texture2D" uid="uid://od7278drijk8" path="res://assets/downtown/water_dispenser.png" id="9_tfx34"] -[ext_resource type="Texture2D" uid="uid://br6lsapps1jmo" path="res://assets/residential/indoors/hospital_bed.png" id="10_x5l8d"] -[ext_resource type="Texture2D" uid="uid://c8s7dhhe5duih" path="res://assets/residential/indoors/hospital_divider.png" id="11_he74j"] -[ext_resource type="Texture2D" uid="uid://dmrem43l81ule" path="res://assets/residential/indoors/pc_chair.png" id="13_p2x2y"] -[ext_resource type="Texture2D" uid="uid://8v5up8wq5o5i" path="res://assets/residential/indoors/window_blinds.png" id="14_1hmki"] -[ext_resource type="Texture2D" uid="uid://b0n6v661lfyx7" path="res://assets/residential/indoors/pc_table.png" id="15_fuouy"] -[ext_resource type="Texture2D" uid="uid://bvs7vcwiqrlkg" path="res://assets/residential/indoors/certificat.png" id="15_oqnj7"] -[ext_resource type="Texture2D" uid="uid://bnjtrujdg2l5p" path="res://assets/downtown/no_smoking_sign.png" id="16_nyb36"] -[ext_resource type="Texture2D" uid="uid://6cfnodb0dmgj" path="res://assets/downtown/hazardous_bin.png" id="17_1fycq"] -[ext_resource type="Texture2D" uid="uid://cavulo8mbkcac" path="res://assets/residential/indoors/sofa_yellow_plain.png" id="17_p7ntv"] +[ext_resource type="Texture2D" uid="uid://s3av8n7na4" path="res://assets/residential/indoors/clinic_interior.png" id="1_v4nqd"] +[ext_resource type="Texture2D" uid="uid://cqsdb5tp644w6" path="res://assets/environment/vending_machine_atlas.png" id="2_ape1y"] +[ext_resource type="Texture2D" uid="uid://ccpux3rqyc01t" path="res://assets/downtown/bamboo_rooftop.png" id="3_o3esx"] +[ext_resource type="Texture2D" uid="uid://iwunrdjegi2a" path="res://assets/residential/indoors/brown_light_door_atlas.png" id="4_dp2ef"] +[ext_resource type="Texture2D" uid="uid://cr7obpji6bsm8" path="res://assets/residential/indoors/chair_yellow.png" id="6_wlrbh"] +[ext_resource type="Texture2D" uid="uid://bkv7f7wxjfce5" path="res://assets/residential/indoors/cupboard2.png" id="7_bkx0a"] +[ext_resource type="Texture2D" uid="uid://cgpp7lomv0qoy" path="res://assets/environment/fruit_bowl.png" id="8_6810t"] +[ext_resource type="Texture2D" uid="uid://fvsk7527x314" path="res://assets/downtown/water_dispenser.png" id="9_tfx34"] +[ext_resource type="Texture2D" uid="uid://c2q3ns4am6gte" path="res://assets/residential/indoors/hospital_bed.png" id="10_x5l8d"] +[ext_resource type="Texture2D" uid="uid://3pb61ikg7ybh" path="res://assets/residential/indoors/hospital_divider.png" id="11_he74j"] +[ext_resource type="Texture2D" uid="uid://d0s78vuxqqoyd" path="res://assets/residential/indoors/pc_chair.png" id="13_p2x2y"] +[ext_resource type="Texture2D" uid="uid://j8306q4xsnvy" path="res://assets/residential/indoors/window_blinds.png" id="14_1hmki"] +[ext_resource type="Texture2D" uid="uid://cgestp8suj742" path="res://assets/residential/indoors/pc_table.png" id="15_fuouy"] +[ext_resource type="Texture2D" uid="uid://b3cy4yxplws8u" path="res://assets/residential/indoors/certificat.png" id="15_oqnj7"] +[ext_resource type="Texture2D" uid="uid://dimsxaiqpbmcc" path="res://assets/downtown/no_smoking_sign.png" id="16_nyb36"] +[ext_resource type="Texture2D" uid="uid://b3gvy1l7txl4r" path="res://assets/downtown/hazardous_bin.png" id="17_1fycq"] +[ext_resource type="Texture2D" uid="uid://c1h85qfa5q2y" path="res://assets/residential/indoors/sofa_yellow_plain.png" id="17_p7ntv"] [sub_resource type="AtlasTexture" id="AtlasTexture_wx86m"] atlas = ExtResource("2_ape1y") @@ -76,75 +76,115 @@ animations = [{ "speed": 1.0 }] -[node name="ClinicInterior" type="Sprite2D"] -position = Vector2(389, 287) +[node name="Clinic" type="Node2D"] + +[node name="ClinicBg" type="Sprite2D" parent="."] +z_index = -2 +position = Vector2(25, 21) texture = ExtResource("1_v4nqd") [node name="VendingMachine" type="AnimatedSprite2D" parent="."] -position = Vector2(-189, 39) +position = Vector2(-164, 60) sprite_frames = SubResource("SpriteFrames_pbalr") -[node name="HallwayEntity" type="Node" parent="VendingMachine"] +[node name="YSort" type="Node2D" parent="VendingMachine"] +position = Vector2(0, 23) [node name="BambooRooftop" type="Sprite2D" parent="."] -position = Vector2(-69, 37) +position = Vector2(-44, 58) texture = ExtResource("3_o3esx") -[node name="PlayerApartmentDoor" type="AnimatedSprite2D" parent="."] -position = Vector2(-142, 38) +[node name="YSort" type="Node2D" parent="BambooRooftop"] +position = Vector2(0, 23) + +[node name="Door" type="AnimatedSprite2D" parent="."] +position = Vector2(-117, 59) sprite_frames = SubResource("SpriteFrames_dnigs") -[node name="YSort" type="Node2D" parent="PlayerApartmentDoor"] +[node name="YSort" type="Node2D" parent="Door"] position = Vector2(0, 18) [node name="ChairYellow" type="Sprite2D" parent="."] -position = Vector2(50, 46) +position = Vector2(75, 67) texture = ExtResource("6_wlrbh") +[node name="YSort" type="Node2D" parent="ChairYellow"] +position = Vector2(0, 14) + [node name="Cupboard2" type="Sprite2D" parent="."] -position = Vector2(87, 50) +position = Vector2(112, 71) texture = ExtResource("7_bkx0a") +[node name="YSort" type="Node2D" parent="Cupboard2"] +position = Vector2(0, 10) + [node name="FruitBowl" type="Sprite2D" parent="."] -position = Vector2(84, 33) +position = Vector2(109, 54) texture = ExtResource("8_6810t") [node name="WaterDispenser" type="Sprite2D" parent="."] -position = Vector2(-101, -61) +z_index = -1 +position = Vector2(-76, -40) texture = ExtResource("9_tfx34") [node name="HospitalBed" type="Sprite2D" parent="."] -position = Vector2(87, -31) +z_index = -1 +position = Vector2(112, -10) texture = ExtResource("10_x5l8d") [node name="HospitalDivider" type="Sprite2D" parent="."] -position = Vector2(80, -36) +position = Vector2(105, -15) texture = ExtResource("11_he74j") +[node name="YSort" type="Node2D" parent="HospitalDivider"] +position = Vector2(0, 33) + [node name="PcChair" type="Sprite2D" parent="."] -position = Vector2(-157, -48) +position = Vector2(-132, -27) texture = ExtResource("13_p2x2y") [node name="WindowBlinds" type="Sprite2D" parent="."] -position = Vector2(-175, -88) +z_index = -1 +position = Vector2(-150, -67) texture = ExtResource("14_1hmki") [node name="PcTable" type="Sprite2D" parent="."] -position = Vector2(-162, -26) +position = Vector2(-137, -5) texture = ExtResource("15_fuouy") +[node name="YSort" type="Node2D" parent="PcTable"] +position = Vector2(0, 21) + [node name="Certificat" type="Sprite2D" parent="."] -position = Vector2(-131, -85) +z_index = -1 +position = Vector2(-106, -64) texture = ExtResource("15_oqnj7") [node name="NoSmokingSign" type="Sprite2D" parent="."] -position = Vector2(-101, -97) +z_index = -1 +position = Vector2(-76, -76) texture = ExtResource("16_nyb36") [node name="HazardousBin" type="Sprite2D" parent="."] -position = Vector2(41, -51) +position = Vector2(66, -30) texture = ExtResource("17_1fycq") [node name="SofaYellowPlain" type="Sprite2D" parent="."] -position = Vector2(6, 45) +position = Vector2(31, 66) texture = ExtResource("17_p7ntv") + +[node name="YSort" type="Node2D" parent="SofaYellowPlain"] +position = Vector2(0, 14) + +[node name="Points" type="Node2D" parent="."] + +[node name="Entrance" type="Node2D" parent="Points"] +position = Vector2(-118, 107) + +[node name="Point" type="Node" parent="Points/Entrance"] + +[node name="InspectLabel" type="Node" parent="Points/Entrance"] +metadata/zone = "ExitZone" +metadata/action = "ExitScene" +metadata/label = "Exit" +metadata/category = "Default" diff --git a/main_game/assets/scenes/downtown.tscn b/main_game/assets/scenes/downtown.tscn index 78e2a7a4..9d9faf25 100644 --- a/main_game/assets/scenes/downtown.tscn +++ b/main_game/assets/scenes/downtown.tscn @@ -1,61 +1,60 @@ -[gd_scene load_steps=61 format=3 uid="uid://dtow2k2vgk8kg"] - -[ext_resource type="Texture2D" uid="uid://b5pepyrbokdp7" path="res://assets/downtown/bg.png" id="1_ac7tb"] -[ext_resource type="Texture2D" uid="uid://dovhxy23h1onl" path="res://assets/downtown/jehlicnan_flipped.png" id="2_muold"] -[ext_resource type="Texture2D" uid="uid://dhtpl0f15gojd" path="res://assets/downtown/ac_atlas.png" id="2_vxd7e"] -[ext_resource type="Texture2D" uid="uid://od7278drijk8" path="res://assets/downtown/water_dispenser.png" id="3_mnq47"] -[ext_resource type="Texture2D" uid="uid://bwt8l2nfovdrb" path="res://assets/downtown/bamboo_rooftop.png" id="4_uahdt"] -[ext_resource type="Texture2D" uid="uid://5ywhhdx6rx7r" path="res://assets/downtown/recycle_bin.png" id="5_her3o"] -[ext_resource type="Texture2D" uid="uid://b8xgrwspdhoao" path="res://assets/downtown/cone.png" id="6_4cklq"] -[ext_resource type="Texture2D" uid="uid://clp5emmiqqigh" path="res://assets/downtown/black_bin.png" id="7_p1j5y"] -[ext_resource type="Texture2D" uid="uid://cnd2np6d33oqh" path="res://assets/downtown/robot.png" id="8_s4pbl"] -[ext_resource type="Texture2D" uid="uid://hmoa0kdonp88" path="res://assets/downtown/swing.png" id="9_gwh2v"] -[ext_resource type="Texture2D" uid="uid://bdn0jfgw4tpeg" path="res://assets/downtown/trashcan_tables.png" id="10_nyc25"] -[ext_resource type="Texture2D" uid="uid://cskl5m8h5o3n8" path="res://assets/environment/beer.png" id="11_e3pff"] -[ext_resource type="Texture2D" uid="uid://qjb3dquepnch" path="res://assets/downtown/truck.png" id="12_mwj3x"] -[ext_resource type="Texture2D" uid="uid://cs4xyldoxgtxg" path="res://assets/downtown/tree.png" id="13_7q235"] -[ext_resource type="Texture2D" uid="uid://djrcy48yl8ego" path="res://assets/downtown/mall.png" id="13_jgs6s"] -[ext_resource type="Texture2D" uid="uid://bprq7kf7j27if" path="res://assets/downtown/sipek.png" id="14_6c1wy"] -[ext_resource type="Texture2D" uid="uid://b7r70khewajh0" path="res://assets/downtown/lamp.png" id="14_8uy80"] -[ext_resource type="Texture2D" uid="uid://c0omccqp4eqfx" path="res://assets/downtown/weed.png" id="16_6vem6"] -[ext_resource type="Texture2D" uid="uid://d3swa0vc5iitv" path="res://assets/downtown/briza.png" id="16_xr53b"] -[ext_resource type="Texture2D" uid="uid://lgsyrvis4y80" path="res://assets/downtown/wired_fence.png" id="17_5ai3x"] -[ext_resource type="Texture2D" uid="uid://sdlblu0np1tm" path="res://assets/downtown/sprout.png" id="17_qyuai"] -[ext_resource type="Texture2D" uid="uid://bneahsxtb6wpe" path="res://assets/downtown/front_field.png" id="18_yr0u5"] -[ext_resource type="Texture2D" uid="uid://bq3fw5e27w801" path="res://assets/downtown/house_plantshoptrio.png" id="19_fdu3c"] -[ext_resource type="Texture2D" uid="uid://brvijlucyh2jx" path="res://assets/downtown/tree_pot.png" id="20_kpivv"] -[ext_resource type="Texture2D" uid="uid://dcl4guw8e72nh" path="res://assets/downtown/compound_gate.png" id="20_o0xfm"] -[ext_resource type="Texture2D" uid="uid://bbvuyahml5l4l" path="res://assets/downtown/umbrella_chair.png" id="20_sy6x1"] -[ext_resource type="Texture2D" uid="uid://ufn4rnxo8e62" path="res://assets/environment/water_bottle_half.png" id="21_8m32a"] -[ext_resource type="Texture2D" uid="uid://bmbgymdlgia22" path="res://assets/downtown/praha_building.png" id="21_sq8gl"] -[ext_resource type="Texture2D" uid="uid://bs5503nvkypsp" path="res://assets/downtown/building_duo.png" id="22_bl5xi"] -[ext_resource type="Texture2D" uid="uid://dy8urm75tam2x" path="res://assets/downtown/construction_site_sign.png" id="22_m6eml"] -[ext_resource type="Texture2D" uid="uid://bqhuebro50e5n" path="res://assets/downtown/tower.png" id="23_7ng4s"] -[ext_resource type="Texture2D" uid="uid://closy5vs11rwm" path="res://assets/downtown/barn.png" id="23_av7fi"] -[ext_resource type="Texture2D" uid="uid://b4n3d4xbt3n7t" path="res://assets/downtown/fire_ex.png" id="24_ohwph"] -[ext_resource type="Texture2D" uid="uid://bnjtrujdg2l5p" path="res://assets/downtown/no_smoking_sign.png" id="25_1tn82"] -[ext_resource type="Texture2D" uid="uid://m2ycv8ggd4ho" path="res://assets/downtown/clinic.png" id="25_ukjmq"] -[ext_resource type="Texture2D" uid="uid://vyq68glbbaiv" path="res://assets/downtown/zabradli.png" id="26_nm5hp"] -[ext_resource type="Texture2D" uid="uid://uuxhgpjap208" path="res://assets/downtown/big_tree.png" id="28_6tavv"] -[ext_resource type="Texture2D" uid="uid://c8vxwyyvlctic" path="res://assets/downtown/jehlicnan.png" id="29_j62ep"] -[ext_resource type="Texture2D" uid="uid://c85luubin2ham" path="res://assets/downtown/fancy_stairs.png" id="32_01aim"] -[ext_resource type="Texture2D" uid="uid://dxokrosjob4s5" path="res://assets/downtown/fancy_sloupky.png" id="33_lx3i7"] -[ext_resource type="Texture2D" uid="uid://dsdky0twwr6jh" path="res://assets/downtown/blue_clinic.png" id="35_ecxbn"] -[ext_resource type="Texture2D" uid="uid://cj7k78j2n48gr" path="res://assets/downtown/roof_building.png" id="36_4dgjx"] -[ext_resource type="Texture2D" uid="uid://bflcaqeap0y6j" path="res://assets/downtown/bin_bag.png" id="37_kbqnk"] -[ext_resource type="Texture2D" uid="uid://c140qot1ofdoq" path="res://assets/downtown/red_car.png" id="41_h1vqy"] -[ext_resource type="Texture2D" uid="uid://b3k4s743uhvpa" path="res://assets/downtown/white_van.png" id="42_gumcj"] -[ext_resource type="Texture2D" uid="uid://brxo7qp0roc3k" path="res://assets/downtown/lavicka.png" id="43_ihbqd"] -[ext_resource type="Texture2D" uid="uid://c8evra3g3jreh" path="res://assets/downtown/orange_car.png" id="43_rbmlo"] -[ext_resource type="Texture2D" uid="uid://brapyya5pqurk" path="res://assets/downtown/potted_bush.png" id="44_d0uug"] -[ext_resource type="Texture2D" uid="uid://dxx6j71ewje3y" path="res://assets/environment/sand_dollar.png" id="47_y13ek"] -[ext_resource type="Texture2D" uid="uid://btu6osn2fwawr" path="res://assets/environment/sand_dollar_white.png" id="48_etaxq"] -[ext_resource type="Texture2D" uid="uid://bocqwi765pwlg" path="res://assets/environment/musle.png" id="49_andyj"] -[ext_resource type="Texture2D" uid="uid://b4h751x5bs34" path="res://assets/environment/mushroom.png" id="50_ubqu6"] -[ext_resource type="Texture2D" uid="uid://cb225g1s3oiqo" path="res://assets/downtown/plain_trio.png" id="52_ri67k"] -[ext_resource type="Texture2D" uid="uid://dpeanyyafcpdk" path="res://assets/environment/beach_chair.png" id="54_3y7cj"] -[ext_resource type="Texture2D" uid="uid://b2k6tb2xitvs4" path="res://assets/environment/beach_chair_blue.png" id="54_c8hw3"] -[ext_resource type="Texture2D" uid="uid://bc4ctkjg1r38u" path="res://assets/environment/umbrella.png" id="56_tmimn"] +[gd_scene load_steps=60 format=3 uid="uid://dtow2k2vgk8kg"] + +[ext_resource type="Texture2D" uid="uid://ctujtb5gwqvre" path="res://assets/downtown/bg.png" id="1_ac7tb"] +[ext_resource type="Texture2D" uid="uid://kqhfsst8cp0b" path="res://assets/downtown/ac_atlas.png" id="2_vxd7e"] +[ext_resource type="Texture2D" uid="uid://fvsk7527x314" path="res://assets/downtown/water_dispenser.png" id="3_mnq47"] +[ext_resource type="Texture2D" uid="uid://ccpux3rqyc01t" path="res://assets/downtown/bamboo_rooftop.png" id="4_uahdt"] +[ext_resource type="Texture2D" uid="uid://cve0p1fj5bjp3" path="res://assets/downtown/recycle_bin.png" id="5_her3o"] +[ext_resource type="Texture2D" uid="uid://c7pfatjf403l5" path="res://assets/downtown/cone.png" id="6_4cklq"] +[ext_resource type="Texture2D" uid="uid://bmy3x3gvi867d" path="res://assets/downtown/black_bin.png" id="7_p1j5y"] +[ext_resource type="Texture2D" uid="uid://d1y5l8pmrdloy" path="res://assets/downtown/robot.png" id="8_s4pbl"] +[ext_resource type="Texture2D" uid="uid://dlc054120cn8l" path="res://assets/downtown/swing.png" id="9_gwh2v"] +[ext_resource type="Texture2D" uid="uid://b75yq8snj53yw" path="res://assets/downtown/trashcan_tables.png" id="10_nyc25"] +[ext_resource type="Texture2D" uid="uid://d2v4j1m6u8ek1" path="res://assets/environment/beer.png" id="11_e3pff"] +[ext_resource type="Texture2D" uid="uid://djc7g7t6dy3wa" path="res://assets/downtown/truck.png" id="12_mwj3x"] +[ext_resource type="Texture2D" uid="uid://dh2sjhvbvlj0y" path="res://assets/downtown/tree.png" id="13_7q235"] +[ext_resource type="Texture2D" uid="uid://c6bjetxf4tjpq" path="res://assets/downtown/mall.png" id="13_jgs6s"] +[ext_resource type="Texture2D" uid="uid://binrcblg113cg" path="res://assets/downtown/sipek.png" id="14_6c1wy"] +[ext_resource type="Texture2D" uid="uid://b54rhfp4mdr1d" path="res://assets/downtown/lamp.png" id="14_8uy80"] +[ext_resource type="Texture2D" uid="uid://ca2hbak8m1viv" path="res://assets/downtown/weed.png" id="16_6vem6"] +[ext_resource type="Texture2D" uid="uid://7iyu03tse1f0" path="res://assets/downtown/briza.png" id="16_xr53b"] +[ext_resource type="Texture2D" uid="uid://cpagv4vgk17ov" path="res://assets/downtown/wired_fence.png" id="17_5ai3x"] +[ext_resource type="Texture2D" uid="uid://cbp1oscu2a8fs" path="res://assets/downtown/sprout.png" id="17_qyuai"] +[ext_resource type="Texture2D" uid="uid://d28l4plhavno" path="res://assets/downtown/front_field.png" id="18_yr0u5"] +[ext_resource type="Texture2D" uid="uid://deq70sixg36ra" path="res://assets/downtown/house_plantshoptrio.png" id="19_fdu3c"] +[ext_resource type="Texture2D" uid="uid://dqvep7ugj5h2e" path="res://assets/downtown/tree_pot.png" id="20_kpivv"] +[ext_resource type="Texture2D" uid="uid://dj4h0df73poo0" path="res://assets/downtown/compound_gate.png" id="20_o0xfm"] +[ext_resource type="Texture2D" uid="uid://c3jrebwaemnlt" path="res://assets/downtown/umbrella_chair.png" id="20_sy6x1"] +[ext_resource type="Texture2D" uid="uid://dpj7jnsvxyfvt" path="res://assets/environment/water_bottle_half.png" id="21_8m32a"] +[ext_resource type="Texture2D" uid="uid://bodg01kctbo3d" path="res://assets/downtown/praha_building.png" id="21_sq8gl"] +[ext_resource type="Texture2D" uid="uid://crl8brm7m7obp" path="res://assets/downtown/building_duo.png" id="22_bl5xi"] +[ext_resource type="Texture2D" uid="uid://dm414iyf3bdnr" path="res://assets/downtown/construction_site_sign.png" id="22_m6eml"] +[ext_resource type="Texture2D" uid="uid://cvpb63r4tafm8" path="res://assets/downtown/tower.png" id="23_7ng4s"] +[ext_resource type="Texture2D" uid="uid://cjkde3a6ochx7" path="res://assets/downtown/barn.png" id="23_av7fi"] +[ext_resource type="Texture2D" uid="uid://d2vp7noe41pcw" path="res://assets/downtown/fire_ex.png" id="24_ohwph"] +[ext_resource type="Texture2D" uid="uid://dimsxaiqpbmcc" path="res://assets/downtown/no_smoking_sign.png" id="25_1tn82"] +[ext_resource type="Texture2D" uid="uid://ctd21n83m0nwc" path="res://assets/downtown/clinic.png" id="25_ukjmq"] +[ext_resource type="Texture2D" uid="uid://cyd2vttksmhrg" path="res://assets/downtown/zabradli.png" id="26_nm5hp"] +[ext_resource type="Texture2D" uid="uid://d4d4x4dbmu2f" path="res://assets/downtown/big_tree.png" id="28_6tavv"] +[ext_resource type="Texture2D" uid="uid://dqqvboiu7sjg4" path="res://assets/downtown/jehlicnan.png" id="29_j62ep"] +[ext_resource type="Texture2D" uid="uid://d2ainwkym4lxy" path="res://assets/downtown/fancy_stairs.png" id="32_01aim"] +[ext_resource type="Texture2D" uid="uid://04yhpl0qtq7g" path="res://assets/downtown/fancy_sloupky.png" id="33_lx3i7"] +[ext_resource type="Texture2D" uid="uid://cfwfixano0xdk" path="res://assets/downtown/blue_clinic.png" id="35_ecxbn"] +[ext_resource type="Texture2D" uid="uid://623o5sd1grp8" path="res://assets/downtown/roof_building.png" id="36_4dgjx"] +[ext_resource type="Texture2D" uid="uid://c3306mx7c6kvh" path="res://assets/downtown/bin_bag.png" id="37_kbqnk"] +[ext_resource type="Texture2D" uid="uid://daeqenpqkf3hq" path="res://assets/downtown/red_car.png" id="41_h1vqy"] +[ext_resource type="Texture2D" uid="uid://ccs7duqidocv7" path="res://assets/downtown/white_van.png" id="42_gumcj"] +[ext_resource type="Texture2D" uid="uid://qya57gkbm51u" path="res://assets/downtown/lavicka.png" id="43_ihbqd"] +[ext_resource type="Texture2D" uid="uid://d1p6qbvkqall0" path="res://assets/downtown/orange_car.png" id="43_rbmlo"] +[ext_resource type="Texture2D" uid="uid://cmpcrhxx5t7as" path="res://assets/downtown/potted_bush.png" id="44_d0uug"] +[ext_resource type="Texture2D" uid="uid://x0yle1eueuwi" path="res://assets/environment/sand_dollar.png" id="47_y13ek"] +[ext_resource type="Texture2D" uid="uid://dovoh1egc1dss" path="res://assets/environment/sand_dollar_white.png" id="48_etaxq"] +[ext_resource type="Texture2D" uid="uid://n2pjrnn11huw" path="res://assets/environment/musle.png" id="49_andyj"] +[ext_resource type="Texture2D" uid="uid://4uvh23g1tken" path="res://assets/environment/mushroom.png" id="50_ubqu6"] +[ext_resource type="Texture2D" uid="uid://c8vkhyo68xild" path="res://assets/downtown/plain_trio.png" id="52_ri67k"] +[ext_resource type="Texture2D" uid="uid://cp7mji0oaljrp" path="res://assets/environment/beach_chair.png" id="54_3y7cj"] +[ext_resource type="Texture2D" uid="uid://cpnl2bbxaqhv1" path="res://assets/environment/beach_chair_blue.png" id="54_c8hw3"] +[ext_resource type="Texture2D" uid="uid://82v7pub7u00w" path="res://assets/environment/umbrella.png" id="56_tmimn"] [sub_resource type="AtlasTexture" id="AtlasTexture_5i4a5"] atlas = ExtResource("2_vxd7e") @@ -88,55 +87,32 @@ animations = [{ [node name="Downtown" type="Node2D"] +[node name="UnderConstruction" type="Sprite2D" parent="."] +position = Vector2(64, 508) +texture = ExtResource("17_5ai3x") + +[node name="WiredFence" type="Sprite2D" parent="UnderConstruction"] +position = Vector2(85, 0) +texture = ExtResource("17_5ai3x") + +[node name="ConstructionSiteSign" type="Sprite2D" parent="UnderConstruction"] +position = Vector2(1.5, 1) +texture = ExtResource("22_m6eml") + [node name="DowntownBg" type="Sprite2D" parent="."] z_index = -5 position = Vector2(233, 477) texture = ExtResource("1_ac7tb") -[node name="JehlicnanFlipped" type="Sprite2D" parent="DowntownBg"] -position = Vector2(-779, -931) -texture = ExtResource("2_muold") - -[node name="YSort" type="Node2D" parent="DowntownBg/JehlicnanFlipped"] -position = Vector2(0, 61) - -[node name="Jehlicnan2" type="Sprite2D" parent="DowntownBg"] -position = Vector2(-727, -901) -texture = ExtResource("29_j62ep") - -[node name="YSort" type="Node2D" parent="DowntownBg/Jehlicnan2"] -position = Vector2(0, 61) +[node name="CompoundRoot" type="Node2D" parent="."] -[node name="Jehlicnan3" type="Sprite2D" parent="DowntownBg"] -position = Vector2(490, -1038) +[node name="Jehlicnan2" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-494, -424) texture = ExtResource("29_j62ep") -[node name="YSort" type="Node2D" parent="DowntownBg/Jehlicnan3"] +[node name="YSort" type="Node2D" parent="CompoundRoot/Jehlicnan2"] position = Vector2(0, 61) -[node name="JehlicnanFlipped2" type="Sprite2D" parent="DowntownBg"] -position = Vector2(-653, -1092) -texture = ExtResource("2_muold") - -[node name="YSort" type="Node2D" parent="DowntownBg/JehlicnanFlipped2"] -position = Vector2(0, 75) - -[node name="JehlicnanFlipped3" type="Sprite2D" parent="DowntownBg"] -position = Vector2(502, -969) -texture = ExtResource("2_muold") - -[node name="YSort" type="Node2D" parent="DowntownBg/JehlicnanFlipped3"] -position = Vector2(0, 75) - -[node name="BigTree" type="Sprite2D" parent="DowntownBg"] -position = Vector2(435, -953) -texture = ExtResource("28_6tavv") - -[node name="YSort" type="Node2D" parent="DowntownBg/BigTree"] -position = Vector2(0, 75) - -[node name="CompoundRoot" type="Node2D" parent="."] - [node name="Tower" type="Sprite2D" parent="CompoundRoot"] position = Vector2(-189, -1000) texture = ExtResource("23_7ng4s") @@ -269,6 +245,143 @@ position = Vector2(0, 61) position = Vector2(-7, 63) texture = ExtResource("17_qyuai") +[node name="Weed" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-738, -617) +texture = ExtResource("16_6vem6") + +[node name="Sprout" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-316, -600) +texture = ExtResource("17_qyuai") + +[node name="Sprout2" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-648, -671) +texture = ExtResource("17_qyuai") + +[node name="Weed2" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-263, -646) +texture = ExtResource("16_6vem6") + +[node name="JehlicnanFlipped" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-546, -454) +texture = ExtResource("29_j62ep") +flip_h = true + +[node name="YSort" type="Node2D" parent="CompoundRoot/JehlicnanFlipped"] +position = Vector2(0, 61) + +[node name="Jehlicnan3" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(723, -561) +texture = ExtResource("29_j62ep") + +[node name="YSort" type="Node2D" parent="CompoundRoot/Jehlicnan3"] +position = Vector2(0, 61) + +[node name="JehlicnanFlipped2" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-420, -615) +texture = ExtResource("29_j62ep") +flip_h = true + +[node name="YSort" type="Node2D" parent="CompoundRoot/JehlicnanFlipped2"] +position = Vector2(0, 75) + +[node name="JehlicnanFlipped3" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(735, -492) +texture = ExtResource("29_j62ep") +flip_h = true + +[node name="YSort" type="Node2D" parent="CompoundRoot/JehlicnanFlipped3"] +position = Vector2(0, 75) + +[node name="BigTree2" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(668, -476) +texture = ExtResource("28_6tavv") + +[node name="YSort" type="Node2D" parent="CompoundRoot/BigTree2"] +position = Vector2(0, 75) + +[node name="Mushroom" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-438, -692) +texture = ExtResource("50_ubqu6") + +[node name="Mushroom2" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-285, -982) +texture = ExtResource("50_ubqu6") + +[node name="Lavicka3" type="Sprite2D" parent="CompoundRoot"] +position = Vector2(-347, -818) +texture = ExtResource("43_ihbqd") + +[node name="YSort" type="Node2D" parent="CompoundRoot/Lavicka3"] +position = Vector2(0, 13) + +[node name="BureauRoot" type="Node2D" parent="."] + +[node name="FancyStairs" type="Sprite2D" parent="BureauRoot"] +z_index = -2 +position = Vector2(1133, -332) +texture = ExtResource("32_01aim") + +[node name="FancySloupky" type="Sprite2D" parent="BureauRoot"] +position = Vector2(1373.5, -254) +texture = ExtResource("33_lx3i7") + +[node name="YSort" type="Node2D" parent="BureauRoot/FancySloupky"] +position = Vector2(0, 8) + +[node name="FancySloupky2" type="Sprite2D" parent="BureauRoot"] +position = Vector2(892.5, -254) +texture = ExtResource("33_lx3i7") + +[node name="YSort" type="Node2D" parent="BureauRoot/FancySloupky2"] +position = Vector2(0, 8) + +[node name="Lavicka4" type="Sprite2D" parent="BureauRoot"] +position = Vector2(875, -216) +texture = ExtResource("43_ihbqd") + +[node name="YSort" type="Node2D" parent="BureauRoot/Lavicka4"] +position = Vector2(0, 13) + +[node name="PrahaBuilding" type="Sprite2D" parent="BureauRoot"] +position = Vector2(701, -326) +texture = ExtResource("21_sq8gl") + +[node name="YSort" type="Node2D" parent="BureauRoot/PrahaBuilding"] +position = Vector2(16, 90) + +[node name="Tree2" type="Sprite2D" parent="BureauRoot"] +position = Vector2(803, -254) +texture = ExtResource("13_7q235") + +[node name="YSort" type="Node2D" parent="BureauRoot/Tree2"] +position = Vector2(0, 69) + +[node name="TreePot" type="Sprite2D" parent="BureauRoot/Tree2"] +z_index = -1 +position = Vector2(1, 68) +texture = ExtResource("20_kpivv") + +[node name="Lamp4" type="Sprite2D" parent="BureauRoot"] +position = Vector2(614, -235) +texture = ExtResource("14_8uy80") + +[node name="YSort" type="Node2D" parent="BureauRoot/Lamp4"] +position = Vector2(0, 33) + +[node name="FancySloupky3" type="Sprite2D" parent="BureauRoot"] +position = Vector2(896, -488) +texture = ExtResource("33_lx3i7") + +[node name="YSort" type="Node2D" parent="BureauRoot/FancySloupky3"] +position = Vector2(0, 8) + +[node name="FancySloupky4" type="Sprite2D" parent="BureauRoot"] +position = Vector2(1112, -488) +texture = ExtResource("33_lx3i7") + +[node name="YSort" type="Node2D" parent="BureauRoot/FancySloupky4"] +position = Vector2(0, 8) + [node name="MallRoot" type="Node2D" parent="."] [node name="Mall" type="Sprite2D" parent="MallRoot"] @@ -423,6 +536,22 @@ texture = ExtResource("24_ohwph") position = Vector2(34.5, 48) texture = ExtResource("25_1tn82") +[node name="Block3Root" type="Node2D" parent="."] + +[node name="PlainTrio" type="Sprite2D" parent="Block3Root"] +position = Vector2(1273, 299) +texture = ExtResource("52_ri67k") + +[node name="YSort" type="Node2D" parent="Block3Root/PlainTrio"] +position = Vector2(-4, 89) + +[node name="Lavicka2" type="Sprite2D" parent="Block3Root"] +position = Vector2(1180, 380) +texture = ExtResource("43_ihbqd") + +[node name="YSort" type="Node2D" parent="Block3Root/Lavicka2"] +position = Vector2(0, 13) + [node name="Block2Root" type="Node2D" parent="."] [node name="HousePlantshoptrio" type="Sprite2D" parent="Block2Root"] @@ -463,50 +592,12 @@ texture = ExtResource("14_8uy80") [node name="Ysort" type="Node2D" parent="Block2Root/Lamp"] position = Vector2(0, 33) -[node name="Lamp4" type="Sprite2D" parent="Block2Root"] -position = Vector2(614, -235) -texture = ExtResource("14_8uy80") - -[node name="YSort" type="Node2D" parent="Block2Root/Lamp4"] -position = Vector2(0, 33) - -[node name="PrahaBuilding" type="Sprite2D" parent="Block2Root"] -position = Vector2(701, -326) -texture = ExtResource("21_sq8gl") - -[node name="Tree2" type="Sprite2D" parent="Block2Root/PrahaBuilding"] -position = Vector2(102, 72) -texture = ExtResource("13_7q235") - -[node name="YSort" type="Node2D" parent="Block2Root/PrahaBuilding/Tree2"] -position = Vector2(0, 69) - -[node name="TreePot" type="Sprite2D" parent="Block2Root/PrahaBuilding/Tree2"] -z_index = -1 -position = Vector2(1, 68) -texture = ExtResource("20_kpivv") - -[node name="YSort" type="Node2D" parent="Block2Root/PrahaBuilding"] -position = Vector2(16, 90) - -[node name="FancyStairs" type="Sprite2D" parent="Block2Root"] -z_index = -2 -position = Vector2(1133, -332) -texture = ExtResource("32_01aim") - -[node name="FancySloupky" type="Sprite2D" parent="Block2Root/FancyStairs"] -position = Vector2(240.5, 78) -texture = ExtResource("33_lx3i7") - -[node name="YSort" type="Node2D" parent="Block2Root/FancyStairs/FancySloupky"] -position = Vector2(0, 8) - -[node name="FancySloupky2" type="Sprite2D" parent="Block2Root/FancyStairs"] -position = Vector2(-240.5, 78) -texture = ExtResource("33_lx3i7") +[node name="Lavicka2" type="Sprite2D" parent="Block2Root"] +position = Vector2(535, -331) +texture = ExtResource("43_ihbqd") -[node name="YSort" type="Node2D" parent="Block2Root/FancyStairs/FancySloupky2"] -position = Vector2(0, 8) +[node name="YSort" type="Node2D" parent="Block2Root/Lavicka2"] +position = Vector2(0, 13) [node name="Block1Root" type="Node2D" parent="."] @@ -570,6 +661,27 @@ metadata/category = "Default" [node name="ParkingRoot" type="Node2D" parent="."] +[node name="OrangeCar" type="Sprite2D" parent="ParkingRoot"] +position = Vector2(-960, -192) +texture = ExtResource("43_rbmlo") + +[node name="YSort" type="Node2D" parent="ParkingRoot/OrangeCar"] +position = Vector2(-3, 16) + +[node name="WhiteVan" type="Sprite2D" parent="ParkingRoot"] +position = Vector2(-521, -259) +texture = ExtResource("42_gumcj") + +[node name="YSort" type="Node2D" parent="ParkingRoot/WhiteVan"] +position = Vector2(-1, 25) + +[node name="RedCar" type="Sprite2D" parent="ParkingRoot"] +position = Vector2(-263, -131) +texture = ExtResource("41_h1vqy") + +[node name="YSort" type="Node2D" parent="ParkingRoot/RedCar"] +position = Vector2(-3, 16) + [node name="Truck" type="Sprite2D" parent="ParkingRoot"] position = Vector2(-634, 432) texture = ExtResource("12_mwj3x") @@ -616,36 +728,24 @@ texture = ExtResource("10_nyc25") [node name="YSort" type="Node2D" parent="ParkingRoot/TrashcanTables10"] position = Vector2(0, 11) -[node name="WiredFence2" type="Sprite2D" parent="."] -position = Vector2(64, 508) -texture = ExtResource("17_5ai3x") - -[node name="WiredFence" type="Sprite2D" parent="WiredFence2"] -position = Vector2(85, 0) -texture = ExtResource("17_5ai3x") - -[node name="ConstructionSiteSign" type="Sprite2D" parent="WiredFence2"] -position = Vector2(1.5, 1) -texture = ExtResource("22_m6eml") - [node name="ShoreRoot" type="Node2D" parent="."] -[node name="Clinic" type="Sprite2D" parent="ShoreRoot"] +[node name="ClinicRed" type="Sprite2D" parent="ShoreRoot"] position = Vector2(-31, 968) texture = ExtResource("25_ukjmq") -[node name="YSort" type="Node2D" parent="ShoreRoot/Clinic"] +[node name="YSort" type="Node2D" parent="ShoreRoot/ClinicRed"] position = Vector2(-47, -16) -[node name="PottedBush3" type="Sprite2D" parent="ShoreRoot/Clinic"] +[node name="PottedBush3" type="Sprite2D" parent="ShoreRoot/ClinicRed"] position = Vector2(42, 72) texture = ExtResource("44_d0uug") -[node name="Zabradli" type="Sprite2D" parent="ShoreRoot"] +[node name="ZabradliRed" type="Sprite2D" parent="ShoreRoot"] position = Vector2(-31, 968) texture = ExtResource("26_nm5hp") -[node name="YSort" type="Node2D" parent="ShoreRoot/Zabradli"] +[node name="YSort" type="Node2D" parent="ShoreRoot/ZabradliRed"] position = Vector2(-42, 97) [node name="Robot" type="Sprite2D" parent="ShoreRoot"] @@ -659,6 +759,9 @@ position = Vector2(-13, 49) position = Vector2(557, 773) texture = ExtResource("43_ihbqd") +[node name="YSort" type="Node2D" parent="ShoreRoot/Lavicka"] +position = Vector2(0, 13) + [node name="Swing" type="Sprite2D" parent="ShoreRoot"] position = Vector2(744, 853) texture = ExtResource("9_gwh2v") @@ -666,121 +769,88 @@ texture = ExtResource("9_gwh2v") [node name="YSort" type="Node2D" parent="ShoreRoot/Swing"] position = Vector2(0, 24) -[node name="BlueClinic" type="Sprite2D" parent="."] -position = Vector2(-930, 962) -texture = ExtResource("35_ecxbn") - -[node name="Lamp" type="Sprite2D" parent="."] +[node name="Lamp" type="Sprite2D" parent="ShoreRoot"] position = Vector2(-1000, 1013) texture = ExtResource("14_8uy80") -[node name="Tree" type="Sprite2D" parent="."] +[node name="YSort" type="Node2D" parent="ShoreRoot/Lamp"] +position = Vector2(0, 31) + +[node name="Tree" type="Sprite2D" parent="ShoreRoot"] position = Vector2(490, 769) texture = ExtResource("13_7q235") -[node name="YSort" type="Node2D" parent="Tree"] +[node name="YSort" type="Node2D" parent="ShoreRoot/Tree"] position = Vector2(0, 69) -[node name="TreePot" type="Sprite2D" parent="Tree"] +[node name="TreePot" type="Sprite2D" parent="ShoreRoot/Tree"] z_index = -1 position = Vector2(1, 68) texture = ExtResource("20_kpivv") -[node name="RedCar" type="Sprite2D" parent="."] -position = Vector2(-263, -131) -texture = ExtResource("41_h1vqy") - -[node name="WhiteVan" type="Sprite2D" parent="."] -position = Vector2(-521, -259) -texture = ExtResource("42_gumcj") - -[node name="YSort" type="Node2D" parent="WhiteVan"] -position = Vector2(-1, 25) - -[node name="OrangeCar" type="Sprite2D" parent="."] -position = Vector2(-960, -192) -texture = ExtResource("43_rbmlo") - -[node name="Weed" type="Sprite2D" parent="."] -position = Vector2(-738, -617) -texture = ExtResource("16_6vem6") - -[node name="Sprout" type="Sprite2D" parent="."] -position = Vector2(-316, -600) -texture = ExtResource("17_qyuai") - -[node name="Sprout2" type="Sprite2D" parent="."] -position = Vector2(-648, -671) -texture = ExtResource("17_qyuai") +[node name="BlueClinic" type="Sprite2D" parent="ShoreRoot"] +position = Vector2(-930, 962) +texture = ExtResource("35_ecxbn") -[node name="Weed2" type="Sprite2D" parent="."] -position = Vector2(-263, -646) -texture = ExtResource("16_6vem6") +[node name="YSort" type="Node2D" parent="ShoreRoot/BlueClinic"] +position = Vector2(-47, -16) -[node name="SandDollar" type="Sprite2D" parent="."] +[node name="SandDollar" type="Sprite2D" parent="ShoreRoot"] position = Vector2(-261, 1319) texture = ExtResource("47_y13ek") -[node name="SandDollarWhite" type="Sprite2D" parent="."] +[node name="SandDollarWhite" type="Sprite2D" parent="ShoreRoot"] position = Vector2(296, 1217) texture = ExtResource("48_etaxq") -[node name="SandDollar2" type="Sprite2D" parent="."] +[node name="SandDollar2" type="Sprite2D" parent="ShoreRoot"] position = Vector2(-986, 1165) texture = ExtResource("47_y13ek") -[node name="Musle" type="Sprite2D" parent="."] +[node name="Musle" type="Sprite2D" parent="ShoreRoot"] position = Vector2(329, 1239) texture = ExtResource("49_andyj") -[node name="Mushroom" type="Sprite2D" parent="."] -position = Vector2(-438, -692) -texture = ExtResource("50_ubqu6") +[node name="BeachChairBlue" type="Sprite2D" parent="ShoreRoot"] +position = Vector2(-250, 1232) +texture = ExtResource("54_c8hw3") -[node name="Mushroom2" type="Sprite2D" parent="."] -position = Vector2(-285, -982) -texture = ExtResource("50_ubqu6") +[node name="YSort" type="Node2D" parent="ShoreRoot/BeachChairBlue"] +position = Vector2(-5, 17) -[node name="PlainTrio" type="Sprite2D" parent="."] -position = Vector2(1273, 299) -texture = ExtResource("52_ri67k") +[node name="BeachChair" type="Sprite2D" parent="ShoreRoot"] +position = Vector2(-182, 1229) +texture = ExtResource("54_3y7cj") -[node name="Lavicka2" type="Sprite2D" parent="PlainTrio"] -position = Vector2(-93, 81) -texture = ExtResource("43_ihbqd") +[node name="YSort" type="Node2D" parent="ShoreRoot/BeachChair"] +position = Vector2(-5, 17) -[node name="Lavicka" type="Sprite2D" parent="."] -position = Vector2(763, 953) -texture = ExtResource("43_ihbqd") +[node name="Umbrella" type="Sprite2D" parent="ShoreRoot"] +position = Vector2(-222, 1192) +texture = ExtResource("56_tmimn") -[node name="Lavicka3" type="Sprite2D" parent="."] -position = Vector2(-347, -818) -texture = ExtResource("43_ihbqd") +[node name="YSort" type="Node2D" parent="ShoreRoot/Umbrella"] +position = Vector2(2, 39) -[node name="Lavicka4" type="Sprite2D" parent="."] -position = Vector2(875, -216) +[node name="Lavicka2" type="Sprite2D" parent="ShoreRoot"] +position = Vector2(763, 953) texture = ExtResource("43_ihbqd") -[node name="Lavicka2" type="Sprite2D" parent="."] -position = Vector2(535, -331) -texture = ExtResource("43_ihbqd") +[node name="YSort" type="Node2D" parent="ShoreRoot/Lavicka2"] +position = Vector2(0, 13) -[node name="FancySloupky" type="Sprite2D" parent="."] -position = Vector2(896, -488) -texture = ExtResource("33_lx3i7") +[node name="ClinicEntrance" type="Node2D" parent="ShoreRoot"] +position = Vector2(-59, 971) -[node name="FancySloupky2" type="Sprite2D" parent="."] -position = Vector2(1112, -488) -texture = ExtResource("33_lx3i7") +[node name="Point" type="Node" parent="ShoreRoot/ClinicEntrance"] -[node name="BeachChairBlue" type="Sprite2D" parent="."] -position = Vector2(-250, 1232) -texture = ExtResource("54_c8hw3") +[node name="InspectLabel" type="Node" parent="ShoreRoot/ClinicEntrance"] +metadata/zone = "ClinicEntrance" +metadata/action = "EnterClinic" +metadata/label = "Clinic" +metadata/category = "Default" -[node name="BeachChair" type="Sprite2D" parent="."] -position = Vector2(-182, 1229) -texture = ExtResource("54_3y7cj") +[node name="ClinicExit" type="Node2D" parent="ShoreRoot"] +position = Vector2(-73, 1059) -[node name="Umbrella" type="Sprite2D" parent="."] -position = Vector2(-222, 1192) -texture = ExtResource("56_tmimn") +[node name="Point" type="Node" parent="ShoreRoot/ClinicExit"] diff --git a/main_game/assets/scenes/mall.tscn b/main_game/assets/scenes/mall.tscn index b9430627..c39f36c9 100644 --- a/main_game/assets/scenes/mall.tscn +++ b/main_game/assets/scenes/mall.tscn @@ -1,20 +1,20 @@ [gd_scene load_steps=29 format=3 uid="uid://drnrtwjeis0wl"] -[ext_resource type="Texture2D" uid="uid://cgvnw3xu0g55c" path="res://assets/mall/mall.png" id="1_py6kn"] -[ext_resource type="Texture2D" uid="uid://cucclesngt72y" path="res://assets/environment/vending_machine_atlas.png" id="2_83cf2"] -[ext_resource type="Texture2D" uid="uid://ckr3s6a6pkgh8" path="res://assets/mall/mallisles.png" id="3_7qiwu"] -[ext_resource type="Texture2D" uid="uid://ctx6632qwroaa" path="res://assets/mall/salebox.png" id="4_uvq87"] -[ext_resource type="Texture2D" uid="uid://kk1gkcrurjt8" path="res://assets/mall/selfcheckout.png" id="5_g377o"] -[ext_resource type="Texture2D" uid="uid://b8xjoqkbaiqyp" path="res://assets/mall/storage.png" id="6_egw2s"] -[ext_resource type="Texture2D" uid="uid://b3kynf8hs73" path="res://assets/mall/mall_gate.png" id="7_34v1c"] -[ext_resource type="Texture2D" uid="uid://cn1n1shruw5xn" path="res://assets/environment/snack_machine_atlas.png" id="8_epuyy"] -[ext_resource type="Texture2D" uid="uid://5ywhhdx6rx7r" path="res://assets/downtown/recycle_bin.png" id="9_apkp3"] -[ext_resource type="Texture2D" uid="uid://brapyya5pqurk" path="res://assets/downtown/potted_bush.png" id="10_2mfkd"] -[ext_resource type="Texture2D" uid="uid://od7278drijk8" path="res://assets/downtown/water_dispenser.png" id="11_fqe1k"] -[ext_resource type="Texture2D" uid="uid://bnjtrujdg2l5p" path="res://assets/downtown/no_smoking_sign.png" id="12_sgjlf"] -[ext_resource type="Texture2D" uid="uid://bcs5gw33o4yel" path="res://assets/residential/indoors/utility_door_atlas.png" id="13_qlspq"] -[ext_resource type="Texture2D" uid="uid://b0pfippwkkdhi" path="res://assets/residential/indoors/garland.png" id="14_vhnj1"] -[ext_resource type="Texture2D" uid="uid://7gj1w81mpy8h" path="res://assets/residential/indoors/chair_yellow.png" id="15_5nsl6"] +[ext_resource type="Texture2D" uid="uid://butuw555fooa1" path="res://assets/mall/mall.png" id="1_py6kn"] +[ext_resource type="Texture2D" uid="uid://cqsdb5tp644w6" path="res://assets/environment/vending_machine_atlas.png" id="2_83cf2"] +[ext_resource type="Texture2D" uid="uid://bit4syffi4073" path="res://assets/mall/mallisles.png" id="3_7qiwu"] +[ext_resource type="Texture2D" uid="uid://ctql8gvld5oyf" path="res://assets/mall/salebox.png" id="4_uvq87"] +[ext_resource type="Texture2D" uid="uid://qs3pmngv2da2" path="res://assets/mall/selfcheckout.png" id="5_g377o"] +[ext_resource type="Texture2D" uid="uid://bqc21ow6lrmh" path="res://assets/mall/storage.png" id="6_egw2s"] +[ext_resource type="Texture2D" uid="uid://b8qjuqrx7mxvg" path="res://assets/mall/mall_gate.png" id="7_34v1c"] +[ext_resource type="Texture2D" uid="uid://c2hwtbuu2eaot" path="res://assets/environment/snack_machine_atlas.png" id="8_epuyy"] +[ext_resource type="Texture2D" uid="uid://cve0p1fj5bjp3" path="res://assets/downtown/recycle_bin.png" id="9_apkp3"] +[ext_resource type="Texture2D" uid="uid://cmpcrhxx5t7as" path="res://assets/downtown/potted_bush.png" id="10_2mfkd"] +[ext_resource type="Texture2D" uid="uid://fvsk7527x314" path="res://assets/downtown/water_dispenser.png" id="11_fqe1k"] +[ext_resource type="Texture2D" uid="uid://dimsxaiqpbmcc" path="res://assets/downtown/no_smoking_sign.png" id="12_sgjlf"] +[ext_resource type="Texture2D" uid="uid://dnj0hlb6fb6yh" path="res://assets/residential/indoors/utility_door_atlas.png" id="13_qlspq"] +[ext_resource type="Texture2D" uid="uid://b8tq8n0tjyh1g" path="res://assets/residential/indoors/garland.png" id="14_vhnj1"] +[ext_resource type="Texture2D" uid="uid://cr7obpji6bsm8" path="res://assets/residential/indoors/chair_yellow.png" id="15_5nsl6"] [sub_resource type="AtlasTexture" id="AtlasTexture_wx86m"] atlas = ExtResource("2_83cf2") @@ -158,40 +158,39 @@ texture = ExtResource("7_34v1c") [node name="YSort" type="Node2D" parent="MallGate"] position = Vector2(0, 13) -[node name="Points" type="Node2D" parent="."] - -[node name="Entrance" type="Node2D" parent="Points"] -position = Vector2(249, 133) - -[node name="Point" type="Node" parent="Points/Entrance"] - -[node name="InspectLabel" type="Node" parent="Points/Entrance"] -metadata/zone = "ExitZone" -metadata/action = "ExitMall" -metadata/label = "Exit" -metadata/category = "Default" - [node name="SnackMachineAtlas" type="AnimatedSprite2D" parent="."] position = Vector2(-107, 84) sprite_frames = SubResource("SpriteFrames_t6d3n") +[node name="YSort" type="Node2D" parent="SnackMachineAtlas"] +position = Vector2(0, 24) + [node name="RecycleBin" type="Sprite2D" parent="."] position = Vector2(-316, 121) texture = ExtResource("9_apkp3") +[node name="YSort" type="Node2D" parent="RecycleBin"] +position = Vector2(0, 11) + [node name="PottedBush" type="Sprite2D" parent="."] position = Vector2(-316, 137) texture = ExtResource("10_2mfkd") +[node name="YSort" type="Node2D" parent="PottedBush"] +position = Vector2(0, 12) + [node name="WaterDispenser" type="Sprite2D" parent="."] +z_index = -1 position = Vector2(-167, -123) texture = ExtResource("11_fqe1k") [node name="NoSmokingSign" type="Sprite2D" parent="."] +z_index = -1 position = Vector2(-102, -145) texture = ExtResource("12_sgjlf") [node name="UtilityDoorAtlas" type="AnimatedSprite2D" parent="."] +z_index = -1 position = Vector2(-131, -136) sprite_frames = SubResource("SpriteFrames_aktpu") @@ -200,5 +199,19 @@ position = Vector2(234, -151) texture = ExtResource("14_vhnj1") [node name="ChairYellow" type="Sprite2D" parent="."] +z_index = -1 position = Vector2(-194, -127) texture = ExtResource("15_5nsl6") + +[node name="Points" type="Node2D" parent="."] + +[node name="Entrance" type="Node2D" parent="Points"] +position = Vector2(249, 133) + +[node name="Point" type="Node" parent="Points/Entrance"] + +[node name="InspectLabel" type="Node" parent="Points/Entrance"] +metadata/zone = "ExitZone" +metadata/action = "ExitScene" +metadata/label = "Exit" +metadata/category = "Default" diff --git a/main_game/src/main.rs b/main_game/src/main.rs index 776a7a54..177a6f8c 100644 --- a/main_game/src/main.rs +++ b/main_game/src/main.rs @@ -53,6 +53,7 @@ fn main() { scene_meditation::add(&mut app); scene_downtown::add(&mut app); scene_mall::add(&mut app); + scene_clinic::add(&mut app); info!("Starting Don't Count The Sheep"); app.run(); diff --git a/main_game_lib/src/hud/daybar.rs b/main_game_lib/src/hud/daybar.rs index bb315a97..6e2cfc0d 100644 --- a/main_game_lib/src/hud/daybar.rs +++ b/main_game_lib/src/hud/daybar.rs @@ -36,6 +36,8 @@ pub enum IncreaseDayBarEvent { pub enum DayBarDependent { /// The span of time when the mall is open. MallOpenHours, + /// The span of time when the clinic is open. + ClinicOpenHours, } #[derive(Component)] @@ -154,6 +156,7 @@ impl DayBar { pub fn is_it_time_for(&self, what: DayBarDependent) -> bool { let range = match what { DayBarDependent::MallOpenHours => ..0.75, + DayBarDependent::ClinicOpenHours => ..0.75, }; range.contains(&self.progress) diff --git a/main_game_lib/src/rscn.rs b/main_game_lib/src/rscn.rs index f79383da..071aa173 100644 --- a/main_game_lib/src/rscn.rs +++ b/main_game_lib/src/rscn.rs @@ -145,6 +145,8 @@ pub struct SpriteTexture { /// We only support sprite frames that are part of an atlas (single file /// texture.) pub animation: Option, + /// If the texture should be flipped horizontally. + pub flip_horizontally: bool, } /// Atlas animation. diff --git a/main_game_lib/src/rscn/intermediate_repr.rs b/main_game_lib/src/rscn/intermediate_repr.rs index 7359c200..c9daf167 100644 --- a/main_game_lib/src/rscn/intermediate_repr.rs +++ b/main_game_lib/src/rscn/intermediate_repr.rs @@ -69,6 +69,8 @@ pub(crate) enum SectionKey { /// Whether the node is visible. /// If false we add a `Visibility::Hidden` component to the node. Visibility(bool), + /// A texture should be flipped horizontally. + FlipHorizontally(bool), /// RGBa SelfModulateColor(Number, Number, Number, Number), } diff --git a/main_game_lib/src/rscn/spawner.rs b/main_game_lib/src/rscn/spawner.rs index 6c3766c7..f0f8ff00 100644 --- a/main_game_lib/src/rscn/spawner.rs +++ b/main_game_lib/src/rscn/spawner.rs @@ -125,11 +125,13 @@ fn node_to_entity( animation, visible, color, + flip_horizontally, }) = texture { let texture = spawner.load_texture(&path); cmd.entity(entity).insert(texture).insert(Sprite { color: color.unwrap_or(Color::WHITE), + flip_x: flip_horizontally, ..default() }); diff --git a/main_game_lib/src/rscn/token.rs b/main_game_lib/src/rscn/token.rs index 556099b9..a62f7da9 100644 --- a/main_game_lib/src/rscn/token.rs +++ b/main_game_lib/src/rscn/token.rs @@ -288,6 +288,17 @@ fn parse_with_state( Expecting::HeadingOrSectionKey } + Expecting::SectionKey(SectionKeyBuilder::FlipHorizontally) => { + let visible = matches!(token, TscnToken::True); + state + .nodes + .last_mut() + .unwrap() + .section_keys + .push(SectionKey::FlipHorizontally(visible)); + + Expecting::HeadingOrSectionKey + } _ => panic!("Unexpected bool for {expecting:?}"), }, @@ -358,6 +369,8 @@ enum SectionKeyBuilder { StringMetadata(String), /// true or false Visibility, + /// true or false + FlipHorizontally, /// e.g. `self_modulate = Color(1, 1, 1, 0.823529)` SelfModulate(ColorExpecting), } diff --git a/main_game_lib/src/rscn/token/string.rs b/main_game_lib/src/rscn/token/string.rs index 993a280e..7f20aed7 100644 --- a/main_game_lib/src/rscn/token/string.rs +++ b/main_game_lib/src/rscn/token/string.rs @@ -42,6 +42,9 @@ pub(super) fn parse( "self_modulate" => Expecting::SectionKey( SectionKeyBuilder::SelfModulate(default()), ), + "flip_h" => { + Expecting::SectionKey(SectionKeyBuilder::FlipHorizontally) + } s if s.starts_with("metadata/") => { Expecting::SectionKey(SectionKeyBuilder::StringMetadata( s["metadata/".len()..].to_ascii_lowercase(), diff --git a/main_game_lib/src/rscn/tree.rs b/main_game_lib/src/rscn/tree.rs index 5ebb599d..37ad2600 100644 --- a/main_game_lib/src/rscn/tree.rs +++ b/main_game_lib/src/rscn/tree.rs @@ -9,6 +9,17 @@ use crate::rscn::{ Config, In2D, Node, NodeName, SpriteFrames, SpriteTexture, TscnTree, }; +struct Properties { + z_index: Option, + position: Vec2, + metadata: HashMap, + path: Option, + animation: Option, + visible: bool, + color: Option, + flip_horizontally: bool, +} + pub(crate) fn from_state( mut state: intermediate_repr::State, conf: &Config, @@ -62,30 +73,23 @@ pub(crate) fn from_state( let mut nodes = vec![]; std::mem::swap(&mut nodes, &mut state.nodes); // to avoid borrow checker for parsed_node in nodes { - let mut metadata = HashMap::new(); - - let mut z_index = None; - let mut position = Vec2::ZERO; - let mut path = None; - let mut animation = None; - let mut visible = true; - let mut color = None; + let mut properties = default(); for section_key in parsed_node.section_keys { - apply_section_key( - conf, - &state, - section_key, - &mut z_index, - &mut position, - &mut metadata, - &mut path, - &mut animation, - &mut visible, - &mut color, - ); + apply_section_key(conf, &state, section_key, &mut properties); } + let Properties { + z_index, + position, + metadata, + path, + animation, + visible, + color, + flip_horizontally, + } = properties; + let in_2d = match parsed_node.kind { ParsedNodeKind::AnimatedSprite2D => Some(In2D { position, @@ -98,6 +102,7 @@ pub(crate) fn from_state( assert!(animation.is_some()); animation }, + flip_horizontally, }), }), ParsedNodeKind::Sprite2D => Some(In2D { @@ -111,6 +116,7 @@ pub(crate) fn from_state( assert!(animation.is_none()); None }, + flip_horizontally, }), }), ParsedNodeKind::Node2D => Some(In2D { @@ -169,13 +175,16 @@ fn apply_section_key( conf: &Config, state: &intermediate_repr::State, section_key: intermediate_repr::SectionKey, - z_index: &mut Option, - position: &mut Vec2, - metadata: &mut HashMap, - path: &mut Option, - animation: &mut Option, - visibility: &mut bool, - color: &mut Option, + Properties { + z_index, + position, + metadata, + path, + animation, + visible, + color, + flip_horizontally, + }: &mut Properties, ) { use intermediate_repr::{Number, SectionKey, X}; @@ -201,8 +210,11 @@ fn apply_section_key( "Node should not have more than one color" ); } - SectionKey::Visibility(visible) => { - *visibility = visible; + SectionKey::FlipHorizontally(flip) => { + *flip_horizontally = flip; + } + SectionKey::Visibility(visibility) => { + *visible = visibility; } SectionKey::ZIndex(Number(z)) => { assert!( @@ -355,3 +367,18 @@ impl Config { godot_path[self.asset_path_prefix.len()..].to_owned() } } + +impl Default for Properties { + fn default() -> Self { + Self { + z_index: None, + position: Vec2::ZERO, + metadata: default(), + path: None, + animation: None, + visible: true, + color: None, + flip_horizontally: false, + } + } +} diff --git a/main_game_lib/src/state.rs b/main_game_lib/src/state.rs index b0e22728..a0dd8369 100644 --- a/main_game_lib/src/state.rs +++ b/main_game_lib/src/state.rs @@ -27,6 +27,10 @@ pub enum GlobalGameState { AtBuilding1Basement1, QuittingBuilding1Basement1, + LoadingClinic, + AtClinic, + QuittingClinic, + LoadingMall, AtMall, QuittingMall, @@ -86,7 +90,10 @@ pub enum GlobalGameStateTransition { DowntownToBuilding1PlayerFloor, DowntownToMall, + DowntownToClinic, MallToDowntown, + + ClinicToDowntown, } /// Typical scene has several states with standard semantics. @@ -175,6 +182,10 @@ impl GlobalGameState { None, ), + LoadingClinic | AtClinic | QuittingClinic => { + (LoadingClinic, AtClinic, QuittingClinic, None) + } + LoadingMeditation | InGameMeditation | MeditationInMenu | QuittingMeditation => ( LoadingMeditation, diff --git a/main_game_lib/src/top_down/environmental_objects/door.rs b/main_game_lib/src/top_down/environmental_objects/door.rs index e78744ab..e734c706 100644 --- a/main_game_lib/src/top_down/environmental_objects/door.rs +++ b/main_game_lib/src/top_down/environmental_objects/door.rs @@ -2,6 +2,8 @@ //! There are different [`DoorOpenCriteria`] that can be used to open the door. //! Optionally, the door can have an obstacle that's inserted into the map when //! the door is closed. +//! +//! You must register the `environmental_objects::door::toggle` system. use bevy::prelude::*; use bevy_grid_squared::Square; @@ -114,8 +116,8 @@ fn apply_event_to_door_and_map( return; } - let can_be_opened = - door.open_criteria.iter().any(|criteria| match criteria { + let can_be_opened = door.open_criteria.is_empty() + || door.open_criteria.iter().any(|criteria| match criteria { DoorOpenCriteria::Character(character) => { who.character == *character } @@ -215,7 +217,10 @@ impl DoorBuilder { /// If the door is closed, we insert a wall between the obstacle squares /// if set. #[must_use] - pub fn build(self, tilemap: &mut TileMap) -> Door { + pub fn build_and_insert_obstacle( + self, + tilemap: &mut TileMap, + ) -> Door { let obstacle = self.obstacle.map(|(from, to)| { let layers = if matches!(self.initial_state, DoorState::Closed) { bevy_grid_squared::shapes::rectangle_between(from, to) @@ -244,4 +249,24 @@ impl DoorBuilder { actors_near: 0, } } + + /// Does not insert the obstacle into the tilemap. + /// Will panic if the door is closed and the obstacle is set. + #[must_use] + pub fn build(self) -> Door { + assert!( + !matches!(self.initial_state, DoorState::Closed) + || self.obstacle.is_none(), + "Door is closed and has an obstacle" + ); + + Door { + zone_tile_kind: self.zone_tile_kind, + state: self.initial_state, + open_criteria: self.open_criteria, + obstacle: None, + + actors_near: 0, + } + } } diff --git a/scenes/building1_player_floor/src/layout.rs b/scenes/building1_player_floor/src/layout.rs index 7100ace8..a1450973 100644 --- a/scenes/building1_player_floor/src/layout.rs +++ b/scenes/building1_player_floor/src/layout.rs @@ -192,7 +192,7 @@ impl<'a> TscnSpawner for Spawner<'a> { )) .with_initial_state(DoorState::Closed) .with_obstacle_when_closed_between(sq(-40, -21), sq(-31, -21)) - .build(self.tilemap); + .build_and_insert_obstacle(self.tilemap); cmd.entity(who).insert(door); } "WinnieSleeping" => { diff --git a/scenes/clinic/Cargo.toml b/scenes/clinic/Cargo.toml new file mode 100644 index 00000000..dbcbf962 --- /dev/null +++ b/scenes/clinic/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "scene_clinic" +version.workspace = true +edition.workspace = true + + +[features] +devtools = [ + "main_game_lib/devtools", + "common_story/devtools", + "common_visuals/devtools", +] + + +[dependencies] +bevy_grid_squared.workspace = true +bevy_pixel_camera.workspace = true +bevy.workspace = true +common_action.workspace = true +common_assets.workspace = true +common_loading_screen.workspace = true +common_store.workspace = true +common_story.workspace = true +common_visuals.workspace = true +itertools.workspace = true +lazy_static.workspace = true +main_game_lib.workspace = true +rand.workspace = true +serde.workspace = true +smallvec.workspace = true +strum.workspace = true diff --git a/scenes/clinic/README.md b/scenes/clinic/README.md new file mode 100644 index 00000000..d4f7d2d2 --- /dev/null +++ b/scenes/clinic/README.md @@ -0,0 +1,3 @@ +Indoors clinic scene. + +![Graph of zones](docs/tile-graph.svg) diff --git a/scenes/clinic/docs/tile-graph.svg b/scenes/clinic/docs/tile-graph.svg new file mode 100644 index 00000000..dfe9ec65 --- /dev/null +++ b/scenes/clinic/docs/tile-graph.svg @@ -0,0 +1,25 @@ + + + + + + +graph_clinic + + + +exitzone + +exitzone + + + +doorzone + +doorzone + + + diff --git a/scenes/clinic/src/autogen.rs b/scenes/clinic/src/autogen.rs new file mode 100644 index 00000000..7873ac12 --- /dev/null +++ b/scenes/clinic/src/autogen.rs @@ -0,0 +1 @@ +pub(crate) mod zone_tile_impl; diff --git a/scenes/clinic/src/autogen/zone_tile_impl.rs b/scenes/clinic/src/autogen/zone_tile_impl.rs new file mode 100644 index 00000000..4fc0d68b --- /dev/null +++ b/scenes/clinic/src/autogen/zone_tile_impl.rs @@ -0,0 +1,24 @@ +#[rustfmt::skip] +/// This is an autogenerated implementation by the map maker tool. +impl main_game_lib::top_down::layout::ZoneTile for crate::ClinicTileKind +{ #[inline] fn zone_group(&self) -> +Option +{ + use main_game_lib::top_down::layout::ZoneGroup; + #[allow(clippy::match_single_binding)] match self + { Self::ExitZone => Some(ZoneGroup(0)), +Self::DoorZone => Some(ZoneGroup(1)), + #[allow(unreachable_patterns)] _ => None, } +} #[inline] fn zone_size(&self) -> Option +{ + #[allow(clippy::match_single_binding)] match self + { Self::ExitZone => Some(60), +Self::DoorZone => Some(143), + #[allow(unreachable_patterns)] _ => None, } +} type Successors = Self; #[inline] fn zone_successors(&self) -> Option<&'static +[Self::Successors]> +{ + #[allow(clippy::match_single_binding)] match self + { #[allow(unreachable_patterns)] _ => None, } +} + } diff --git a/scenes/clinic/src/layout.rs b/scenes/clinic/src/layout.rs new file mode 100644 index 00000000..89179110 --- /dev/null +++ b/scenes/clinic/src/layout.rs @@ -0,0 +1,205 @@ +use bevy::render::view::RenderLayers; +use common_loading_screen::{LoadingScreenSettings, LoadingScreenState}; +use common_visuals::camera::render_layer; +use main_game_lib::{ + cutscene::in_cutscene, + top_down::{ + actor::{self, movement_event_emitted}, + environmental_objects::{self, door::DoorBuilder}, + }, +}; +use rscn::{NodeName, TscnSpawner, TscnTree, TscnTreeHandle}; +use strum::IntoEnumIterator; +use top_down::{ + actor::{CharacterBundleBuilder, CharacterExt}, + inspect_and_interact::ZoneToInspectLabelEntity, + TileMap, +}; + +use crate::prelude::*; + +pub(crate) struct Plugin; + +impl bevy::app::Plugin for Plugin { + fn build(&self, app: &mut App) { + app.add_systems( + OnEnter(Clinic::loading()), + rscn::start_loading_tscn::, + ) + .add_systems( + Update, + spawn + .run_if(Clinic::in_loading_state()) + .run_if(resource_exists::>) + .run_if(rscn::tscn_loaded_but_not_spawned::()), + ) + .add_systems(OnExit(Clinic::quitting()), despawn) + .add_systems( + Update, + exit.run_if(on_event::()) + .run_if(Clinic::in_running_state()) + .run_if(not(in_cutscene())), + ); + + app.add_systems( + Update, + environmental_objects::door::toggle:: + .run_if(Clinic::in_running_state()) + .run_if(movement_event_emitted::()) + .after(actor::emit_movement_events::), + ); + } +} + +/// Assigned to the root of the scene. +/// We then recursively despawn it on scene leave. +#[derive(Component)] +pub(crate) struct LayoutEntity; + +struct Spawner<'a> { + player_entity: Entity, + player_builder: &'a mut CharacterBundleBuilder, + asset_server: &'a AssetServer, + atlases: &'a mut Assets, + zone_to_inspect_label_entity: + &'a mut ZoneToInspectLabelEntity, +} + +/// The names are stored in the scene file. +fn spawn( + mut cmd: Commands, + asset_server: Res, + mut tscn: ResMut>, + mut atlas_layouts: ResMut>, + + mut q: Query<&mut TscnTreeHandle>, +) { + info!("Spawning Clinic scene"); + + let tscn = q.single_mut().consume(&mut cmd, &mut tscn); + let mut zone_to_inspect_label_entity = ZoneToInspectLabelEntity::default(); + + let player = cmd.spawn_empty().id(); + let mut player_builder = common_story::Character::Winnie.bundle_builder(); + + tscn.spawn_into( + &mut Spawner { + player_entity: player, + player_builder: &mut player_builder, + asset_server: &asset_server, + atlases: &mut atlas_layouts, + zone_to_inspect_label_entity: &mut zone_to_inspect_label_entity, + }, + &mut cmd, + ); + + player_builder.insert_bundle_into(&asset_server, &mut cmd.entity(player)); + + cmd.insert_resource(zone_to_inspect_label_entity); +} + +fn despawn(mut cmd: Commands, root: Query>) { + debug!("Despawning layout entities"); + + let root = root.single(); + cmd.entity(root).despawn_recursive(); + + cmd.remove_resource::::LocalTileKind, + >>(); +} + +impl<'a> TscnSpawner for Spawner<'a> { + type LocalActionKind = ClinicAction; + type LocalZoneKind = ClinicTileKind; + + fn on_spawned( + &mut self, + cmd: &mut Commands, + who: Entity, + NodeName(name): NodeName, + translation: Vec3, + ) { + cmd.entity(who) + .insert(RenderLayers::layer(render_layer::BG)); + + match name.as_str() { + "Clinic" => { + cmd.entity(who).insert(LayoutEntity); + cmd.entity(who).add_child(self.player_entity); + } + "Entrance" => { + self.player_builder.initial_position(translation.truncate()); + } + "Door" => { + let door = DoorBuilder::new(ClinicTileKind::DoorZone) + .build::(); + cmd.entity(who).insert(door); + } + _ => {} + } + } + + fn add_texture_atlas( + &mut self, + layout: TextureAtlasLayout, + ) -> Handle { + self.atlases.add(layout) + } + + fn load_texture(&mut self, path: &str) -> Handle { + self.asset_server.load(path.to_owned()) + } + + fn map_zone_to_inspect_label_entity( + &mut self, + zone: Self::LocalZoneKind, + entity: Entity, + ) { + self.zone_to_inspect_label_entity.map.insert(zone, entity); + } +} + +impl top_down::layout::Tile for ClinicTileKind { + #[inline] + fn is_walkable(&self, _: Entity) -> bool { + true + } + + #[inline] + fn is_zone(&self) -> bool { + match self { + Self::ExitZone | Self::DoorZone => true, + } + } + + #[inline] + fn zones_iter() -> impl Iterator { + Self::iter().filter(|kind| kind.is_zone()) + } +} + +fn exit( + mut cmd: Commands, + mut action_events: EventReader, + mut transition: ResMut, + mut next_state: ResMut>, + mut next_loading_screen_state: ResMut>, +) { + let is_triggered = action_events + .read() + .any(|action| matches!(action, ClinicAction::ExitScene)); + + if is_triggered { + cmd.insert_resource(LoadingScreenSettings { + atlas: Some(common_loading_screen::LoadingScreenAtlas::random()), + stare_at_loading_screen_for_at_least: Some(from_millis(1000)), + ..default() + }); + + next_loading_screen_state.set(common_loading_screen::start_state()); + + *transition = GlobalGameStateTransition::ClinicToDowntown; + next_state.set(Clinic::quitting()); + } +} diff --git a/scenes/clinic/src/lib.rs b/scenes/clinic/src/lib.rs new file mode 100644 index 00000000..17ae0bcc --- /dev/null +++ b/scenes/clinic/src/lib.rs @@ -0,0 +1,178 @@ +#![doc = include_str!("../README.md")] +#![allow(clippy::assertions_on_constants)] +#![allow(clippy::type_complexity)] +#![feature(trivial_bounds)] +#![feature(let_chains)] + +mod autogen; +mod layout; +mod prelude; + +use common_loading_screen::LoadingScreenState; +use prelude::*; +use serde::{Deserialize, Serialize}; + +use crate::layout::LayoutEntity; + +/// Important scene struct. +/// We use it as identifiable generic in common logic. +#[derive(TypePath, Default)] +pub struct Clinic; + +impl TopDownScene for Clinic { + type LocalTileKind = ClinicTileKind; + + fn name() -> &'static str { + "clinic" + } + + fn bounds() -> [i32; 4] { + [-60, 30, -40, 10] + } +} + +impl WithStandardStateSemantics for Clinic { + fn loading() -> GlobalGameState { + GlobalGameState::LoadingClinic + } + + fn running() -> GlobalGameState { + GlobalGameState::AtClinic + } + + fn quitting() -> GlobalGameState { + GlobalGameState::QuittingClinic + } +} + +/// We arbitrarily derive the [`Default`] to allow reflection. +/// It does not have a meaningful default value. +#[derive( + Clone, + Copy, + Debug, + Default, + Deserialize, + Eq, + Hash, + Ord, + PartialEq, + PartialOrd, + Reflect, + Serialize, + strum::Display, + strum::EnumIter, + strum::EnumString, +)] +#[reflect(Default)] +#[allow(clippy::enum_variant_names)] +pub enum ClinicTileKind { + #[default] + ExitZone, + DoorZone, +} + +#[derive(Event, Reflect, Clone, strum::EnumString)] +pub enum ClinicAction { + ExitScene, +} + +pub fn add(app: &mut App) { + info!("Adding Clinic to app"); + + app.add_event::(); + + top_down::default_setup_for_scene::(app); + + #[cfg(feature = "devtools")] + top_down::dev_default_setup_for_scene::(app); + + debug!("Adding plugins"); + + app.add_plugins(layout::Plugin); + + debug!("Adding game loop"); + + // when everything is loaded, finish the loading process by transitioning + // to the next loading state + app.add_systems( + Last, + finish_when_everything_loaded + .run_if(Clinic::in_loading_state()) + .run_if(|q: Query<(), With>| !q.is_empty()) + .run_if(in_state(LoadingScreenState::WaitForSignalToFinish)), + ); + // ready to enter the game when the loading screen is completely gone + app.add_systems( + OnEnter(LoadingScreenState::DespawnLoadingScreen), + enter_the_scene.run_if(Clinic::in_loading_state()), + ); + + app.add_systems( + Update, + common_loading_screen::finish + .run_if(Clinic::in_running_state()) + .run_if(in_state(LoadingScreenState::WaitForSignalToFinish)), + ); + + app.add_systems( + Update, + // wait for the loading screen to fade in before changing state, + // otherwise the player might see a flicker + exit.run_if(in_state(common_loading_screen::wait_state())) + .run_if(Clinic::in_quitting_state()), + ); + + info!("Added Clinic to app"); +} + +fn finish_when_everything_loaded( + mut next_loading_state: ResMut>, + map: Option>>, +) { + if map.is_none() { + return; + } + + debug!("All assets loaded"); + + next_loading_state.set(common_loading_screen::finish_state()); +} + +fn enter_the_scene(mut next_state: ResMut>) { + info!("Entering Clinic"); + next_state.set(Clinic::running()); +} + +fn exit( + transition: Res, + mut next_state: ResMut>, + mut controls: ResMut>, +) { + info!("Leaving Clinic"); + + // be a good guy and don't invade other game loops with our controls + controls.consume_all(); + + use GlobalGameStateTransition::*; + match *transition { + ClinicToDowntown => { + next_state.set(GlobalGameState::LoadingDowntown); + } + _ => { + unreachable!("Invalid Clinic transition {transition:?}"); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_has_valid_tscn_scene() { + const TSCN: &str = + include_str!("../../../main_game/assets/scenes/clinic.tscn"); + rscn::parse(TSCN, &default()); + } +} diff --git a/scenes/clinic/src/prelude.rs b/scenes/clinic/src/prelude.rs new file mode 100644 index 00000000..8efe6f95 --- /dev/null +++ b/scenes/clinic/src/prelude.rs @@ -0,0 +1,3 @@ +pub(crate) use main_game_lib::prelude::*; + +pub(crate) use crate::{Clinic, ClinicAction, ClinicTileKind}; diff --git a/scenes/downtown/docs/tile-graph.svg b/scenes/downtown/docs/tile-graph.svg index 7e24ac84..82dde8ba 100644 --- a/scenes/downtown/docs/tile-graph.svg +++ b/scenes/downtown/docs/tile-graph.svg @@ -4,11 +4,11 @@ - + graph_downtown - + building1entrance @@ -21,5 +21,11 @@ mallentrance + + +clinicentrance + +clinicentrance + diff --git a/scenes/downtown/src/autogen/zone_tile_impl.rs b/scenes/downtown/src/autogen/zone_tile_impl.rs index 5f0ecccf..2ee4148c 100644 --- a/scenes/downtown/src/autogen/zone_tile_impl.rs +++ b/scenes/downtown/src/autogen/zone_tile_impl.rs @@ -8,12 +8,14 @@ Option #[allow(clippy::match_single_binding)] match self { Self::Building1Entrance => Some(ZoneGroup(0)), Self::MallEntrance => Some(ZoneGroup(1)), +Self::ClinicEntrance => Some(ZoneGroup(2)), #[allow(unreachable_patterns)] _ => None, } } #[inline] fn zone_size(&self) -> Option { #[allow(clippy::match_single_binding)] match self { Self::Building1Entrance => Some(33), Self::MallEntrance => Some(145), +Self::ClinicEntrance => Some(9), #[allow(unreachable_patterns)] _ => None, } } type Successors = Self; #[inline] fn zone_successors(&self) -> Option<&'static [Self::Successors]> diff --git a/scenes/downtown/src/layout.rs b/scenes/downtown/src/layout.rs index 3a30ade5..2dc78d5c 100644 --- a/scenes/downtown/src/layout.rs +++ b/scenes/downtown/src/layout.rs @@ -42,6 +42,7 @@ impl bevy::app::Plugin for Plugin { ( enter_building1, enter_mall.before(ChangeHighlightedInspectLabelEventConsumer), + enter_clinic.before(ChangeHighlightedInspectLabelEventConsumer), ) .run_if(on_event::()) .run_if(Downtown::in_running_state()) @@ -158,6 +159,15 @@ impl<'a> TscnSpawner for Spawner<'a> { self.daybar_event.send(IncreaseDayBarEvent::ChangedScene); } + "ClinicExit" if self.transition == ClinicToDowntown => { + self.player_builder.initial_position(translation.truncate()); + self.player_builder.walking_to(top_down::ActorTarget::new( + LAYOUT.world_pos_to_square(translation.truncate()) + + sq(0, -2), + )); + + self.daybar_event.send(IncreaseDayBarEvent::ChangedScene); + } _ => {} } } @@ -191,7 +201,9 @@ impl top_down::layout::Tile for DowntownTileKind { #[inline] fn is_zone(&self) -> bool { match self { - Self::MallEntrance | Self::Building1Entrance => true, + Self::MallEntrance + | Self::ClinicEntrance + | Self::Building1Entrance => true, } } @@ -277,3 +289,55 @@ fn enter_mall( next_state.set(Downtown::quitting()); } } + +fn enter_clinic( + mut cmd: Commands, + mut action_events: EventReader, + mut inspect_label_events: EventWriter, + mut transition: ResMut, + mut next_state: ResMut>, + mut next_loading_screen_state: ResMut>, + zone_to_inspect_label_entity: Res< + ZoneToInspectLabelEntity, + >, + daybar: Res, +) { + let is_triggered = action_events + .read() + .any(|action| matches!(action, DowntownAction::EnterClinic)); + + if is_triggered { + if !daybar.is_it_time_for(DayBarDependent::ClinicOpenHours) { + if let Some(entity) = zone_to_inspect_label_entity + .map + .get(&DowntownTileKind::ClinicEntrance) + .copied() + { + inspect_label_events.send(ChangeHighlightedInspectLabelEvent { + entity, + spawn_params: SpawnLabelBgAndTextParams { + highlighted: true, + overwrite_font_color: Some(LIGHT_RED), + // LOCALIZATION + overwrite_display_text: Some("(closed)".to_string()), + }, + }); + } else { + error!("Cannot find clinic entrance zone inspect label entity"); + } + + return; + } + + cmd.insert_resource(LoadingScreenSettings { + atlas: Some(common_loading_screen::LoadingScreenAtlas::random()), + stare_at_loading_screen_for_at_least: Some(from_millis(1000)), + ..default() + }); + + next_loading_screen_state.set(common_loading_screen::start_state()); + + *transition = GlobalGameStateTransition::DowntownToClinic; + next_state.set(Downtown::quitting()); + } +} diff --git a/scenes/downtown/src/lib.rs b/scenes/downtown/src/lib.rs index b593322d..df412e46 100644 --- a/scenes/downtown/src/lib.rs +++ b/scenes/downtown/src/lib.rs @@ -68,12 +68,14 @@ pub enum DowntownTileKind { #[default] Building1Entrance, MallEntrance, + ClinicEntrance, } #[derive(Event, Reflect, Clone, strum::EnumString)] pub enum DowntownAction { - EnterMall, EnterBuilding1, + EnterMall, + EnterClinic, } pub fn add(app: &mut App) { @@ -160,8 +162,23 @@ fn exit( DowntownToMall => { next_state.set(GlobalGameState::LoadingMall); } + DowntownToClinic => { + next_state.set(GlobalGameState::LoadingClinic); + } _ => { unreachable!("Invalid Downtown transition {transition:?}"); } } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_has_valid_tscn_scene() { + const TSCN: &str = + include_str!("../../../main_game/assets/scenes/downtown.tscn",); + rscn::parse(TSCN, &default()); + } +} diff --git a/scenes/mall/src/layout.rs b/scenes/mall/src/layout.rs index e436cab0..629e6d0f 100644 --- a/scenes/mall/src/layout.rs +++ b/scenes/mall/src/layout.rs @@ -169,7 +169,7 @@ fn exit( ) { let is_triggered = action_events .read() - .any(|action| matches!(action, MallAction::ExitMall)); + .any(|action| matches!(action, MallAction::ExitScene)); if is_triggered { cmd.insert_resource(LoadingScreenSettings { diff --git a/scenes/mall/src/lib.rs b/scenes/mall/src/lib.rs index 327291a1..c74e09da 100644 --- a/scenes/mall/src/lib.rs +++ b/scenes/mall/src/lib.rs @@ -73,7 +73,7 @@ pub enum MallTileKind { #[derive(Event, Reflect, Clone, strum::EnumString)] pub enum MallAction { - ExitMall, + ExitScene, } pub fn add(app: &mut App) { diff --git a/wiki/README.md b/wiki/README.md index 9269af95..4e420d97 100644 --- a/wiki/README.md +++ b/wiki/README.md @@ -1,2 +1,2 @@ Install `mdbook` with `$ cargo install mdbook`. -Then, serve locally the contents with `./bin/wiki` (ran from the repo root.) +Then, serve locally the contents with `./dev/wiki` (ran from the repo root.) diff --git a/wiki/src/devtools_godot.md b/wiki/src/devtools_godot.md index 3e4ce382..c7c8e75b 100644 --- a/wiki/src/devtools_godot.md +++ b/wiki/src/devtools_godot.md @@ -76,6 +76,8 @@ This hierarchical arrangement allows for precise control over the rendering orde - Visibility / Visible check box - Visibility / Self Modulate color +- Ordering / Z Index +- Offset / Flip H ## Components