Peter Nelson
ebdc82ad54
Fix #14921 : Crash during station autorefit if station doesn't accept current cargo type. ( #14924 )
...
Add convenience helpers to correctly retrieve goods entry cargo available/totals.
Avoids having to check if cargo data is available before accessing it, which was missing for autorefit.
2025-12-15 18:06:43 +00:00
Cyprian Klimaszewski
99f04f27de
Doc: Update information for receiving a copy of GPL. ( #14869 )
2025-12-07 11:25:08 +00:00
Jonathan G Rennison
84eb3fb0e0
Fix #14800 : Incorrect register processing in GetCustomStationRelocation ( #14801 )
...
ProcessRegisters must be called even if the sprite resolve result
is not valid.
A zero-length ResultSpriteGroup is valid because the output value
is an offset, not a sprite ID within the ResultSpriteGroup.
2025-11-24 06:22:58 -05:00
Peter Nelson
70d4182850
Fix #14631 , Fix 1cb0cbcb6c: Waypoint customs spec not allocated properly on initial construction. ( #14633 )
...
Split AllocateSpecToStation/RoadStop into Allocate and Assign functions, allowing command tests to occur separately.
2025-09-21 09:32:25 +01:00
Peter Nelson
54f328beeb
Codechange: Remove output pointer from GetTileArea(). ( #14530 )
...
This simplifies things and removes undocumented type `ETileArea`
2025-08-22 21:27:31 +01:00
Peter Nelson
1cb0cbcb6c
Codechange: Standardise how AllocateSpecToStation/RoadStop are called. ( #14525 )
...
Replace use of negative value with std::optional and update doxygen.
2025-08-19 18:52:36 +01:00
Peter Nelson
1cd0391926
Fix #14356 , ff7eb996e6: Incorrect sprite group chosen for stations and road stops. ( #14359 )
2025-06-14 13:38:45 +01:00
frosch
a277cb2b4c
Change: [NewGRF] Increase the textstack for all callbacks to 16 registers.
2025-05-09 12:39:11 +02:00
frosch
22fedca77e
Codechange: Integrate ResolverObject::ResetState() into DoResolve(), no need to call it manually.
2025-05-06 22:24:41 +02:00
frosch
eb9bbb2456
Codechange: Remove direct access to temporary storage from TextRefStack.
2025-05-06 22:24:41 +02:00
frosch
6faa667644
Codechange: Remove global GetRegister(), instead return 100+ registers directly from GetXxxCallback().
2025-05-06 22:24:41 +02:00
frosch
f59cf73b88
Codechange: Access temporary storage through ResolverObject during sprite layout preprocessing.
2025-05-06 22:24:41 +02:00
frosch
85be7a4d92
Codechange: Access temporary storage through ResolverObject during Resolve.
2025-05-06 22:24:41 +02:00
frosch
99d7a775ad
Codechange: Make GetRegister return a signed integer, matching the underlying TemporaryStorageArray.
2025-05-06 22:24:41 +02:00
frosch
74030a63e6
Codechange: Move SpriteLayoutProcessor's operations closer to the ResolverObject.
2025-05-06 22:24:41 +02:00
frosch
8bbfbd0347
Codechange: Move spritelayout preprocessing to a separate class, which owns the heap allocations involved.
2025-05-06 18:30:42 +02:00
frosch
d9c43e7fda
Codechange: Make TileLayoutSpriteGroup::ProcessRegisters return a DrawTileSpriteSpan on the stack, instead of a reference to a global.
2025-05-06 18:30:42 +02:00
frosch
42f9312f71
Codechange: Make station variable cache a member of StationScopeResolver.
2025-05-06 18:29:41 +02:00
frosch
13349254ea
Fix #14216 , d030d17: RealSpriteGroups referencing CallbackResultSpriteGroups were always treated as callback-failure. ( #14218 )
2025-05-05 16:13:41 +02:00
frosch
d030d17bd6
Codechange: Do not use a mutable global to return calculated VarAction2 results.
2025-04-29 20:35:46 +02:00
frosch
e90b68d504
Codechange: Pass SpriteGroup as reference to ResolveReal.
2025-04-29 20:35:46 +02:00
frosch
8027e31f47
Codechange: Remove virtual functions SpriteGroup::GetResult and GetNumResults. They are only implemented in and called via ResultSpriteGroup.
2025-04-29 10:35:10 +02:00
frosch
010b944173
Codechange: Move SpriteGroup cast from callers into Resolve.
2025-04-29 10:35:10 +02:00
frosch
30b1eb6e5f
Fix: [NewGRF] The result of Action123 evaluation affected rerandomisation in a weird corner case. ( #14139 )
...
Rerandomisation does not care about the Resolve result.
But we skipped it, in case of 'invalid SpriteGroup reference'.
2025-04-28 23:24:42 +02:00
frosch
b281c5616e
Change: [NewGRF] If Action123 does not resolve in a valid SpriteSet, prefer drawing the default sprite instead of an invalid sprite.
2025-04-28 22:20:54 +02:00
frosch
7b08170ac8
Codechange: Replace a magic value with a maybe less magical constant.
2025-04-28 22:20:54 +02:00
frosch
0c6426cb2d
Fix: Out-of-bounds read, if NewGRF stations provided no spritesets.
2025-04-28 20:49:20 +02:00
frosch
41a20e512d
Codechange: Use proper enum type to index sprite groups in VariableGRFFileProps.
2025-04-27 19:50:51 +02:00
frosch
1ea1dbd19e
Add: [NewGRF] Station/roadstop animation-triggers 'tile loop' (bit 7) and 'path reservation' (bit 8). ( #14080 )
2025-04-26 14:44:55 +02:00
frosch
d3ae6bc9a8
Fix: [NewGRF] For animation-triggers which do not supply a cargo-type in var18, the var18 bits should remain empty. ( #14091 )
2025-04-26 14:44:07 +02:00
frosch
bc0eaf9ac4
Codechange: Allow passing waypoints to Trigger(Station|RoadStop)Randomisation.
2025-04-24 09:19:43 +02:00
Peter Nelson
3aa82d5e63
Codechange: Use EnumBitSet for RoadStopStatusFlags. ( #14068 )
2025-04-21 20:16:23 +01:00
frosch
d7ddea4032
Codechange: Turn AnimationTrigger enums into enum classes. ( #14067 )
2025-04-21 20:53:31 +02:00
frosch
61a0a520f6
Codechange: Unify random trigger enums and turn them into enum classes. ( #14066 )
2025-04-21 20:03:34 +02:00
frosch
f399b8eb29
Codechange: Unify naming of NewGRF animation callbacks.
2025-04-21 19:06:13 +02:00
frosch
264abfafe6
Codechange: Rename storage of random triggers to include the term 'random'.
2025-04-21 19:06:13 +02:00
frosch
cde350dc01
Codechange: Replace macros GENERAL_SPRITE_COLOUR and COMPANY_SPRITE_COLOUR with functions GetColourPalette and GetCompanyPalette.
2025-04-18 23:41:37 +02:00
Peter Nelson
325f7f9767
Codechange: Use EnumBitSet for GoodsEntry status. ( #13899 )
2025-03-26 21:22:33 +00:00
Peter Nelson
9f94cadd68
Codefix: GRF-local cargo id is not a CargoType. ( #13888 )
2025-03-25 17:12:43 +00:00
Peter Nelson
79ef4e98fe
Codechange: Use std::swap() instead of Swap() ( #13883 )
2025-03-24 23:47:34 +00:00
Peter Nelson
b96b26ef15
Codechange: Rename short CargoType parameters cargo. ( #13848 )
...
Rename CargoType variables and parameters using short or meaningless names.
2025-03-24 18:18:21 +00:00
Peter Nelson
3503082f19
Codechange: Move template class implementation includes.
...
These are now placed at the bottom of the including files include list.
2025-03-21 12:53:40 +00:00
Peter Nelson
2909a14374
Codechange: Include table/strings.h in files that use StringIDs.
...
Be consistent with how and where the file is incldued.
2025-03-21 12:53:40 +00:00
Peter Nelson
8f14894024
Add: NewGRF Badges.
2025-02-16 22:24:25 +00:00
Rubidium
fd4adc55e3
Codechange: replace INVALID_X with XID::Invalid() for PoolIDs
2025-02-16 20:23:00 +01:00
Rubidium
59df0ff496
Codechange: strongly type StationID
2025-02-16 18:25:51 +01:00
Peter Nelson
ff7eb996e6
Codechange: Use variable storage for GrfProps with cargo-type groups. ( #13557 )
...
Slots are only allocated when used instead of being reserved.
Array-based GrfProps are still used when the number of options is more limited.
2025-02-14 18:30:17 +00:00
Rubidium
069ff846e4
Codechange: use std::vector/std::span for DrawTileSprites over malloc-ed table
2025-02-14 16:01:45 +01:00
Peter Nelson
f309b90a1d
Codechange: Use EnumBitSet for Airport blocks.
2025-02-13 22:02:02 +00:00
Peter Nelson
75387b9e2b
Codechange: Use EnumBitSet for StationFacility.
2025-02-13 18:03:13 +00:00