Jofthomas HF staff commited on
Commit
2515f01
1 Parent(s): 05d07d4
src/components/Game.tsx CHANGED
@@ -144,13 +144,14 @@ https://github.com/michalochman/react-pixi-fiber/issues/145#issuecomment-5315492
144
  <p className="text-lg text-center">{GameStateLabel(game as GameObj, meDescription).desc}</p>
145
  </div>
146
  {playerId && !isEndGame(game) && canVote(game, meDescription) && <GameVote engineId={engineId} game={game} playerId={playerId} />}
147
- {!isEndGame(game) && !canVote(game, meDescription) && <PlayerDetails
148
  worldId={worldId}
149
  engineId={engineId}
150
  game={game}
151
  playerId={selectedElement?.id}
152
  setSelectedElement={setSelectedElement}
153
  scrollViewRef={scrollViewRef}
 
154
  />}
155
  {playerId && isEndGame(game) && <EndGame game={game} playerId={playerId} />}
156
  </div>
 
144
  <p className="text-lg text-center">{GameStateLabel(game as GameObj, meDescription).desc}</p>
145
  </div>
146
  {playerId && !isEndGame(game) && canVote(game, meDescription) && <GameVote engineId={engineId} game={game} playerId={playerId} />}
147
+ {!isEndGame(game) && !canVote(game, meDescription) && playerId &&<PlayerDetails
148
  worldId={worldId}
149
  engineId={engineId}
150
  game={game}
151
  playerId={selectedElement?.id}
152
  setSelectedElement={setSelectedElement}
153
  scrollViewRef={scrollViewRef}
154
+ currentPlayerId={playerId}
155
  />}
156
  {playerId && isEndGame(game) && <EndGame game={game} playerId={playerId} />}
157
  </div>
