Skip to content

Commit caf66ce

Browse files
committed
added PWA support
1 parent 0fb9bfb commit caf66ce

10 files changed

Lines changed: 5983 additions & 841 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ lerna-debug.log*
99

1010
node_modules
1111
dist
12+
dev-dist
1213
dist-ssr
1314
*.local
1415

index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
<head>
44
<meta charset="UTF-8" />
55
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6+
<link rel="apple-touch-icon" href="/pwa-192x192.png">
7+
<link rel="manifest" href="/manifest.webmanifest">
68
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
79
<link rel="stylesheet" href="/style.css" />
810
<title>Solitaire</title>

package-lock.json

Lines changed: 5901 additions & 835 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
},
2222
"devDependencies": {
2323
"typescript": "~5.7.2",
24-
"vite": "^6.3.1"
24+
"vite": "^6.3.1",
25+
"vite-plugin-pwa": "^0.21.2"
2526
},
2627
"dependencies": {
2728
"phaser": "^3.90.0",
2829
"terser": "^5.39.0"
2930
}
30-
}
31+
}

public/manifest.webmanifest

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "Solitaire",
3+
"short_name": "Solitaire",
4+
"start_url": "/",
5+
"display": "standalone",
6+
"background_color": "#000000",
7+
"theme_color": "#000000",
8+
"icons": [
9+
{
10+
"src": "/pwa-192x192.png",
11+
"sizes": "192x192",
12+
"type": "image/png"
13+
},
14+
{
15+
"src": "/pwa-512x512.png",
16+
"sizes": "512x512",
17+
"type": "image/png"
18+
}
19+
]
20+
}

public/pwa-192x192.png

5.15 KB
Loading

public/pwa-512x512.png

7.54 KB
Loading

src/game/scenes/Game.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export class GameScene extends Phaser.Scene {
103103
// Update all face-down cards in draw pile
104104
this.drawPileCards.forEach(card => {
105105
// Only update if the card is currently showing a card back
106-
if (CARD_BACK_FRAMES.includes(card.frame.name)) {
106+
if (CARD_BACK_FRAMES.includes(parseInt(card.frame.name, 10))) {
107107
card.setFrame(frame);
108108
}
109109
});
@@ -112,7 +112,7 @@ export class GameScene extends Phaser.Scene {
112112
this.tableauContainers.forEach((container) => {
113113
container.each((card: Phaser.GameObjects.Image) => {
114114
// Only update if the card is currently showing a card back
115-
if (CARD_BACK_FRAMES.includes(card.frame.name)) {
115+
if (CARD_BACK_FRAMES.includes(parseInt(card.frame.name, 10))) {
116116
card.setFrame(frame);
117117
}
118118
});

vite/config.dev.mjs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineConfig } from 'vite';
2+
import { VitePWA } from 'vite-plugin-pwa';
23

34
export default defineConfig({
45
base: './',
@@ -13,5 +14,31 @@ export default defineConfig({
1314
},
1415
server: {
1516
port: 8080
16-
}
17+
},
18+
plugins: [
19+
VitePWA({
20+
registerType: 'autoUpdate',
21+
devOptions: {
22+
enabled: true
23+
},
24+
manifest: {
25+
name: 'Solitaire',
26+
short_name: 'Solitaire',
27+
description: 'A classic Solitaire game.',
28+
theme_color: '#0B7D3E',
29+
icons: [
30+
{
31+
src: 'pwa-192x192.png',
32+
sizes: '192x192',
33+
type: 'image/png'
34+
},
35+
{
36+
src: 'pwa-512x512.png',
37+
sizes: '512x512',
38+
type: 'image/png'
39+
}
40+
]
41+
}
42+
})
43+
]
1744
});

vite/config.prod.mjs

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineConfig } from 'vite';
2+
import { VitePWA } from 'vite-plugin-pwa';
23

34
const phasermsg = () => {
45
return {
@@ -42,6 +43,30 @@ export default defineConfig({
4243
port: 8080
4344
},
4445
plugins: [
45-
phasermsg()
46+
phasermsg(),
47+
VitePWA({
48+
registerType: 'autoUpdate',
49+
devOptions: {
50+
enabled: true
51+
},
52+
manifest: {
53+
name: 'Solitaire',
54+
short_name: 'Solitaire',
55+
description: 'A simple Solitaire game.',
56+
theme_color: '#000000',
57+
icons: [
58+
{
59+
src: 'pwa-192x192.png',
60+
sizes: '192x192',
61+
type: 'image/png'
62+
},
63+
{
64+
src: 'pwa-512x512.png',
65+
sizes: '512x512',
66+
type: 'image/png'
67+
}
68+
]
69+
}
70+
})
4671
]
4772
});

0 commit comments

Comments
 (0)