1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-23 06:44:38 +01:00

[Plugin] Add banner index to banner creation result

This commit is contained in:
Stephan Spengler
2024-05-29 22:35:35 +02:00
committed by GitHub
parent c00fe1e7d6
commit 73043106ed
5 changed files with 36 additions and 7 deletions

View File

@@ -7,6 +7,7 @@
- Feature: [#21893, #22065] On launch, the game now indicates what system is being initialised.
- Feature: [#21913] [Plugin] Allow precise and safe control of peep animations.
- Feature: [#22046] [Plugin] Add interface for crashed vehicle particle.
- Feature: [#22085] [Plugin] The result of actions that create banners now includes the bannerIndex.
- Feature: [#22087] [Plugin] Expose guests favourite rides to the plugin API.
- Improved: [#19870] Allow using new colours in UI themes.
- Improved: [#21853] Dropdowns now automatically use multiple columns if they are too tall for the screen.

View File

@@ -317,7 +317,7 @@ declare global {
queryAction(action: string, args: object, callback?: (result: GameActionResult) => void): void;
queryAction(action: ActionType, args: object, callback?: (result: GameActionResult) => void): void;
queryAction(action: "balloonpress", args: BalloonPressArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
queryAction(action: "bannerremove", args: BannerRemoveArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "bannersetcolour", args: BannerSetColourArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "bannersetname", args: BannerSetNameArgs, callback?: (result: GameActionResult) => void): void;
@@ -339,7 +339,7 @@ declare global {
queryAction(action: "landsetheight", args: LandSetHeightArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "landsetrights", args: LandSetRightsArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "landsmooth", args: LandSmoothArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
queryAction(action: "largesceneryremove", args: LargeSceneryRemoveArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "largescenerysetcolour", args: LargeScenerySetColourArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "loadorquit", args: LoadOrQuitArgs, callback?: (result: GameActionResult) => void): void;
@@ -392,7 +392,7 @@ declare global {
queryAction(action: "trackplace", args: TrackPlaceArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "trackremove", args: TrackRemoveArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "tracksetbrakespeed", args: TrackSetBrakeSpeedArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
queryAction(action: "wallremove", args: WallRemoveArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "wallsetcolour", args: WallSetColourArgs, callback?: (result: GameActionResult) => void): void;
queryAction(action: "waterlower", args: WaterLowerArgs, callback?: (result: GameActionResult) => void): void;
@@ -409,7 +409,7 @@ declare global {
executeAction(action: string, args: object, callback?: (result: GameActionResult) => void): void;
executeAction(action: ActionType, args: object, callback?: (result: GameActionResult) => void): void;
executeAction(action: "balloonpress", args: BalloonPressArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "bannerplace", args: BannerPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
executeAction(action: "bannerremove", args: BannerRemoveArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "bannersetcolour", args: BannerSetColourArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "bannersetname", args: BannerSetNameArgs, callback?: (result: GameActionResult) => void): void;
@@ -431,7 +431,7 @@ declare global {
executeAction(action: "landsetheight", args: LandSetHeightArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "landsetrights", args: LandSetRightsArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "landsmooth", args: LandSmoothArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "largesceneryplace", args: LargeSceneryPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
executeAction(action: "largesceneryremove", args: LargeSceneryRemoveArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "largescenerysetcolour", args: LargeScenerySetColourArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "loadorquit", args: LoadOrQuitArgs, callback?: (result: GameActionResult) => void): void;
@@ -484,7 +484,7 @@ declare global {
executeAction(action: "trackplace", args: TrackPlaceArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "trackremove", args: TrackRemoveArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "tracksetbrakespeed", args: TrackSetBrakeSpeedArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "wallplace", args: WallPlaceArgs, callback?: (result: BannerCreateActionResult) => void): void;
executeAction(action: "wallremove", args: WallRemoveArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "wallsetcolour", args: WallSetColourArgs, callback?: (result: GameActionResult) => void): void;
executeAction(action: "waterlower", args: WaterLowerArgs, callback?: (result: GameActionResult) => void): void;
@@ -1343,6 +1343,10 @@ declare global {
expenditureType?: ExpenditureType;
}
interface BannerCreateActionResult extends GameActionResult {
readonly bannerIndex?: number;
}
interface RideCreateActionResult extends GameActionResult {
readonly ride?: number;
}

View File

@@ -103,6 +103,7 @@ GameActions::Result BannerPlaceAction::Query() const
GameActions::Status::InvalidParameters, STR_CANT_POSITION_THIS_HERE, STR_ERR_BANNER_ELEMENT_NOT_FOUND);
}
res.Cost = bannerEntry->price;
res.SetData(BannerPlaceActionResult{});
return res;
}

View File

@@ -12,10 +12,13 @@
# include "ScriptEngine.h"
# include "../PlatformEnvironment.h"
# include "../actions/BannerPlaceAction.h"
# include "../actions/CustomAction.h"
# include "../actions/GameAction.h"
# include "../actions/LargeSceneryPlaceAction.h"
# include "../actions/RideCreateAction.h"
# include "../actions/StaffHireNewAction.h"
# include "../actions/WallPlaceAction.h"
# include "../config/Config.h"
# include "../core/EnumMap.hpp"
# include "../core/File.h"
@@ -1222,6 +1225,26 @@ DukValue ScriptEngine::GameActionResultToDuk(const GameAction& action, const Gam
}
}
}
// BannerPlaceAction, LargeSceneryPlaceAction, WallPlaceAction
auto bannerId = BannerIndex::GetNull();
switch (action.GetType())
{
case GameCommand::PlaceBanner:
bannerId = result.GetData<BannerPlaceActionResult>().bannerId;
break;
case GameCommand::PlaceLargeScenery:
bannerId = result.GetData<LargeSceneryPlaceActionResult>().bannerId;
break;
case GameCommand::PlaceWall:
bannerId = result.GetData<WallPlaceActionResult>().BannerId;
break;
default:
break;
}
if (!bannerId.IsNull())
{
obj.Set("bannerIndex", bannerId.ToUnderlying());
}
return obj.Take();
}

View File

@@ -47,7 +47,7 @@ namespace OpenRCT2
namespace OpenRCT2::Scripting
{
static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 91;
static constexpr int32_t OPENRCT2_PLUGIN_API_VERSION = 92;
// Versions marking breaking changes.
static constexpr int32_t API_VERSION_33_PEEP_DEPRECATION = 33;