1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Merge pull request #8457 from ZehMatt/refactor/game-action-name

Automatically expose game action name via macro.
This commit is contained in:
ζeh Matt
2018-12-20 23:17:49 +01:00
committed by GitHub
24 changed files with 74 additions and 51 deletions

View File

@@ -20,7 +20,7 @@
#include "../world/Sprite.h"
#include "GameAction.h"
struct BannerSetNameAction : public GameActionBase<GAME_COMMAND_SET_BANNER_NAME, GameActionResult>
DEFINE_GAME_ACTION(BannerSetNameAction, GAME_COMMAND_SET_BANNER_NAME, GameActionResult)
{
private:
BannerIndex _bannerIndex;
@@ -41,7 +41,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_bannerIndex) << DS_TAG(_name);

View File

@@ -12,7 +12,7 @@
#include "../world/Climate.h"
#include "GameAction.h"
struct ClimateSetAction : public GameActionBase<GAME_COMMAND_SET_CLIMATE, GameActionResult>
DEFINE_GAME_ACTION(ClimateSetAction, GAME_COMMAND_SET_CLIMATE, GameActionResult)
{
using climate_t = decltype(gClimate);
@@ -31,7 +31,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -21,7 +21,7 @@
#include "../world/Wall.h"
#include "GameAction.h"
struct FootpathRemoveAction : public GameActionBase<GAME_COMMAND_REMOVE_PATH, GameActionResult>
DEFINE_GAME_ACTION(FootpathRemoveAction, GAME_COMMAND_REMOVE_PATH, GameActionResult)
{
private:
int32_t _x;
@@ -42,7 +42,7 @@ public:
return GameAction::GetActionFlags();
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
@@ -126,7 +126,7 @@ private:
return footpathElement;
}
money32 GetRefundPrice(TileElement* footpathElement) const
money32 GetRefundPrice(TileElement * footpathElement) const
{
money32 cost = -MONEY(10, 00);

View File

@@ -146,7 +146,7 @@ namespace GameActions
return "cl";
else if (network_get_mode() == NETWORK_MODE_SERVER)
return "sv";
return "";
return "sp";
}
struct ActionLogContext_t
@@ -159,7 +159,7 @@ namespace GameActions
MemoryStream& output = ctx.output;
char temp[128] = {};
snprintf(temp, sizeof(temp), "[%s] Game Action %08X (", GetRealm(), action->GetType());
snprintf(temp, sizeof(temp), "[%s] GA: %s (%08X) (", GetRealm(), action->GetName(), action->GetType());
output.Write(temp, strlen(temp));
@@ -208,8 +208,7 @@ namespace GameActions
// As a client we have to wait or send it first.
if (!(actionFlags & GA_FLAGS::CLIENT_ONLY) && !(flags & GAME_COMMAND_FLAG_NETWORKED))
{
log_verbose("[%s] GameAction::Execute\n", "cl");
log_verbose("[%s] GameAction::Execute %s (Out)", GetRealm(), action->GetName());
network_send_game_action(action);
return result;
@@ -221,7 +220,7 @@ namespace GameActions
// at the beginning of the frame, so we have to put them into the queue.
if (!(actionFlags & GA_FLAGS::CLIENT_ONLY) && !(flags & GAME_COMMAND_FLAG_NETWORKED))
{
log_verbose("[%s] GameAction::Execute\n", "sv-cl");
log_verbose("[%s] GameAction::Execute %s (Queue)", GetRealm(), action->GetName());
network_enqueue_game_action(action);
return result;

View File

@@ -103,6 +103,8 @@ public:
virtual ~GameAction() = default;
virtual const char* GetName() const = 0;
NetworkPlayerId_t GetPlayer() const
{
return _playerId;
@@ -198,6 +200,10 @@ public:
# pragma GCC diagnostic pop
#endif
template<uint32_t TId> struct GameActionNameQuery
{
};
template<uint32_t TType, typename TResultType> struct GameActionBase : GameAction
{
public:
@@ -210,6 +216,11 @@ public:
{
}
virtual const char* GetName() const override
{
return GameActionNameQuery<TType>::Name();
}
void SetCallback(std::function<void(const struct GameAction*, const TResultType*)> typedCallback)
{
GameAction::SetCallback([typedCallback](const GameAction* ga, const GameActionResult* result) {
@@ -241,4 +252,17 @@ namespace GameActions
Register(T::TYPE, factory);
return factory;
}
// clang-format off
#define DEFINE_GAME_ACTION(cls, id, res) \
template<> struct GameActionNameQuery<id> \
{ \
static const char* Name() \
{ \
return #cls; \
} \
}; \
struct cls : public GameActionBase<id, res>
// clang-format on
} // namespace GameActions

View File

@@ -21,7 +21,7 @@
#include "../world/Sprite.h"
#include "GameAction.h"
struct GuestSetNameAction : public GameActionBase<GAME_COMMAND_SET_GUEST_NAME, GameActionResult>
DEFINE_GAME_ACTION(GuestSetNameAction, GAME_COMMAND_SET_GUEST_NAME, GameActionResult)
{
private:
uint16_t _spriteIndex;
@@ -42,7 +42,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -48,7 +48,7 @@ static constexpr const uint8_t byte_993D0C[] = {
};
// clang-format on
struct MazeSetTrackAction : public GameActionBase<GAME_COMMAND_SET_MAZE_TRACK, GameActionResult>
DEFINE_GAME_ACTION(MazeSetTrackAction, GAME_COMMAND_SET_MAZE_TRACK, GameActionResult)
{
private:
uint16_t _x;
@@ -75,7 +75,7 @@ public:
{
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -22,7 +22,7 @@
#include <iterator>
struct ParkMarketingAction : public GameActionBase<GAME_COMMAND_START_MARKETING_CAMPAIGN, GameActionResult>
DEFINE_GAME_ACTION(ParkMarketingAction, GAME_COMMAND_START_MARKETING_CAMPAIGN, GameActionResult)
{
private:
int32_t _type;
@@ -45,7 +45,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_type) << DS_TAG(_item) << DS_TAG(_numWeeks);

View File

@@ -18,7 +18,7 @@
#include "../windows/Intent.h"
#include "GameAction.h"
struct ParkSetLoanAction : public GameActionBase<GAME_COMMAND_SET_CURRENT_LOAN, GameActionResult>
DEFINE_GAME_ACTION(ParkSetLoanAction, GAME_COMMAND_SET_CURRENT_LOAN, GameActionResult)
{
private:
money32 _value;
@@ -37,7 +37,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_value);

View File

@@ -22,7 +22,7 @@
#include "../world/Park.h"
#include "GameAction.h"
struct ParkSetNameAction : public GameActionBase<GAME_COMMAND_SET_PARK_NAME, GameActionResult>
DEFINE_GAME_ACTION(ParkSetNameAction, GAME_COMMAND_SET_PARK_NAME, GameActionResult)
{
private:
std::string _name;
@@ -41,7 +41,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_name);

View File

@@ -18,7 +18,7 @@
#include "../windows/Intent.h"
#include "GameAction.h"
struct ParkSetResearchFundingAction : public GameActionBase<GAME_COMMAND_SET_RESEARCH_FUNDING, GameActionResult>
DEFINE_GAME_ACTION(ParkSetResearchFundingAction, GAME_COMMAND_SET_RESEARCH_FUNDING, GameActionResult)
{
private:
// TODO change to std::optional when C++17
@@ -40,7 +40,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_priorities) << DS_TAG(_fundingAmount);

View File

@@ -22,7 +22,7 @@
#include "../world/Surface.h"
#include "GameAction.h"
struct PlaceParkEntranceAction : public GameActionBase<GAME_COMMAND_PLACE_PARK_ENTRANCE, GameActionResult>
DEFINE_GAME_ACTION(PlaceParkEntranceAction, GAME_COMMAND_PLACE_PARK_ENTRANCE, GameActionResult)
{
private:
int16_t _x;
@@ -47,7 +47,7 @@ public:
return GameActionBase::GetActionFlags() | GA_FLAGS::EDITOR_ONLY;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -21,7 +21,7 @@
static int32_t _nextPeepSpawnIndex = 0;
struct PlacePeepSpawnAction : public GameActionBase<GAME_COMMAND_PLACE_PEEP_SPAWN, GameActionResult>
DEFINE_GAME_ACTION(PlacePeepSpawnAction, GAME_COMMAND_PLACE_PEEP_SPAWN, GameActionResult)
{
private:
CoordsXYZD _location;
@@ -40,7 +40,7 @@ public:
return GameActionBase::GetActionFlags() | GA_FLAGS::EDITOR_ONLY | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -41,7 +41,7 @@ public:
int32_t rideIndex = -1;
};
struct RideCreateAction : public GameActionBase<GAME_COMMAND_CREATE_RIDE, RideCreateGameActionResult>
DEFINE_GAME_ACTION(RideCreateAction, GAME_COMMAND_CREATE_RIDE, RideCreateGameActionResult)
{
private:
int32_t _rideType;
@@ -66,7 +66,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -28,7 +28,7 @@
using namespace OpenRCT2;
struct RideDemolishAction : public GameActionBase<GAME_COMMAND_DEMOLISH_RIDE, GameActionResult>
DEFINE_GAME_ACTION(RideDemolishAction, GAME_COMMAND_DEMOLISH_RIDE, GameActionResult)
{
private:
NetworkRideId_t _rideIndex{ -1 };
@@ -44,7 +44,7 @@ public:
{
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
@@ -117,7 +117,7 @@ public:
}
private:
GameActionResult::Ptr DemolishRide(Ride* ride) const
GameActionResult::Ptr DemolishRide(Ride * ride) const
{
money32 refundPrice = DemolishTracks();
@@ -356,7 +356,7 @@ private:
return refundPrice;
}
GameActionResult::Ptr RefurbishRide(Ride* ride) const
GameActionResult::Ptr RefurbishRide(Ride * ride) const
{
auto res = std::make_unique<GameActionResult>();
res->ExpenditureType = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION;

View File

@@ -21,7 +21,7 @@
#include "../world/Sprite.h"
#include "GameAction.h"
struct RideSetColourSchemeAction : public GameActionBase<GAME_COMMAND_SET_COLOUR_SCHEME, GameActionResult>
DEFINE_GAME_ACTION(RideSetColourSchemeAction, GAME_COMMAND_SET_COLOUR_SCHEME, GameActionResult)
{
private:
int32_t _x = 0, _y = 0, _z = 0, _direction = 0, _trackType = 0;
@@ -44,7 +44,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -22,7 +22,7 @@
#include "../world/Park.h"
#include "GameAction.h"
struct RideSetNameAction : public GameActionBase<GAME_COMMAND_SET_RIDE_NAME, GameActionResult>
DEFINE_GAME_ACTION(RideSetNameAction, GAME_COMMAND_SET_RIDE_NAME, GameActionResult)
{
private:
NetworkRideId_t _rideIndex{ -1 };
@@ -43,7 +43,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -27,7 +27,7 @@ static rct_string_id _StatusErrorTitles[] = {
STR_CANT_TEST,
};
struct RideSetStatusAction : public GameActionBase<GAME_COMMAND_SET_RIDE_STATUS, GameActionResult>
DEFINE_GAME_ACTION(RideSetStatusAction, GAME_COMMAND_SET_RIDE_STATUS, GameActionResult)
{
private:
NetworkRideId_t _rideIndex{ -1 };
@@ -48,7 +48,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -16,7 +16,7 @@
#include "../world/Park.h"
#include "GameAction.h"
struct SetParkEntranceFeeAction : public GameActionBase<GAME_COMMAND_SET_PARK_ENTRANCE_FEE, GameActionResult>
DEFINE_GAME_ACTION(SetParkEntranceFeeAction, GAME_COMMAND_SET_PARK_ENTRANCE_FEE, GameActionResult)
{
private:
money16 _fee;
@@ -35,7 +35,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -21,7 +21,7 @@
#include <string>
struct SignSetNameAction : public GameActionBase<GAME_COMMAND_SET_SIGN_NAME, GameActionResult>
DEFINE_GAME_ACTION(SignSetNameAction, GAME_COMMAND_SET_SIGN_NAME, GameActionResult)
{
private:
int32_t _bannerIndex;
@@ -40,7 +40,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_bannerIndex) << DS_TAG(_name);

View File

@@ -20,7 +20,7 @@
#include "../world/Sprite.h"
#include "GameAction.h"
struct StaffSetColourAction : public GameActionBase<GAME_COMMAND_SET_STAFF_COLOUR, GameActionResult>
DEFINE_GAME_ACTION(StaffSetColourAction, GAME_COMMAND_SET_STAFF_COLOUR, GameActionResult)
{
private:
uint8_t _staffType;
@@ -41,7 +41,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);
stream << DS_TAG(_staffType) << DS_TAG(_colour);

View File

@@ -22,7 +22,7 @@
#include "../world/Sprite.h"
#include "GameAction.h"
struct StaffSetNameAction : public GameActionBase<GAME_COMMAND_SET_STAFF_NAME, GameActionResult>
DEFINE_GAME_ACTION(StaffSetNameAction, GAME_COMMAND_SET_STAFF_NAME, GameActionResult)
{
private:
uint16_t _spriteIndex;
@@ -43,7 +43,7 @@ public:
return GameAction::GetActionFlags() | GA_FLAGS::ALLOW_WHILE_PAUSED;
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -19,7 +19,7 @@
#include "../world/Wall.h"
#include "GameAction.h"
struct WallRemoveAction : public GameActionBase<GAME_COMMAND_REMOVE_WALL, GameActionResult>
DEFINE_GAME_ACTION(WallRemoveAction, GAME_COMMAND_REMOVE_WALL, GameActionResult)
{
private:
TileCoordsXYZD _location;
@@ -31,7 +31,7 @@ public:
{
}
void Serialise(DataSerialiser& stream) override
void Serialise(DataSerialiser & stream) override
{
GameAction::Serialise(stream);

View File

@@ -30,7 +30,7 @@
// This string specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "15"
#define NETWORK_STREAM_VERSION "16"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
static rct_peep* _pickup_peep = nullptr;