mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-11 18:12:23 +01:00
Split Steel Wild Mouse and Spinning Wild Mouse when using Ride Groups
Includes a little cleanup for the Ride Groups and a fix in the table with available pieces, which erroneously listed banked pieces as available.
This commit is contained in:
@@ -4470,6 +4470,8 @@ STR_6158 :Failed to load this file...{NEWLINE}Incompatible RCTC version: {COM
|
||||
STR_6159 :Smooth Nearest Neighbour
|
||||
STR_6160 :{WINDOW_COLOUR_2}Available vehicles: {BLACK}{STRING}
|
||||
STR_6161 :Gridlines display toggle
|
||||
STR_6162 :Spinning Wild Mouse
|
||||
STR_6163 :Mouse shaped cars speed through tight corners and short drops, gently spinning around to disorientate the riders
|
||||
|
||||
#############
|
||||
# Scenarios #
|
||||
|
||||
@@ -3747,7 +3747,7 @@ enum {
|
||||
STR_STEEL_TWISTER_GROUP = 6108,
|
||||
STR_HYPER_TWISTER_GROUP = 6109,
|
||||
STR_JUNIOR_RC_GROUP = 6110,
|
||||
STR_MIDI_COASTER_GROUP = 6111,
|
||||
STR_CLASSIC_MINI_COASTER_GROUP = 6111,
|
||||
STR_CORKSCREW_RC_GROUP_DESC = 6112,
|
||||
STR_HYPERCOASTER_GROUP_DESC = 6113,
|
||||
STR_CAR_RIDE_GROUP_DESC = 6114,
|
||||
@@ -3755,7 +3755,7 @@ enum {
|
||||
STR_STEEL_TWISTER_GROUP_DESC = 6116,
|
||||
STR_HYPER_TWISTER_GROUP_DESC = 6117,
|
||||
STR_JUNIOR_RC_GROUP_DESC = 6118,
|
||||
STR_MIDI_COASTER_GROUP_DESC = 6119,
|
||||
STR_CLASSIC_MINI_COASTER_GROUP_DESC = 6119,
|
||||
|
||||
STR_NEWS_ITEM_RESEARCH_NEW_VEHICLE_AVAILABLE = 6120,
|
||||
|
||||
@@ -3822,6 +3822,9 @@ enum {
|
||||
|
||||
STR_SHORTCUT_GRIDLINES_DISPLAY_TOGGLE = 6161,
|
||||
|
||||
STR_SPINNING_WILD_MOUSE_GROUP = 6162,
|
||||
STR_SPINNING_WILD_MOUSE_GROUP_DESC = 6163,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
};
|
||||
|
||||
@@ -79,7 +79,7 @@ class ObjectFileIndex final : public FileIndex<ObjectRepositoryItem>
|
||||
{
|
||||
private:
|
||||
static constexpr uint32 MAGIC_NUMBER = 0x5844494F; // OIDX
|
||||
static constexpr uint16 VERSION = 15;
|
||||
static constexpr uint16 VERSION = 16;
|
||||
static constexpr auto PATTERN = "*.dat;*.pob";
|
||||
|
||||
public:
|
||||
|
||||
@@ -76,49 +76,71 @@ static const RideGroup ride_group_junior_rc = {
|
||||
/*.Naming =*/ { STR_JUNIOR_RC_GROUP, STR_JUNIOR_RC_GROUP_DESC },
|
||||
};
|
||||
|
||||
static const RideGroup ride_group_midi_coaster = {
|
||||
static const RideGroup ride_group_classic_mini_coaster = {
|
||||
/*.RideType =*/ RIDE_TYPE_JUNIOR_ROLLER_COASTER,
|
||||
/*.MaximumHeight =*/ 15,
|
||||
/*.AvailableTrackPieces =*/ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_CURVE) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_BOOSTER),
|
||||
/*.Naming =*/ { STR_MIDI_COASTER_GROUP, STR_MIDI_COASTER_GROUP_DESC },
|
||||
/*.Naming =*/ { STR_CLASSIC_MINI_COASTER_GROUP, STR_CLASSIC_MINI_COASTER_GROUP_DESC },
|
||||
};
|
||||
|
||||
static const RideGroup ride_group_steel_wild_mouse = {
|
||||
/*.RideType =*/ RIDE_TYPE_WILD_MOUSE,
|
||||
/*.MaximumHeight =*/ 16,
|
||||
/*.AvailableTrackPieces =*/ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_CURVE_VERY_SMALL) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES),
|
||||
/*.Naming =*/ { STR_RIDE_NAME_WILD_MOUSE, STR_RIDE_DESCRIPTION_WILD_MOUSE },
|
||||
};
|
||||
|
||||
static const RideGroup ride_group_spinning_wild_mouse = {
|
||||
/*.RideType =*/ RIDE_TYPE_WILD_MOUSE,
|
||||
/*.MaximumHeight =*/ 16,
|
||||
/*.AvailableTrackPieces =*/ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_CURVE_VERY_SMALL) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_ROTATION_CONTROL_TOGGLE),
|
||||
/*.Naming =*/ { STR_SPINNING_WILD_MOUSE_GROUP, STR_SPINNING_WILD_MOUSE_GROUP_DESC },
|
||||
};
|
||||
|
||||
static const RideGroup corkscrew_rc_groups[MAX_RIDE_GROUPS_PER_RIDE_TYPE] = { ride_group_corkscrew_rc, ride_group_hypercoaster };
|
||||
static const RideGroup junior_rc_groups[MAX_RIDE_GROUPS_PER_RIDE_TYPE] = { ride_group_junior_rc, ride_group_midi_coaster };
|
||||
static const RideGroup junior_rc_groups[MAX_RIDE_GROUPS_PER_RIDE_TYPE] = { ride_group_junior_rc, ride_group_classic_mini_coaster };
|
||||
static const RideGroup car_ride_groups[MAX_RIDE_GROUPS_PER_RIDE_TYPE] = { ride_group_car_ride, ride_group_monster_trucks };
|
||||
static const RideGroup twister_rc_groups[MAX_RIDE_GROUPS_PER_RIDE_TYPE] = { ride_group_steel_twister_rc, ride_group_hyper_twister };
|
||||
static const RideGroup steel_wild_mouse_groups[MAX_RIDE_GROUPS_PER_RIDE_TYPE] = { ride_group_steel_wild_mouse, ride_group_spinning_wild_mouse };
|
||||
|
||||
const RideGroup * RideGroupManager::GetRideGroup(const uint8 rideType, const rct_ride_entry * rideEntry)
|
||||
const RideGroup * RideGroupManager::GetRideGroup(const uint8 rideType, const rct_ride_entry * rideEntry)
|
||||
{
|
||||
switch (rideType) {
|
||||
case RIDE_TYPE_CORKSCREW_ROLLER_COASTER:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_VERTICAL_LOOP))
|
||||
return (RideGroup *) &ride_group_corkscrew_rc;
|
||||
else
|
||||
return (RideGroup *) &ride_group_hypercoaster;
|
||||
case RIDE_TYPE_JUNIOR_ROLLER_COASTER:
|
||||
if (ride_entry_get_supported_track_pieces(rideEntry) & (1ULL << TRACK_SLOPE_STEEP))
|
||||
return (RideGroup *) &ride_group_midi_coaster;
|
||||
else
|
||||
return (RideGroup *) &ride_group_junior_rc;
|
||||
case RIDE_TYPE_CAR_RIDE:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_SLOPE_STEEP))
|
||||
return (RideGroup *) &ride_group_monster_trucks;
|
||||
else
|
||||
return (RideGroup *) &ride_group_car_ride;
|
||||
case RIDE_TYPE_TWISTER_ROLLER_COASTER:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_VERTICAL_LOOP))
|
||||
return (RideGroup *) &ride_group_steel_twister_rc;
|
||||
else
|
||||
return (RideGroup *) &ride_group_hyper_twister;
|
||||
default:
|
||||
return nullptr;
|
||||
switch (rideType)
|
||||
{
|
||||
case RIDE_TYPE_CORKSCREW_ROLLER_COASTER:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_VERTICAL_LOOP))
|
||||
return &ride_group_corkscrew_rc;
|
||||
else
|
||||
return &ride_group_hypercoaster;
|
||||
case RIDE_TYPE_JUNIOR_ROLLER_COASTER:
|
||||
if (ride_entry_get_supported_track_pieces(rideEntry) & (1ULL << TRACK_SLOPE_STEEP))
|
||||
return &ride_group_classic_mini_coaster;
|
||||
else
|
||||
return &ride_group_junior_rc;
|
||||
case RIDE_TYPE_CAR_RIDE:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_SLOPE_STEEP))
|
||||
return &ride_group_monster_trucks;
|
||||
else
|
||||
return &ride_group_car_ride;
|
||||
case RIDE_TYPE_TWISTER_ROLLER_COASTER:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_VERTICAL_LOOP))
|
||||
return &ride_group_steel_twister_rc;
|
||||
else
|
||||
return &ride_group_hyper_twister;
|
||||
case RIDE_TYPE_WILD_MOUSE:
|
||||
if (rideEntry->enabledTrackPieces & (1ULL << TRACK_SLOPE_STEEP))
|
||||
return &ride_group_steel_wild_mouse;
|
||||
else
|
||||
return &ride_group_spinning_wild_mouse;
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
bool RideGroupManager::RideTypeHasRideGroups(const uint8 rideType)
|
||||
{
|
||||
if (!gConfigInterface.select_by_track_type) {
|
||||
if (!gConfigInterface.select_by_track_type)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -128,6 +150,7 @@ bool RideGroupManager::RideTypeHasRideGroups(const uint8 rideType)
|
||||
case RIDE_TYPE_JUNIOR_ROLLER_COASTER:
|
||||
case RIDE_TYPE_CAR_RIDE:
|
||||
case RIDE_TYPE_TWISTER_ROLLER_COASTER:
|
||||
case RIDE_TYPE_WILD_MOUSE:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@@ -136,27 +159,24 @@ bool RideGroupManager::RideTypeHasRideGroups(const uint8 rideType)
|
||||
|
||||
const RideGroup * RideGroupManager::RideGroupFind(const uint8 rideType, const uint8 index)
|
||||
{
|
||||
RideGroup * rideGroup;
|
||||
if (index >= MAX_RIDE_GROUPS_PER_RIDE_TYPE)
|
||||
return nullptr;
|
||||
|
||||
switch(rideType)
|
||||
{
|
||||
case RIDE_TYPE_CORKSCREW_ROLLER_COASTER:
|
||||
rideGroup = (RideGroup *) &corkscrew_rc_groups[index];
|
||||
break;
|
||||
case RIDE_TYPE_JUNIOR_ROLLER_COASTER:
|
||||
rideGroup = (RideGroup *) &junior_rc_groups[index];
|
||||
break;
|
||||
case RIDE_TYPE_CAR_RIDE:
|
||||
rideGroup = (RideGroup *) &car_ride_groups[index];
|
||||
break;
|
||||
case RIDE_TYPE_TWISTER_ROLLER_COASTER:
|
||||
rideGroup = (RideGroup *) &twister_rc_groups[index];
|
||||
break;
|
||||
default:
|
||||
return nullptr;
|
||||
case RIDE_TYPE_CORKSCREW_ROLLER_COASTER:
|
||||
return &corkscrew_rc_groups[index];
|
||||
case RIDE_TYPE_JUNIOR_ROLLER_COASTER:
|
||||
return &junior_rc_groups[index];
|
||||
case RIDE_TYPE_CAR_RIDE:
|
||||
return &car_ride_groups[index];
|
||||
case RIDE_TYPE_TWISTER_ROLLER_COASTER:
|
||||
return &twister_rc_groups[index];
|
||||
case RIDE_TYPE_WILD_MOUSE:
|
||||
return &steel_wild_mouse_groups[index];
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return rideGroup;
|
||||
}
|
||||
|
||||
bool RideGroupManager::RideGroupsAreEqual(const RideGroup * a, const RideGroup * b)
|
||||
|
||||
@@ -1110,7 +1110,7 @@ const uint64 RideTypePossibleTrackConfigurations[RIDE_TYPE_COUNT] = {
|
||||
/* RIDE_TYPE_TWISTER_ROLLER_COASTER */ (1ULL << TRACK_FLAT) | (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BARREL_ROLL) | (1ULL << TRACK_POWERED_LIFT) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_SLOPE_CURVE_BANKED) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_SLOPE_STEEP_LONG) | (1ULL << TRACK_CURVE_VERTICAL) | (1ULL << TRACK_QUARTER_LOOP) | (1ULL << TRACK_BOOSTER),
|
||||
/* RIDE_TYPE_WOODEN_ROLLER_COASTER */ (1ULL << TRACK_FLAT) | (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_WATER_SPLASH) | (1ULL << TRACK_SLOPE_CURVE_BANKED) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING),
|
||||
/* RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_BRAKES),
|
||||
/* RIDE_TYPE_WILD_MOUSE */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_CURVE_VERY_SMALL) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_ROTATION_CONTROL_TOGGLE),
|
||||
/* RIDE_TYPE_WILD_MOUSE */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_STEEP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_LONG) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_CURVE_VERY_SMALL) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_ROTATION_CONTROL_TOGGLE),
|
||||
/* RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_INLINE_TWIST_UNINVERTED) | (1ULL << TRACK_QUARTER_LOOP_UNINVERTED),
|
||||
/* RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_ALT */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_INLINE_TWIST_INVERTED) | (1ULL << TRACK_QUARTER_LOOP_INVERTED),
|
||||
/* RIDE_TYPE_FLYING_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_INLINE_TWIST_UNINVERTED) | (1ULL << TRACK_HALF_LOOP_UNINVERTED),
|
||||
|
||||
@@ -61,7 +61,7 @@ class TrackDesignFileIndex final : public FileIndex<TrackRepositoryItem>
|
||||
{
|
||||
private:
|
||||
static constexpr uint32 MAGIC_NUMBER = 0x58444954; // TIDX
|
||||
static constexpr uint16 VERSION = 1;
|
||||
static constexpr uint16 VERSION = 2;
|
||||
static constexpr auto PATTERN = "*.td4;*.td6";
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user