Jofthomas HF staff commited on
Commit
60c80d2
·
1 Parent(s): bf5dc11

freeze game while in lobby + properly delete players

Browse files
Files changed (3) hide show
  1. convex/aiTown/game.ts +21 -0
  2. convex/world.ts +1 -0
  3. src/App.tsx +1 -1
convex/aiTown/game.ts CHANGED
@@ -26,6 +26,17 @@ import { HistoricalObject } from '../engine/historicalObject';
26
  import { AgentDescription, serializedAgentDescription } from './agentDescription';
27
  import { parseMap, serializeMap } from '../util/object';
28
  import { LOBBY_SIZE } from '../constants';
 
 
 
 
 
 
 
 
 
 
 
29
 
30
  type WerewolfLookupTable = {
31
  [key: number]: number;
@@ -258,6 +269,16 @@ export class Game extends AbstractGame {
258
  // Quit LobbyState to start the game once we have at least 3 players
259
  if (this.world.gameCycle.cycleState === 'LobbyState' && humans.length >= LOBBY_SIZE) {
260
  this.world.gameCycle.startGame(this)
 
 
 
 
 
 
 
 
 
 
261
  }
262
 
263
  // debug
 
26
  import { AgentDescription, serializedAgentDescription } from './agentDescription';
27
  import { parseMap, serializeMap } from '../util/object';
28
  import { LOBBY_SIZE } from '../constants';
29
+ import { useMutation, useQuery } from 'convex/react';
30
+ import { api } from '../_generated/api';
31
+
32
+ const stopAllowed = useQuery(api.testing.stopAllowed) ?? false;
33
+ const defaultWorld = useQuery(api.world.defaultWorldStatus);
34
+
35
+ const frozen = defaultWorld?.status === 'stoppedByDeveloper';
36
+
37
+ const unfreeze = useMutation(api.testing.resume);
38
+ const freeze = useMutation(api.testing.stop);
39
+
40
 
41
  type WerewolfLookupTable = {
42
  [key: number]: number;
 
269
  // Quit LobbyState to start the game once we have at least 3 players
270
  if (this.world.gameCycle.cycleState === 'LobbyState' && humans.length >= LOBBY_SIZE) {
271
  this.world.gameCycle.startGame(this)
272
+ if (frozen) {
273
+ console.log('Unfreezing');
274
+ unfreeze();
275
+ }
276
+ }
277
+ if (this.world.gameCycle.cycleState === 'LobbyState' && humans.length < LOBBY_SIZE) {
278
+
279
+ console.log('Freezing');
280
+ freeze();
281
+
282
  }
283
 
284
  // debug
convex/world.ts CHANGED
@@ -193,6 +193,7 @@ export const leaveWorld = mutation({
193
  await insertInput(ctx, world._id, 'leave', {
194
  playerId: existingPlayer.id,
195
  });
 
196
  },
197
  });
198
 
 
193
  await insertInput(ctx, world._id, 'leave', {
194
  playerId: existingPlayer.id,
195
  });
196
+ world.players.delete(oauthToken);
197
  },
198
  });
199
 
src/App.tsx CHANGED
@@ -17,7 +17,7 @@ import OAuthLogin from './components//buttons/OAuthLogin.tsx';
17
  import FreezeButton from './components/FreezeButton.tsx';
18
  import { MAX_HUMAN_PLAYERS } from '../convex/constants.ts';
19
  import PoweredByConvex from './components/PoweredByConvex.tsx';
20
- //test push
21
  export default function Home() {
22
  const [helpModalOpen, setHelpModalOpen] = useState(false);
23
  return (
 
17
  import FreezeButton from './components/FreezeButton.tsx';
18
  import { MAX_HUMAN_PLAYERS } from '../convex/constants.ts';
19
  import PoweredByConvex from './components/PoweredByConvex.tsx';
20
+
21
  export default function Home() {
22
  const [helpModalOpen, setHelpModalOpen] = useState(false);
23
  return (