diff --git a/src/common/Types.ts b/src/common/Types.ts index 0e8d21d..261e210 100644 --- a/src/common/Types.ts +++ b/src/common/Types.ts @@ -154,8 +154,9 @@ export interface PieceChange { export interface PuzzleInfo { table: PuzzleTable - targetTiles: number, + targetTiles: number imageUrl: string + imageTitle: string width: number height: number diff --git a/src/frontend/PuzzleGraphics.ts b/src/frontend/PuzzleGraphics.ts index 6debdbe..6934cda 100644 --- a/src/frontend/PuzzleGraphics.ts +++ b/src/frontend/PuzzleGraphics.ts @@ -3,7 +3,7 @@ import Geometry, { Rect } from '../common/Geometry' import Graphics from './Graphics' import Util, { logger } from './../common/Util' -import { Puzzle, PuzzleInfo, PieceShape, EncodedPiece } from './../common/GameCommon' +import { Puzzle, PuzzleInfo, PieceShape, EncodedPiece } from './../common/Types' const log = logger('PuzzleGraphics.js') diff --git a/src/frontend/components/InfoOverlay.vue b/src/frontend/components/InfoOverlay.vue new file mode 100644 index 0000000..7f76d2d --- /dev/null +++ b/src/frontend/components/InfoOverlay.vue @@ -0,0 +1,68 @@ + + diff --git a/src/frontend/game.ts b/src/frontend/game.ts index 9f66e8d..ea457d1 100644 --- a/src/frontend/game.ts +++ b/src/frontend/game.ts @@ -969,6 +969,7 @@ export async function main( soundsVolume: playerSoundVolume(), showPlayerNames: showPlayerNames(), }, + game: Game.get(gameId), disconnect: Communication.disconnect, connect: connect, unload: unload, diff --git a/src/frontend/views/Game.vue b/src/frontend/views/Game.vue index d1789f0..e0d3394 100644 --- a/src/frontend/views/Game.vue +++ b/src/frontend/views/Game.vue @@ -2,6 +2,7 @@
+
@@ -27,7 +28,8 @@ 🧩 Puzzles
🖼️ Preview
🛠️ Settings
-
ℹ️ Hotkeys
+
ℹ️ Info
+
⌨️ Hotkeys
@@ -41,6 +43,7 @@ import Scores from './../components/Scores.vue' import PuzzleStatus from './../components/PuzzleStatus.vue' import SettingsOverlay from './../components/SettingsOverlay.vue' import PreviewOverlay from './../components/PreviewOverlay.vue' +import InfoOverlay from './../components/InfoOverlay.vue' import ConnectionOverlay from './../components/ConnectionOverlay.vue' import HelpOverlay from './../components/HelpOverlay.vue' @@ -54,6 +57,7 @@ export default defineComponent({ Scores, SettingsOverlay, PreviewOverlay, + InfoOverlay, ConnectionOverlay, HelpOverlay, }, @@ -81,6 +85,7 @@ export default defineComponent({ soundsVolume: 100, showPlayerNames: true, }, + game: null, previewImageUrl: '', setHotkeys: (v: boolean) => {}, onBgChange: (v: string) => {}, diff --git a/src/frontend/views/Replay.vue b/src/frontend/views/Replay.vue index c8f64ae..7239d2a 100644 --- a/src/frontend/views/Replay.vue +++ b/src/frontend/views/Replay.vue @@ -2,6 +2,7 @@
+
@@ -29,7 +30,8 @@ 🧩 Puzzles
🖼️ Preview
🛠️ Settings
-
ℹ️ Hotkeys
+
ℹ️ Info
+
⌨️ Hotkeys
@@ -43,6 +45,7 @@ import Scores from './../components/Scores.vue' import PuzzleStatus from './../components/PuzzleStatus.vue' import SettingsOverlay from './../components/SettingsOverlay.vue' import PreviewOverlay from './../components/PreviewOverlay.vue' +import InfoOverlay from './../components/InfoOverlay.vue' import HelpOverlay from './../components/HelpOverlay.vue' import { main, MODE_REPLAY } from './../game' @@ -55,6 +58,7 @@ export default defineComponent({ Scores, SettingsOverlay, PreviewOverlay, + InfoOverlay, HelpOverlay, }, data() { @@ -81,6 +85,7 @@ export default defineComponent({ soundsVolume: 100, showPlayerNames: true, }, + game: null, previewImageUrl: '', setHotkeys: (v: boolean) => {}, onBgChange: (v: string) => {}, diff --git a/src/server/Puzzle.ts b/src/server/Puzzle.ts index 4b65f2c..bd0ad98 100644 --- a/src/server/Puzzle.ts +++ b/src/server/Puzzle.ts @@ -7,6 +7,7 @@ import { Dim, Point } from '../common/Geometry' export interface PuzzleCreationImageInfo { file: string url: string + title: string } export interface PuzzleCreationInfo { @@ -140,6 +141,7 @@ async function createPuzzle( // information that was used to create the puzzle targetTiles: targetTiles, imageUrl, + imageTitle: image.title || '', width: info.width, // actual puzzle width (same as bitmap.width) height: info.height, // actual puzzle height (same as bitmap.height)