@littlepartytime/dev-kit 1.12.0 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,11 +11,12 @@ const btnAmber: React.CSSProperties = { background: '#d97706', color: '#fff', bo
11
11
  const btnZinc: React.CSSProperties = { background: '#3f3f46', color: '#fff', border: 'none', padding: '4px 12px', borderRadius: 4, fontSize: 13, cursor: 'pointer', width: '100%' };
12
12
 
13
13
  export default function Preview() {
14
- const [playerCount, setPlayerCount] = useState(3);
14
+ const [playerCount, setPlayerCount] = useState<number | null>(null);
15
15
  const [playerIndex, setPlayerIndex] = useState(0);
16
16
  const [actions, setActions] = useState<any[]>([]);
17
17
  const [GameRenderer, setGameRenderer] = useState<React.ComponentType<any> | null>(null);
18
18
  const [engine, setEngine] = useState<any>(null);
19
+ const [config, setConfig] = useState<{ minPlayers?: number; maxPlayers?: number } | null>(null);
19
20
  const [fullState, setFullState] = useState<any>(null);
20
21
  const [viewState, setViewState] = useState<any>(null);
21
22
  const [gameOver, setGameOver] = useState(false);
@@ -31,6 +32,7 @@ export default function Preview() {
31
32
 
32
33
  // Generate mock players
33
34
  const mockPlayers = useMemo(() => {
35
+ if (playerCount === null) return [];
34
36
  return Array.from({ length: playerCount }, (_, i) => ({
35
37
  id: `player-${i + 1}`,
36
38
  nickname: PLAYER_NAMES[i] || `Player ${i + 1}`,
@@ -42,15 +44,25 @@ export default function Preview() {
42
44
  const mockPlayersRef = useRef(mockPlayers);
43
45
  mockPlayersRef.current = mockPlayers;
44
46
 
45
- // Load renderer and engine dynamically
47
+ const minPlayers = config?.minPlayers ?? 2;
48
+ const maxPlayers = config?.maxPlayers ?? 32;
49
+
50
+ // Load renderer, engine, and config dynamically
46
51
  useEffect(() => {
47
52
  import('/src/index.ts').then((mod) => {
48
53
  setGameRenderer(() => mod.Renderer || mod.default);
49
54
  if (mod.engine) {
50
55
  setEngine(mod.engine);
51
56
  }
57
+ if (mod.config) {
58
+ setConfig(mod.config);
59
+ setPlayerCount(mod.config.minPlayers ?? 3);
60
+ } else {
61
+ setPlayerCount(3);
62
+ }
52
63
  }).catch((err) => {
53
64
  console.error('Failed to load game module:', err);
65
+ setPlayerCount(3);
54
66
  // Fallback: try loading renderer directly
55
67
  import('/src/renderer.tsx').then((mod) => {
56
68
  setGameRenderer(() => mod.default || mod.Renderer);
@@ -62,7 +74,7 @@ export default function Preview() {
62
74
 
63
75
  // Initialize game when engine loads or player count changes
64
76
  useEffect(() => {
65
- if (!engine) return;
77
+ if (!engine || mockPlayers.length === 0) return;
66
78
  const initialState = engine.init(mockPlayers);
67
79
  setFullState(initialState);
68
80
  setGameOver(false);
@@ -166,7 +178,7 @@ export default function Preview() {
166
178
 
167
179
  // Clamp playerIndex when playerCount decreases
168
180
  useEffect(() => {
169
- if (playerIndex >= playerCount) {
181
+ if (playerCount !== null && playerIndex >= playerCount) {
170
182
  setPlayerIndex(0);
171
183
  }
172
184
  }, [playerCount, playerIndex]);
@@ -213,10 +225,10 @@ export default function Preview() {
213
225
  <h3 style={label}>Player Count</h3>
214
226
  <input
215
227
  type="number"
216
- min={2}
217
- max={32}
218
- value={playerCount}
219
- onChange={(e) => setPlayerCount(Math.max(2, Math.min(32, Number(e.target.value))))}
228
+ min={minPlayers}
229
+ max={maxPlayers}
230
+ value={playerCount ?? ''}
231
+ onChange={(e) => setPlayerCount(Math.max(minPlayers, Math.min(maxPlayers, Number(e.target.value))))}
220
232
  className="dk-input"
221
233
  style={inputBase}
222
234
  />
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@littlepartytime/dev-kit",
3
- "version": "1.12.0",
3
+ "version": "1.12.1",
4
4
  "description": "Development toolkit CLI for Little Party Time game developers",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",