let socket;
let socket_state;
+let player_id;
let player;
+let requests_funcs = new Map();
+
const event_strength = (event) => {
return events.get(event) ? 1 : 0;
};
images.set(path, image);
};
-const entity_init = () => {
- return {
- x: 0,
- y: 0,
- width: 16 * 3,
- height: 16 * 3,
- anchor: "bottom",
- sheet_rect: { x: 0, y: 0, width: 16, height: 16 },
- image: undefined,
- speed: 3,
- anim: undefined,
- anim_frame_size: 16,
- anim_frame: 0,
- anim_counter: 0,
- shadow: true,
- };
-};
-
const entity_play_anim = (entity, anim) => {
entity.anim = anim;
entity.anim_frame = 0;
entity.anim_frame = 0;
};
-const catto_init = () => {
- let entity = entity_init();
- entity.sheet_rect = { x: 0, y: 0, width: 16, height: 16 };
- entity.anim = "idle_right";
- entity.image = "cattoland/catto.png";
-
- return entity;
-};
-
const scene_clear = () => {
entities = [];
};
-const request = (content) => {
+const request = (content, func) => {
let id = Math.floor(Math.random() * 1000000000);
+
+ while (requests_funcs.has(id)) {
+ id = Math.floor(Math.random() * 1000000000);
+ }
+
+ requests_funcs.set(id, func);
+
socket.send(`${id} ${content}`);
};
+const handle_message = (event) => {
+ let data = event.data;
+
+ let id_raw = data.split(' ')[0];
+ let id = parseInt(id_raw, 10);
+
+ let content = data.substring(id_raw.length + 1);
+
+ let func = requests_funcs.get(id);
+
+ func(content);
+
+ requests_funcs.delete(id);
+};
+
const socket_connect = () => {
socket = new WebSocket("ws://localhost:3000");
socket_state = "connecting";
socket.onopen = (event) => {
socket_state = "connected";
- request("Gimme catto pleaz.");
+
+ request("Gimme catto pleaz.", (content) => {
+ player_id = parseInt(content, 10);
+ });
+
init_game();
};
- socket.onmessage = (event) => {
- console.log(event.data);
- };
+ socket.onmessage = handle_message;
};
const init_game = () => {
scene_clear();
-
state = "game";
-
- player = catto_init();
- entities.push(player);
};
const init_error = () => {
if (socket_state === "error") {
socket_connect();
}
+ } else if (state === "game") {
+ request("Update plz.", (content) => {
+ entities = JSON.parse(content);
+ })
}
}