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 @@
+
+
+
+
+ | Info about this puzzle |
+
+
+ | Image Title: |
+ {{game.puzzle.info.imageTitle}} |
+
+
+ | Snap Mode: |
+ {{scoreMode[0]}} |
+
+
+ | Shape Mode: |
+ {{shapeMode[0]}} |
+
+
+ | Score Mode: |
+ {{snapMode[0]}} |
+
+
+
+
+
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)