Commit Graph

1942 Commits (6be470813136d1ca2f0f415b14a6913be37482c3)

Author SHA1 Message Date
Rubidium 7088f5b7c7 Codechange: use string/fmt instead of printf for grfmsg 1 year ago
PeterN d949cfab24
Codechange: Use std:: features for NewGRF town names (#10631)
This removes manual memory (de-)allocation and list counting.
1 year ago
Peter Nelson 7b0797d1cd Codechange: Use unique ptrs for NewGRF specs. 1 year ago
Peter Nelson ef6b307465 Change: Use std::vector for NewGRF spec tables.
Pointer space is allocated only for the number of IDs used, instead of
the max number of IDs for each feature.
1 year ago
Peter Nelson 15e6fc4eeb Codechange: Use iterator when mapping sprite groups. 1 year ago
Charles Pigott b282664242 Codechange: Replace all usages of alloca/AllocaM with more modern/less discouraged alternatives 1 year ago
Jonathan G Rennison c89079a210 Merge branch 'master' into jgrpp
# Conflicts:
#	src/saveload/cargopacket_sl.cpp
#	src/saveload/saveload.h
#	src/strings.cpp
#	src/vehicle.cpp
1 year ago
PeterN 246ba6f00a
Fix 8361cf5a73: Missing bounds check for house specs. (#10625) 1 year ago
Jonathan G Rennison 82803b98e0 Merge branch 'master' into jgrpp
# Conflicts:
#	src/game/game_gui.cpp
#	src/graph_gui.cpp
#	src/linkgraph/linkgraph_gui.h
#	src/newgrf.cpp
#	src/order_gui.cpp
#	src/saveload/engine_sl.cpp
#	src/saveload/saveload.h
#	src/script/api/script_text.cpp
#	src/script/script_gui.cpp
#	src/settings_table.cpp
#	src/strings.cpp
#	src/table/settings/economy_settings.ini
#	src/table/settings/locale_settings.ini
#	src/timetable_gui.cpp
1 year ago
Peter Nelson 08977828cc Fix: Check ID for name is within bounds. 1 year ago
Peter Nelson cd6c04a663 Fix: Check station ID is within bounds when copying layouts. 1 year ago
Peter Nelson 8361cf5a73 Fix: Check sprite group mapping ID is within bounds of feature. 1 year ago
Peter Nelson 96f4eb3681 Codechange: Check NewGRF feature is defined before processing any sprite group mapping.
Previously this was checked after loading ids, or repeatedly checked for
each item.
1 year ago
Peter Nelson 04215afe3f Codechange: Replace roadstop spec limit magic number with constant. 1 year ago
Peter Nelson 93197f58b7 Codechange: Bind objectspecs to classes once all finalised. 1 year ago
Jonathan G Rennison 62053779b5 Road stops: Add flag to read draw mode from register 0x100 1 year ago
Jonathan G Rennison 5718730d68 VarAction2: Add support for more varaction2 types
Add CB failure and deterministic relative types
1 year ago
Jonathan G Rennison ae99f667b0 NewGRF: Add generic town callback to set town zone radii 1 year ago
Jonathan G Rennison 5acf18fb37 NewGRF: Allow mapping a feature ID to the town scope 1 year ago
Jonathan G Rennison 57c5cc32d0 VarAction2: Improve handling of feature changes with parent scopes 1 year ago
Jonathan G Rennison 25ed7c2b53 Merge branch 'master' into jgrpp
# Conflicts:
#	src/music.cpp
#	src/script/api/script_company.cpp
#	src/script/api/script_event_types.cpp
#	src/script/api/script_group.cpp
#	src/script/api/script_object.cpp
#	src/script/api/script_road.cpp
1 year ago
Joan Josep d80f193e74
Fix: Improve grfmessage for ShipVehicleChangeInfo. (#10558) 1 year ago
Jonathan G Rennison 0fc9223724 VarAction2: Support extended bytes for var 0x7E proc with more_action2_ids 1 year ago
Jonathan G Rennison de17e0aa4d NewGRF: Add extension for more Action2 set IDs 1 year ago
Jonathan G Rennison 5d0ad5625b
Fix : [NewGRF] Object and road stop ignore property handlers (#10525)
* Fix: IgnoreObjectProperty did not handle object property 0x18

* Fix: IgnoreRoadStopProperty did not handle properties 0x0E - 0x12, 0x15
1 year ago
Jonathan G Rennison 412eab22c0 Fix: IgnoreRoadStopProperty did not handle properties 0x0E - 0x12, 0x15 1 year ago
Jonathan G Rennison 8e900c7a87 Fix: IgnoreObjectProperty did not handle object property 0x18 1 year ago
Jonathan G Rennison 4c1406a4b5 Add: NewGRF road stops 1 year ago
Jonathan G Rennison 2ffb245b33 GRF: Add property mapping ID extension mechanism
Bump property_mapping feature version to 3
1 year ago
Jonathan G Rennison 3497d0dcdb Add road/tram type properties to set road vehicle collision mode 1 year ago
Jonathan G Rennison 3b9015ef7a Fix successfully mapped properties in HandleAction0PropertyDefault 1 year ago
Jonathan G Rennison c756b8de8e GRF: Add second success indicator mechanism for feature tests and ID mappings 1 year ago
Jonathan G Rennison 64699d94c9 GRF: Only use extended bytes for object IDs if feature is tested for 1 year ago
Jonathan G Rennison a85b3d7de7 GRF: Add generic mechanism to observe which features have been tested 1 year ago
Jonathan G Rennison dceafaf2db GRF: Initial support for > 255 road stop specs per GRF
Add new variable for road stop info of nearby tiles
Bump roadstops version
1 year ago
Jonathan G Rennison b539799c0a GRF: Fix c0c9c66f: ObjectMapSpriteGroup with missing object specs 1 year ago
Jonathan G Rennison c0c9c66f7b GRF: Initial support for > 255 objects per GRF 1 year ago
Peter Nelson 74e4556a85 Codechange: Store objectspecs in std::vector instead of flat array.
(cherry picked from commit 1ae263c5467105820e4d770b3d57d25ba01e22b1)
1 year ago
Peter Nelson d34e1bbbc1 Codechange: Bind objectspecs to classes once all finalised.
(cherry picked from commit 5f4a8f730b8982cbec7eec5e2331f0bc9217e69e)
1 year ago
Jonathan G Rennison 483e3172af Merge branch 'master' into jgrpp
# Conflicts:
#	src/core/strong_typedef_type.hpp
#	src/gfx.cpp
#	src/group_cmd.cpp
#	src/industry_cmd.cpp
#	src/map_func.h
#	src/newgrf_debug_gui.cpp
#	src/order_cmd.cpp
#	src/pathfinder/follow_track.hpp
#	src/rail_cmd.cpp
#	src/road_cmd.cpp
#	src/road_gui.cpp
#	src/saveload/saveload.cpp
#	src/screenshot.cpp
#	src/smallmap_gui.cpp
#	src/station_cmd.cpp
#	src/strings.cpp
#	src/tile_type.h
#	src/timetable_gui.cpp
#	src/town_cmd.cpp
#	src/train_cmd.cpp
#	src/viewport.cpp
1 year ago
Michael Lutz 5daaa45e4a Add: [NewGRF] Second vehicle property for additional callback flags.
(cherry picked from commit 2d73076056)
1 year ago
Michael Lutz 3fdf57cbd6 Change: [NewGRF] Extend the D8xx (DCxx) string area up to FFFF.
This adds the Exxx and Fxxx blocks to the usable range for NewGRF
local strings. TTDPatch uses these ranges for internal strings, but as
we don't support any of them anyway, it is "free" real estate for us.

(cherry picked from commit f5394ed2ef)
1 year ago
Jonathan G Rennison 1272bec13b Road stops: Add height property for build window preview 1 year ago
Jonathan G Rennison 91d736ace5 GRF: Fix ignorable unknown mapped road type and road stop properties 1 year ago
Michael Lutz 2d73076056 Add: [NewGRF] Second vehicle property for additional callback flags. 1 year ago
Michael Lutz f5394ed2ef Change: [NewGRF] Extend the D8xx (DCxx) string area up to FFFF.
This adds the Exxx and Fxxx blocks to the usable range for NewGRF
local strings. TTDPatch uses these ranges for internal strings, but as
we don't support any of them anyway, it is "free" real estate for us.
1 year ago
rubidium42 6ba55e663e Codechange: do not hide variables with other variables 1 year ago
Jonathan G Rennison a9100e93cb Merge branch 'master' into jgrpp
# Conflicts:
#	src/group_cmd.cpp
#	src/lang/korean.txt
#	src/lang/simplified_chinese.txt
#	src/script/api/script_rail.cpp
#	src/tunnelbridge_cmd.cpp
1 year ago
Rubidium fe2bcd2a58 Codechange: migrate size related functions to Map structure 1 year ago
Francis Herne 01be423237 Fix #10362: NewGRF bridges without speed limits.
For bridges, a max speed of 0xFFFF (i.e. no effective limit)
 is no longer displayed as a limit in the UI.

A max speed of 0 is also considered unlimited, for similarity to the
 roadtype and railtype interface.
1 year ago
Jonathan G Rennison 1bfd96c7f2 Merge branch 'master' into jgrpp
# Conflicts:
#	src/3rdparty/fmt/core.h
#	src/command_type.h
#	src/console_cmds.cpp
#	src/core/overflowsafe_type.hpp
#	src/landscape.cpp
#	src/network/network.cpp
#	src/newgrf_object.h
#	src/object_cmd.cpp
#	src/order_gui.cpp
#	src/saveload/vehicle_sl.cpp
#	src/script/api/script_industrytype.cpp
#	src/script/api/script_object.hpp
#	src/script/api/script_town.cpp
#	src/table/object_land.h
#	src/timetable_cmd.cpp
#	src/tree_cmd.cpp
#	src/vehicle_gui.cpp
#	src/window.cpp
1 year ago
PeterN 2355882ec1
Codechange: Remove object `enabled` flag and shuffle members. (#10358)
`enabled` flag is replaced with IsEnabled() which checks if views is
non-zero.

ObjectSpec is shuffled to reduce its memory footprint.
1 year ago
Jonathan G Rennison 5b490b243d Merge branch 'master' into jgrpp
# Conflicts:
#	src/industry_cmd.cpp
#	src/landscape.cpp
#	src/object_cmd.cpp
#	src/rail_cmd.cpp
#	src/script/api/script_tile.cpp
#	src/table/settings/difficulty_settings.ini
#	src/table/settings/world_settings.ini
#	src/terraform_cmd.cpp
#	src/tilearea_type.h
#	src/tree_cmd.cpp
#	src/tree_cmd.h
#	src/tree_gui.cpp
#	src/water_cmd.cpp
1 year ago
PeterN 6a0d1c7c19
Fix: Link variants to parents when finalising engines. (#10346)
This ensures that definition-order of engines within the NewGRF does not matter.
1 year ago
Jonathan G Rennison 62d524eaef Merge branch 'master' into jgrpp
# Conflicts:
#	src/saveload/station_sl.cpp
#	src/saveload/town_sl.cpp
#	src/spritecache.cpp
#	src/timetable_gui.cpp
2 years ago
PeterN 1b1aa682a6
Fix: Don't assume engclass 2 should be elrail. (#10315)
When disabling/enabling elrail, there is an assumption that `engclass` of 2
means the engine will run on elrail. While this holds for default engines,
NewGRFs can do other things.

To resolve this we store the intended railtype so that toggling elrail will
restore to the correct type.
2 years ago
Jonathan G Rennison b9dad1818b Add setting to disable NewGRF inflation flag 2 years ago
Jonathan G Rennison 64c210f770 Merge branch 'master' into jgrpp
# Conflicts:
#	src/build_vehicle_gui.cpp
#	src/engine.cpp
#	src/engine_func.h
#	src/group_gui.cpp
#	src/lang/english.txt
#	src/newgrf.cpp
#	src/saveload/oldloader_sl.cpp
#	src/timetable_cmd.cpp
#	src/timetable_cmd.h
#	src/timetable_gui.cpp
2 years ago
Jonathan G Rennison 58d841486e Merge branch 'master' into jgrpp
# Conflicts:
#	src/os/windows/font_win32.cpp
#	src/script/api/script_object.hpp
#	src/town_cmd.cpp
#	src/train_cmd.cpp
#	src/viewport.cpp
#	src/viewport_func.h
2 years ago
Francis Herne 6caed5f15e
Add: Slope-aware and roadtype-specific one-way sprites. (#10282) 2 years ago
PeterN 4f26f6b8aa
Cleanup: Simplify GRFLabel linked-list with std::vector. (#10284) 2 years ago
Peter Nelson 3485709f53 Add: Additional vehicle flags to control variants. 2 years ago
Peter Nelson 85814b29d4 Feature: Vehicle add-ons can now group engines in purchase list.
Grouped engines are collapsed by default but can be expanded. This allows
similar engines to be grouped together to avoid cluttering the list.

Suggested uses for this are e.g.:
* Liveries; same stats but different paint job.
* Re-gearing; engine design is mostly the same but different stats.

... but avoiding complex hidden cargo subtype refit systems.

Grouped engines are otherwise separate, so can be independently
autoreplaced, even between variants.
2 years ago
peter1138 d7f561a400 Change: Add variant property to engines. 2 years ago
PeterN 7b5edba76c
Change: Support flipping shorter engines without NewGRF support. (#10262)
* Change: Support flipping shorter engines without NewGRF support.
* Cleanup: Remove write-only prop27_set temporary flag.
2 years ago
Jonathan G Rennison 3877bb31ef Changing day length or date no longer changes time in minutes
Add offset variables for scaled date ticks.
Adjust offset when changing day length or date, such that scaled
date ticks remain the same.
Store _scaled_tick_counter and scaled date ticks offset in the savagame.
2 years ago
Jonathan G Rennison 9038c849ab VarAction2: Use scaled tick counter for NewGRF variable 0x0A 2 years ago
Jonathan G Rennison 12b20376b3 Add new landscape flag to enable drawing rocks covered by snow 2 years ago
Jonathan G Rennison 41fb98db09 Add NewGRF global flag to allow rocky tiles in tropic desert zones 2 years ago
Jonathan G Rennison 2af2c56d19 Allow various settings to be changed in multiplayer
If the corresponding TTDPatch flag bit has not been observed by a NewGRF
2 years ago
Jonathan G Rennison 6459e62fff Merge branch 'master' into jgrpp
# Conflicts:
#	src/lang/english.txt
#	src/map_type.h
#	src/network/network_command.cpp
#	src/object_cmd.cpp
#	src/rail_cmd.cpp
#	src/road_cmd.cpp
#	src/road_func.h
#	src/saveload/afterload.cpp
#	src/saveload/saveload.h
#	src/settings_gui.cpp
#	src/string.cpp
#	src/table/road_land.h
#	src/table/settings/game_settings.ini
#	src/table/settings/world_settings.ini
#	src/tbtr_template_gui_main.h
#	src/train_cmd.cpp
2 years ago
PeterN f24286a1ae
Fix: Ensure 31-bit shifts are unsigned. (#10128)
Shifting a signed 32-bit integer by 31 bits is undefined behaviour.
A few more than necessary are switched to unsigned for consistentency.
2 years ago
Jonathan G Rennison ba3bc73676 VarAction2: Fix memory leak of inlinable adjust groups 2 years ago
Jonathan G Rennison 0a9c44d1a2 Merge branch 'master' into jgrpp
# Conflicts:
#	src/airport_gui.cpp
#	src/blitter/32bpp_anim_sse4.cpp
#	src/console_cmds.cpp
#	src/linkgraph/linkgraph_gui.cpp
#	src/newgrf_object.h
#	src/road_gui.cpp
#	src/widgets/road_widget.h
#	src/window.cpp
2 years ago
Michael Lutz bd357656ba Codechange: [NewGRF] Replace magic number for default object size by a constant. 2 years ago
frosch f4e2a462fe Cleanup: Remove unused flag sprites. 2 years ago
Jonathan G Rennison 0818ce4ae7 Merge branch 'master' into jgrpp (SLV_U64_TICK_COUNTER)
# Conflicts:
#	src/date.cpp
#	src/date_func.h
#	src/newgrf.cpp
#	src/newgrf_animation_base.h
#	src/saveload/gamelog_sl.cpp
#	src/saveload/misc_sl.cpp
#	src/saveload/saveload.h
#	src/stdafx.h
2 years ago
Jonathan G Rennison c2ede2af54 VarAction2: Allow inlining trivial procedures 2 years ago
dP 548f0496a9
Change: Make _tick_counter 64bit to avoid wrapping (#10035) 2 years ago
Jonathan G Rennison 3d8187261a Debug: Include values when logging GRF base cost changes 2 years ago
Jonathan G Rennison ece0a43146 Merge branch 'master' into jgrpp
# Conflicts:
#	src/newgrf_station.cpp
2 years ago
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)
2 years ago
Jonathan G Rennison 173f867e1a VarAction2: Save calculated_result in shadow group struct 2 years ago
Jonathan G Rennison 14de8c7f34 VarAction2: Add quick exit case to last-level callback groups if possible 2 years ago
Jonathan G Rennison 9c18835bd0 Move ProcessDeterministicSpriteGroupRanges into newgrf.cpp 2 years ago
Jonathan G Rennison 4601a1bfc6 Move NewGRF optimiser functions into a separate file
Create a new header for shared definitions with newgrf.cpp
2 years ago
Jonathan G Rennison 3d59c961a6 VarAction2: Avoid group variable tracking coupling through shared procs
Output dependencies on a procedure shouldn't propagate into input
dependencies on unrelated call sites in different groups
2 years ago
Jonathan G Rennison 00e32162a1 VarAction2: Allow DSE to remove procedure calls 2 years ago
Jonathan G Rennison 30ecdfe140 VarAction2: Allow jumping over constant stores to special registers
Insert suitable store(s) after the end block
2 years ago
Jonathan G Rennison 3a8bd7a589 VarAction2: Allow jumps to skip over procedure calls if possible 2 years ago
Jonathan G Rennison e143ab06d8 VarAction2: Track which temp stores may be overwritten by procedures
Instead of treating procedures as an unpredictable store
2 years ago
Jonathan G Rennison 06cc71b6c5 VarAction2: Mark suitable AND ops as jump insertion candidates 2 years ago
Jonathan G Rennison 0bddf96f7f VarAction2: Set variable for ABS op to avoid unused read from var 0 2 years ago
Jonathan G Rennison 7af568f0f0 VarAction2: Handle case where expensive vars are only conditionally read
Within a JZ_LV and in prior DSGAF_SKIP_ON_ZERO op
2 years ago
Jonathan G Rennison 9a4c31b0da VarAction2: Add last_value variants of JZ/JNZ ops 2 years ago
Jonathan G Rennison cbc6199542 VarAction2: Add a JNZ op analogous to JZ for OR ops 2 years ago
Jonathan G Rennison 5ec802a3d4 VarAction2: Allow substituting perm store loads through temp store 2 years ago
Jonathan G Rennison ed737e1a8f VarAction2: Do not remove redundant adjusts when this would break var 1C 2 years ago
Jonathan G Rennison b9c22a0b9e VarAction2: Do not prune groups when this would break var 1C 2 years ago
Jonathan G Rennison ae746a1af4 VarAction2: Fix tracking of whether a sprite group needs var 1C 2 years ago