mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 15:52:55 +01:00
Small refactor to use enum class
This commit is contained in:
@@ -4501,25 +4501,29 @@ static void window_ride_colour_dropdown(rct_window* w, rct_widgetindex widgetInd
|
||||
break;
|
||||
case WIDX_TRACK_MAIN_COLOUR:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 0, dropdownIndex, w->ride_colour);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::TrackColourMain, dropdownIndex, w->ride_colour);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
case WIDX_TRACK_ADDITIONAL_COLOUR:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 1, dropdownIndex, w->ride_colour);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::TrackColourAdditional, dropdownIndex, w->ride_colour);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
case WIDX_TRACK_SUPPORT_COLOUR:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 4, dropdownIndex, w->ride_colour);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::TrackColourSupports, dropdownIndex, w->ride_colour);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
case WIDX_MAZE_STYLE_DROPDOWN:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 4, dropdownIndex, w->ride_colour);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::MazeStyle, dropdownIndex, w->ride_colour);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
@@ -4534,7 +4538,8 @@ static void window_ride_colour_dropdown(rct_window* w, rct_widgetindex widgetInd
|
||||
{
|
||||
if (ddIndex == dropdownIndex)
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 6, ddIndex, 0);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::EntranceStyle, ddIndex, 0);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
break;
|
||||
}
|
||||
@@ -4545,7 +4550,8 @@ static void window_ride_colour_dropdown(rct_window* w, rct_widgetindex widgetInd
|
||||
}
|
||||
case WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 5, dropdownIndex, 0);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::VehicleColourScheme, dropdownIndex, 0);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
w->vehicleIndex = 0;
|
||||
}
|
||||
@@ -4556,19 +4562,22 @@ static void window_ride_colour_dropdown(rct_window* w, rct_widgetindex widgetInd
|
||||
break;
|
||||
case WIDX_VEHICLE_MAIN_COLOUR:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 2, dropdownIndex, w->vehicleIndex);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::VehicleColourBody, dropdownIndex, w->vehicleIndex);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
case WIDX_VEHICLE_ADDITIONAL_COLOUR_1:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 3, dropdownIndex, w->vehicleIndex);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::VehicleColourTrim, dropdownIndex, w->vehicleIndex);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
case WIDX_VEHICLE_ADDITIONAL_COLOUR_2:
|
||||
{
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(w->number, 7, dropdownIndex, w->vehicleIndex);
|
||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||
w->number, RideSetAppearanceType::VehicleColourTernary, dropdownIndex, w->vehicleIndex);
|
||||
GameActions::Execute(&rideSetAppearanceAction);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -22,11 +22,24 @@
|
||||
#include "../world/Park.h"
|
||||
#include "GameAction.h"
|
||||
|
||||
enum class RideSetAppearanceType : uint8_t
|
||||
{
|
||||
TrackColourMain,
|
||||
TrackColourAdditional,
|
||||
TrackColourSupports,
|
||||
MazeStyle = TrackColourSupports,
|
||||
VehicleColourBody,
|
||||
VehicleColourTrim,
|
||||
VehicleColourTernary,
|
||||
VehicleColourScheme,
|
||||
EntranceStyle
|
||||
};
|
||||
|
||||
DEFINE_GAME_ACTION(RideSetAppearanceAction, GAME_COMMAND_SET_RIDE_APPEARANCE, GameActionResult)
|
||||
{
|
||||
private:
|
||||
NetworkRideId_t _rideIndex{ -1 };
|
||||
uint8_t _type;
|
||||
RideSetAppearanceType _type;
|
||||
uint8_t _value;
|
||||
uint32_t _index;
|
||||
|
||||
@@ -34,7 +47,7 @@ public:
|
||||
RideSetAppearanceAction()
|
||||
{
|
||||
}
|
||||
RideSetAppearanceAction(ride_id_t rideIndex, uint8_t type, uint8_t value, uint32_t index)
|
||||
RideSetAppearanceAction(ride_id_t rideIndex, RideSetAppearanceType type, uint8_t value, uint32_t index)
|
||||
: _rideIndex(rideIndex)
|
||||
, _type(type)
|
||||
, _value(value)
|
||||
@@ -50,8 +63,8 @@ public:
|
||||
void Serialise(DataSerialiser & stream) override
|
||||
{
|
||||
GameAction::Serialise(stream);
|
||||
|
||||
stream << DS_TAG(_rideIndex) << DS_TAG(_type) << DS_TAG(_value) << DS_TAG(_index);
|
||||
auto type = static_cast<uint8_t>(_type);
|
||||
stream << DS_TAG(_rideIndex) << DS_TAG(type) << DS_TAG(_value) << DS_TAG(_index);
|
||||
}
|
||||
|
||||
GameActionResult::Ptr Query() const override
|
||||
@@ -71,52 +84,30 @@ public:
|
||||
|
||||
switch (_type)
|
||||
{
|
||||
case 0:
|
||||
case RideSetAppearanceType::TrackColourMain:
|
||||
case RideSetAppearanceType::TrackColourAdditional:
|
||||
case RideSetAppearanceType::TrackColourSupports:
|
||||
if (_index >= std::size(ride->track_colour))
|
||||
{
|
||||
log_warning("Invalid game command, index %d out of bounds", _index);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (_index >= std::size(ride->track_colour))
|
||||
{
|
||||
log_warning("Invalid game command, index %d out of bounds", _index);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case RideSetAppearanceType::VehicleColourBody:
|
||||
case RideSetAppearanceType::VehicleColourTrim:
|
||||
case RideSetAppearanceType::VehicleColourTernary:
|
||||
if (_index >= std::size(ride->vehicle_colours))
|
||||
{
|
||||
log_warning("Invalid game command, index %d out of bounds", _index);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (_index >= std::size(ride->vehicle_colours))
|
||||
{
|
||||
log_warning("Invalid game command, index %d out of bounds", _index);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (_index >= std::size(ride->track_colour))
|
||||
{
|
||||
log_warning("Invalid game command, index %d out of bounds", _index);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
break;
|
||||
case 6:
|
||||
break;
|
||||
case 7:
|
||||
if (_index >= std::size(ride->vehicle_colours))
|
||||
{
|
||||
log_warning("Invalid game command, index %d out of bounds", _index);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
case RideSetAppearanceType::VehicleColourScheme:
|
||||
case RideSetAppearanceType::EntranceStyle:
|
||||
break;
|
||||
default:
|
||||
log_warning("Invalid game command, type %d not recognised", _type);
|
||||
return std::make_unique<GameActionResult>(GA_ERROR::INVALID_PARAMETERS, STR_NONE);
|
||||
}
|
||||
|
||||
return std::make_unique<GameActionResult>();
|
||||
@@ -133,27 +124,31 @@ public:
|
||||
|
||||
switch (_type)
|
||||
{
|
||||
case 0:
|
||||
case RideSetAppearanceType::TrackColourMain:
|
||||
ride->track_colour[_index].main = _value;
|
||||
gfx_invalidate_screen();
|
||||
break;
|
||||
case 1:
|
||||
case RideSetAppearanceType::TrackColourAdditional:
|
||||
ride->track_colour[_index].additional = _value;
|
||||
gfx_invalidate_screen();
|
||||
break;
|
||||
case 2:
|
||||
*((uint8_t*)(&ride->vehicle_colours[_index])) = _value;
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
case 3:
|
||||
*((uint8_t*)(&ride->vehicle_colours[_index]) + 1) = _value;
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
case 4:
|
||||
case RideSetAppearanceType::TrackColourSupports:
|
||||
ride->track_colour[_index].supports = _value;
|
||||
gfx_invalidate_screen();
|
||||
break;
|
||||
case 5:
|
||||
case RideSetAppearanceType::VehicleColourBody:
|
||||
ride->vehicle_colours[_index].Body = _value;
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
case RideSetAppearanceType::VehicleColourTrim:
|
||||
ride->vehicle_colours[_index].Trim = _value;
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
case RideSetAppearanceType::VehicleColourTernary:
|
||||
ride->vehicle_colours[_index].Ternary = _value;
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
case RideSetAppearanceType::VehicleColourScheme:
|
||||
ride->colour_scheme_type &= ~(RIDE_COLOUR_SCHEME_DIFFERENT_PER_TRAIN | RIDE_COLOUR_SCHEME_DIFFERENT_PER_CAR);
|
||||
ride->colour_scheme_type |= _value;
|
||||
for (uint32_t i = 1; i < std::size(ride->vehicle_colours); i++)
|
||||
@@ -162,16 +157,11 @@ public:
|
||||
}
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
case 6:
|
||||
case RideSetAppearanceType::EntranceStyle:
|
||||
ride->entrance_style = _value;
|
||||
gLastEntranceStyle = _value;
|
||||
gfx_invalidate_screen();
|
||||
break;
|
||||
case 7:
|
||||
|
||||
ride->vehicle_colours[_index].Ternary = _value;
|
||||
ride_update_vehicle_colours(ride);
|
||||
break;
|
||||
}
|
||||
window_invalidate_by_number(WC_RIDE, _rideIndex);
|
||||
|
||||
@@ -185,8 +175,7 @@ public:
|
||||
res->Position.x = coord.x;
|
||||
res->Position.y = coord.y;
|
||||
res->Position.z = coord.z;
|
||||
network_set_player_last_action_coord(
|
||||
network_get_player_index(game_command_playerid), coord);
|
||||
network_set_player_last_action_coord(network_get_player_index(game_command_playerid), coord);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user