Peter Nelson
56085be9bd
Codechange: Move includes for common STL headers to stdafx.
2023-05-17 10:14:41 +01:00
Patric Stout
199e41c762
Codechange: use default dtor instead of empty ( #10826 )
2023-05-14 23:31:03 +02:00
Rubidium
f9b5bc7ee6
Cleanup: the need for SQAutoFreePointers has gone
2023-05-14 22:54:10 +02:00
Rubidium
d9e93edc8b
Codechange: replace 'const char *' script API parameters with std::string
2023-05-14 22:54:10 +02:00
Rubidium
bbcb55ebc9
Codechange: use std::string as script API return type
2023-05-14 22:54:10 +02:00
Rubidium
b24a6bb8f3
Codechange: use std::string for script log calls
2023-05-14 22:54:10 +02:00
Rubidium
e035705239
Codechange: introduce and use std::string variant of sq_throwerror
2023-05-14 22:54:10 +02:00
Peter Nelson
726d05b22b
Fix: Don't list unavailable road types for game scripts.
2023-05-12 21:03:13 +02:00
Peter Nelson
e6740046ee
Codechange: Use range-for iteration.
2023-05-11 07:58:55 +01:00
Rubidium
12085d088c
Cleanup: remove obsolete string_compare_type
2023-05-09 23:14:48 +02:00
Rubidium
bc389a86c9
Codechange: use std::string as std::map key, instead of stredup string
2023-05-09 23:14:48 +02:00
Peter Nelson
bf9caa425b
Change: Units-system can convert from N to kN, don't preconvert.
...
This allows force to passed as is and avoid premature rounding.
The AI function "GetMaxTractiveEffort" still needs to return kN to avoid breaking the API.
2023-05-09 23:02:51 +02:00
Rubidium
68ff3fd062
Change: include fmt.h C++ headers in stdafx.h
...
This to prevent compilation issues between runs with and without precompiled
headers. Also remove the headers from the rest of the code base as they are
not needed there anymore, although they do relatively little harm.
2023-05-08 16:49:23 +02:00
Rubidium
fb856e16c1
Codechange: replace some min/clamp constructs to ClampTo
2023-05-06 21:26:13 +02:00
PeterN
b67cf7f94a
Change: Replace ScriptLog data array with std::deque. ( #10770 )
...
Due to cyclic header dependency this requires moving the data types used
by ScriptLog out of the ScriptLog class.
2023-05-06 14:54:58 +00:00
Tyler Trahan
6501f84b4a
Codechange: Move calendar date functions inside TimerGameCalendar ( #10753 )
2023-05-04 13:14:12 +00:00
Tyler Trahan
930f0a16d8
Codechange: Define Date/Year/Month/Day within TimerGameCalendar class
2023-04-26 07:14:03 -04:00
Patric Stout
7aa2b9ab0a
Codechange: move all date-related variables inside the timer ( #10706 )
2023-04-24 15:56:01 +00:00
Rubidium
8f24901843
Codechange: replace printf with PRINTF macros by fmt::format for scripts
2023-04-24 17:51:25 +02:00
SamuXarick
f8b5661d28
Change: Allow GS access to ScriptGroup functions
2023-04-17 17:59:16 +02:00
SamuXarick
f225f36c3d
Change: Allow GS access to ScriptGameSettings.IsDisabledVehicleType
2023-04-17 17:59:16 +02:00
SamuXarick
fd26a44c9e
Change: Allow GS access to more ScriptCompany functions
2023-04-17 17:59:16 +02:00
Andy
8b1960a41c
Change: Allow GS access to more ScriptOrder functions
2023-04-17 17:59:16 +02:00
PeterN
e97bf271dc
Codechange: Make SpriteType, CargoSortType, SourceType and ScriptType enum classes. ( #10663 )
...
This avoids a (soft) namespace conflict between the four ST_* enums.
2023-04-16 20:00:55 +01:00
Charles Pigott
6fc28d649e
Cleanup: Unused alloca definitions and includes
2023-04-15 16:57:00 +01:00
dP
e2f1cd44dc
Change: Increase max cargo age and let min cargo payment approach zero. ( #10596 )
...
Co-authored-by: Michael Lutz <michi@icosahedron.de>
2023-04-10 12:34:28 +02:00
glx22
3a48d6e60f
Fix 991a797: [Script] Allow STRINGN consumption to be different than expected
2023-04-08 00:14:12 +02:00
Peter Nelson
82c70ed3b8
Change: Expose ObjectSpec vector to simplify iteration.
2023-04-02 22:42:38 +01:00
Peter Nelson
1f46f080f0
Codechange: Store objectspecs in std::vector instead of flat array.
2023-04-02 22:42:38 +01:00
Rubidium
1e4a89177e
Fix: crashes to desktop from game scripts when companies disappear
...
When a game script is in company mode, it pretends to be another company. When
that company disappear (bankruptcy/merger), the game script still uses that
company and it keeps calling functions as if it is that company.
For example, ScriptEngine::IsBuildable internally dereferences Company without
checks, causing a null dereference for any ScriptEngine function when called
from a company scope of a company that has disappeared.
Guard against this by extending the ScriptCompanyScope::IsValid check to also
check for the company still being active.
2023-03-08 22:33:47 +01:00
Rubidium
717f79ff22
Add: deity mode enforcement checks to functions with command or company access
...
Command functions are those that call ScriptObject::Command, and functions
with company access are any that call ScriptObject::GetCompany. This is a bit
over-protective, but having the check everywhere makes it easier to validate
that no check is missing automatically instead of by review.
2023-03-08 22:33:47 +01:00
Rubidium
8d443d1379
Add: company mode enforcement checks to functions with command or company access
...
Command functions are those that call ScriptObject::Command, and functions
with company access are any that call ScriptObject::GetCompany. This is a bit
over-protective, but having the check everywhere makes it easier to validate
that no check is missing automatically instead of by review.
2023-03-08 22:33:47 +01:00
Rubidium
534f2419ad
Add: precondition checks to functions that work with both valid company and deity
...
These are functions that either use ScriptObject::Command or ScriptObject::GetCompany.
This is a bit over-protective, but having the check everywhere makes it easier to
validate that no check is missing automatically instead of by review.
At this moment these checks will not do anything useful, as either IsValid or
IsDeity from ScriptCompanyMode returns true, but that will change later.
2023-03-08 22:33:47 +01:00
Rubidium
a79f97c022
Change: upon an invalid company mode, set ERR_PRECONDITION_INVALID_COMPANY instead of ERR_PRECONDITION_INVALID
2023-03-08 22:33:47 +01:00
Rubidium
3287acd114
Fix 13528bfcd0: bank balance command allows int64, GS was limited to int32
2023-03-07 23:20:04 +01:00
Rubidium
83946ca31d
Codechange: use GSCompanyMode::IsValid, IsDeity, and the precondition helpers
...
Direct 1:1 replacements in the code, and comments now refer to either
GSCompanyMode::IsValid or GSCompanyMode::IsDeity instead of several variations
on "company mode active" or "no company mode active".
2023-03-06 22:34:09 +01:00
Rubidium
cada2ca310
Add: GSCompanyMode::IsValid and IsDeity, and precondition enforcement helpers
2023-03-06 22:34:09 +01:00
glx22
ca149447d7
Codechange: Use SQInteger for generic numbers in script_window
2023-03-06 00:32:12 +01:00
glx22
f752d96125
Codechange: Use SQInteger for generic numbers in script_vehicle
2023-03-06 00:32:12 +01:00
glx22
4e48bf2e16
Codechange: Use SQInteger for generic numbers in script_town
2023-03-06 00:32:12 +01:00
glx22
18fe0a4046
Codechange: Use SQInteger for generic numbers in script_tilelist
2023-03-06 00:32:12 +01:00
glx22
cada18a6f8
Codechange: Use SQInteger for generic numbers in script_tile
2023-03-06 00:32:12 +01:00
glx22
07b73a8c02
Codechange: Use SQInteger for generic numbers in script_subsidy
2023-03-06 00:32:12 +01:00
glx22
cd80b31d19
Codechange: Use SQInteger for generic numbers in script_storypage
2023-03-06 00:32:12 +01:00
glx22
a9a55f2153
Codechange: Use SQInteger for generic numbers in script_station
2023-03-06 00:32:12 +01:00
glx22
446ebaa6b9
Codechange: Use SQInteger for generic numbers in script_road
2023-03-06 00:32:12 +01:00
glx22
4f6a2f31b5
Codechange: Use SQInteger for generic numbers in script_rail
2023-03-06 00:32:12 +01:00
glx22
cb2e76aae3
Codechange: Use SQInteger for generic numbers in script_priorityqueue
2023-03-06 00:32:12 +01:00
glx22
777b4d0987
Codechange: Use SQInteger for generic numbers in script_order
2023-03-06 00:32:12 +01:00
glx22
49ea69fdef
Codechange: Use SQInteger for generic numbers in script_objecttype
2023-03-06 00:32:12 +01:00
glx22
0293fd41e5
Codechange: Use SQInteger for generic numbers in script_news
2023-03-06 00:32:12 +01:00
glx22
f22903ab14
Codechange: Use SQInteger for generic numbers in script_newgrf
2023-03-06 00:32:12 +01:00
glx22
ca67075397
Codechange: Use SQInteger for generic numbers in script_map
2023-03-06 00:32:12 +01:00
glx22
a225fda9fe
Codechange: Use SQInteger for generic numbers in script_list
2023-03-06 00:32:12 +01:00
glx22
74ab9ee9dd
Codechange: Use SQInteger for generic numbers in script_league
2023-03-06 00:32:12 +01:00
glx22
367b2ba6d1
Codechange: Use SQInteger for generic numbers in script_infrastructure
2023-03-06 00:32:12 +01:00
glx22
5eaf9d39bf
Codechange: Use SQInteger for generic numbers in script_industrytype
2023-03-06 00:32:12 +01:00
glx22
6671994655
Codechange: Use SQInteger for generic numbers in script_industry
2023-03-06 00:32:12 +01:00
glx22
8eb35633ec
Codechange: Use SQInteger for generic numbers in script_group
2023-03-06 00:32:12 +01:00
glx22
6ca8499e6a
Codechange: Use SQInteger for generic numbers in script_goal
2023-03-06 00:32:12 +01:00
glx22
e784915b27
Codechange: Use SQInteger for generic numbers in script_gamesettings
2023-03-06 00:32:12 +01:00
glx22
6b8b4c392f
Codechange: Use SQInteger for generic numbers in script_engine
2023-03-06 00:32:12 +01:00
glx22
2f40bf8097
Codechange: Use SQInteger for generic numbers in script_date
2023-03-06 00:32:12 +01:00
glx22
424ae74504
Codechange: Use SQInteger for generic numbers in script_companymode
2023-03-06 00:32:12 +01:00
glx22
89c0841d0a
Codechange: Use SQInteger for generic numbers in script_company
2023-03-06 00:32:12 +01:00
glx22
7727323dbe
Codechange: Use SQInteger for generic numbers in script_cargomonitor
2023-03-06 00:32:12 +01:00
glx22
40424601c6
Codechange: Use SQInteger for generic numbers in script_cargo
2023-03-06 00:32:12 +01:00
glx22
83826b1793
Codechange: Use SQInteger for generic numbers in script_bridgelist
2023-03-06 00:32:12 +01:00
glx22
58bf2f7176
Codechange: Use SQInteger for generic numbers in script_bridge
2023-03-06 00:32:12 +01:00
glx22
73561802cb
Codechange: Use SQInteger for generic numbers in script_airport
2023-03-06 00:32:12 +01:00
glx22
b6f3552e4b
Fix: [Script] Inconsistent precondition failure return values
2023-03-06 00:32:12 +01:00
glx22
e06a666fa2
Fix: remove ScriptController constructor from API documentation
2023-03-06 00:32:12 +01:00
glx22
67a4c5e0db
Codechange: Use {fmt} for script_admin JSON generation
2023-03-06 00:32:12 +01:00
glx22
ce8cde3b8d
Fix: [Script] Detect circular references in ScriptText
2023-03-05 22:24:08 +01:00
glx22
9a957f1d4b
Change: [Script] Improve ScriptText validation error messages
2023-03-05 22:24:08 +01:00
glx22
991a797e09
Change: [Script] Validate ScriptText parameters type and amount
2023-02-28 18:53:17 +01:00
Rubidium
728973859d
Change: [Script] Automate the ScriptObject reference counting
2023-02-28 18:53:17 +01:00
glx22
a1fc4d5c0e
Codechange: [Script] Merge the 3 ScriptText param arrays
2023-02-28 18:53:17 +01:00
Rubidium
580d0a6343
Codechange: make use of Tile in for all direct map accesses
2023-02-28 07:11:48 +01:00
Jonathan G Rennison
4c1406a4b5
Add: NewGRF road stops
2023-02-26 21:28:30 +01:00
dP
c73b88ddca
Fix: Don't send unused tile field over the network ( #10507 )
2023-02-24 22:50:11 +01:00
Michael Lutz
9b3326e3fd
Codechange: [Script] Use std::vector instead of a hand-rolled alternative.
2023-02-24 21:46:27 +01:00
Michael Lutz
ca3cb4d2ef
Codechange: [Script] Use a class template instead of a function template for squirrel type conversion.
...
Class templates allow using partial template specialization, which is useful in
case one wants to have a type conversion on a type that is itself templated.
2023-02-24 21:46:27 +01:00
SamuXarick
8351b97f52
Add: [Script] Labels for negative values of a setting
2023-02-21 00:28:21 +01:00
SamuXarick
376820c0b6
Doc: [Script] Update info descriptions
2023-02-21 00:28:21 +01:00
SamuXarick
3df9321a65
Fix: Some Script::IsValidVehicle checks need to be complemented with IsPrimaryVehicle
...
Add: [Script] ScriptVehicle.IsPrimaryVehicle
2023-02-18 09:58:02 +01:00
glx22
3559576166
Codechange: [Script] Don't expose static buffers outside of ScriptText
2023-02-17 21:28:14 +01:00
glx22
e735370318
Change: [Script] A ScriptText with too many parameters is now a fatal error
...
It should never happen as adding/setting parameters already checks that anyway.
2023-02-17 21:28:14 +01:00
dP
fe2c8a1240
Codechange: Decouple INDUSTRY_CTRL into separate commands ( #10475 )
2023-02-14 11:29:11 +01:00
SamuXarick
43ce73db86
Fix: [Script] Use Money instead of int32 for presenting the value of a company to AIs
2023-02-11 09:43:47 +01:00
Loïc Guilloux
6b99b6672e
Fix: [Script] ScriptBase::Rand() return value was between -MIN(int32) and MAX(int32) ( #10443 )
...
Also ensure the parameters for ScriptBase::RandRange() and ScriptBase::Chance() are in [0-MAX(uint32)] range
2023-02-10 19:55:59 +01:00
glx22
b080f24bd8
Codechange: move windows common to AI and GS out of ai_gui
2023-02-05 19:27:25 +01:00
SamuXarick
1f194eb94e
Fix: [Script] Incorrect value for GOAL_INVALID ( #10436 )
...
* Fix: [Script] Incorrect value for GOAL_INVALID
* Cleanup: Remove unused static variable
2023-02-01 23:35:51 +01:00
SamuXarick
d0639cdc28
Fix: [Script] Incorrect subsidy SourceID value used
2023-02-01 21:17:16 +01:00
SamuXarick
4fc4874a30
Add: [Script] Let random road layout be a choice
2023-02-01 21:15:13 +01:00
SamuXarick
184ff92057
Cleanup: [Script] Pass new_rating directly to CmdTownRating ( #10441 )
2023-02-01 13:48:39 -05:00
Rubidium
31869501ee
Fix: make script goals work with the whole range of ClientIDs
2023-01-31 20:09:48 +01:00
Rubidium
4e65ec1dc4
Codechange: do not declare functions in blocks
2023-01-29 20:28:45 +01:00
Rubidium
2fd99467ea
Fix: scripts are not aware of nullptr, they only know null
2023-01-26 16:07:14 +01:00
Rubidium
f9a473bef7
Fix: missing/duplicate documentation tags for scripts
2023-01-26 16:07:14 +01:00
Rubidium
3112b387e7
Fix: warnings about obsolete settings/setting values in Doxygen configurations
2023-01-26 16:07:14 +01:00
Rubidium
41fa94bc56
Fix: scripts cannot call constructors of ScriptEvents, so remove from the documentation
2023-01-25 22:28:30 +01:00
Rubidium
fe2bcd2a58
Codechange: migrate size related functions to Map structure
2023-01-21 17:11:40 +01:00
Rubidium
22d3de8b67
Codechange: use ScriptMap size functions instead of global functions
2023-01-21 17:11:40 +01:00
Rubidium
c5ff61c5f2
Add: script specific Randomizer instances
2023-01-14 22:00:11 +01:00
Rubidium
6abad681bd
Codechange: move choice for randomizer of scripts to a single location
2023-01-14 22:00:11 +01:00
Rubidium
3373128233
Codechange: pass the randomizer directly to the town name generation
2023-01-14 22:00:11 +01:00
Rubidium
b3b8c3fd2d
Codechange: pass the randomizer to use directly to the company face generation
2023-01-14 22:00:11 +01:00
Rubidium
90f1768006
Codechange: add non-nullptr asserts in cases where it should never be nullptr
...
Though where similar calls are checked for nullptr as in those instances of
the use of that function it can actually return nullptr. In other words, write
down the assumption that the function never returns nullptr in an assert.
2023-01-14 21:15:23 +01:00
Jonathan G Rennison
10e76b2788
Fix #10032 : Capacities of articulated vehicles in build window
...
See also: #9954
2023-01-14 18:52:01 +01:00
Tyler Trahan
5c64cdcb79
Feature: Press Ctrl to build a diagonal area of trees ( #10342 )
2023-01-13 18:04:30 -05:00
Rubidium
170f37d07f
Codechange: silence some potentially uninitialized local variable errors
...
In these cases technically they are false positives, however dismissing the
alerts when the underlying code may make them true positives does not seem
like the safest solution.
2023-01-06 19:34:35 +01:00
Michael Lutz
150f05dc15
Change: Heading for 14 now. ( #10302 )
2023-01-01 22:52:23 +01:00
Loïc Guilloux
c179c10048
Fix #10263 , ccefa76: [scripts] restore tile validation for commands ( #10269 )
2022-12-21 02:37:59 +01:00
Michael Lutz
1c205b2cda
Fix #10212 : [Script] Nested ScriptAccounting scopes are not restored properly.
2022-12-04 11:27:24 +01:00
dP
5e14a20b3b
Feature: [GS] Scriptable league tables ( #10001 )
2022-11-26 18:03:03 +01:00
Peter Nelson
f5f035a22b
Codechange: Make use of Rect Width/Height helpers.
2022-11-12 18:28:39 +00:00
Joel-Milligan
59645c6733
Change: Remove scrollbar from town authority actions panel ( #9928 )
2022-11-11 23:52:38 +01:00
Henry Wilson
89cf0d5da8
Codechange: Factor cargotype weight conversion magic numbers
2022-11-08 21:02:08 +01:00
Loïc Guilloux
0afa6f2424
Codechange: [CMake] Auto-fill list of #include in script_window.hpp ( #10103 )
2022-10-24 12:35:58 +02:00
Nicolas Chappe
a9a21e784d
Codechange: Always set the ODATFB_NEAREST_DEPOT flag for 'any depot' orders
2022-10-22 14:19:08 +02:00
SamuXarick
8d0d45c431
Add: ScriptCargo::GetWeight to get cargo weights
2022-10-16 18:28:28 +02:00
SamuXarick
3dda8c9bad
Fix: ScriptRoad::HasRoadType really check for RoadType
...
Script::HasRoadType was only checking if the tile had the same RoadTramType as that of the RoadType provided.
Now it really checks RoadType against RoadType.
2022-10-16 18:27:23 +02:00
Tyler Trahan
db98cedb7e
Fix #9883 : Show cost/income float over end tile of rail or road construction
2022-10-16 14:15:31 +02:00
glx22
675cf7a8ee
Fix 6fe445e: [Script] Respect joining adjacent when building an airport
2022-05-31 23:14:47 +02:00
glx22
ed1457dca3
Fix 55170ae: [Script] Building two-way signals could end up one-way
2022-05-27 19:57:50 +02:00
Loïc Guilloux
7331149dde
Codechange: [CMake] Pass API files list via a file to minimise command line length ( #9874 )
2022-05-01 00:39:59 +02:00
Tyler Trahan
f4ca94d3f6
Codechange: Revenue is not the same as Income
...
Income is revenue minus costs. Let's name things correctly (without breaking the script API).
2022-04-25 21:51:51 +02:00
Niels Martin Hansen
e68bf58989
Codechange: Use anonymous union for vehicle orders/old orders list
2022-02-15 20:01:10 +01:00
Andy
b8a8891a86
Add: [Script] IndustryType::ResolveNewGRFID to resolve industry id from grfid and grf_local_id
2022-01-22 18:15:12 +01:00
Andy
26ac0c48f0
Add: [Script] ObjectType::ResolveNewGRFID to resolve object id from grfid and grf_local_id
2022-01-22 13:12:10 +01:00
Michael Lutz
41fa16f325
Codechange: Don't use globals for return values from vehicle command procs.
2021-12-16 22:28:32 +01:00
Michael Lutz
57b82e2e99
Codechange: Don't use globals for story/goal/sign/group command proc return values.
2021-12-16 22:28:32 +01:00
Michael Lutz
3e85e833a7
Codechange: Add support for additional command result values.
2021-12-16 22:28:32 +01:00
Michael Lutz
8503854655
Codechange: Pass unpacked command arguments to command callbacks (except Script).
2021-12-16 22:28:32 +01:00
Michael Lutz
13528bfcd0
Codechange: Un-bitstuff all remaining commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
58cff7b081
Codechange: Un-bitstuff the remaining on-map commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
c6d7b98808
Codechange: Un-bitstuff landscape commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
e6e69d5289
Codechange: Un-bitstuff goal and story page commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
1a42a8a5d5
Codechange: Un-bitstuff town-related commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
e08b3abe7f
Codechange: Un-bitstuff group and autoreplace commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
46bd2f1ced
Codechange: Un-bitstuff remaining transport infrastructure commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
55170ae703
Codechange: Un-bitstuff rail commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
6fe445e6c0
Codechange: Un-bitstuff station/depot/waypoint commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
21675ec7e2
Codechange: Un-bitstuff vehicle/engine commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
211c630cbe
Codechange: Un-bitstuff order commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
4f3ea3907e
Codechange: Un-bitstuff commands taking a ClientID (i.e. CMD_CLIENT_ID).
2021-12-16 22:28:32 +01:00
Michael Lutz
ccefa76a46
Codechange: Template DoCommandPInternal.
2021-12-16 22:28:32 +01:00
Michael Lutz
6691ee3b96
Codechange: Template script command calls.
2021-12-16 22:28:32 +01:00
Michael Lutz
eab18f06a4
Codechange: Pass additional data as byte stream to command callbacks.
2021-12-16 22:28:32 +01:00