Fix includes

This commit is contained in:
ZehMatt 2021-08-09 19:46:29 +03:00
parent adf5829cd6
commit 244025ec17
No known key found for this signature in database
GPG Key ID: 18CE582C71A225B0
1 changed files with 10 additions and 460 deletions

View File

@ -11,17 +11,17 @@
#ifdef ENABLE_SCRIPTING
# include "../Context.h"
# include "../common.h"
# include "../peep/Peep.h"
# include "../peep/Staff.h"
# include "../../../Context.h"
# include "../../../common.h"
# include "../../../peep/Peep.h"
# include "../../../peep/Staff.h"
# include "../../../util/Util.h"
# include "../../../world/EntityList.h"
# include "../../../world/Litter.h"
# include "../../../world/Sprite.h"
# include "../../Duktape.hpp"
# include "../../ScriptEngine.h"
# include "../ride/ScRide.hpp"
# include "../util/Util.h"
# include "../world/EntityList.h"
# include "../world/Litter.h"
# include "../world/Sprite.h"
# include "Duktape.hpp"
# include "ScriptEngine.h"
# include <algorithm>
# include <string_view>
@ -210,456 +210,6 @@ namespace OpenRCT2::Scripting
}
};
static const DukEnumMap<Vehicle::Status> VehicleStatusMap({
{ "moving_to_end_of_station", Vehicle::Status::MovingToEndOfStation },
{ "waiting_for_passengers", Vehicle::Status::WaitingForPassengers },
{ "waiting_to_depart", Vehicle::Status::WaitingToDepart },
{ "departing", Vehicle::Status::Departing },
{ "travelling", Vehicle::Status::Travelling },
{ "arriving", Vehicle::Status::Arriving },
{ "unloading_passengers", Vehicle::Status::UnloadingPassengers },
{ "travelling_boat", Vehicle::Status::TravellingBoat },
{ "crashing", Vehicle::Status::Crashing },
{ "crashed", Vehicle::Status::Crashed },
{ "travelling_dodgems", Vehicle::Status::TravellingDodgems },
{ "swinging", Vehicle::Status::Swinging },
{ "rotating", Vehicle::Status::Rotating },
{ "ferris_wheel_rotating", Vehicle::Status::FerrisWheelRotating },
{ "simulator_operating", Vehicle::Status::SimulatorOperating },
{ "showing_film", Vehicle::Status::ShowingFilm },
{ "space_rings_operating", Vehicle::Status::SpaceRingsOperating },
{ "top_spin_operating", Vehicle::Status::TopSpinOperating },
{ "haunted_house_operating", Vehicle::Status::HauntedHouseOperating },
{ "doing_circus_show", Vehicle::Status::DoingCircusShow },
{ "crooked_house_operating", Vehicle::Status::CrookedHouseOperating },
{ "waiting_for_cable_lift", Vehicle::Status::WaitingForCableLift },
{ "travelling_cable_lift", Vehicle::Status::TravellingCableLift },
{ "stopping", Vehicle::Status::Stopping },
{ "waiting_for_passengers_17", Vehicle::Status::WaitingForPassengers17 },
{ "waiting_to_start", Vehicle::Status::WaitingToStart },
{ "starting", Vehicle::Status::Starting },
{ "operating_1a", Vehicle::Status::Operating1A },
{ "stopping_1b", Vehicle::Status::Stopping1B },
{ "unloading_passengers_1c", Vehicle::Status::UnloadingPassengers1C },
{ "stopped_by_block_brake", Vehicle::Status::StoppedByBlockBrakes },
});
class ScVehicle : public ScEntity
{
public:
ScVehicle(uint16_t id)
: ScEntity(id)
{
}
static void Register(duk_context* ctx)
{
dukglue_set_base_class<ScEntity, ScVehicle>(ctx);
dukglue_register_property(ctx, &ScVehicle::ride_get, &ScVehicle::ride_set, "ride");
dukglue_register_property(ctx, &ScVehicle::rideObject_get, &ScVehicle::rideObject_set, "rideObject");
dukglue_register_property(ctx, &ScVehicle::vehicleObject_get, &ScVehicle::vehicleObject_set, "vehicleObject");
dukglue_register_property(ctx, &ScVehicle::spriteType_get, &ScVehicle::spriteType_set, "spriteType");
dukglue_register_property(ctx, &ScVehicle::numSeats_get, &ScVehicle::numSeats_set, "numSeats");
dukglue_register_property(ctx, &ScVehicle::nextCarOnTrain_get, &ScVehicle::nextCarOnTrain_set, "nextCarOnTrain");
dukglue_register_property(
ctx, &ScVehicle::previousCarOnRide_get, &ScVehicle::previousCarOnRide_set, "previousCarOnRide");
dukglue_register_property(ctx, &ScVehicle::nextCarOnRide_get, &ScVehicle::nextCarOnRide_set, "nextCarOnRide");
dukglue_register_property(ctx, &ScVehicle::currentStation_get, &ScVehicle::currentStation_set, "currentStation");
dukglue_register_property(ctx, &ScVehicle::mass_get, &ScVehicle::mass_set, "mass");
dukglue_register_property(ctx, &ScVehicle::acceleration_get, &ScVehicle::acceleration_set, "acceleration");
dukglue_register_property(ctx, &ScVehicle::velocity_get, &ScVehicle::velocity_set, "velocity");
dukglue_register_property(ctx, &ScVehicle::bankRotation_get, &ScVehicle::bankRotation_set, "bankRotation");
dukglue_register_property(ctx, &ScVehicle::colours_get, &ScVehicle::colours_set, "colours");
dukglue_register_property(ctx, &ScVehicle::trackLocation_get, &ScVehicle::trackLocation_set, "trackLocation");
dukglue_register_property(ctx, &ScVehicle::trackProgress_get, nullptr, "trackProgress");
dukglue_register_property(ctx, &ScVehicle::remainingDistance_get, nullptr, "remainingDistance");
dukglue_register_property(
ctx, &ScVehicle::poweredAcceleration_get, &ScVehicle::poweredAcceleration_set, "poweredAcceleration");
dukglue_register_property(ctx, &ScVehicle::poweredMaxSpeed_get, &ScVehicle::poweredMaxSpeed_set, "poweredMaxSpeed");
dukglue_register_property(ctx, &ScVehicle::status_get, &ScVehicle::status_set, "status");
dukglue_register_property(ctx, &ScVehicle::guests_get, nullptr, "peeps");
dukglue_register_property(ctx, &ScVehicle::guests_get, nullptr, "guests");
dukglue_register_property(ctx, &ScVehicle::gForces_get, nullptr, "gForces");
dukglue_register_method(ctx, &ScVehicle::travelBy, "travelBy");
}
private:
Vehicle* GetVehicle() const
{
return ::GetEntity<Vehicle>(_id);
}
uint8_t rideObject_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->ride_subtype : 0;
}
void rideObject_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->ride_subtype = value;
}
}
uint8_t vehicleObject_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->vehicle_type : 0;
}
void vehicleObject_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->vehicle_type = value;
}
}
uint8_t spriteType_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->Pitch : 0;
}
void spriteType_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->Pitch = value;
}
}
ride_id_t ride_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->ride : 0;
}
void ride_set(ride_id_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->ride = value;
}
}
uint8_t numSeats_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->num_seats & VEHICLE_SEAT_NUM_MASK : 0;
}
void numSeats_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->num_seats &= ~VEHICLE_SEAT_NUM_MASK;
vehicle->num_seats |= value & VEHICLE_SEAT_NUM_MASK;
}
}
DukValue nextCarOnTrain_get() const
{
auto ctx = GetContext()->GetScriptEngine().GetContext();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
if (vehicle->next_vehicle_on_train != SPRITE_INDEX_NULL)
{
return ToDuk<int32_t>(ctx, vehicle->next_vehicle_on_train);
}
}
return ToDuk(ctx, nullptr);
}
void nextCarOnTrain_set(DukValue value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
if (value.type() == DukValue::Type::NUMBER)
{
vehicle->next_vehicle_on_train = static_cast<uint16_t>(value.as_int());
}
else
{
vehicle->next_vehicle_on_train = SPRITE_INDEX_NULL;
}
}
}
uint16_t previousCarOnRide_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->prev_vehicle_on_ride : 0;
}
void previousCarOnRide_set(uint16_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->prev_vehicle_on_ride = value;
}
}
uint16_t nextCarOnRide_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->next_vehicle_on_ride : 0;
}
void nextCarOnRide_set(uint16_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->next_vehicle_on_ride = value;
}
}
StationIndex currentStation_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->current_station : 0;
}
void currentStation_set(StationIndex value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->current_station = value;
}
}
uint16_t mass_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->mass : 0;
}
void mass_set(uint16_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->mass = value;
}
}
int32_t acceleration_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->acceleration : 0;
}
void acceleration_set(int32_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->acceleration = value;
}
}
int32_t velocity_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->velocity : 0;
}
void velocity_set(int32_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->velocity = value;
}
}
uint8_t bankRotation_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->bank_rotation : 0;
}
void bankRotation_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->bank_rotation = value;
}
}
DukValue colours_get() const
{
auto ctx = GetContext()->GetScriptEngine().GetContext();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
VehicleColour colours;
colours.Body = vehicle->colours.body_colour;
colours.Trim = vehicle->colours.trim_colour;
colours.Ternary = vehicle->colours_extended;
return ToDuk<VehicleColour>(ctx, colours);
}
return ToDuk(ctx, nullptr);
}
void colours_set(const DukValue& value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
auto colours = FromDuk<VehicleColour>(value);
vehicle->colours.body_colour = colours.Body;
vehicle->colours.trim_colour = colours.Trim;
vehicle->colours_extended = colours.Ternary;
}
}
DukValue trackLocation_get() const
{
auto ctx = GetContext()->GetScriptEngine().GetContext();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
auto coords = CoordsXYZD(vehicle->TrackLocation, vehicle->GetTrackDirection());
return ToDuk<CoordsXYZD>(ctx, coords);
}
return ToDuk(ctx, nullptr);
}
void trackLocation_set(const DukValue& value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
auto coords = FromDuk<CoordsXYZD>(value);
vehicle->TrackLocation = CoordsXYZ(coords.x, coords.y, coords.z);
vehicle->SetTrackDirection(coords.direction);
}
}
uint16_t trackProgress_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->track_progress : 0;
}
int32_t remainingDistance_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->remaining_distance : 0;
}
uint8_t poweredAcceleration_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->powered_acceleration : 0;
}
void poweredAcceleration_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->powered_acceleration = value;
}
}
uint8_t poweredMaxSpeed_get() const
{
auto vehicle = GetVehicle();
return vehicle != nullptr ? vehicle->speed : 0;
}
void poweredMaxSpeed_set(uint8_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->speed = value;
}
}
std::string status_get() const
{
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
return std::string(VehicleStatusMap[vehicle->status]);
}
return {};
}
void status_set(const std::string& value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->status = VehicleStatusMap[value];
}
}
std::vector<DukValue> guests_get() const
{
auto ctx = GetContext()->GetScriptEngine().GetContext();
std::vector<DukValue> result;
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
size_t len = 0;
for (size_t i = 0; i < std::size(vehicle->peep); i++)
{
auto peep = vehicle->peep[i];
if (peep == SPRITE_INDEX_NULL)
{
result.push_back(ToDuk(ctx, nullptr));
}
else
{
result.push_back(ToDuk<int32_t>(ctx, peep));
len = i + 1;
}
}
result.resize(len);
}
return result;
}
DukValue gForces_get() const
{
auto ctx = GetContext()->GetScriptEngine().GetContext();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
GForces gForces = vehicle->GetGForces();
return ToDuk<GForces>(ctx, gForces);
}
return ToDuk(ctx, nullptr);
}
void travelBy(int32_t value)
{
ThrowIfGameStateNotMutable();
auto vehicle = GetVehicle();
if (vehicle != nullptr)
{
vehicle->MoveRelativeDistance(value);
}
}
};
static const DukEnumMap<uint32_t> PeepFlagMap({
{ "leavingPark", PEEP_FLAGS_LEAVING_PARK },
{ "slowWalk", PEEP_FLAGS_SLOW_WALK },