From a03453da49deb075a4b3c4c365722d83f5a766c7 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 28 Jan 2022 23:31:38 +0000 Subject: [PATCH] Add properties to set lighthouse and transmitter generation amounts --- docs/newgrf-additions.html | 10 ++++++++++ src/newgrf.cpp | 11 +++++++++++ src/newgrf_extension.cpp | 3 +++ src/newgrf_extension.h | 2 ++ 4 files changed, 26 insertions(+) diff --git a/docs/newgrf-additions.html b/docs/newgrf-additions.html index 10ef583aad..70c28fe32e 100644 --- a/docs/newgrf-additions.html +++ b/docs/newgrf-additions.html @@ -310,6 +310,16 @@

This is indicated by the feature name: action0_global_extra_station_names, version 1

+

Lighthouse object map generation amount (mappable property: global_lighthouse_generate_amount)

+

This sets the map generation amount value for the lighthouse default object (0 is no generation, 255 is maximum).
+ The Action 0 ID field is ignored. The property length is 1 byte. +

+

This is indicated by the feature name: action0_global_default_object_generate_amount, version 1

+

Transmitter object map generation amount (mappable property: global_transmitter_generate_amount)

+

This sets the map generation amount value for the transmitter default object (0 is no generation, 255 is maximum).
+ The Action 0 ID field is ignored. The property length is 1 byte. +

+

This is indicated by the feature name: action0_global_default_object_generate_amount, version 1


Action 0 - Signals (Feature 0E)

Note that Action 0 feature 0E is not supported (does nothing) in standard OpenTTD.

diff --git a/src/newgrf.cpp b/src/newgrf.cpp index ef4eff5236..734efc66ee 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2918,6 +2918,15 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, co break; } + case A0RPI_GLOBALVAR_LIGHTHOUSE_GENERATE_AMOUNT: + case A0RPI_GLOBALVAR_TRANSMITTER_GENERATE_AMOUNT: { + if (MappedPropertyLengthMismatch(buf, 1, mapping_entry)) break; + extern ObjectSpec _object_specs[NUM_OBJECTS]; + ObjectType type = (prop == A0RPI_GLOBALVAR_LIGHTHOUSE_GENERATE_AMOUNT) ? OBJECT_LIGHTHOUSE : OBJECT_TRANSMITTER; + _object_specs[type].generate_amount = buf->ReadByte(); + break; + } + default: ret = HandleAction0PropertyDefault(buf, prop); break; @@ -2987,6 +2996,8 @@ static ChangeInfoResult GlobalVarReserveInfo(uint gvid, int numinfo, int prop, c break; case A0RPI_GLOBALVAR_EXTRA_STATION_NAMES: + case A0RPI_GLOBALVAR_LIGHTHOUSE_GENERATE_AMOUNT: + case A0RPI_GLOBALVAR_TRANSMITTER_GENERATE_AMOUNT: buf->Skip(buf->ReadExtendedByte()); break; diff --git a/src/newgrf_extension.cpp b/src/newgrf_extension.cpp index c87a728c99..78b3373e81 100644 --- a/src/newgrf_extension.cpp +++ b/src/newgrf_extension.cpp @@ -40,6 +40,7 @@ extern const GRFFeatureInfo _grf_feature_list[] = { GRFFeatureInfo("action0_railtype_extra_aspects", 1), GRFFeatureInfo("action0_roadtype_extra_flags", 1), GRFFeatureInfo("action0_global_extra_station_names", 1), + GRFFeatureInfo("action0_global_default_object_generate_amount", 1), GRFFeatureInfo("action0_signals_programmable_signals", 1), GRFFeatureInfo("action0_signals_no_entry_signals", 1), GRFFeatureInfo("action0_signals_restricted_signals", 1), @@ -74,6 +75,8 @@ extern const GRFPropertyMapDefinition _grf_action0_remappable_properties[] = { GRFPropertyMapDefinition(GSF_ROADTYPES, A0RPI_ROADTYPE_EXTRA_FLAGS, "roadtype_extra_flags"), GRFPropertyMapDefinition(GSF_TRAMTYPES, A0RPI_ROADTYPE_EXTRA_FLAGS, "roadtype_extra_flags"), GRFPropertyMapDefinition(GSF_GLOBALVAR, A0RPI_GLOBALVAR_EXTRA_STATION_NAMES, "global_extra_station_names"), + GRFPropertyMapDefinition(GSF_GLOBALVAR, A0RPI_GLOBALVAR_LIGHTHOUSE_GENERATE_AMOUNT, "global_lighthouse_generate_amount"), + GRFPropertyMapDefinition(GSF_GLOBALVAR, A0RPI_GLOBALVAR_TRANSMITTER_GENERATE_AMOUNT, "global_transmitter_generate_amount"), GRFPropertyMapDefinition(GSF_SIGNALS, A0RPI_SIGNALS_ENABLE_PROGRAMMABLE_SIGNALS, "signals_enable_programmable_signals"), GRFPropertyMapDefinition(GSF_SIGNALS, A0RPI_SIGNALS_ENABLE_NO_ENTRY_SIGNALS, "signals_enable_no_entry_signals"), GRFPropertyMapDefinition(GSF_SIGNALS, A0RPI_SIGNALS_ENABLE_RESTRICTED_SIGNALS, "signals_enable_restricted_signals"), diff --git a/src/newgrf_extension.h b/src/newgrf_extension.h index e5f069a84e..bf14d0b02b 100644 --- a/src/newgrf_extension.h +++ b/src/newgrf_extension.h @@ -27,6 +27,8 @@ enum Action0RemapPropertyIds { A0RPI_RAILTYPE_EXTRA_ASPECTS, A0RPI_ROADTYPE_EXTRA_FLAGS, A0RPI_GLOBALVAR_EXTRA_STATION_NAMES, + A0RPI_GLOBALVAR_LIGHTHOUSE_GENERATE_AMOUNT, + A0RPI_GLOBALVAR_TRANSMITTER_GENERATE_AMOUNT, A0RPI_SIGNALS_ENABLE_PROGRAMMABLE_SIGNALS, A0RPI_SIGNALS_ENABLE_NO_ENTRY_SIGNALS, A0RPI_SIGNALS_ENABLE_RESTRICTED_SIGNALS,