1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-25 19:17:45 +00:00

JobGauge union.

This commit is contained in:
collett 2020-03-02 17:29:07 +09:00
parent 20247f5870
commit 47719addae
3 changed files with 23 additions and 21 deletions

View file

@ -1085,6 +1085,22 @@ namespace Sapphire::Common
RequireCorrectPositional = 2,
};
union JobGauge
{
struct
{
uint8_t gauge_data[15];
} _raw;
struct
{
uint8_t beastGauge;
} war;
struct
{
uint8_t oathGauge;
} pld;
};
using PlayerStateFlagList = std::vector< PlayerStateFlag >;
}

View file

@ -2161,24 +2161,14 @@ bool Sapphire::Entity::Player::checkAction()
void Sapphire::Entity::Player::gaugeClear()
{
std::memset( m_gauge, 0, sizeof( m_gauge ) );
}
void Sapphire::Entity::Player::gaugeSet( uint8_t index, uint8_t value )
{
m_gauge[ index ] = value;
}
uint8_t Sapphire::Entity::Player::gaugeGet( uint8_t index )
{
return m_gauge[ index ];
std::memset( &m_gauge, 0, sizeof( m_gauge ) );
}
void Sapphire::Entity::Player::sendActorGauge()
{
auto pPacket = makeZonePacket< FFXIVIpcActorGauge >( getId() );
pPacket->data().classJobId = static_cast< uint8_t >( getClass() );
std::memcpy( pPacket->data().data, m_gauge, sizeof( m_gauge ) );
std::memcpy( pPacket->data().data, &m_gauge, sizeof( m_gauge ) );
queuePacket( pPacket );
}
@ -2196,25 +2186,25 @@ void Sapphire::Entity::Player::gaugeWarSetIb( uint8_t value )
}
queuePacket( pPacket );
}
gaugeSet( 0, value );
m_gauge.war.beastGauge = value;
if( oldValue != value )
sendActorGauge();
}
uint8_t Sapphire::Entity::Player::gaugeWarGetIb()
{
return gaugeGet( 0 );
return m_gauge.war.beastGauge;
}
void Sapphire::Entity::Player::gaugePldSetOath( uint8_t value )
{
auto oldValue = gaugePldGetOath();
gaugeSet( 0, value );
m_gauge.pld.oathGauge = value;
if( oldValue != value )
sendActorGauge();
}
uint8_t Sapphire::Entity::Player::gaugePldGetOath()
{
return gaugeGet( 0 );
return m_gauge.pld.oathGauge;
}

View file

@ -973,10 +973,6 @@ namespace Sapphire::Entity
// Job UI
//////////////////////////////////////////////////////////////////////////////////////////////////////
private:
void gaugeSet( uint8_t index, uint8_t value );
uint8_t gaugeGet( uint8_t index );
public:
void gaugeClear();
void sendActorGauge();
@ -1098,7 +1094,7 @@ namespace Sapphire::Entity
bool m_bLoadingComplete;
bool m_bAutoattack;
uint8_t m_gauge[15];
Common::JobGauge m_gauge;
Common::ZoneingType m_zoningType;
uint32_t m_territoryId;