frosch
e2c46fda3f
Fix: [NewGRF] Ensure that stations always have an even number of sprite layouts.
...
The drawing code has a special fallbacks for zero layouts, but fails hard for one layout.
(odd numbers >= 3 are weird, but do not fail as badly as 1)
2022-09-11 21:26:06 +02:00
Jonathan G Rennison
4acccc232a
Fix #9925 : Industry tile layout validation for layouts of only one tile
2022-06-18 22:02:08 +02:00
Niels Martin Hansen
5587e439a9
Fix: Industry layouts with zero regular tiles should be invalid
2022-05-29 16:34:30 +02:00
Michael Lutz
08a5478a93
Add: [NewGRF] Map seed as global variable.
...
This is useful to provide a feature-agnostic, stable random value that differs between games.
One of the possible uses is to e.g. use it to create pseudo-random regions for towns or industries.
2022-03-13 14:20:23 +01:00
Jonathan G Rennison
fc58ed9987
Codechange: Remove CargoSpec::multipliertowngrowth which is unused ( #9701 )
...
This is set by cargo property 19.
This property is only implemented in TTDPatch.
2021-11-16 22:48:21 +00:00
Michael Lutz
95c8467670
Fix 65cbde4b: Writing to uninitialized string when loading a currency NewGRF.
2021-11-06 19:15:29 +01:00
PeterN
7e70ead396
Fix #9562 : Handle case of invalid action2 with zero results. ( #9564 )
2021-09-19 21:52:08 +01:00
Charles Pigott
16dca0d7bc
Codechange: Object non-zero dimension check was not logically correct
2021-09-11 23:10:50 +01:00
Vít Šefl
2183fd4dab
Feature: [NewGRF] Maximum curve speed modifier for rail vehicles ( #9346 )
2021-08-15 11:17:05 +02:00
Rubidium
178ea3196b
Remove: includes to network/core/config.h from headers when only three cpp files need it
2021-07-11 22:13:59 +02:00
Patric Stout
6f0c6fb2ae
Fix a4987233: NewGRFs could no longer be loaded from the NewGRF folder.
...
This statement was removed by accident, as it felt it could be removed.
But it is used to know if the NewGRF is from the baseset folder or
from the NewGRF folder.
2021-07-11 12:16:07 +02:00
rubidium42
a498723345
Remove: arbitrary limit on number of statically loaded NewGRFs ( #9431 )
2021-07-11 11:23:47 +02:00
glx22
a543a4b7bb
Codechange: Remove FOR_EACH_SET_CARGO_ID
2021-07-09 21:36:09 +02:00
glx22
89ab8b79a5
Codechange: Remove FOR_EACH_SET_BIT
2021-07-09 21:36:09 +02:00
rubidium42
55a11710a6
Codechange: convert printf DEBUG statements to fmt Debug statements
2021-06-13 12:45:45 +02:00
Peter Nelson
40cec34836
Change: Skip creating a RealSpriteGroup when there is only one result.
...
This avoids checking RSG for empty sets every time they are evaluated.
This might alter behaviour in cases of a malformed NewGRF file.
2021-06-12 08:05:59 +01:00
Patric Stout
ca9a7df752
Codechange: rename str_validate to StrMakeValid(InPlace) ( #9304 )
...
This to be more explicit the function changes the value, and not
returns yes/no.
2021-05-29 11:21:38 +02:00
rubidium42
ae85af98eb
Codechange: Use std::string GetString where convenient
2021-05-15 10:20:50 +02:00
rubidium42
44ca7d9377
Change: Use gender-neutral pronouns
2021-05-15 10:16:48 +02:00
Rubidium
e6f0d63e25
Codechange: comparison result is always the same due to earlier check
...
Practically the length of the handlers not being equal to the number of
features is the problem as it means something was forgotten when adding
a new feature, so static assert to that and let the existing check on
the feature number take care of invalid data from the NewGRFs.
2021-05-15 10:16:10 +02:00
frosch
1da0ba95b2
Feature: Define refittability of default vehicles using cargo classes.
...
This ensures that default vehicles can transport any NewGRF defined cargos, albeit with weird graphics and vehicle names.
This also changes the refittability of default vehicles with default industries.
2021-05-13 23:28:43 +02:00
frosch
9f8d0b1bee
Fix: Resolve cargo-types of default vehicles via their cargo label.
...
Default vehicles now behave as if they had a cargo translation table. This fixes default vehicles carrying seemingly random cargos, if NewGRF industry sets are present.
This behavior is disabled, when a NewGRF touches any of the cargo-type or refitting properties. In that case it's up to the NewGRF to define its own cargo translation table.
2021-05-13 23:28:43 +02:00
rubidium42
65cbde4b30
Codechange: move currency settings to std::string
2021-05-13 23:13:17 +02:00
Rubidium
296194ad36
Fix: memory leak due to assigning result of strdup to a std::string
2021-05-10 16:03:31 +02:00
Rubidium
10e35ca8e4
Codechange: let NewGRF make use of SpriteFile instead of most of the FIO slot functions
2021-05-08 12:39:34 +02:00
Rubidium
fdc11a9f94
Codechange: introduce SpriteFile to be used by the sprite loader instead of the global FIO slot functionality
2021-05-08 12:39:34 +02:00
Rubidium
c097bc9d7d
Codechange: let NewGRF sounds make use of RandomAccessFile instead of the FIO slot functions
2021-05-08 12:39:34 +02:00
Peter Nelson
756034fa27
Codechange: Validate custom station platform layout tiles are permitted values only.
2021-05-02 17:15:27 +01:00
Peter Nelson
a3e49178d1
Codechange: Use std::vector for NewGRF station tile sprite layouts.
2021-05-02 17:15:27 +01:00
Peter Nelson
bd1a20f6ee
Codechange: Use std::vector for NewGRF station platform layouts.
...
This avoids the need to custom memory management and additional members.
This also resolves use-after-free if modifying copied layouts, so presumably nobody has ever done that.
2021-05-02 17:15:27 +01:00
Peter Nelson
18fb1c3866
Codechange: Warn if randomaction2 group count is not a power of 2.
...
Previously noted by a comment, this does not need to be guarded against as non-powers of 2 will not cause issues beyond the choice of results being reduced.
2021-05-02 09:41:01 +01:00
Peter Nelson
913d8a7f28
Cleanup: Use std::vector in RandomSpriteGroup.
2021-05-02 09:41:01 +01:00
Peter Nelson
1aeaf39954
Cleanup: Use std::vector in DeterministicSpriteGroup.
2021-05-02 09:41:01 +01:00
Peter Nelson
f785a70a2b
Cleanup: Use std::vector in RealSpriteGroup.
2021-05-02 09:41:01 +01:00
glx22
9a8756d7ed
Codechange: Replace FOR_ALL_CARGOSPECS with range-based for loops
2021-04-29 21:08:24 +02:00
Jonathan G Rennison
83ac5aa27a
Fix: Memory leak of airport tile layout in AirportChangeInfo (prop 0A) ( #8928 )
2021-04-02 10:13:53 +02:00
Patric Stout
1a1049bc0d
Change: rename setting "max_heightlevel" to "map_height_limit"
...
This better reflects what it is, and hopefully removes a bit of
the confusion people are having what this setting actually does.
Additionally, update the text on the setting to better inform
users what it is doing exactly, so they can make an educated
decision on how to change it.
Next commit will introduce an "auto" value, which should be the
new default. The rename has as added benefit that everyone will
start out on the "auto" value.
2021-03-26 12:22:32 +01:00
Charles Pigott
8157af6d68
Fix #8276 : Crash when a NewGRF object's size was not set
2021-02-21 18:16:09 +00:00
Charles Pigott
9b800a96ed
Codechange: Remove min/max functions in favour of STL variants ( #8502 )
2021-01-08 11:16:18 +01:00
Charles Pigott
860c270c73
Codechange: Replace assert_compile macro with static_assert
2020-12-27 10:55:42 +00:00
Michael Lutz
1478fa93b3
Add: [NewGRF] Patch flag to test if inflation is on or off.
2020-12-27 10:28:39 +00:00
frosch
d5f05fb781
Fix: [NewGRF] Action 7/9 conditions 0x0F to 0x12 failed, if 'param' was 0x88. ( #8382 )
...
Fix: [NewGRF] Action 7/9 conditions 0x0B to 0x12 failed, if 'param' was 0x85.
These conditions are supposed to ignore 'param' entirely.
2020-12-15 22:42:03 +01:00
Michael Lutz
79240eab1e
Codechange: Make use of the improved C++17 emplace_back function.
2020-12-15 00:29:30 +01:00
Yexo
1507902d00
Codechange: remove has_newindustries global
2020-06-01 22:46:06 +02:00
Yexo
a82572d0f5
Codechange: remove has_newhouses global
2020-06-01 22:46:06 +02:00
Yexo
f827bc8c1a
Fix #8166 : don't crash on loading an invalid roadtype newgrf
...
Initialization code for GRFFile::roadtype_map was copied from
railtype_map. But while RailType is a byte-sized enum and could thus
be initialized via memset, RoadType doesn't have a defined size.
2020-06-01 12:44:02 +02:00
Michael Lutz
9c2e47d03c
Codechange: Use std::string for storing GRF error messages.
2020-05-21 20:02:34 +02:00
Michael Lutz
c082f570ce
Codechange: Use std::string when translating TTDP NewGRF string codes.
2020-05-21 20:02:34 +02:00
Michael Lutz
43cd892e0c
Codechange: Replace custom linked list for GRF texts with STL vectors and strings.
2020-05-21 20:02:34 +02:00
Michael Lutz
f2b40f40aa
Codechange: Replace SmallPair with std::pair.
...
std::pair is already the smallest possible pair, and it already handles non-POD types correctly.
2020-05-21 20:02:34 +02:00