maps
This commit is contained in:
parent
e379ab2a4c
commit
a674c00062
10
app.c
10
app.c
|
@ -248,9 +248,9 @@ int collision(v2 point, int x, int y, int w, int h)
|
|||
point.y >= y && point.y < y + h);
|
||||
}
|
||||
|
||||
void init()
|
||||
void set_default_map()
|
||||
{
|
||||
pengers_init();
|
||||
nb_collisions = 0;
|
||||
collisions[nb_collisions++] = (Collision) {
|
||||
.x = 100,
|
||||
.y = 400,
|
||||
|
@ -283,6 +283,12 @@ void init()
|
|||
};
|
||||
}
|
||||
|
||||
void init()
|
||||
{
|
||||
pengers_init();
|
||||
set_default_map();
|
||||
}
|
||||
|
||||
void draw(float dt)
|
||||
{
|
||||
int scale = get_scale();
|
||||
|
|
2
build.sh
2
build.sh
|
@ -5,7 +5,7 @@ if [[ "$1" == "clear" ]]; then
|
|||
exit
|
||||
fi;
|
||||
|
||||
export_sym="init draw key_pressed key_released set_velocity set_mouse get_pos_x get_pos_y draw_player deco_player reset_collisions add_collisions BUFFER width height id nb_players dir"
|
||||
export_sym="init draw key_pressed key_released set_velocity set_mouse get_pos_x get_pos_y draw_player deco_player reset_collisions add_collisions set_default_map BUFFER width height id nb_players dir"
|
||||
export_cmd=""
|
||||
for e in $export_sym; do
|
||||
export_cmd="$export_cmd -Wl,--export=$e";
|
||||
|
|
|
@ -58,6 +58,8 @@
|
|||
</p>
|
||||
<p>Players:</p>
|
||||
<ul id="players">Not connected</ul>
|
||||
<p>Playing map : <span id="map-name">Default Map</span></p>
|
||||
<p>Next map in : <span id="map-time">-1</span></p>
|
||||
<h3>Choose your penger:</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
|
17
load.js
17
load.js
|
@ -27,6 +27,9 @@ window.onload = () => {
|
|||
is_connected = false;
|
||||
wasm_set_variable('nb_players', 0);
|
||||
document.getElementById('players').innerHTML = "Not connected";
|
||||
document.getElementById('map-name').innerText = "Default Map";
|
||||
document.getElementById('map-time').innerText = "-1";
|
||||
wasm_function("set_default_map")();
|
||||
}
|
||||
connection.send('{"name": "pseudo", "value": "'+pseudo+'"}');
|
||||
};
|
||||
|
@ -74,6 +77,20 @@ connection.onmessage = (e) => {
|
|||
wasm_function('draw_player')(player.rid, player.id, player.x, player.y, player.dir);
|
||||
}
|
||||
}
|
||||
else if (req.name == "map") {
|
||||
var map = req.value;
|
||||
document.getElementById("map-name").innerText = map.name;
|
||||
console.log(Date.now(), " -> ", map.next_at);
|
||||
wasm_function('reset_collisions')();
|
||||
for (var i = 0; i < map.collisions.length; i++) {
|
||||
wasm_function('add_collisions')(
|
||||
map.collisions[i].x,
|
||||
map.collisions[i].y,
|
||||
map.collisions[i].width,
|
||||
map.collisions[i].height
|
||||
);
|
||||
}
|
||||
}
|
||||
else if (req.name == "disconnect") {
|
||||
wasm_function('deco_player')(req.value);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
[
|
||||
{
|
||||
"name": "test1",
|
||||
"collisions": [
|
||||
{
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 100, "height": 100
|
||||
},
|
||||
{
|
||||
"x": 50, "y": 400,
|
||||
"width": 100, "height": 50
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test2",
|
||||
"collisions": [
|
||||
{
|
||||
"x": 50,
|
||||
"y": 50,
|
||||
"width": 10, "height": 7
|
||||
},
|
||||
{
|
||||
"x": 400, "y": 50,
|
||||
"width": 5, "height": 350
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
24
server.js
24
server.js
|
@ -34,6 +34,25 @@ function update_player_pos()
|
|||
}
|
||||
setTimeout(update_player_pos, update_time_ms);
|
||||
|
||||
var current_map = 0;
|
||||
// var map_every_ms = 60 * 1000;
|
||||
var map_every_ms = 4 * 1000;
|
||||
function send_new_map()
|
||||
{
|
||||
var map = maps[Math.floor(Math.random() * maps.length)];
|
||||
map.next_at = Date.now() + map_every_ms;
|
||||
sockets.forEach((s) => {
|
||||
if (s.game.pseudo == undefined || s.game.pseudo == "") return;
|
||||
s.send('{"name": "map", "value": '+JSON.stringify(map)+'}');
|
||||
});
|
||||
setTimeout(send_new_map, map_every_ms);
|
||||
}
|
||||
setTimeout(send_new_map, map_every_ms);
|
||||
function send_map(socket)
|
||||
{
|
||||
socket.send('{"name": "map", "value": '+JSON.stringify(maps[current_map])+'}');
|
||||
}
|
||||
|
||||
const requestListener = function (req, res) {
|
||||
var url = req.url;
|
||||
|
||||
|
@ -75,6 +94,8 @@ http_server.listen(HTTP_PORT, () => {
|
|||
console.log(`Server is running on port ${HTTP_PORT}`);
|
||||
});
|
||||
|
||||
var maps = JSON.parse(fs.readFileSync("maps.json"));
|
||||
|
||||
const ws_server = new ws.Server({ port: WS_PORT });
|
||||
|
||||
var global_id = 0;
|
||||
|
@ -83,7 +104,9 @@ var sockets = [];
|
|||
ws_server.on('connection', (socket) => {
|
||||
socket.game = {};
|
||||
socket.game.rid = global_id++;
|
||||
|
||||
socket.send('{"name": "rid", "value": '+socket.game.rid+'}');
|
||||
|
||||
sockets.push(socket);
|
||||
console.log("connect: ", sockets.length);
|
||||
|
||||
|
@ -91,6 +114,7 @@ ws_server.on('connection', (socket) => {
|
|||
var msg_str = Buffer.from(msg).toString('latin1');
|
||||
var req = JSON.parse(msg_str);
|
||||
if (req.name == "pseudo") {
|
||||
if (socket.game.pseudo == undefined || socket.game.pseudo == "" && req.value != "") send_map(socket);
|
||||
socket.game.pseudo = req.value;
|
||||
if (req.value == "") sockets.forEach((s) => { s.send('{"name": "disconnect", "value": '+socket.game.rid+'}') });
|
||||
update_player_list();
|
||||
|
|
Loading…
Reference in New Issue