1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +00:00

More fw related cleanup

This commit is contained in:
Mordred 2018-12-23 13:26:33 +01:00
parent f52588cdb2
commit 101f284003
17 changed files with 78 additions and 95 deletions

View file

@ -32,8 +32,6 @@
#include "Forwards.h" #include "Forwards.h"
#include "SapphireAPI.h" #include "SapphireAPI.h"
Sapphire::Framework g_fw;
Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb; Sapphire::Db::DbWorkerPool< Sapphire::Db::ZoneDbConnection > g_charaDb;
Sapphire::Data::ExdDataGenerated g_exdDataGen; Sapphire::Data::ExdDataGenerated g_exdDataGen;
Sapphire::Network::SapphireAPI g_sapphireAPI; Sapphire::Network::SapphireAPI g_sapphireAPI;

View file

@ -25,7 +25,7 @@ Sapphire::Action::EventAction::EventAction()
} }
Sapphire::Action::EventAction::EventAction( Entity::CharaPtr pActor, uint32_t eventId, uint16_t action, Sapphire::Action::EventAction::EventAction( Entity::CharaPtr pActor, uint32_t eventId, uint16_t action,
ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional ) ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional )
{ {
auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto pExdData = g_fw.get< Data::ExdDataGenerated >();

View file

@ -28,11 +28,8 @@
#include "BNpc.h" #include "BNpc.h"
#include "BNpcTemplate.h" #include "BNpcTemplate.h"
#include "Manager/TerritoryMgr.h" #include "Manager/TerritoryMgr.h"
#include "Framework.h"
#include "Common.h" #include "Common.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common; using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::Packets::Server;

View file

@ -18,10 +18,6 @@ using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::Packets::Server;
using namespace Sapphire::Network::ActorControl; using namespace Sapphire::Network::ActorControl;
#include "Framework.h"
extern Sapphire::Framework g_fw;
Sapphire::Entity::EventObject::EventObject( uint32_t actorId, uint32_t objectId, uint32_t gimmickId, Sapphire::Entity::EventObject::EventObject( uint32_t actorId, uint32_t objectId, uint32_t gimmickId,
uint8_t initialState, Common::FFXIVARR_POSITION3 pos, uint8_t initialState, Common::FFXIVARR_POSITION3 pos,
float rotation, const std::string& givenName ) : float rotation, const std::string& givenName ) :

View file

@ -30,8 +30,6 @@
#include "Framework.h" #include "Framework.h"
#include "Common.h" #include "Common.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common; using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::Packets::Server;

View file

@ -11,7 +11,7 @@
#include "Inventory/Item.h" #include "Inventory/Item.h"
#include "Inventory/ItemContainer.h" #include "Inventory/ItemContainer.h"
#include "Inventory/ItemUtil.h"
#include "Player.h" #include "Player.h"
#include "Framework.h" #include "Framework.h"
@ -28,6 +28,7 @@
#include "Network/PacketWrappers/ActorControlPacket143.h" #include "Network/PacketWrappers/ActorControlPacket143.h"
#include "Manager/InventoryMgr.h" #include "Manager/InventoryMgr.h"
#include "Manager/ItemMgr.h"
#include "Framework.h" #include "Framework.h"
#include <Network/CommonActorControl.h> #include <Network/CommonActorControl.h>
@ -510,7 +511,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::addItem( uint32_t catalogId, uint32_
// add the related armoury bag to the applicable bags and try and fill a free slot there before falling back to regular inventory // add the related armoury bag to the applicable bags and try and fill a free slot there before falling back to regular inventory
if( itemInfo->isEquippable && getEquipDisplayFlags() & StoreNewItemsInArmouryChest ) if( itemInfo->isEquippable && getEquipDisplayFlags() & StoreNewItemsInArmouryChest )
{ {
auto bag = Items::Util::getCharaEquipSlotCategoryToArmoryId( itemInfo->equipSlotCategory ); auto bag = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( itemInfo->equipSlotCategory );
bags.insert( bags.begin(), bag ); bags.insert( bags.begin(), bag );
} }
@ -622,7 +623,7 @@ Sapphire::Entity::Player::moveItem( uint16_t fromInventoryId, uint8_t fromSlotId
bool Sapphire::Entity::Player::updateContainer( uint16_t storageId, uint8_t slotId, ItemPtr pItem ) bool Sapphire::Entity::Player::updateContainer( uint16_t storageId, uint8_t slotId, ItemPtr pItem )
{ {
auto containerType = Items::Util::getContainerType( storageId ); auto containerType = World::Manager::ItemMgr::getContainerType( storageId );
m_storageMap[ storageId ]->setItem( slotId, pItem ); m_storageMap[ storageId ]->setItem( slotId, pItem );
@ -733,17 +734,17 @@ void Sapphire::Entity::Player::swapItem( uint16_t fromInventoryId, uint8_t fromS
// An item is being moved from bag0-3 to equippment, meaning // An item is being moved from bag0-3 to equippment, meaning
// the swapped out item will be placed in the matching armory. // the swapped out item will be placed in the matching armory.
if( Items::Util::isEquipment( toInventoryId ) if( World::Manager::ItemMgr::isEquipment( toInventoryId )
&& !Items::Util::isEquipment( fromInventoryId ) && !World::Manager::ItemMgr::isEquipment( fromInventoryId )
&& !Items::Util::isArmory( fromInventoryId ) ) && !World::Manager::ItemMgr::isArmory( fromInventoryId ) )
{ {
updateContainer( fromInventoryId, fromSlotId, nullptr ); updateContainer( fromInventoryId, fromSlotId, nullptr );
fromInventoryId = Items::Util::getCharaEquipSlotCategoryToArmoryId( toSlot ); fromInventoryId = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( toSlot );
fromSlotId = static_cast < uint8_t >( m_storageMap[ fromInventoryId ]->getFreeSlot() ); fromSlotId = static_cast < uint8_t >( m_storageMap[ fromInventoryId ]->getFreeSlot() );
} }
auto containerTypeFrom = Items::Util::getContainerType( fromInventoryId ); auto containerTypeFrom = World::Manager::ItemMgr::getContainerType( fromInventoryId );
auto containerTypeTo = Items::Util::getContainerType( toInventoryId ); auto containerTypeTo = World::Manager::ItemMgr::getContainerType( toInventoryId );
updateContainer( toInventoryId, toSlot, fromItem ); updateContainer( toInventoryId, toSlot, fromItem );
updateContainer( fromInventoryId, fromSlotId, toItem ); updateContainer( fromInventoryId, fromSlotId, toItem );
@ -805,7 +806,7 @@ uint16_t Sapphire::Entity::Player::calculateEquippedGearItemLevel()
iLvlResult += currItem->getItemLevel(); iLvlResult += currItem->getItemLevel();
// If item is weapon and isn't one-handed // If item is weapon and isn't one-handed
if( currItem->isWeapon() && !Items::Util::isOneHandedWeapon( currItem->getCategory() ) ) if( currItem->isWeapon() && !World::Manager::ItemMgr::isOneHandedWeapon( currItem->getCategory() ) )
{ {
iLvlResult += currItem->getItemLevel(); iLvlResult += currItem->getItemLevel();
} }

View file

@ -16,7 +16,7 @@
#include "Territory/Zone.h" #include "Territory/Zone.h"
#include "Inventory/Item.h" #include "Inventory/Item.h"
#include "Inventory/ItemContainer.h" #include "Inventory/ItemContainer.h"
#include "Inventory/ItemUtil.h" #include "Manager/ItemMgr.h"
#include "ServerMgr.h" #include "ServerMgr.h"
#include "Framework.h" #include "Framework.h"
@ -570,6 +570,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::createItem( uint32_t catalogId, uint
auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto itemInfo = pExdData->get< Sapphire::Data::Item >( catalogId ); auto itemInfo = pExdData->get< Sapphire::Data::Item >( catalogId );
auto itemMgr = g_fw.get< World::Manager::ItemMgr >();
if( !itemInfo ) if( !itemInfo )
return nullptr; return nullptr;
@ -579,7 +580,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::createItem( uint32_t catalogId, uint
uint8_t flags = 0; uint8_t flags = 0;
ItemPtr pItem = make_Item( Items::Util::getNextUId(), ItemPtr pItem = make_Item( itemMgr->getNextUId(),
catalogId, catalogId,
itemInfo->modelMain, itemInfo->modelMain,
itemInfo->modelSub ); itemInfo->modelSub );
@ -598,6 +599,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::createItem( uint32_t catalogId, uint
bool Sapphire::Entity::Player::loadInventory() bool Sapphire::Entity::Player::loadInventory()
{ {
auto itemMgr = g_fw.get< World::Manager::ItemMgr >();
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////
// load active gearset // load active gearset
@ -619,7 +621,7 @@ bool Sapphire::Entity::Player::loadInventory()
if( uItemId == 0 ) if( uItemId == 0 )
continue; continue;
ItemPtr pItem = Items::Util::loadItem( uItemId ); ItemPtr pItem = itemMgr->loadItem( uItemId );
if( pItem == nullptr ) if( pItem == nullptr )
continue; continue;
@ -652,7 +654,7 @@ bool Sapphire::Entity::Player::loadInventory()
if( uItemId == 0 ) if( uItemId == 0 )
continue; continue;
ItemPtr pItem = Items::Util::loadItem( uItemId ); ItemPtr pItem = itemMgr->loadItem( uItemId );
if( pItem == nullptr ) if( pItem == nullptr )
continue; continue;

View file

@ -1,27 +0,0 @@
#ifndef SAPPHIRE_ITEMUTIL_H
#define SAPPHIRE_ITEMUTIL_H
#include <Common.h>
#include "ForwardsZone.h"
namespace Sapphire::Items::Util
{
ItemPtr loadItem( uint64_t uId );
/*! check if weapon category qualifies the weapon as onehanded */
bool isOneHandedWeapon( Common::ItemUICategory weaponCategory );
bool isArmory( uint16_t containerId );
bool isEquipment( uint16_t containerId );
uint16_t getCharaEquipSlotCategoryToArmoryId( uint8_t slotId );
Common::ContainerType getContainerType( uint32_t containerId );
uint32_t getNextUId();
}
#endif //SAPPHIRE_ITEMMGR_H

View file

@ -1,7 +1,7 @@
#include "ItemUtil.h" #include "ItemMgr.h"
#include "ItemContainer.h" #include "Inventory/ItemContainer.h"
#include "Item.h" #include "Inventory/Item.h"
#include "Framework.h" #include "Framework.h"
#include <Network/CommonActorControl.h> #include <Network/CommonActorControl.h>
@ -12,7 +12,13 @@
extern Sapphire::Framework g_fw; extern Sapphire::Framework g_fw;
bool Sapphire::Items::Util::isArmory( uint16_t containerId ) Sapphire::World::Manager::ItemMgr::ItemMgr( Sapphire::FrameworkPtr pFw ) :
BaseManager( pFw )
{
}
bool Sapphire::World::Manager::ItemMgr::isArmory( uint16_t containerId )
{ {
return return
containerId == Common::ArmoryBody || containerId == Common::ArmoryBody ||
@ -29,7 +35,8 @@ bool Sapphire::Items::Util::isArmory( uint16_t containerId )
containerId == Common::ArmorySoulCrystal; containerId == Common::ArmorySoulCrystal;
} }
uint16_t Sapphire::Items::Util::getCharaEquipSlotCategoryToArmoryId( uint8_t slotId )
uint16_t Sapphire::World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( uint8_t slotId )
{ {
switch( slotId ) switch( slotId )
@ -87,13 +94,12 @@ uint16_t Sapphire::Items::Util::getCharaEquipSlotCategoryToArmoryId( uint8_t slo
} }
bool Sapphire::Items::Util::isEquipment( uint16_t containerId ) bool Sapphire::World::Manager::ItemMgr::isEquipment( uint16_t containerId )
{ {
return containerId == Common::GearSet0; return containerId == Common::GearSet0;
} }
bool Sapphire::World::Manager::ItemMgr::isOneHandedWeapon( Common::ItemUICategory weaponCategory )
bool Sapphire::Items::Util::isOneHandedWeapon( Common::ItemUICategory weaponCategory )
{ {
switch( weaponCategory ) switch( weaponCategory )
{ {
@ -117,7 +123,7 @@ bool Sapphire::Items::Util::isOneHandedWeapon( Common::ItemUICategory weaponCate
} }
} }
Sapphire::ItemPtr Sapphire::Items::Util::loadItem( uint64_t uId ) Sapphire::ItemPtr Sapphire::World::Manager::ItemMgr::loadItem( uint64_t uId )
{ {
auto pExdData = g_fw.get< Data::ExdDataGenerated >(); auto pExdData = g_fw.get< Data::ExdDataGenerated >();
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
@ -148,7 +154,8 @@ Sapphire::ItemPtr Sapphire::Items::Util::loadItem( uint64_t uId )
} }
} }
Sapphire::Common::ContainerType Sapphire::Items::Util::getContainerType( uint32_t containerId )
Sapphire::Common::ContainerType Sapphire::World::Manager::ItemMgr::getContainerType( uint32_t containerId )
{ {
if( containerId < 5 ) if( containerId < 5 )
{ {
@ -172,8 +179,7 @@ Sapphire::Common::ContainerType Sapphire::Items::Util::getContainerType( uint32_
} }
} }
uint32_t Sapphire::World::Manager::ItemMgr::getNextUId()
uint32_t Sapphire::Items::Util::getNextUId()
{ {
uint32_t charId = 0; uint32_t charId = 0;
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();

View file

@ -0,0 +1,30 @@
#ifndef SAPPHIRE_ITEMMGR_H
#define SAPPHIRE_ITEMMGR_H
#include <Common.h>
#include "ForwardsZone.h"
#include "BaseManager.h"
namespace Sapphire::World::Manager
{
class ItemMgr : public BaseManager
{
public:
ItemMgr( FrameworkPtr pFw );
ItemPtr loadItem( uint64_t uId );
uint32_t getNextUId();
/*! check if weapon category qualifies the weapon as onehanded */
static bool isOneHandedWeapon( Common::ItemUICategory weaponCategory );
static bool isArmory( uint16_t containerId );
static bool isEquipment( uint16_t containerId );
static uint16_t getCharaEquipSlotCategoryToArmoryId( uint8_t slotId );
static Common::ContainerType getContainerType( uint32_t containerId );
};
}
#endif //SAPPHIRE_ITEMMGR_H

View file

@ -20,8 +20,6 @@
#include "Framework.h" #include "Framework.h"
#include "Forwards.h" #include "Forwards.h"
extern Sapphire::Framework g_fw;
using namespace Sapphire::Common; using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::Packets::Server;
@ -386,7 +384,7 @@ void Sapphire::Network::GameConnection::injectPacket( const std::string& packetp
void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader, void Sapphire::Network::GameConnection::handlePackets( const Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader,
const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData ) const std::vector< Sapphire::Network::Packets::FFXIVARR_PACKET_RAW >& packetData )
{ {
auto pServerZone = g_fw.get< World::ServerMgr >(); auto pServerZone = m_pFw->get< World::ServerMgr >();
// if a session is set, update the last time it recieved a game packet // if a session is set, update the last time it recieved a game packet
if( m_pSession ) if( m_pSession )
m_pSession->updateLastDataTime(); m_pSession->updateLastDataTime();

View file

@ -38,6 +38,7 @@
#include "Manager/ShopMgr.h" #include "Manager/ShopMgr.h"
#include "Manager/InventoryMgr.h" #include "Manager/InventoryMgr.h"
#include "Manager/EventMgr.h" #include "Manager/EventMgr.h"
#include "Manager/ItemMgr.h"
using namespace Sapphire::World::Manager; using namespace Sapphire::World::Manager;
@ -166,12 +167,13 @@ void Sapphire::World::ServerMgr::run( int32_t argc, char* argv[] )
auto pShopMgr = std::make_shared< Manager::ShopMgr >( framework() ); auto pShopMgr = std::make_shared< Manager::ShopMgr >( framework() );
auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >(); auto pInventoryMgr = std::make_shared< Manager::InventoryMgr >();
auto pEventMgr = std::make_shared< Manager::EventMgr >( framework() ); auto pEventMgr = std::make_shared< Manager::EventMgr >( framework() );
auto pItemMgr = std::make_shared< Manager::ItemMgr >( framework() );
framework()->set< DebugCommandMgr >( pDebugCom ); framework()->set< DebugCommandMgr >( pDebugCom );
framework()->set< Manager::PlayerMgr >( pPlayerMgr ); framework()->set< Manager::PlayerMgr >( pPlayerMgr );
framework()->set< Manager::ShopMgr >( pShopMgr ); framework()->set< Manager::ShopMgr >( pShopMgr );
framework()->set< Manager::InventoryMgr >( pInventoryMgr ); framework()->set< Manager::InventoryMgr >( pInventoryMgr );
framework()->set< Manager::EventMgr >( pEventMgr ); framework()->set< Manager::ItemMgr >( pItemMgr );
Logger::info( "World server running on " + m_ip + ":" + std::to_string( m_port ) ); Logger::info( "World server running on " + m_ip + ":" + std::to_string( m_port ) );

View file

@ -9,10 +9,7 @@
#include "Actor/Player.h" #include "Actor/Player.h"
#include "Session.h" #include "Session.h"
#include "Framework.h"
extern Sapphire::Framework g_fw;
namespace fs = std::experimental::filesystem; namespace fs = std::experimental::filesystem;
Sapphire::World::Session::Session( uint32_t sessionId ) : Sapphire::World::Session::Session( uint32_t sessionId ) :

View file

@ -20,7 +20,7 @@ using namespace Sapphire::Network::Packets;
using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::Packets::Server;
Sapphire::StatusEffect::StatusEffect::StatusEffect( uint32_t id, Entity::CharaPtr sourceActor, Entity::CharaPtr targetActor, Sapphire::StatusEffect::StatusEffect::StatusEffect( uint32_t id, Entity::CharaPtr sourceActor, Entity::CharaPtr targetActor,
uint32_t duration, uint32_t tickRate ) uint32_t duration, uint32_t tickRate )
: :
m_id( id ), m_sourceActor( sourceActor ), m_targetActor( targetActor ), m_duration( duration ), m_startTime( 0 ), m_id( id ), m_sourceActor( sourceActor ), m_targetActor( targetActor ), m_duration( duration ), m_startTime( 0 ),
m_tickRate( tickRate ), m_lastTick( 0 ) m_tickRate( tickRate ), m_lastTick( 0 )

View file

@ -5,10 +5,6 @@
#include "Zone.h" #include "Zone.h"
#include <Logging/Logger.h> #include <Logging/Logger.h>
#include "Framework.h"
extern Sapphire::Framework g_fw;
// TODO: the entire zone / areahandling is a bit outdated ( in parts i used this for the 1.0 iteration ) // TODO: the entire zone / areahandling is a bit outdated ( in parts i used this for the 1.0 iteration )
// likely this could be greatly improved or redone // likely this could be greatly improved or redone

View file

@ -16,7 +16,8 @@
#include "Actor/Player.h" #include "Actor/Player.h"
#include "Inventory/ItemContainer.h" #include "Inventory/ItemContainer.h"
#include "Inventory/Item.h" #include "Inventory/Item.h"
#include "Inventory/ItemUtil.h"
#include "Manager/ItemMgr.h"
#include "Forwards.h" #include "Forwards.h"
#include "Land.h" #include "Land.h"
@ -122,6 +123,7 @@ void Sapphire::Land::loadItemContainerContents()
Logger::debug( "Loading housing inventory for ident: " + std::to_string( ident ) ); Logger::debug( "Loading housing inventory for ident: " + std::to_string( ident ) );
auto pDB = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto pDB = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
auto pItemMgr = g_fw.get< World::Manager::ItemMgr >();
auto stmt = pDB->getPreparedStatement( Db::LAND_INV_SEL_HOUSE ); auto stmt = pDB->getPreparedStatement( Db::LAND_INV_SEL_HOUSE );
stmt->setUInt64( 1, ident ); stmt->setUInt64( 1, ident );
@ -148,7 +150,7 @@ void Sapphire::Land::loadItemContainerContents()
// todo: delet this // todo: delet this
for( auto fuck = it->second.begin(); fuck != it->second.end(); fuck++ ) for( auto fuck = it->second.begin(); fuck != it->second.end(); fuck++ )
{ {
auto item = Sapphire::Items::Util::loadItem( fuck->second ); auto item = pItemMgr->loadItem( fuck->second );
if( item ) if( item )
container->setItem( fuck->first, item ); container->setItem( fuck->first, item );
} }

View file

@ -3,27 +3,14 @@
#include "ServerMgr.h" #include "ServerMgr.h"
#include <Framework.h> #include <Framework.h>
#include <Config/ConfigMgr.h>
Sapphire::Framework g_fw;
using namespace Sapphire; using namespace Sapphire;
using namespace Sapphire::World; using namespace Sapphire::World;
bool setupFramework() int main( int32_t argc, char* argv[] )
{ {
auto pFramework = Sapphire::make_Framework(); auto pFramework = Sapphire::make_Framework();
auto pServer = std::make_shared< ServerMgr >( "config.ini", pFramework ); auto pServer = std::make_shared< ServerMgr >( "config.ini", pFramework );
g_fw.set< ServerMgr >( pServer ); pFramework->set< ServerMgr >( pServer );
pServer->run( argc, argv );
return true;
}
int main( int32_t argc, char* argv[] )
{
if( !setupFramework() )
return 0; // too fucking bad...
g_fw.get< ServerMgr >()->run( argc, argv );
return 0; return 0;
} }