From 33e2878d2dfec42bdec9e11a05606a572504424b Mon Sep 17 00:00:00 2001 From: ZehMatt Date: Mon, 9 Aug 2021 19:47:14 +0300 Subject: [PATCH] Move ScVehicle into its own files --- OpenRCT2.xcodeproj/project.pbxproj | 32 +- src/openrct2/libopenrct2.vcxproj | 2 + .../scripting/bindings/entity/ScVehicle.cpp | 463 ++++++++++++++++++ .../scripting/bindings/entity/ScVehicle.hpp | 96 ++++ .../scripting/bindings/world/ScMap.hpp | 1 + 5 files changed, 582 insertions(+), 12 deletions(-) create mode 100644 src/openrct2/scripting/bindings/entity/ScVehicle.cpp create mode 100644 src/openrct2/scripting/bindings/entity/ScVehicle.hpp diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index 796d07d86a..fe40905938 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -772,6 +772,8 @@ 43D56A4FA1734F25995F4968 /* ScPark.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9AB8D336AB654D0280549A89 /* ScPark.hpp */; }; 0AFABA9549854247A5C61D52 /* ScScenario.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9F55F2291284217BA0E4E51 /* ScScenario.hpp */; }; F8A3BFA6806D448B86F1FF6A /* ScTile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 22D7DD798F054A068273739B /* ScTile.hpp */; }; + 73FB2E7C254144D9BAE4925A /* ScVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B734D45D6B1D45E89AD2E6CE /* ScVehicle.cpp */; }; + D274ADAB9B644AC581EA2299 /* ScVehicle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8E2C4C07B668487DA3493122 /* ScVehicle.hpp */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1846,6 +1848,8 @@ 9AB8D336AB654D0280549A89 /* ScPark.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ScPark.hpp; path = src/openrct2/scripting/bindings/world/ScPark.hpp; sourceTree = SOURCE_ROOT; }; A9F55F2291284217BA0E4E51 /* ScScenario.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ScScenario.hpp; path = src/openrct2/scripting/bindings/world/ScScenario.hpp; sourceTree = SOURCE_ROOT; }; 22D7DD798F054A068273739B /* ScTile.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ScTile.hpp; path = src/openrct2/scripting/bindings/world/ScTile.hpp; sourceTree = SOURCE_ROOT; }; + B734D45D6B1D45E89AD2E6CE /* ScVehicle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScVehicle.cpp; path = src/openrct2/scripting/bindings/entity/ScVehicle.cpp; sourceTree = SOURCE_ROOT; }; + 8E2C4C07B668487DA3493122 /* ScVehicle.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ScVehicle.hpp; path = src/openrct2/scripting/bindings/entity/ScVehicle.hpp; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1977,20 +1981,20 @@ 93DFD03324521C19001FCBAF /* HookEngine.h */, 93DFD03F24521C19001FCBAF /* Plugin.cpp */, 93DFD03124521C19001FCBAF /* Plugin.h */, - 93DFD03724521C19001FCBAF /* ScConfiguration.hpp */, - 93DFD03C24521C19001FCBAF /* ScConsole.hpp */, - 93DFD03E24521C19001FCBAF /* ScContext.hpp */, - 93DFD04124521C19001FCBAF /* ScDate.hpp */, - 93DFD03924521C19001FCBAF /* ScDisposable.hpp */, - 93DFD03A24521C19001FCBAF /* ScEntity.hpp */, - 93DFD04224521C19001FCBAF /* ScMap.hpp */, - 93DFD03424521C19001FCBAF /* ScNetwork.hpp */, - 93DFD03224521C19001FCBAF /* ScObject.hpp */, - 93DFD03D24521C19001FCBAF /* ScPark.hpp */, - 93DFD04024521C19001FCBAF /* ScRide.hpp */, + 93DFD03724521C19001FCBAF, + 93DFD03C24521C19001FCBAF, + 93DFD03E24521C19001FCBAF, + 93DFD04124521C19001FCBAF, + 93DFD03924521C19001FCBAF, + 93DFD03A24521C19001FCBAF, + 93DFD04224521C19001FCBAF, + 93DFD03424521C19001FCBAF, + 93DFD03224521C19001FCBAF, + 93DFD03D24521C19001FCBAF, + 93DFD04024521C19001FCBAF, 93DFD03824521C19001FCBAF /* ScriptEngine.cpp */, 93DFD04324521C19001FCBAF /* ScriptEngine.h */, - 93DFD03624521C19001FCBAF /* ScTile.hpp */, + 93DFD03624521C19001FCBAF, ); path = scripting; sourceTree = ""; @@ -3359,6 +3363,8 @@ isa = PBXGroup; children = ( 6DF61461D47C40CF92019B24 /* ScEntity.hpp */, + B734D45D6B1D45E89AD2E6CE /* ScVehicle.cpp */, + 8E2C4C07B668487DA3493122 /* ScVehicle.hpp */, ); name = entity; sourceTree = ""; @@ -3556,6 +3562,7 @@ 43D56A4FA1734F25995F4968 /* ScPark.hpp in Headers */, 0AFABA9549854247A5C61D52 /* ScScenario.hpp in Headers */, F8A3BFA6806D448B86F1FF6A /* ScTile.hpp in Headers */, + D274ADAB9B644AC581EA2299 /* ScVehicle.hpp in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4361,6 +4368,7 @@ E73A781EBC3C440A99D59821 /* EntityTweener.cpp in Sources */, 0746674FA0794ABF86E406A1 /* Litter.cpp in Sources */, B9B6F97CE24E4A559C7BBA0A /* RideConstruction.cpp in Sources */, + 73FB2E7C254144D9BAE4925A /* ScVehicle.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/src/openrct2/libopenrct2.vcxproj b/src/openrct2/libopenrct2.vcxproj index dd92804284..1d9e6af0da 100644 --- a/src/openrct2/libopenrct2.vcxproj +++ b/src/openrct2/libopenrct2.vcxproj @@ -405,6 +405,7 @@ + @@ -849,6 +850,7 @@ + diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.cpp b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp new file mode 100644 index 0000000000..8012d5b582 --- /dev/null +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.cpp @@ -0,0 +1,463 @@ +/***************************************************************************** + * Copyright (c) 2014-2021 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#include "ScVehicle.hpp" + +#ifdef ENABLE_SCRIPTING + +namespace OpenRCT2::Scripting +{ + static const DukEnumMap 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 }, + }); + + ScVehicle::ScVehicle(uint16_t id) + : ScEntity(id) + { + } + + void ScVehicle::Register(duk_context* ctx) + { + dukglue_set_base_class(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"); + } + + Vehicle* ScVehicle::GetVehicle() const + { + return ::GetEntity(_id); + } + + uint8_t ScVehicle::rideObject_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->ride_subtype : 0; + } + void ScVehicle::rideObject_set(uint8_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->ride_subtype = value; + } + } + + uint8_t ScVehicle::vehicleObject_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->vehicle_type : 0; + } + void ScVehicle::vehicleObject_set(uint8_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->vehicle_type = value; + } + } + + uint8_t ScVehicle::spriteType_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->Pitch : 0; + } + void ScVehicle::spriteType_set(uint8_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->Pitch = value; + } + } + + ride_id_t ScVehicle::ride_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->ride : 0; + } + void ScVehicle::ride_set(ride_id_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->ride = value; + } + } + + uint8_t ScVehicle::numSeats_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->num_seats & VEHICLE_SEAT_NUM_MASK : 0; + } + void ScVehicle::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 ScVehicle::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(ctx, vehicle->next_vehicle_on_train); + } + } + return ToDuk(ctx, nullptr); + } + void ScVehicle::nextCarOnTrain_set(DukValue value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + if (value.type() == DukValue::Type::NUMBER) + { + vehicle->next_vehicle_on_train = static_cast(value.as_int()); + } + else + { + vehicle->next_vehicle_on_train = SPRITE_INDEX_NULL; + } + } + } + + uint16_t ScVehicle::previousCarOnRide_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->prev_vehicle_on_ride : 0; + } + void ScVehicle::previousCarOnRide_set(uint16_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->prev_vehicle_on_ride = value; + } + } + + uint16_t ScVehicle::nextCarOnRide_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->next_vehicle_on_ride : 0; + } + void ScVehicle::nextCarOnRide_set(uint16_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->next_vehicle_on_ride = value; + } + } + + StationIndex ScVehicle::currentStation_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->current_station : 0; + } + void ScVehicle::currentStation_set(StationIndex value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->current_station = value; + } + } + + uint16_t ScVehicle::mass_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->mass : 0; + } + void ScVehicle::mass_set(uint16_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->mass = value; + } + } + + int32_t ScVehicle::acceleration_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->acceleration : 0; + } + void ScVehicle::acceleration_set(int32_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->acceleration = value; + } + } + + int32_t ScVehicle::velocity_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->velocity : 0; + } + void ScVehicle::velocity_set(int32_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->velocity = value; + } + } + + uint8_t ScVehicle::bankRotation_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->bank_rotation : 0; + } + void ScVehicle::bankRotation_set(uint8_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->bank_rotation = value; + } + } + + DukValue ScVehicle::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(ctx, colours); + } + return ToDuk(ctx, nullptr); + } + void ScVehicle::colours_set(const DukValue& value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + auto colours = FromDuk(value); + vehicle->colours.body_colour = colours.Body; + vehicle->colours.trim_colour = colours.Trim; + vehicle->colours_extended = colours.Ternary; + } + } + + DukValue ScVehicle::trackLocation_get() const + { + auto ctx = GetContext()->GetScriptEngine().GetContext(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + auto coords = CoordsXYZD(vehicle->TrackLocation, vehicle->GetTrackDirection()); + return ToDuk(ctx, coords); + } + return ToDuk(ctx, nullptr); + } + void ScVehicle::trackLocation_set(const DukValue& value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + auto coords = FromDuk(value); + vehicle->TrackLocation = CoordsXYZ(coords.x, coords.y, coords.z); + vehicle->SetTrackDirection(coords.direction); + } + } + + uint16_t ScVehicle::trackProgress_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->track_progress : 0; + } + + int32_t ScVehicle::remainingDistance_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->remaining_distance : 0; + } + + uint8_t ScVehicle::poweredAcceleration_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->powered_acceleration : 0; + } + void ScVehicle::poweredAcceleration_set(uint8_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->powered_acceleration = value; + } + } + + uint8_t ScVehicle::poweredMaxSpeed_get() const + { + auto vehicle = GetVehicle(); + return vehicle != nullptr ? vehicle->speed : 0; + } + void ScVehicle::poweredMaxSpeed_set(uint8_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->speed = value; + } + } + + std::string ScVehicle::status_get() const + { + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + return std::string(VehicleStatusMap[vehicle->status]); + } + return {}; + } + void ScVehicle::status_set(const std::string& value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->status = VehicleStatusMap[value]; + } + } + + std::vector ScVehicle::guests_get() const + { + auto ctx = GetContext()->GetScriptEngine().GetContext(); + std::vector 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(ctx, peep)); + len = i + 1; + } + } + result.resize(len); + } + return result; + } + + DukValue ScVehicle::gForces_get() const + { + auto ctx = GetContext()->GetScriptEngine().GetContext(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + GForces gForces = vehicle->GetGForces(); + return ToDuk(ctx, gForces); + } + return ToDuk(ctx, nullptr); + } + + void ScVehicle::travelBy(int32_t value) + { + ThrowIfGameStateNotMutable(); + auto vehicle = GetVehicle(); + if (vehicle != nullptr) + { + vehicle->MoveRelativeDistance(value); + } + } + +} // namespace OpenRCT2::Scripting + +#endif diff --git a/src/openrct2/scripting/bindings/entity/ScVehicle.hpp b/src/openrct2/scripting/bindings/entity/ScVehicle.hpp new file mode 100644 index 0000000000..57d29c6194 --- /dev/null +++ b/src/openrct2/scripting/bindings/entity/ScVehicle.hpp @@ -0,0 +1,96 @@ +/***************************************************************************** + * Copyright (c) 2014-2021 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#ifdef ENABLE_SCRIPTING + +# include "../../../ride/Ride.h" +# include "ScEntity.hpp" + +namespace OpenRCT2::Scripting +{ + class ScVehicle : public ScEntity + { + public: + ScVehicle(uint16_t id); + + static void Register(duk_context* ctx); + + private: + Vehicle* GetVehicle() const; + + uint8_t rideObject_get() const; + void rideObject_set(uint8_t value); + + uint8_t vehicleObject_get() const; + void vehicleObject_set(uint8_t value); + + uint8_t spriteType_get() const; + void spriteType_set(uint8_t value); + + ride_id_t ride_get() const; + void ride_set(ride_id_t value); + + uint8_t numSeats_get() const; + void numSeats_set(uint8_t value); + + DukValue nextCarOnTrain_get() const; + void nextCarOnTrain_set(DukValue value); + + uint16_t previousCarOnRide_get() const; + void previousCarOnRide_set(uint16_t value); + + uint16_t nextCarOnRide_get() const; + void nextCarOnRide_set(uint16_t value); + + StationIndex currentStation_get() const; + void currentStation_set(StationIndex value); + + uint16_t mass_get() const; + void mass_set(uint16_t value); + + int32_t acceleration_get() const; + void acceleration_set(int32_t value); + + int32_t velocity_get() const; + void velocity_set(int32_t value); + + uint8_t bankRotation_get() const; + void bankRotation_set(uint8_t value); + + DukValue colours_get() const; + void colours_set(const DukValue& value); + + DukValue trackLocation_get() const; + void trackLocation_set(const DukValue& value); + + uint16_t trackProgress_get() const; + + int32_t remainingDistance_get() const; + + uint8_t poweredAcceleration_get() const; + void poweredAcceleration_set(uint8_t value); + + uint8_t poweredMaxSpeed_get() const; + void poweredMaxSpeed_set(uint8_t value); + + std::string status_get() const; + void status_set(const std::string& value); + + std::vector guests_get() const; + + DukValue gForces_get() const; + + void travelBy(int32_t value); + }; + +} // namespace OpenRCT2::Scripting + +#endif diff --git a/src/openrct2/scripting/bindings/world/ScMap.hpp b/src/openrct2/scripting/bindings/world/ScMap.hpp index e7be5ad335..461ec53c56 100644 --- a/src/openrct2/scripting/bindings/world/ScMap.hpp +++ b/src/openrct2/scripting/bindings/world/ScMap.hpp @@ -24,6 +24,7 @@ # include "../../../world/Particle.h" # include "../../Duktape.hpp" # include "../entity/ScEntity.hpp" +# include "../entity/ScVehicle.hpp" # include "../ride/ScRide.hpp" # include "../world/ScTile.hpp"