feat: player.delete() function and update documentation

This commit is contained in:
MihailRis 2024-12-26 05:47:18 +03:00
parent c1b311f3c4
commit 13c36f4629
6 changed files with 38 additions and 0 deletions

View File

@ -24,4 +24,6 @@ for i=1,25 do
app.tick()
end
player.delete(pid2)
app.close_world(true)

View File

@ -1,5 +1,17 @@
# *player* library
```lua
player.create(name: str) -> int
```
Creates a player and returns id.
```lua
player.delete(id: int)
```
Deletes a player by id.
```lua
player.get_pos(playerid: int) -> number, number, number
```

View File

@ -1,5 +1,17 @@
# Библиотека *player*
```lua
player.create(name: str) -> int
```
Создаёт игрока и возвращает его id.
```lua
player.delete(id: int)
```
Удаляет игрока по id.
```lua
player.get_pos(playerid: int) -> number, number, number
```

View File

@ -279,6 +279,11 @@ static int l_create(lua::State* L) {
return lua::pushinteger(L, player->getId());
}
static int l_delete(lua::State* L) {
level->players->remove(lua::tointeger(L, 1));
return 0;
}
const luaL_Reg playerlib[] = {
{"get_pos", lua::wrap<l_get_pos>},
{"set_pos", lua::wrap<l_set_pos>},
@ -310,5 +315,6 @@ const luaL_Reg playerlib[] = {
{"get_name", lua::wrap<l_get_name>},
{"set_name", lua::wrap<l_set_name>},
{"create", lua::wrap<l_create>},
{"delete", lua::wrap<l_delete>},
{NULL, NULL}
};

View File

@ -36,6 +36,10 @@ Player* Players::create() {
return player;
}
void Players::remove(int64_t id) {
players.erase(id);
}
dv::value Players::serialize() const {
auto root = dv::object();
auto& list = root.list("players");

View File

@ -25,6 +25,8 @@ public:
Player* create();
void remove(int64_t id);
dv::value serialize() const override;
void deserialize(const dv::value& src) override;