forked from mirror/openmw-tes3mp
[Server] Create ShapeshiftFunctions and move relevant functions there
parent
2bb7a4253e
commit
76e7392a84
@ -0,0 +1,84 @@
|
||||
#include "Shapeshift.hpp"
|
||||
|
||||
#include <components/openmw-mp/NetworkMessages.hpp>
|
||||
#include <components/openmw-mp/Log.hpp>
|
||||
|
||||
#include <apps/openmw-mp/Script/ScriptFunctions.hpp>
|
||||
#include <apps/openmw-mp/Networking.hpp>
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
double ShapeshiftFunctions::GetScale(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, 0.0f);
|
||||
|
||||
return player->scale;
|
||||
}
|
||||
|
||||
bool ShapeshiftFunctions::IsWerewolf(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, 0);
|
||||
|
||||
return player->isWerewolf;
|
||||
}
|
||||
|
||||
const char *ShapeshiftFunctions::GetCreatureRefId(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, 0);
|
||||
|
||||
return player->creatureRefId.c_str();
|
||||
}
|
||||
|
||||
bool ShapeshiftFunctions::GetCreatureNameDisplayState(unsigned short pid) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, 0);
|
||||
|
||||
return player->displayCreatureName;
|
||||
}
|
||||
|
||||
void ShapeshiftFunctions::SetScale(unsigned short pid, double scale) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, );
|
||||
|
||||
player->scale = scale;
|
||||
}
|
||||
|
||||
void ShapeshiftFunctions::SetWerewolfState(unsigned short pid, bool isWerewolf) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, );
|
||||
|
||||
player->isWerewolf = isWerewolf;
|
||||
}
|
||||
|
||||
void ShapeshiftFunctions::SetCreatureRefId(unsigned short pid, const char *refId) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, );
|
||||
|
||||
player->creatureRefId = refId;
|
||||
}
|
||||
|
||||
void ShapeshiftFunctions::SetCreatureNameDisplayState(unsigned short pid, bool displayState) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, );
|
||||
|
||||
player->displayCreatureName = displayState;
|
||||
}
|
||||
|
||||
void ShapeshiftFunctions::SendShapeshift(unsigned short pid)
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, );
|
||||
|
||||
mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SHAPESHIFT)->setPlayer(player);
|
||||
mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SHAPESHIFT)->Send(false);
|
||||
mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SHAPESHIFT)->Send(true);
|
||||
}
|
@ -0,0 +1,120 @@
|
||||
#ifndef OPENMW_SHAPESHIFTAPI_HPP
|
||||
#define OPENMW_SHAPESHIFTAPI_HPP
|
||||
|
||||
#include "../Types.hpp"
|
||||
|
||||
#define SHAPESHIFTAPI \
|
||||
{"GetScale", ShapeshiftFunctions::GetScale},\
|
||||
{"IsWerewolf", ShapeshiftFunctions::IsWerewolf},\
|
||||
{"GetCreatureRefId", ShapeshiftFunctions::GetCreatureRefId},\
|
||||
{"GetCreatureNameDisplayState", ShapeshiftFunctions::GetCreatureNameDisplayState},\
|
||||
\
|
||||
{"SetScale", ShapeshiftFunctions::SetScale},\
|
||||
{"SetWerewolfState", ShapeshiftFunctions::SetWerewolfState},\
|
||||
{"SetCreatureRefId", ShapeshiftFunctions::SetCreatureRefId},\
|
||||
{"SetCreatureNameDisplayState", ShapeshiftFunctions::SetCreatureNameDisplayState},\
|
||||
\
|
||||
{"SendShapeshift", ShapeshiftFunctions::SendShapeshift}
|
||||
|
||||
class ShapeshiftFunctions
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* \brief Get the scale of a player.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return The scale.
|
||||
*/
|
||||
static double GetScale(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Check whether a player is a werewolf.
|
||||
*
|
||||
* This is based on the last PlayerShapeshift packet received or sent for that player.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return The werewolf state.
|
||||
*/
|
||||
static bool IsWerewolf(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Get the refId of the creature the player is disguised as.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return The creature refId.
|
||||
*/
|
||||
static const char *GetCreatureRefId(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Check whether a player's name is replaced by that of the creature they are
|
||||
* disguised as when other players hover over them.
|
||||
*
|
||||
* This is based on the last PlayerShapeshift packet received or sent for that player.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return The creature name display state.
|
||||
*/
|
||||
static bool GetCreatureNameDisplayState(unsigned short pid) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set the scale of a player.
|
||||
*
|
||||
* This changes the scale recorded for that player in the server memory, but
|
||||
* does not by itself send a packet.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \param scale The new scale.
|
||||
* \return void
|
||||
*/
|
||||
static void SetScale(unsigned short pid, double scale) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set the werewolf state of a player.
|
||||
*
|
||||
* This changes the werewolf state recorded for that player in the server memory, but
|
||||
* does not by itself send a packet.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \param isWerewolf The new werewolf state.
|
||||
* \return void
|
||||
*/
|
||||
static void SetWerewolfState(unsigned short pid, bool isWerewolf) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set the refId of the creature a player is disguised as.
|
||||
*
|
||||
* This changes the creature refId recorded for that player in the server memory, but
|
||||
* does not by itself send a packet.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \param refId The creature refId.
|
||||
* \param displaysCreatureName Whether the player's name appears as that of the creature
|
||||
* when hovered over by others.
|
||||
* \return void
|
||||
*/
|
||||
static void SetCreatureRefId(unsigned short pid, const char *refId) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Set whether a player's name is replaced by that of the creature they are
|
||||
* disguised as when other players hover over them.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \param displayState The creature name display state.
|
||||
* \return void
|
||||
*/
|
||||
static void SetCreatureNameDisplayState(unsigned short pid, bool displayState) noexcept;
|
||||
|
||||
/**
|
||||
* \brief Send a PlayerShapeshift packet about a player.
|
||||
*
|
||||
* This sends the packet to all players connected to the server. It is currently used
|
||||
* only to communicate werewolf states.
|
||||
*
|
||||
* \param pid The player ID.
|
||||
* \return void
|
||||
*/
|
||||
static void SendShapeshift(unsigned short pid);
|
||||
};
|
||||
|
||||
#endif //OPENMW_SHAPESHIFTAPI_HPP
|
Loading…
Reference in New Issue