Spaces:
Running
on
T4
Running
on
T4
File size: 3,305 Bytes
2f6a09b 6d3ffa2 2f6a09b 6d3ffa2 2f6a09b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
const CELL_SIZE = 50;
let GRID_COLS = 0;
let GRID_ROWS = 0;
let grid = [];
let gameState;
let baseMapImg;
let girlfriendImg;
let clownImg;
let clownSound1Snd;
let clownSound2Snd;
let clownSeesYouSnd;
let gfMoveSnd;
let loseSnd;
let unlockDoorSnd;
let useKnifeSnd;
let messageSnd;
let successSnd;
let isSoundOn = true;
const soundIcon = document.getElementById("soundIcon");
const bgMusic = document.getElementById("bgMusic");
const mistralAPI = new MistralAPI();
let chatMessages = [];
let furnitureSprites = {};
function preload() {
clownSound1Snd = loadSound('/assets/sounds/clownmove1.mp3');
clownSound2Snd = loadSound('/assets/sounds/clownmove2.mp3');
clownSeesYouSnd = loadSound('/assets/sounds/clownseesyou.mp3');
gfMoveSnd = loadSound('/assets/sounds/gfmove.mp3');
loseSnd = loadSound('/assets/sounds/lose.mp3');
unlockDoorSnd = loadSound('/assets/sounds/unlockdoor.mp3');
useKnifeSnd = loadSound('/assets/sounds/useknife.mp3');
messageSnd = loadSound('/assets/sounds/message.wav');
successSnd = loadSound('/assets/sounds/success.mp3');
}
async function initializeChat() {
const firstPrompt = gameState.getFirstPrompt();
const messages = [
{
role: "system",
content: firstPrompt,
},
];
try {
const response = await mistralAPI.sendMessage(messages);
const jsonResponse = JSON.parse(response);
addMessageToChat("assistant", jsonResponse.textMessage);
} catch (error) {
console.error("Error getting initial message:", error);
}
}
async function setup() {
// Vérifier si c'est la première visite
if (localStorage.getItem("isSoundOn") === null) {
// Première visite : initialiser avec le son activé
localStorage.setItem("isSoundOn", "true");
} else {
// Visites suivantes : récupérer l'état précédent
isSoundOn = localStorage.getItem("isSoundOn") == "true";
}
setStressLevel('no');
baseMapImg = loadImage("/assets/img/appartment/basemap.png");
girlfriendImg = loadImage("/assets/img/gf.png");
clownImg = loadImage("/assets/img/clown.png");
gameState = new GameState({
...getApt(),
grid: getGrid(),
furniture: getFurniture(),
});
furnitureSprites = loadFurnitureSprites(gameState.map_data.furniture);
GRID_COLS = gameState.map_data.gridCols;
GRID_ROWS = gameState.map_data.gridRows;
girlfriend = new Girlfriend(gameState, girlfriendImg);
clown = new Clown(gameState, clownImg);
// Once loaded, initialize the P5 canvas with correct dims
let canvas = createCanvas(GRID_COLS * CELL_SIZE, GRID_ROWS * CELL_SIZE);
canvas.parent("mapWrapper");
adjustScale();
await initializeChat();
}
function draw() {
clear();
if (baseMapImg) {
image(baseMapImg, 0, 0, GRID_COLS * CELL_SIZE, GRID_ROWS * CELL_SIZE);
}
if (furnitureSprites) {
drawFurniture(gameState.map_data.furniture, furnitureSprites);
}
//drawGrid();
// drawWallsAndDoors();
drawLabels(gameState.map_data.rooms);
if (girlfriend) {
//girlfriend.drawPath(CELL_SIZE);
girlfriend.draw(CELL_SIZE);
}
if (clown) {
clown.checkForGirlfriend(girlfriend);
//clown.drawPath(CELL_SIZE);
clown.draw(CELL_SIZE);
}
gameState.update();
if (gameState.game_over) {
noLoop();
}
}
|