Spaces:
Sleeping
Sleeping
bulk
Browse files
patches/characters.ts
CHANGED
|
@@ -214,6 +214,13 @@ export const characters = [
|
|
| 214 |
spritesheetData: f8SpritesheetData,
|
| 215 |
speed: 0.15,
|
| 216 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 217 |
];
|
| 218 |
|
| 219 |
// Characters move at 0.75 tiles per second.
|
|
|
|
| 214 |
spritesheetData: f8SpritesheetData,
|
| 215 |
speed: 0.15,
|
| 216 |
},
|
| 217 |
+
{
|
| 218 |
+
name: 'c1',
|
| 219 |
+
textureUrl: '/ai-town/assets/GrayCat.png',
|
| 220 |
+
spritesheetData: c1SpritesheetData,
|
| 221 |
+
speed: 0.19,
|
| 222 |
+
},
|
| 223 |
+
|
| 224 |
];
|
| 225 |
|
| 226 |
// Characters move at 0.75 tiles per second.
|
patches/convex/aiTown/agentOperations.ts
CHANGED
|
@@ -128,21 +128,21 @@ export const agentDoSomething = internalAction({
|
|
| 128 |
return;
|
| 129 |
} else {
|
| 130 |
// TODO: have LLM choose the activity & emoji
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
return;
|
| 147 |
}
|
| 148 |
}
|
|
@@ -177,4 +177,4 @@ function wanderDestination(worldMap: WorldMap) {
|
|
| 177 |
x: 1 + Math.floor(Math.random() * (worldMap.width - 2)),
|
| 178 |
y: 1 + Math.floor(Math.random() * (worldMap.height - 2)),
|
| 179 |
};
|
| 180 |
-
}
|
|
|
|
| 128 |
return;
|
| 129 |
} else {
|
| 130 |
// TODO: have LLM choose the activity & emoji
|
| 131 |
+
const activity = ACTIVITIES[Math.floor(Math.random() * ACTIVITIES.length)];
|
| 132 |
+
await sleep(Math.random() * 1000);
|
| 133 |
+
await ctx.runMutation(api.aiTown.main.sendInput, {
|
| 134 |
+
worldId: args.worldId,
|
| 135 |
+
name: 'finishDoSomething',
|
| 136 |
+
args: {
|
| 137 |
+
operationId: args.operationId,
|
| 138 |
+
agentId: agent.id,
|
| 139 |
+
activity: {
|
| 140 |
+
description: activity.description,
|
| 141 |
+
emoji: activity.emoji,
|
| 142 |
+
until: Date.now() + activity.duration,
|
| 143 |
+
},
|
| 144 |
+
},
|
| 145 |
+
});
|
| 146 |
return;
|
| 147 |
}
|
| 148 |
}
|
|
|
|
| 177 |
x: 1 + Math.floor(Math.random() * (worldMap.width - 2)),
|
| 178 |
y: 1 + Math.floor(Math.random() * (worldMap.height - 2)),
|
| 179 |
};
|
| 180 |
+
}
|
patches/convex/aiTown/gameCycle.ts
CHANGED
|
@@ -115,18 +115,11 @@ const onStateChange = (prevState: CycleState, newState: CycleState, game: Game,
|
|
| 115 |
})
|
| 116 |
};
|
| 117 |
if (prevState === 'PlayerKillVoting') {
|
| 118 |
-
const
|
| 119 |
-
|
| 120 |
-
})
|
| 121 |
-
if (
|
| 122 |
-
|
| 123 |
-
const playerToKill = game.world.players.get(mostVotedPlayer.playerId);
|
| 124 |
-
console.log(`killing: ${playerToKill?.id}, with ${game.world.gameVotes.length} votes`)
|
| 125 |
-
if (playerToKill) {
|
| 126 |
-
playerToKill.kill(game, now);
|
| 127 |
-
}
|
| 128 |
-
} else {
|
| 129 |
-
console.log('no werewolves, nobody was killed')
|
| 130 |
}
|
| 131 |
game.world.gameVotes = [];
|
| 132 |
}
|
|
|
|
| 115 |
})
|
| 116 |
};
|
| 117 |
if (prevState === 'PlayerKillVoting') {
|
| 118 |
+
const mostVotedPlayer = processVotes(game.world.gameVotes, [...game.world.players.values()])[0];
|
| 119 |
+
const playerToKill = game.world.players.get(mostVotedPlayer.playerId);
|
| 120 |
+
console.log(`killing: ${playerToKill?.id}, with ${game.world.gameVotes.length} votes`)
|
| 121 |
+
if (playerToKill) {
|
| 122 |
+
playerToKill.kill(game, now);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
}
|
| 124 |
game.world.gameVotes = [];
|
| 125 |
}
|
patches/src/App.tsx
CHANGED
|
@@ -23,7 +23,7 @@ export default function Home() {
|
|
| 23 |
return (
|
| 24 |
<main className="relative flex min-h-screen flex-col items-center justify-between font-body game-background">
|
| 25 |
|
| 26 |
-
|
| 27 |
isOpen={helpModalOpen}
|
| 28 |
onRequestClose={() => setHelpModalOpen(false)}
|
| 29 |
style={modalStyles}
|
|
|
|
| 23 |
return (
|
| 24 |
<main className="relative flex min-h-screen flex-col items-center justify-between font-body game-background">
|
| 25 |
|
| 26 |
+
<ReactModal
|
| 27 |
isOpen={helpModalOpen}
|
| 28 |
onRequestClose={() => setHelpModalOpen(false)}
|
| 29 |
style={modalStyles}
|
patches/src/components/Character.tsx
CHANGED
|
@@ -85,10 +85,10 @@ export const Character = ({
|
|
| 85 |
|
| 86 |
return (
|
| 87 |
<Container x={x} y={y} interactive={true} pointerdown={onClick} cursor="pointer">
|
| 88 |
-
{
|
| 89 |
// TODO: We'll eventually have separate assets for thinking and speech animations.
|
| 90 |
<Text x={-20} y={-10} scale={{ x: -0.8, y: 0.8 }} text={'💭'} anchor={{ x: 0.5, y: 0.5 }} />
|
| 91 |
-
)}
|
| 92 |
{isSpeaking && (
|
| 93 |
// TODO: We'll eventually have separate assets for thinking and speech animations.
|
| 94 |
<Text x={18} y={-10} scale={0.8} text={'💬'} anchor={{ x: 0.5, y: 0.5 }} />
|
|
|
|
| 85 |
|
| 86 |
return (
|
| 87 |
<Container x={x} y={y} interactive={true} pointerdown={onClick} cursor="pointer">
|
| 88 |
+
{isThinking && (
|
| 89 |
// TODO: We'll eventually have separate assets for thinking and speech animations.
|
| 90 |
<Text x={-20} y={-10} scale={{ x: -0.8, y: 0.8 }} text={'💭'} anchor={{ x: 0.5, y: 0.5 }} />
|
| 91 |
+
)}
|
| 92 |
{isSpeaking && (
|
| 93 |
// TODO: We'll eventually have separate assets for thinking and speech animations.
|
| 94 |
<Text x={18} y={-10} scale={0.8} text={'💬'} anchor={{ x: 0.5, y: 0.5 }} />
|