Skip to content

Commit

Permalink
player right-click handler by sorcerykid
Browse files Browse the repository at this point in the history
  • Loading branch information
Isidor Zeuner committed Aug 27, 2018
1 parent 34f940d commit f240434
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 1 deletion.
1 change: 1 addition & 0 deletions builtin/game/register.lua
Expand Up @@ -595,6 +595,7 @@ core.registered_on_modchannel_message, core.register_on_modchannel_message = mak
core.registered_on_auth_fail, core.register_on_auth_fail = make_registration()
core.registered_on_player_inventory_actions, core.register_on_player_inventory_action = make_registration()
core.registered_allow_player_inventory_actions, core.register_allow_player_inventory_action = make_registration()
core.registered_on_rightclickplayers, core.register_on_rightclickplayer = make_registration()

--
-- Compatibility for on_mapgen_init()
Expand Down
9 changes: 9 additions & 0 deletions src/content_sao.cpp
Expand Up @@ -1290,6 +1290,15 @@ int PlayerSAO::punch(v3f dir,
return hitparams.wear;
}

void PlayerSAO::rightClick(ServerActiveObject *clicker)
{
PlayerSAO *playersao = m_player->getPlayerSAO();

if (isAttached())
return;
m_env->getScriptIface()->on_rightclickplayer(playersao, clicker);
}

s16 PlayerSAO::readDamage()
{
s16 damage = m_damage;
Expand Down
2 changes: 1 addition & 1 deletion src/content_sao.h
Expand Up @@ -255,7 +255,7 @@ class PlayerSAO : public UnitSAO
const ToolCapabilities *toolcap,
ServerActiveObject *puncher,
float time_from_last_punch);
void rightClick(ServerActiveObject *clicker) {}
void rightClick(ServerActiveObject *clicker);
void setHP(s16 hp, const PlayerHPChangeReason &reason);
void setHPRaw(s16 hp) { m_hp = hp; }
s16 readDamage();
Expand Down
13 changes: 13 additions & 0 deletions src/script/cpp_api/s_player.cpp
Expand Up @@ -77,6 +77,19 @@ bool ScriptApiPlayer::on_punchplayer(ServerActiveObject *player,
return readParam<bool>(L, -1);
}

void ScriptApiPlayer::on_rightclickplayer(ServerActiveObject *player,
ServerActiveObject *clicker)
{
SCRIPTAPI_PRECHECKHEADER
// Get core.registered_on_rightclickplayers
lua_getglobal(L, "core");
lua_getfield(L, -1, "registered_on_rightclickplayers");
// Call callbacks
objectrefGetOrCreate(L, player);
objectrefGetOrCreate(L, clicker);
runCallbacks(2, RUN_CALLBACKS_MODE_FIRST);
}

s16 ScriptApiPlayer::on_player_hpchange(ServerActiveObject *player,
s16 hp_change, const PlayerHPChangeReason &reason)
{
Expand Down
2 changes: 2 additions & 0 deletions src/script/cpp_api/s_player.h
Expand Up @@ -46,6 +46,8 @@ class ScriptApiPlayer : virtual public ScriptApiBase
bool on_punchplayer(ServerActiveObject *player, ServerActiveObject *hitter,
float time_from_last_punch, const ToolCapabilities *toolcap,
v3f dir, s16 damage);
void on_rightclickplayer(ServerActiveObject *player,
ServerActiveObject *clicker);
s16 on_player_hpchange(ServerActiveObject *player, s16 hp_change,
const PlayerHPChangeReason &reason);
void on_playerReceiveFields(ServerActiveObject *player,
Expand Down

0 comments on commit f240434

Please sign in to comment.