From ae0e4a929fd09dbea1c7bea5cd0a5639850b4682 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sun, 15 Nov 2020 01:02:58 +0200 Subject: [PATCH] [Client] Add die() method to LocalPlayer --- apps/openmw/mwmp/LocalPlayer.cpp | 13 +++++++++++++ apps/openmw/mwmp/LocalPlayer.hpp | 1 + .../mwmp/processors/player/ProcessorPlayerDeath.hpp | 10 ++-------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/openmw/mwmp/LocalPlayer.cpp b/apps/openmw/mwmp/LocalPlayer.cpp index 4f42a404c..75dfe9e8a 100644 --- a/apps/openmw/mwmp/LocalPlayer.cpp +++ b/apps/openmw/mwmp/LocalPlayer.cpp @@ -831,6 +831,19 @@ void LocalPlayer::removeSpellsActive() } } +void LocalPlayer::die() +{ + creatureStats.mDead = true; + + MWWorld::Ptr playerPtr = MWBase::Environment::get().getWorld()->getPlayerPtr(); + MWMechanics::DynamicStat health = playerPtr.getClass().getCreatureStats(playerPtr).getHealth(); + health.setCurrent(0); + playerPtr.getClass().getCreatureStats(playerPtr).setHealth(health); + + Main::get().getNetworking()->getPlayerPacket(ID_PLAYER_DEATH)->setPlayer(this); + Main::get().getNetworking()->getPlayerPacket(ID_PLAYER_DEATH)->Send(); +} + void LocalPlayer::resurrect() { creatureStats.mDead = false; diff --git a/apps/openmw/mwmp/LocalPlayer.hpp b/apps/openmw/mwmp/LocalPlayer.hpp index 8f81fe88a..1d2ee0ebb 100644 --- a/apps/openmw/mwmp/LocalPlayer.hpp +++ b/apps/openmw/mwmp/LocalPlayer.hpp @@ -53,6 +53,7 @@ namespace mwmp void removeSpells(); void removeSpellsActive(); + void die(); void resurrect(); void closeInventoryWindows(); diff --git a/apps/openmw/mwmp/processors/player/ProcessorPlayerDeath.hpp b/apps/openmw/mwmp/processors/player/ProcessorPlayerDeath.hpp index e3fd9ad05..59253dbd8 100644 --- a/apps/openmw/mwmp/processors/player/ProcessorPlayerDeath.hpp +++ b/apps/openmw/mwmp/processors/player/ProcessorPlayerDeath.hpp @@ -17,18 +17,12 @@ namespace mwmp virtual void Do(PlayerPacket &packet, BasePlayer *player) { LOG_MESSAGE_SIMPLE(TimedLog::LOG_INFO, "Received ID_PLAYER_DEATH from server"); + if (isLocal()) { LOG_APPEND(TimedLog::LOG_INFO, "- Packet was about me"); - player->creatureStats.mDead = true; - - MWWorld::Ptr playerPtr = MWBase::Environment::get().getWorld()->getPlayerPtr(); - MWMechanics::DynamicStat health = playerPtr.getClass().getCreatureStats(playerPtr).getHealth(); - health.setCurrent(0); - playerPtr.getClass().getCreatureStats(playerPtr).setHealth(health); - packet.setPlayer(player); - packet.Send(serverAddr); + static_cast(player)->die(); } else if (player != 0) {