1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-16 07:19:54 +00:00
openmw-tes3mp/apps/openmw-mp/Script/Functions/Items.hpp

226 lines
8.2 KiB
C++
Raw Normal View History

2016-08-30 04:19:49 +00:00
//
// Created by koncord on 30.08.16.
//
#ifndef OPENMW_ITEMAPI_HPP
#define OPENMW_ITEMAPI_HPP
2016-08-30 04:19:49 +00:00
#define ITEMAPI \
{"InitializeInventoryChanges", ItemFunctions::InitializeInventoryChanges},\
\
{"GetEquipmentSize", ItemFunctions::GetEquipmentSize},\
{"GetInventoryChangesSize", ItemFunctions::GetInventoryChangesSize},\
\
{"EquipItem", ItemFunctions::EquipItem},\
{"UnequipItem", ItemFunctions::UnequipItem},\
\
{"AddItem", ItemFunctions::AddItem},\
{"RemoveItem", ItemFunctions::RemoveItem},\
\
{"HasItemEquipped", ItemFunctions::HasItemEquipped},\
\
{"GetEquipmentItemRefId", ItemFunctions::GetEquipmentItemRefId},\
{"GetEquipmentItemCount", ItemFunctions::GetEquipmentItemCount},\
{"GetEquipmentItemCharge", ItemFunctions::GetEquipmentItemCharge},\
{"GetEquipmentItemEnchantmentCharge", ItemFunctions::GetEquipmentItemEnchantmentCharge},\
\
{"GetInventoryItemRefId", ItemFunctions::GetInventoryItemRefId},\
{"GetInventoryItemCount", ItemFunctions::GetInventoryItemCount},\
{"GetInventoryItemCharge", ItemFunctions::GetInventoryItemCharge},\
{"GetInventoryItemEnchantmentCharge", ItemFunctions::GetInventoryItemEnchantmentCharge},\
\
{"SendEquipment", ItemFunctions::SendEquipment},\
{"SendInventoryChanges", ItemFunctions::SendInventoryChanges}
2016-08-30 04:19:49 +00:00
class ItemFunctions
{
public:
/**
* \brief Clear the last recorded inventory changes for a player.
*
* This is used to initialize the sending of new PlayerInventory packets.
*
* \param pid The player ID whose inventory changes should be used.
* \return void
*/
static void InitializeInventoryChanges(unsigned short pid) noexcept;
/**
* \brief Get the number of slots used for equipment.
*
* The number is 19 before any dehardcoding is done in OpenMW.
*
* \return The number of slots.
*/
static int GetEquipmentSize() noexcept;
/**
* \brief Get the number of indexes in a player's latest inventory changes.
*
* \param pid The player ID whose inventory changes should be used.
* \return The number of indexes.
*/
static unsigned int GetInventoryChangesSize(unsigned short pid) noexcept;
/**
* \brief Equip an item in a certain slot of the equipment of a player.
*
* \param pid The player ID.
* \param slot The equipment slot.
* \param refId The refId of the item.
* \param count The count of the item.
* \param charge The charge of the item.
* \param enchantmentCharge The enchantment charge of the item.
* \return void
*/
static void EquipItem(unsigned short pid, unsigned short slot, const char* refId, unsigned int count, int charge, double enchantmentCharge = -1) noexcept;
/**
* \brief Unequip the item in a certain slot of the equipment of a player.
*
* \param pid The player ID.
* \param slot The equipment slot.
* \return void
*/
static void UnequipItem(unsigned short pid, unsigned short slot) noexcept;
/**
* \brief Add an item to a player's inventory.
*
* Note: This will set the ADD action for all of the player's current inventory changes.
*
* \param pid The player ID.
* \param refId The refId of the item.
* \param count The count of the item.
* \param charge The charge of the item.
* \param enchantmentCharge The enchantment charge of the item.
* \return void
*/
static void AddItem(unsigned short pid, const char* refId, unsigned int count, int charge, double enchantmentCharge = -1) noexcept;
/**
* \brief Remove an item from a player's inventory.
*
* Note: This will set the REMOVE action for all of the player's current inventory changes.
*
* \param pid The player ID.
* \param refId The refId of the item.
* \param count The count of the item.
* \return void
*/
static void RemoveItem(unsigned short pid, const char* refId, unsigned short count) noexcept;
/**
* \brief Check whether a player has equipped an item with a certain refId in any slot.
*
* \param pid The player ID.
* \param refId The refId of the item.
* \return Whether the player has the item equipped.
*/
static bool HasItemEquipped(unsigned short pid, const char* refId);
/**
* \brief Get the refId of the item in a certain slot of the equipment of a player.
*
* \param pid The player ID.
* \param slot The slot of the equipment item.
* \return The refId.
*/
static const char *GetEquipmentItemRefId(unsigned short pid, unsigned short slot) noexcept;
/**
* \brief Get the count of the item in a certain slot of the equipment of a player.
*
* \param pid The player ID.
* \param slot The slot of the equipment item.
* \return The item count.
*/
static int GetEquipmentItemCount(unsigned short pid, unsigned short slot) noexcept;
/**
* \brief Get the charge of the item in a certain slot of the equipment of a player.
*
* \param pid The player ID.
* \param slot The slot of the equipment item.
* \return The charge.
*/
static int GetEquipmentItemCharge(unsigned short pid, unsigned short slot) noexcept;
/**
* \brief Get the enchantment charge of the item in a certain slot of the equipment of
* a player.
*
* \param pid The player ID.
* \param slot The slot of the equipment item.
* \return The enchantment charge.
*/
static double GetEquipmentItemEnchantmentCharge(unsigned short pid, unsigned short slot) noexcept;
/**
* \brief Get the refId of the item at a certain index in a player's latest inventory
* changes.
*
* \param pid The player ID whose inventory changes should be used.
* \param i The index of the inventory item.
* \return The refId.
*/
static const char *GetInventoryItemRefId(unsigned short pid, unsigned int i) noexcept;
/**
* \brief Get the count of the item at a certain index in a player's latest inventory
* changes.
*
* \param pid The player ID whose inventory changes should be used.
* \param i The index of the inventory item.
* \return The item count.
*/
static int GetInventoryItemCount(unsigned short pid, unsigned int i) noexcept;
/**
* \brief Get the charge of the item at a certain index in a player's latest inventory
* changes.
*
* \param pid The player ID whose inventory changes should be used.
* \param i The index of the inventory item.
* \return The charge.
*/
static int GetInventoryItemCharge(unsigned short pid, unsigned int i) noexcept;
/**
* \brief Get the enchantment charge of the item at a certain index in a player's
* latest inventory changes.
*
* \param pid The player ID whose inventory changes should be used.
* \param i The index of the inventory item.
* \return The enchantment charge.
*/
static double GetInventoryItemEnchantmentCharge(unsigned short pid, unsigned int i) noexcept;
/**
* \brief Send a PlayerEquipment packet with a player's equipment.
*
* It is always sent to all players.
*
* \param pid The player ID whose equipment should be sent.
* \return void
*/
static void SendEquipment(unsigned short pid) noexcept;
/**
* \brief Send a PlayerInventory packet with a player's recorded inventory changes.
*
* \param pid The player ID whose inventory changes should be used.
* \param sendToOtherPlayers Whether this packet should be sent to players other than the
* player attached to the packet (false by default).
* \param skipAttachedPlayer Whether the packet should skip being sent to the player attached
* to the packet (false by default).
* \return void
*/
static void SendInventoryChanges(unsigned short pid, bool sendToOtherPlayers, bool skipAttachedPlayer) noexcept;
private:
2016-08-30 04:19:49 +00:00
};
#endif //OPENMW_ITEMAPI_HPP