mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-11 17:51:04 +00:00
Player/LocalPlayer/RemotePlayer inheritance cleanup (part 1 on X)
* LocalPlayer take ownership of maxHudId as it's the only caller * RemotePlayer take ownership of day night ratio as it's the only user * Pass getPlayerControl as const reference to prevent object copy on each call (perf improvement in ObjectRef::l_get_player_control call) * getPlayerSAO is now only RemotePlayer call * get/setHotbarItemCount is now RemotePlayer owned * Server: Use RemotePlayer instead of Player object on concerned call to properly fix the object type * PlayerSAO now uses RemotePlayer instead of Player because it's only server side * ObjectRef::getplayer also returns RemotePlayer as it's linked with PlayerSAO
This commit is contained in:
parent
0264e38bff
commit
8bcd10b872
12 changed files with 103 additions and 109 deletions
|
@ -1256,7 +1256,7 @@ Inventory* Server::getInventory(const InventoryLocation &loc)
|
|||
break;
|
||||
case InventoryLocation::PLAYER:
|
||||
{
|
||||
Player *player = m_env->getPlayer(loc.name.c_str());
|
||||
RemotePlayer *player = dynamic_cast<RemotePlayer *>(m_env->getPlayer(loc.name.c_str()));
|
||||
if(!player)
|
||||
return NULL;
|
||||
PlayerSAO *playersao = player->getPlayerSAO();
|
||||
|
@ -1296,9 +1296,12 @@ void Server::setInventoryModified(const InventoryLocation &loc, bool playerSend)
|
|||
if (!playerSend)
|
||||
return;
|
||||
|
||||
Player *player = m_env->getPlayer(loc.name.c_str());
|
||||
if(!player)
|
||||
RemotePlayer *player =
|
||||
dynamic_cast<RemotePlayer *>(m_env->getPlayer(loc.name.c_str()));
|
||||
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
PlayerSAO *playersao = player->getPlayerSAO();
|
||||
if(!playersao)
|
||||
return;
|
||||
|
@ -2637,19 +2640,16 @@ void Server::DeleteClient(u16 peer_id, ClientDeletionReason reason)
|
|||
++i;
|
||||
}
|
||||
|
||||
Player *player = m_env->getPlayer(peer_id);
|
||||
RemotePlayer *player = dynamic_cast<RemotePlayer *>(m_env->getPlayer(peer_id));
|
||||
|
||||
/* Run scripts and remove from environment */
|
||||
{
|
||||
if(player != NULL)
|
||||
{
|
||||
PlayerSAO *playersao = player->getPlayerSAO();
|
||||
assert(playersao);
|
||||
if(player != NULL) {
|
||||
PlayerSAO *playersao = player->getPlayerSAO();
|
||||
assert(playersao);
|
||||
|
||||
m_script->on_leaveplayer(playersao, reason == CDR_TIMEOUT);
|
||||
m_script->on_leaveplayer(playersao, reason == CDR_TIMEOUT);
|
||||
|
||||
playersao->disconnected();
|
||||
}
|
||||
playersao->disconnected();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2691,7 +2691,7 @@ void Server::DeleteClient(u16 peer_id, ClientDeletionReason reason)
|
|||
SendChatMessage(PEER_ID_INEXISTENT,message);
|
||||
}
|
||||
|
||||
void Server::UpdateCrafting(Player* player)
|
||||
void Server::UpdateCrafting(RemotePlayer* player)
|
||||
{
|
||||
DSTACK(FUNCTION_NAME);
|
||||
|
||||
|
@ -2701,7 +2701,8 @@ void Server::UpdateCrafting(Player* player)
|
|||
loc.setPlayer(player->getName());
|
||||
std::vector<ItemStack> output_replacements;
|
||||
getCraftingResult(&player->inventory, preview, output_replacements, false, this);
|
||||
m_env->getScriptIface()->item_CraftPredict(preview, player->getPlayerSAO(), (&player->inventory)->getList("craft"), loc);
|
||||
m_env->getScriptIface()->item_CraftPredict(preview, player->getPlayerSAO(),
|
||||
(&player->inventory)->getList("craft"), loc);
|
||||
|
||||
// Put the new preview in
|
||||
InventoryList *plist = player->inventory.getList("craftpreview");
|
||||
|
@ -2851,8 +2852,8 @@ std::string Server::getPlayerName(u16 peer_id)
|
|||
|
||||
PlayerSAO* Server::getPlayerSAO(u16 peer_id)
|
||||
{
|
||||
Player *player = m_env->getPlayer(peer_id);
|
||||
if(player == NULL)
|
||||
RemotePlayer *player = dynamic_cast<RemotePlayer *>(m_env->getPlayer(peer_id));
|
||||
if (player == NULL)
|
||||
return NULL;
|
||||
return player->getPlayerSAO();
|
||||
}
|
||||
|
@ -2917,8 +2918,9 @@ void Server::reportPrivsModified(const std::string &name)
|
|||
reportPrivsModified(player->getName());
|
||||
}
|
||||
} else {
|
||||
Player *player = m_env->getPlayer(name.c_str());
|
||||
if(!player)
|
||||
RemotePlayer *player =
|
||||
dynamic_cast<RemotePlayer *>(m_env->getPlayer(name.c_str()));
|
||||
if (!player)
|
||||
return;
|
||||
SendPlayerPrivileges(player->peer_id);
|
||||
PlayerSAO *sao = player->getPlayerSAO();
|
||||
|
@ -3025,7 +3027,7 @@ bool Server::hudChange(Player *player, u32 id, HudElementStat stat, void *data)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool Server::hudSetFlags(Player *player, u32 flags, u32 mask)
|
||||
bool Server::hudSetFlags(RemotePlayer *player, u32 flags, u32 mask)
|
||||
{
|
||||
if (!player)
|
||||
return false;
|
||||
|
@ -3043,10 +3045,11 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool Server::hudSetHotbarItemcount(Player *player, s32 hotbar_itemcount)
|
||||
bool Server::hudSetHotbarItemcount(RemotePlayer *player, s32 hotbar_itemcount)
|
||||
{
|
||||
if (!player)
|
||||
return false;
|
||||
|
||||
if (hotbar_itemcount <= 0 || hotbar_itemcount > HUD_HOTBAR_ITEMCOUNT_MAX)
|
||||
return false;
|
||||
|
||||
|
@ -3057,13 +3060,6 @@ bool Server::hudSetHotbarItemcount(Player *player, s32 hotbar_itemcount)
|
|||
return true;
|
||||
}
|
||||
|
||||
s32 Server::hudGetHotbarItemcount(Player *player)
|
||||
{
|
||||
if (!player)
|
||||
return 0;
|
||||
return player->getHotbarItemcount();
|
||||
}
|
||||
|
||||
void Server::hudSetHotbarImage(Player *player, std::string name)
|
||||
{
|
||||
if (!player)
|
||||
|
@ -3130,7 +3126,7 @@ bool Server::setSky(Player *player, const video::SColor &bgcolor,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool Server::overrideDayNightRatio(Player *player, bool do_override,
|
||||
bool Server::overrideDayNightRatio(RemotePlayer *player, bool do_override,
|
||||
float ratio)
|
||||
{
|
||||
if (!player)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue