From 47719addaed95365fda3169d03d51789ccf88022 Mon Sep 17 00:00:00 2001 From: collett Date: Mon, 2 Mar 2020 17:29:07 +0900 Subject: [PATCH] JobGauge union. --- src/common/Common.h | 16 ++++++++++++++++ src/world/Actor/Player.cpp | 22 ++++++---------------- src/world/Actor/Player.h | 6 +----- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/common/Common.h b/src/common/Common.h index cb0cb86e..62b6d98f 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -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 >; } diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 29afe825..56149433 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -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; } \ No newline at end of file diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index 853afc72..e92e24d2 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -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;