From 5283804b37e001a5b54dd1d5cfd3de364d87c7a8 Mon Sep 17 00:00:00 2001 From: ZehMatt Date: Thu, 20 Jul 2017 02:07:04 +0200 Subject: [PATCH] Remove unnecessary type conversation. Add override attributes. Changed GameActionResult data storage to union, happy compilers. --- src/openrct2/actions/GameAction.h | 26 +++++++++++------------ src/openrct2/actions/IGameAction.h | 13 +++++++++++- src/openrct2/actions/RideCreateAction.hpp | 4 ++-- src/openrct2/core/DataSerialiser.h | 4 ++-- 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/openrct2/actions/GameAction.h b/src/openrct2/actions/GameAction.h index dcaa5861db..28e564e662 100644 --- a/src/openrct2/actions/GameAction.h +++ b/src/openrct2/actions/GameAction.h @@ -42,12 +42,12 @@ public: { } - virtual void SetPlayer(uint32 playerId) override + virtual void SetPlayer(uint32 playerId) override final { _playerId = playerId; } - virtual uint32 GetPlayer() const override + virtual uint32 GetPlayer() const override final { return _playerId; } @@ -55,7 +55,7 @@ public: /** * Gets the GA_FLAGS flags that are enabled for this game action. */ - virtual uint16 GetActionFlags() const override + virtual uint16 GetActionFlags() const override final { return ActionFlags; } @@ -63,42 +63,42 @@ public: /** * Currently used for GAME_COMMAND_FLAGS, needs refactoring once everything is replaced. */ - virtual uint32 GetFlags() const override + virtual uint32 GetFlags() const override final { return _flags; } - virtual uint32 SetFlags(uint32 flags) override + virtual uint32 SetFlags(uint32 flags) override final { return _flags = flags; } - virtual uint32 GetType() const override + virtual uint32 GetType() const override final { return Type; } - virtual void SetCallback(const GameActionCallback_t& cb) + virtual void SetCallback(const GameActionCallback_t& cb) override final { _callback = cb; } - virtual const GameActionCallback_t& GetCallback() const + virtual const GameActionCallback_t& GetCallback() const override final { return _callback; } - virtual void SetNetworkId(uint32_t id) + virtual void SetNetworkId(uint32_t id) override final { _networkId = id; } - virtual uint32 GetNetworkId() const + virtual uint32 GetNetworkId() const override final { return _networkId; } - virtual void Serialise(DataSerialiser& stream) + virtual void Serialise(DataSerialiser& stream) override { stream << _networkId; stream << _flags; @@ -108,12 +108,12 @@ public: /** * Query the result of the game action without changing the game state. */ - virtual GameActionResult Query() const abstract; + virtual GameActionResult Query() const override abstract; /** * Apply the game action and change the game state. */ - virtual GameActionResult Execute() const abstract; + virtual GameActionResult Execute() const override abstract; }; namespace GameActions diff --git a/src/openrct2/actions/IGameAction.h b/src/openrct2/actions/IGameAction.h index 377d01bc25..1fd26ceff0 100644 --- a/src/openrct2/actions/IGameAction.h +++ b/src/openrct2/actions/IGameAction.h @@ -69,7 +69,18 @@ struct GameActionResult rct_xyz32 Position = { 0 }; money32 Cost = 0; uint16 ExpenditureType = 0; - uint64 Results[4]; + + union + { + sint8 _sint8; + sint16 _sint16; + sint32 _sint32; + sint64 _sint64; + uint8 _uint8; + uint16 _uint16; + uint32 _uint32; + uint64 _uint64; + } Results[4]; GameActionResult(); GameActionResult(GA_ERROR error, rct_string_id message); diff --git a/src/openrct2/actions/RideCreateAction.hpp b/src/openrct2/actions/RideCreateAction.hpp index b39f683d2d..00c78dcd8c 100644 --- a/src/openrct2/actions/RideCreateAction.hpp +++ b/src/openrct2/actions/RideCreateAction.hpp @@ -37,12 +37,12 @@ struct RideCreateGameActionResult : public GameActionResult { sint32& RideIndex() { - return reinterpret_cast(Results[0]); + return Results[0]._sint32; } uint32& RideColor() { - return reinterpret_cast(Results[1]); + return Results[1]._uint32; } }; diff --git a/src/openrct2/core/DataSerialiser.h b/src/openrct2/core/DataSerialiser.h index 4043c35434..85e142ea6c 100644 --- a/src/openrct2/core/DataSerialiser.h +++ b/src/openrct2/core/DataSerialiser.h @@ -56,9 +56,9 @@ public: DataSerialiser& operator<<(T& data) { if (_isSaving) - DataSerializerTraits::type>::encode(_activeStream, data); + DataSerializerTraits::encode(_activeStream, data); else - DataSerializerTraits::type>::decode(_activeStream, data); + DataSerializerTraits::decode(_activeStream, data); return *this; } }; \ No newline at end of file