src/components/PlayerDetails.tsx CHANGED
@@ -14,9 +14,10 @@ export default function PlayerDetails({
14
  worldId,
15
  engineId,
16
  game,
17
- playerId,
18
  setSelectedElement,
19
  scrollViewRef,
 
20
  }: {
21
  worldId: Id<'worlds'>;
22
  engineId: Id<'engines'>;
@@ -24,12 +25,12 @@ export default function PlayerDetails({
24
  playerId?: GameId<'players'>;
25
  setSelectedElement: SelectElement;
26
  scrollViewRef: React.RefObject<HTMLDivElement>;
 
27
  }) {
28
  const oauth = JSON.parse(localStorage.getItem('oauth'));
29
  const oauthToken = oauth ? oauth.userInfo.fullname : undefined;
30
  const humanTokenIdentifier = useQuery(api.world.userStatus, { worldId, oauthToken });
31
 
32
- const players = [...game.world.players.values()];
33
  const humanPlayer = [...game.world.players.values()].find(
34
  (p) => game.playerDescriptions.get(p.id)?.name === humanTokenIdentifier,
35
  );
@@ -39,25 +40,25 @@ export default function PlayerDetails({
39
  const otherPlayerIds = [...humanConversation.participants.keys()].filter(
40
  (p) => !!p && p !== humanPlayer.id,
41
  );
42
- playerId = otherPlayerIds[0];
43
  }
44
 
45
- const player = playerId && game.world.players.get(playerId);
46
  const playerConversation = player && game.world.playerConversation(player);
47
 
48
  const previousConversation = useQuery(
49
  api.world.previousConversation,
50
- playerId ? { worldId, playerId } : 'skip',
51
  );
52
 
53
- const playerDescription = playerId && game.playerDescriptions.get(playerId);
54
 
55
  const startConversation = useSendInput(engineId, 'startConversation');
56
  const acceptInvite = useSendInput(engineId, 'acceptInvite');
57
  const rejectInvite = useSendInput(engineId, 'rejectInvite');
58
  const leaveConversation = useSendInput(engineId, 'leaveConversation');
59
 
60
- if (!playerId) {
61
  return (
62
  <div className="h-full text-xl flex text-center items-center p-4">
63
  Click on an agent on the map to see chat history.
@@ -67,7 +68,7 @@ export default function PlayerDetails({
67
  if (!player) {
68
  return null;
69
  }
70
- const isMe = humanPlayer && player.id === humanPlayer.id;
71
  const canInvite = !isMe && !playerConversation && humanPlayer && !humanConversation;
72
  const sameConversation =
73
  !isMe &&
@@ -78,10 +79,10 @@ export default function PlayerDetails({
78
 
79
  const humanStatus =
80
  humanPlayer && humanConversation && humanConversation.participants.get(humanPlayer.id)?.status;
81
- const playerStatus = playerConversation && playerConversation.participants.get(playerId)?.status;
82
  const haveInvite = sameConversation && humanStatus?.kind === 'invited';
83
  const waitingForAccept =
84
- sameConversation && playerConversation.participants.get(playerId)?.status.kind === 'invited';
85
  const waitingForNearby =
86
  sameConversation && playerStatus?.kind === 'walkingOver' && humanStatus?.kind === 'walkingOver';
87
 
@@ -91,14 +92,14 @@ export default function PlayerDetails({
91
  humanStatus?.kind === 'participating';
92
 
93
  const onStartConversation = async () => {
94
- if (!humanPlayer || !playerId) {
95
  return;
96
  }
97
  console.log(`Starting conversation`);
98
- await toastOnError(startConversation({ playerId: humanPlayer.id, invitee: playerId }));
99
  };
100
  const onAcceptInvite = async () => {
101
- if (!humanPlayer || !humanConversation || !playerId) {
102
  return;
103
  }
104
  await toastOnError(
 
14
  worldId,
15
  engineId,
16
  game,
17
+ playerId: SelectedPlayerId,
18
  setSelectedElement,
19
  scrollViewRef,
20
+ currentPlayerId,
21
  }: {
22
  worldId: Id<'worlds'>;
23
  engineId: Id<'engines'>;
 
25
  playerId?: GameId<'players'>;
26
  setSelectedElement: SelectElement;
27
  scrollViewRef: React.RefObject<HTMLDivElement>;
28
+ currentPlayerId:GameId<'players'>;
29
  }) {
30
  const oauth = JSON.parse(localStorage.getItem('oauth'));
31
  const oauthToken = oauth ? oauth.userInfo.fullname : undefined;
32
  const humanTokenIdentifier = useQuery(api.world.userStatus, { worldId, oauthToken });
33
 
 
34
  const humanPlayer = [...game.world.players.values()].find(
35
  (p) => game.playerDescriptions.get(p.id)?.name === humanTokenIdentifier,
36
  );
 
40
  const otherPlayerIds = [...humanConversation.participants.keys()].filter(
41
  (p) => !!p && p !== humanPlayer.id,
42
  );
43
+ SelectedPlayerId = otherPlayerIds[0];
44
  }
45
 
46
+ const player = SelectedPlayerId && game.world.players.get(SelectedPlayerId);
47
  const playerConversation = player && game.world.playerConversation(player);
48
 
49
  const previousConversation = useQuery(
50
  api.world.previousConversation,
51
+ SelectedPlayerId ? { worldId, playerId: SelectedPlayerId } : 'skip',
52
  );
53
 
54
+ const playerDescription = SelectedPlayerId && game.playerDescriptions.get(SelectedPlayerId);
55
 
56
  const startConversation = useSendInput(engineId, 'startConversation');
57
  const acceptInvite = useSendInput(engineId, 'acceptInvite');
58
  const rejectInvite = useSendInput(engineId, 'rejectInvite');
59
  const leaveConversation = useSendInput(engineId, 'leaveConversation');
60
 
61
+ if (!SelectedPlayerId) {
62
  return (
63
  <div className="h-full text-xl flex text-center items-center p-4">
64
  Click on an agent on the map to see chat history.
 
68
  if (!player) {
69
  return null;
70
  }
71
+ const isMe = humanPlayer && SelectedPlayerId === currentPlayerId;
72
  const canInvite = !isMe && !playerConversation && humanPlayer && !humanConversation;
73
  const sameConversation =
74
  !isMe &&
 
79
 
80
  const humanStatus =
81
  humanPlayer && humanConversation && humanConversation.participants.get(humanPlayer.id)?.status;
82
+ const playerStatus = playerConversation && playerConversation.participants.get(SelectedPlayerId)?.status;
83
  const haveInvite = sameConversation && humanStatus?.kind === 'invited';
84
  const waitingForAccept =
85
+ sameConversation && playerConversation.participants.get(SelectedPlayerId)?.status.kind === 'invited';
86
  const waitingForNearby =
87
  sameConversation && playerStatus?.kind === 'walkingOver' && humanStatus?.kind === 'walkingOver';
88
 
 
92
  humanStatus?.kind === 'participating';
93
 
94
  const onStartConversation = async () => {
95
+ if (!humanPlayer || !SelectedPlayerId) {
96
  return;
97
  }
98
  console.log(`Starting conversation`);
99
+ await toastOnError(startConversation({ playerId: humanPlayer.id, invitee: SelectedPlayerId }));
100
  };
101
  const onAcceptInvite = async () => {
102
+ if (!humanPlayer || !humanConversation || !SelectedPlayerId) {
103
  return;
104
  }
105
  await toastOnError(