diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 2bbdbc09..586b8d89 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -126,6 +126,20 @@ const flySquasherRoutes = [ } ] satisfies Routes; +const dungeonCrawlerRoutes = [ + { + path: "dungeon-crawler", + children: [ + { + path: "", + loadComponent: () => + import("./dungeon-crawler/dungeon-crawler.component").then((m) => m.DungeonCrawlerComponent) + }, + { path: "**", redirectTo: "" } + ] + } +] satisfies Routes; + const routes = [ { path: "", @@ -139,6 +153,7 @@ const routes = [ ...littleMuncherRoutes, ...probableWaffleRoutes, ...flySquasherRoutes, + ...dungeonCrawlerRoutes, { path: "**", redirectTo: "" diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 215aec33..c6b82d78 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -5,11 +5,11 @@ import { SwRefreshComponent } from "./shared/components/sw-refresh/sw-refresh.co import { RouterOutlet } from "@angular/router"; @Component({ - selector: "fuzzy-waddle-root", - templateUrl: "./app.component.html", - styleUrls: ["./app.component.scss"], - standalone: true, - imports: [RouterOutlet, SwRefreshComponent] + selector: "fuzzy-waddle-root", + templateUrl: "./app.component.html", + styleUrls: ["./app.component.scss"], + standalone: true, + imports: [RouterOutlet, SwRefreshComponent] }) export class AppComponent implements OnInit { protected readonly authService = inject(AuthService); diff --git a/apps/client/src/app/dungeon-crawler/game/assets.ts b/apps/client/src/app/dungeon-crawler/game/assets.ts new file mode 100644 index 00000000..22dc86fd --- /dev/null +++ b/apps/client/src/app/dungeon-crawler/game/assets.ts @@ -0,0 +1,48 @@ +export enum AssetsDungeon { + "tiles" = "tiles", + "dungeon" = "dungeon", + "faune" = "faune", + "lizard" = "lizard", + "treasure" = "treasure", + "heartEmpty" = "heartEmpty", + "heartFull" = "heartFull", + "knife" = "knife" +} + +// visible in tiled (tileset name) +export enum DungeonTilesetNames { + "dungeion" = "dungeion" +} + +// layers of tile map (visible in tiled) +export enum DungeonTilesetLayers { + "Walls" = "Walls", + "Ground" = "Ground" +} + +// custom names for animations +export enum AnimationsFaune { + "default" = "walk-down-3.png", + "idleDown" = "faune-idle-down", + "idleUp" = "faune-idle-up", + "idleSide" = "faune-idle-side", + "runDown" = "faune-run-down", + "runUp" = "faune-run-up", + "runSide" = "faune-run-side", + "faint" = "faune-faint" +} + +export enum AnimationsChest { + "open" = "chest-open", + "close" = "chest-close" +} + +export enum AnimationsLizard { + "default" = "lizard_m_idle_anim_f0.png", + "idle" = "idle", + "run" = "run" +} + +export enum DungeonCrawlerSceneEventTypes { + "playerHealthChanged" = "playerHealthChanged" +} diff --git a/apps/client/src/app/dungeon-crawler/game/dungeonCrawlerScenes.ts b/apps/client/src/app/dungeon-crawler/game/dungeonCrawlerScenes.ts new file mode 100644 index 00000000..6c176279 --- /dev/null +++ b/apps/client/src/app/dungeon-crawler/game/dungeonCrawlerScenes.ts @@ -0,0 +1,5 @@ +export enum DungeonCrawlerScenes { + "PreloadSceneDungeon" = "PreloadSceneDungeon", + "MainSceneDungeon" = "MainSceneDungeon", + "DungeonUi" = "DungeonUi" +} diff --git a/apps/client/src/app/dungeon-crawler/game/game-config.ts b/apps/client/src/app/dungeon-crawler/game/game-config.ts new file mode 100644 index 00000000..bc359b85 --- /dev/null +++ b/apps/client/src/app/dungeon-crawler/game/game-config.ts @@ -0,0 +1,23 @@ +import DungeonPreloader from "./scenes/DungeonPreloader"; +import Dungeon from "./scenes/Dungeon"; +import DungeonUi from "./scenes/DungeonUi"; +import { baseGameConfig } from "../../shared/game/base-game.config"; + +export const dungeonCrawlerGameConfig: Phaser.Types.Core.GameConfig = { + ...baseGameConfig, + width: window.innerWidth / 2, + height: window.innerHeight / 2, + physics: { + default: "arcade", + arcade: { + gravity: { y: 0 }, + debug: false + } + }, + pixelArt: true, + scale: { + zoom: 2, + mode: Phaser.Scale.CENTER_BOTH + }, + scene: [DungeonPreloader, Dungeon, DungeonUi] +}; diff --git a/apps/client/src/app/home/page/home-page.component.ts b/apps/client/src/app/home/page/home-page.component.ts index 53295956..90ba977c 100644 --- a/apps/client/src/app/home/page/home-page.component.ts +++ b/apps/client/src/app/home/page/home-page.component.ts @@ -27,7 +27,7 @@ export type DisplayGame = { }) export class HomePageComponent { protected readonly environment = environment; - private readonly currentlyFeaturedGame = "fly-squasher"; + private readonly currentlyFeaturedGame = "dungeon-crawler"; displayGames: DisplayGame[] = [ { name: "Probable Waffle", @@ -42,7 +42,6 @@ export class HomePageComponent { description: "Infinite scroller", image: "little-muncher.webp", bannerImage: "probable-waffle-banner.webp", - route: "little-muncher" }, { @@ -51,6 +50,13 @@ export class HomePageComponent { image: "fly-squasher.webp", bannerImage: "fly-squasher-banner.webp", route: "fly-squasher" + }, + { + name: "Dungeon Crawler", + description: "Creepy crawlies", + image: "dungeon-crawler.webp", + bannerImage: "dungeon-crawler-banner.webp", + route: "dungeon-crawler" } ]; diff --git a/apps/client/src/assets/dungeon-crawler/character/fauna.json b/apps/client/src/assets/dungeon-crawler/character/fauna.json new file mode 100644 index 00000000..42a4230f --- /dev/null +++ b/apps/client/src/assets/dungeon-crawler/character/fauna.json @@ -0,0 +1,670 @@ +{ + "textures": [ + { + "image": "fauna.png", + "format": "RGBA8888", + "size": { + "w": 130, + "h": 147 + }, + "scale": 1, + "frames": [ + { + "filename": "run-side-4.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 22 + }, + "frame": { + "x": 2, + "y": 2, + "w": 17, + "h": 22 + } + }, + { + "filename": "walk-side-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 22 + }, + "frame": { + "x": 23, + "y": 2, + "w": 17, + "h": 22 + } + }, + { + "filename": "run-down-1.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 8, + "w": 18, + "h": 22 + }, + "frame": { + "x": 2, + "y": 28, + "w": 18, + "h": 22 + } + }, + { + "filename": "walk-down-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 6, + "w": 16, + "h": 22 + }, + "frame": { + "x": 24, + "y": 28, + "w": 16, + "h": 22 + } + }, + { + "filename": "run-down-5.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 8, + "w": 18, + "h": 22 + }, + "frame": { + "x": 44, + "y": 2, + "w": 18, + "h": 22 + } + }, + { + "filename": "run-side-1.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 18, + "h": 22 + }, + "frame": { + "x": 44, + "y": 28, + "w": 18, + "h": 22 + } + }, + { + "filename": "run-side-2.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 18, + "h": 22 + }, + "frame": { + "x": 2, + "y": 54, + "w": 18, + "h": 22 + } + }, + { + "filename": "run-side-5.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 5, + "w": 18, + "h": 22 + }, + "frame": { + "x": 24, + "y": 54, + "w": 18, + "h": 22 + } + }, + { + "filename": "run-side-6.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 6, + "w": 18, + "h": 22 + }, + "frame": { + "x": 46, + "y": 54, + "w": 18, + "h": 22 + } + }, + { + "filename": "run-side-8.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 6, + "w": 17, + "h": 22 + }, + "frame": { + "x": 66, + "y": 2, + "w": 17, + "h": 22 + } + }, + { + "filename": "run-up-6.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 17, + "h": 21 + }, + "frame": { + "x": 66, + "y": 28, + "w": 17, + "h": 21 + } + }, + { + "filename": "run-down-8.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 17, + "h": 21 + }, + "frame": { + "x": 2, + "y": 80, + "w": 17, + "h": 21 + } + }, + { + "filename": "run-down-2.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 16, + "h": 21 + }, + "frame": { + "x": 68, + "y": 53, + "w": 16, + "h": 21 + } + }, + { + "filename": "faint-1.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 7, + "w": 17, + "h": 21 + }, + "frame": { + "x": 23, + "y": 80, + "w": 17, + "h": 21 + } + }, + { + "filename": "run-side-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 18, + "h": 21 + }, + "frame": { + "x": 44, + "y": 80, + "w": 18, + "h": 21 + } + }, + { + "filename": "faint-2.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 20, + "h": 21 + }, + "frame": { + "x": 66, + "y": 80, + "w": 20, + "h": 21 + } + }, + { + "filename": "run-down-4.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 17, + "h": 21 + }, + "frame": { + "x": 90, + "y": 2, + "w": 17, + "h": 21 + } + }, + { + "filename": "faint-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 14, + "w": 21, + "h": 15 + }, + "frame": { + "x": 87, + "y": 27, + "w": 21, + "h": 15 + } + }, + { + "filename": "run-side-7.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 7, + "w": 18, + "h": 21 + }, + "frame": { + "x": 90, + "y": 46, + "w": 18, + "h": 21 + } + }, + { + "filename": "run-down-6.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 16, + "h": 21 + }, + "frame": { + "x": 90, + "y": 71, + "w": 16, + "h": 21 + } + }, + { + "filename": "run-up-1.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 6, + "y": 8, + "w": 19, + "h": 21 + }, + "frame": { + "x": 2, + "y": 105, + "w": 19, + "h": 21 + } + }, + { + "filename": "run-up-2.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 17, + "h": 21 + }, + "frame": { + "x": 25, + "y": 105, + "w": 17, + "h": 21 + } + }, + { + "filename": "run-up-5.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 8, + "w": 19, + "h": 21 + }, + "frame": { + "x": 46, + "y": 105, + "w": 19, + "h": 21 + } + }, + { + "filename": "walk-up-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 6, + "w": 16, + "h": 21 + }, + "frame": { + "x": 69, + "y": 105, + "w": 16, + "h": 21 + } + }, + { + "filename": "run-up-4.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 7, + "y": 9, + "w": 17, + "h": 20 + }, + "frame": { + "x": 90, + "y": 96, + "w": 17, + "h": 20 + } + }, + { + "filename": "run-up-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 16, + "h": 20 + }, + "frame": { + "x": 112, + "y": 2, + "w": 16, + "h": 20 + } + }, + { + "filename": "run-down-7.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 17, + "h": 20 + }, + "frame": { + "x": 111, + "y": 71, + "w": 17, + "h": 20 + } + }, + { + "filename": "run-up-7.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 17, + "h": 20 + }, + "frame": { + "x": 111, + "y": 95, + "w": 17, + "h": 20 + } + }, + { + "filename": "run-up-8.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 9, + "w": 17, + "h": 20 + }, + "frame": { + "x": 111, + "y": 119, + "w": 17, + "h": 20 + } + }, + { + "filename": "run-down-3.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 8, + "y": 10, + "w": 16, + "h": 20 + }, + "frame": { + "x": 112, + "y": 26, + "w": 16, + "h": 20 + } + }, + { + "filename": "faint-4.png", + "rotated": false, + "trimmed": true, + "sourceSize": { + "w": 32, + "h": 32 + }, + "spriteSourceSize": { + "x": 9, + "y": 14, + "w": 20, + "h": 15 + }, + "frame": { + "x": 2, + "y": 130, + "w": 20, + "h": 15 + } + } + ] + } + ], + "meta": { + "app": "http://free-tex-packer.com", + "version": "0.6.5" + } +} \ No newline at end of file diff --git a/apps/client/src/assets/dungeon-crawler/character/fauna.png b/apps/client/src/assets/dungeon-crawler/character/fauna.png new file mode 100644 index 00000000..e2532b37 Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/character/fauna.png differ diff --git a/apps/client/src/assets/dungeon-crawler/enemies/lizard.json b/apps/client/src/assets/dungeon-crawler/enemies/lizard.json new file mode 100644 index 00000000..c7d50959 --- /dev/null +++ b/apps/client/src/assets/dungeon-crawler/enemies/lizard.json @@ -0,0 +1,231 @@ +{ + "frames": { + "lizard_m_hit_anim_f0.png": { + "frame": { + "x": 2, + "y": 2, + "w": 15, + "h": 19 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 6, + "w": 15, + "h": 19 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_idle_anim_f0.png": { + "frame": { + "x": 21, + "y": 2, + "w": 15, + "h": 19 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 9, + "w": 15, + "h": 19 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_idle_anim_f1.png": { + "frame": { + "x": 2, + "y": 25, + "w": 15, + "h": 19 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 9, + "w": 15, + "h": 19 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_run_anim_f0.png": { + "frame": { + "x": 21, + "y": 25, + "w": 15, + "h": 19 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 9, + "w": 15, + "h": 19 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_run_anim_f1.png": { + "frame": { + "x": 40, + "y": 2, + "w": 15, + "h": 19 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 7, + "w": 15, + "h": 19 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_run_anim_f2.png": { + "frame": { + "x": 40, + "y": 25, + "w": 15, + "h": 19 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 8, + "w": 15, + "h": 19 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_idle_anim_f3.png": { + "frame": { + "x": 2, + "y": 48, + "w": 15, + "h": 18 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 10, + "w": 15, + "h": 18 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_run_anim_f3.png": { + "frame": { + "x": 21, + "y": 48, + "w": 15, + "h": 17 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 11, + "w": 15, + "h": 17 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "lizard_m_idle_anim_f2.png": { + "frame": { + "x": 59, + "y": 2, + "w": 16, + "h": 16 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 0, + "y": 12, + "w": 16, + "h": 16 + }, + "sourceSize": { + "w": 16, + "h": 28 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + } + }, + "meta": { + "app": "http://free-tex-packer.com", + "version": "0.6.5", + "image": "lizard.png", + "format": "RGBA8888", + "size": { + "w": 77, + "h": 68 + }, + "scale": 1 + } +} \ No newline at end of file diff --git a/apps/client/src/assets/dungeon-crawler/enemies/lizard.png b/apps/client/src/assets/dungeon-crawler/enemies/lizard.png new file mode 100644 index 00000000..802b216d Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/enemies/lizard.png differ diff --git a/apps/client/src/assets/dungeon-crawler/items/treasure.json b/apps/client/src/assets/dungeon-crawler/items/treasure.json new file mode 100644 index 00000000..fbab5c83 --- /dev/null +++ b/apps/client/src/assets/dungeon-crawler/items/treasure.json @@ -0,0 +1,183 @@ +{ + "frames": { + "chest_empty_open_anim_f0.png": { + "frame": { + "x": 2, + "y": 2, + "w": 16, + "h": 14 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 0, + "y": 2, + "w": 16, + "h": 14 + }, + "sourceSize": { + "w": 16, + "h": 16 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "chest_empty_open_anim_f1.png": { + "frame": { + "x": 2, + "y": 20, + "w": 16, + "h": 15 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 0, + "y": 1, + "w": 16, + "h": 15 + }, + "sourceSize": { + "w": 16, + "h": 16 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "chest_empty_open_anim_f2.png": { + "frame": { + "x": 22, + "y": 2, + "w": 16, + "h": 16 + }, + "rotated": false, + "trimmed": false, + "spriteSourceSize": { + "x": 0, + "y": 0, + "w": 16, + "h": 16 + }, + "sourceSize": { + "w": 16, + "h": 16 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "coin_anim_f0.png": { + "frame": { + "x": 22, + "y": 22, + "w": 6, + "h": 7 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 1, + "y": 1, + "w": 6, + "h": 7 + }, + "sourceSize": { + "w": 8, + "h": 8 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "coin_anim_f1.png": { + "frame": { + "x": 32, + "y": 22, + "w": 4, + "h": 7 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 2, + "y": 1, + "w": 4, + "h": 7 + }, + "sourceSize": { + "w": 8, + "h": 8 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "coin_anim_f2.png": { + "frame": { + "x": 2, + "y": 39, + "w": 2, + "h": 7 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 3, + "y": 1, + "w": 2, + "h": 7 + }, + "sourceSize": { + "w": 8, + "h": 8 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + }, + "coin_anim_f3.png": { + "frame": { + "x": 8, + "y": 39, + "w": 4, + "h": 7 + }, + "rotated": false, + "trimmed": true, + "spriteSourceSize": { + "x": 2, + "y": 1, + "w": 4, + "h": 7 + }, + "sourceSize": { + "w": 8, + "h": 8 + }, + "pivot": { + "x": 0.5, + "y": 0.5 + } + } + }, + "meta": { + "app": "http://free-tex-packer.com", + "version": "0.6.5", + "image": "treasure.png", + "format": "RGBA8888", + "size": { + "w": 40, + "h": 48 + }, + "scale": 1 + } +} \ No newline at end of file diff --git a/apps/client/src/assets/dungeon-crawler/items/treasure.png b/apps/client/src/assets/dungeon-crawler/items/treasure.png new file mode 100644 index 00000000..5e2340ef Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/items/treasure.png differ diff --git a/apps/client/src/assets/dungeon-crawler/tiles/dungeon-01.json b/apps/client/src/assets/dungeon-crawler/tiles/dungeon-01.json new file mode 100644 index 00000000..be3fb53b --- /dev/null +++ b/apps/client/src/assets/dungeon-crawler/tiles/dungeon-01.json @@ -0,0 +1,1574 @@ +{ "compressionlevel":-1, + "height":20, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":2, + "name":"Ground", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 73, 2, 3, 3, 3, 3, 3, 132, 133, 134, 135, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 74, 0, 0, 0, 0, + 0, 0, 83, 12, 13, 13, 13, 13, 13, 142, 143, 144, 145, 13, 13, 13, 13, 13, 15, 13, 13, 13, 13, 13, 13, 84, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 19, 0, 0, 0, 56, 0, 0, 0, 0, 19, 0, 0, 19, 0, 0, 0, 0, 66, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 66, 0, 0, 39, 39, 19, 39, 39, 39, 0, 0, 0, 0, 76, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 42, 42, 42, 42, 42, 42, 39, 39, 39, 39, 39, 0, 0, 0, 0, 2, 3, 3, 3, 85, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 0, 0, 0, 0, 0, 12, 13, 13, 13, 95, 0, 0, 0, 0, + 0, 0, 82, 0, 19, 0, 0, 0, 0, 0, 0, 0, 43, 43, 43, 0, 19, 52, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 0, 62, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 82, 0, 0, 0, 62, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 0, 93, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 94, 0, 0, 0, 0, + 0, 0, 103, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":1, + "name":"Walls", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":20, + "id":4, + "name":"Assets", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":30, + "x":0, + "y":0 + }], + "nextlayerid":5, + "nextobjectid":1, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.10.2", + "tileheight":16, + "tilesets":[ + { + "columns":10, + "firstgid":1, + "image":"dungeon_tiles.png", + "imageheight":256, + "imagewidth":160, + "margin":0, + "name":"dungeion", + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }], + "spacing":0, + "tilecount":160, + "tileheight":16, + "tiles":[ + { + "id":0, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":1, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":2, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":3, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":4, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":5, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":6, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":7, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":8, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":9, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":10, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":11, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":12, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":13, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":14, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":15, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":16, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":17, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":18, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":19, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":20, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":21, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":22, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":23, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":24, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":25, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":26, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":27, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":28, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":29, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + + { + "id":30, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":31, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":32, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":33, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":34, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":35, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":36, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":37, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":38, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":39, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":40, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":41, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":42, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":43, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":44, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":45, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":46, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":47, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":48, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":49, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":50, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":51, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":52, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":53, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":54, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":55, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":56, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":57, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":58, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":59, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + + { + "id":60, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":61, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":62, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":63, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":64, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":65, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":66, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":67, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":68, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":69, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":70, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":71, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":72, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":73, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":74, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":75, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":76, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":77, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":78, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":79, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":80, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":81, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":82, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":83, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":84, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":85, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":86, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":87, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":88, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":89, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + + { + "id":90, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":91, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":92, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":93, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":94, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":95, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":96, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":97, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":98, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":99, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":100, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":101, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":102, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":103, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":104, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":105, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":106, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":107, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":108, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":109, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":110, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":111, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":112, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":113, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":114, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":115, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":116, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":117, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":118, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":119, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + + { + "id":120, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":121, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":122, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":123, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":124, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":125, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":126, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":127, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":128, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":129, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":130, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":131, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":132, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":133, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":134, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":135, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":136, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":137, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":138, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":139, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":140, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":141, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":142, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":143, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":144, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":true + }] + }, + { + "id":145, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":146, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":147, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":148, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":149, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + + { + "id":150, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":151, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":152, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":153, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":154, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":155, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":156, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":157, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":158, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }, + { + "id":159, + "properties":[ + { + "name":"collides", + "type":"bool", + "value":false + }] + }], + "tilewidth":16 + }], + "tilewidth":16, + "type":"map", + "version":"1.10", + "width":30 +} \ No newline at end of file diff --git a/apps/client/src/assets/dungeon-crawler/tiles/dungeon_tiles.png b/apps/client/src/assets/dungeon-crawler/tiles/dungeon_tiles.png new file mode 100644 index 00000000..a51866e5 Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/tiles/dungeon_tiles.png differ diff --git a/apps/client/src/assets/dungeon-crawler/ui/ui_heart_empty.png b/apps/client/src/assets/dungeon-crawler/ui/ui_heart_empty.png new file mode 100644 index 00000000..d56cfae9 Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/ui/ui_heart_empty.png differ diff --git a/apps/client/src/assets/dungeon-crawler/ui/ui_heart_full.png b/apps/client/src/assets/dungeon-crawler/ui/ui_heart_full.png new file mode 100644 index 00000000..60612b86 Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/ui/ui_heart_full.png differ diff --git a/apps/client/src/assets/dungeon-crawler/weapons/weapon_knife.png b/apps/client/src/assets/dungeon-crawler/weapons/weapon_knife.png new file mode 100644 index 00000000..b4daa4ed Binary files /dev/null and b/apps/client/src/assets/dungeon-crawler/weapons/weapon_knife.png differ diff --git a/apps/client/src/assets/games/images/dungeon-crawler-banner.webp b/apps/client/src/assets/games/images/dungeon-crawler-banner.webp new file mode 100644 index 00000000..b7a19c70 Binary files /dev/null and b/apps/client/src/assets/games/images/dungeon-crawler-banner.webp differ diff --git a/apps/client/src/assets/games/images/dungeon-crawler.webp b/apps/client/src/assets/games/images/dungeon-crawler.webp new file mode 100644 index 00000000..ce16eeb2 Binary files /dev/null and b/apps/client/src/assets/games/images/dungeon-crawler.webp differ diff --git a/apps/client/src/metadata/dungeon-crawler/dungeon-01.tmx b/apps/client/src/metadata/dungeon-crawler/dungeon-01.tmx new file mode 100644 index 00000000..79fc2e56 --- /dev/null +++ b/apps/client/src/metadata/dungeon-crawler/dungeon-01.tmx @@ -0,0 +1,884 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,121,122,123,124,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,73,2,3,3,3,3,3,132,133,134,135,3,3,3,3,3,5,3,3,3,3,3,3,74,0,0,0,0, +0,0,83,12,13,13,13,13,13,142,143,144,145,13,13,13,13,13,15,13,13,13,13,13,13,84,0,0,0,0, +0,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,81,0,0,0,0, +0,0,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0, +0,0,82,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,56,0,0,81,0,0,0,0, +0,0,82,0,0,19,0,0,0,56,0,0,0,0,19,0,0,19,0,0,0,0,66,0,0,81,0,0,0,0, +0,0,82,0,0,0,0,0,0,66,0,0,39,39,19,39,39,39,0,0,0,0,76,0,0,81,0,0,0,0, +0,0,82,0,0,0,0,0,0,76,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0, +0,0,82,0,0,0,42,42,42,42,42,42,39,39,39,39,39,0,0,0,0,2,3,3,3,85,0,0,0,0, +0,0,82,0,0,0,0,0,0,0,0,0,0,0,43,43,0,0,0,0,0,12,13,13,13,95,0,0,0,0, +0,0,82,0,19,0,0,0,0,0,0,0,43,43,43,0,19,52,0,0,0,0,0,0,0,81,0,0,0,0, +0,0,82,0,0,0,0,62,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0, +0,0,82,0,0,0,62,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,0,0,0,0, +0,0,93,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,0,0,0,0, +0,0,103,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + + + +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + + +