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:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user