1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-11 17:51:04 +00:00

Restore pass-through of direction keys (#11924)

This moves relevant code into the PlayerControl class and gets rid of separate keyPressed variable.
This commit is contained in:
sfan5 2022-01-09 18:46:36 +01:00 committed by GitHub
parent 76dbd0d2d0
commit 5eb45e1ea0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 165 additions and 98 deletions

View file

@ -230,13 +230,15 @@ int LuaLocalPlayer::l_get_control(lua_State *L)
set("dig", c.dig);
set("place", c.place);
// Player movement in polar coordinates and non-binary speed
set("movement_speed", c.movement_speed);
set("movement_direction", c.movement_direction);
lua_pushnumber(L, c.movement_speed);
lua_setfield(L, -2, "movement_speed");
lua_pushnumber(L, c.movement_direction);
lua_setfield(L, -2, "movement_direction");
// Provide direction keys to ensure compatibility
set("up", player->keyPressed & (1 << 0)); // Up, down, left, and right were removed in favor of
set("down", player->keyPressed & (1 << 1)); // analog direction indicators and are therefore not
set("left", player->keyPressed & (1 << 2)); // available as booleans anymore. The corresponding values
set("right", player->keyPressed & (1 << 3)); // can still be read from the keyPressed bits though.
set("up", c.direction_keys & (1 << 0));
set("down", c.direction_keys & (1 << 1));
set("left", c.direction_keys & (1 << 2));
set("right", c.direction_keys & (1 << 3));
return 1;
}