Peter Nelson
be505ec459
Add: Accessor to test if a tile may be animated.
2024-12-01 21:19:28 +00:00
Peter Nelson
3a310f1802
Codechange: Store GRFConfig parameters in a vector. ( #13137 )
...
All GRFConfigs have space allocated for parameters, but only configured GRFConfigs need them.
Using a vector instead means that space is only used when parameters are used.
2024-12-01 15:15:21 +00:00
Peter Nelson
8b8cd9ae2d
Codechange: Use vector for town PSA storage.
2024-11-27 12:35:27 +00:00
Peter Nelson
177e2ebf80
Codechange: Support saveload of reference vectors.
...
This uses the same data format as reference lists, but for vectors, so allows data structures to be changed without affecting savegame format.
2024-11-27 12:35:27 +00:00
Peter Nelson
fa1849b855
Codechange: Use std::range::find_if where possible.
2024-11-24 10:36:03 +00:00
Peter Nelson
059a4b22f7
Codechange: Use projection-based std::range::find where possible.
...
This simplifies matching by class members and avoids wordy lambdas.
2024-11-24 10:36:03 +00:00
Peter Nelson
16038879e4
Codechange: Speed up industry generation using industry-type checks. ( #13094 )
...
Store a list of industries per industry type. This allows industry generation checks which only consider a specific industry type to check a reduced set of industries, leading to a potential performance increase.
This also removes the need to track industry type counts as well.
2024-11-22 23:17:24 +00:00
Peter Nelson
13da98dab8
Fix: Error message not set when unable load an old save. ( #13106 )
2024-11-20 18:24:07 +00:00
Peter Nelson
c39810ff6a
Codechange: Replace path cache queues with vectors.
...
Ship and RoadVehicle path caches use a std::deque, which is quite memory hungry, especially for RoadVehicle which has two.
std::deque was used to be able to push/pop from either end.
Change to use a single std::vector each, which is now push/popped from the back.
2024-11-18 08:59:41 +00:00
Peter Nelson
d4f8453c22
Codefix: Clear and reserve storage when loading vectors from savegames.
2024-11-18 08:59:41 +00:00
Peter Nelson
d903806e59
Codechange: Add VectorSaveLoadHandler to simplify handlers for vectors. ( #13093 )
...
This reduces the duplication needed for each saved complex vector.
2024-11-17 23:46:32 +00:00
Peter Nelson
14e2839087
Codechange: Let's use this new emplace_back() thing. ( #13081 )
2024-11-15 20:28:17 +00:00
Peter Nelson
8f9836793f
Change: Store water tile flooding state in the map.
...
This allows water tiles which cannot flood any further to not even try to flood.
On a large map with lots of water tiles this can noticeably reduce game loop processing time.
Mostly ported from JGRPP.
2024-11-06 19:44:14 +00:00
Tyler Trahan
c3bb512bd9
Remove: Hidden setting for adjacent stations ( #12862 )
2024-11-06 14:11:07 -05:00
Peter Nelson
3b6d3080f2
Add: Apply rail/road type conversion when NewGRFs are updated mid-game.
...
This will update the rail/road type of tiles on the map, taking account of tram state, if types are moved around.
2024-11-06 19:04:44 +00:00
Peter Nelson
8bb6572943
Add: Implement missing road type label conversion.
...
This was implemented for rail types but missed for road types.
This lets road type labels to be reordered, allowing for upgrades of NewGRF.
2024-11-06 19:04:44 +00:00
Peter Nelson
157d028915
Codechange: Simplify testing for railtype map conversion.
...
Build the list of railtype conversions at the same time as testing if conversion is needed.
This avoids having two similar loops which need to compare the same things.
2024-11-06 19:04:44 +00:00
Anatoly Eltsov
3fca0cf3ee
Feature: Industry production graph ( #10541 )
2024-10-31 22:35:04 +00:00
Peter Nelson
db1a1c5dd9
Change: Invalidate build toolbars when NewGRFs are changed.
...
If NewGRFs are changed while a rail or road toolbar is open, the toolbar could refer to an invalid rail/road type. If so, close it.
2024-10-31 09:10:01 +00:00
Peter Nelson
4f9c10d35f
Codechange: Simplify storage of WaterTileType in map. ( #13030 )
2024-10-26 10:17:44 +01:00
Jonathan G Rennison
8ed983b3cd
Codechange: Re-order load update for SLV_139
...
It is no longer required to be performed before the first phase
of vehicle updates
2024-10-25 17:05:59 +02:00
Jonathan G Rennison
f19829d029
Fix #12831 : Delay vehicle cache init to after map upgrades in load
...
Split AfterLoadVehicles into two functions.
Vehicle cache init and other functionality requiring an upgraded and
valid map is now performed later in the load process.
2024-10-25 17:05:59 +02:00
Rubidium
a6b7593a52
Codechange: use TileDiffXY(0, 0) over magic 0
2024-10-20 15:49:32 +02:00
Rubidium
4a6ac52d8c
Cleanup: remove some unused #defines
2024-10-14 21:37:00 +02:00
Peter Nelson
74910d3d14
Fix 908ee729: Inverted condition prevented actually writing data to files. ( #12941 )
2024-09-16 13:45:23 +00:00
Peter Nelson
908ee7292b
Codechange: Replace all FILE * with FileHandle RAII class. ( #12718 )
...
This removes the need to manually ensure all files are closed.
2024-09-16 08:45:26 +01:00
Jonathan G Rennison
2a5a0b0990
Codechange: No longer allow saving of incorrect string container table fields
...
See: 1250ce8f
2024-09-14 15:32:48 +01:00
Jonathan G Rennison
c277ff121e
Fix #12901 : Savegame format of company allow lists
2024-09-14 15:32:48 +01:00
Peter Nelson
7f5a3eaf83
Codefix: Avoid type-casting function pointer with incorrect type. ( #12929 )
...
Make `AutolengthProc` take `int` instead of `void *`, avoiding pointer parameters.
2024-09-12 06:49:45 +01:00
Jonathan G Rennison
e477706bf5
Codechange: Add AssignBit function to assign the value of a single bit ( #12934 )
...
* Codechange: Add AssignBit function to assign the value of a single bit
* Codechange: Replace various uses of SB with AssignBit
* Codechange: Replace various uses of SB with a constant with SetBit
2024-09-10 08:36:58 -04:00
Jonathan G Rennison
39465d7f5c
Codefix: Move saveload of road stop tile data ( #12883 )
...
So that road stop tile data is also saved/loaded for road waypoints
2024-08-13 19:49:53 +00:00
Kaiden Joy
7a698c7f1c
Fix #12365 : Company Window now displays proper inauguration year and period while in wallclock mode.
2024-08-13 20:13:51 +02:00
Peter Nelson
e69c065d6e
Codechange: Use find_if to find waypoint StationSpec when converting old savegames. ( #12865 )
...
This simplifies an indexed loop.
2024-07-17 11:40:17 +01:00
Jonathan G Rennison
65c666cb57
Codechange: Remove unused size field from struct SaveLoad ( #12859 )
2024-07-14 14:30:35 -04:00
Peter Nelson
b4bcb330c7
Codechange: Replace GetSavegameFormat's compression output pointer with std::pair return. ( #12850 )
...
This avoids using an unchecked pointer as an out-parameter.
2024-07-09 18:57:47 +01:00
Peter Nelson
100dd7b6d1
Codechange: Use find_if to get default writeable saveload format. ( #12849 )
...
* Codechange: Use find_if to get default writeable savegame format.
This removes the last of lastof, and so the lastof macro is removed.
2024-07-09 17:07:40 +01:00
rubidium42
d3c7b1015c
Codefix cff48c0f6: unused variable remained after refactor
2024-06-25 22:26:37 +02:00
Jonathan G Rennison
9c84e5df3f
Add: Road waypoint functionality
2024-06-24 22:12:08 +02:00
Jonathan G Rennison
05b65703d3
Codechange: Increase size of StationType field in map array
...
Move can station have wires bit to make room
2024-06-24 22:12:08 +02:00
Peter Nelson
79c1492a73
Codechange: Use unique_ptr in MemoryDumper. ( #12766 )
...
This replaces C-style manual memory management.
2024-06-08 21:59:56 +01:00
Peter Nelson
d5671030b1
Codechange: Add NewGRFSpecsBase class to hold class/index information.
...
Standardises how the class index is stored in the spec, instead of relying ot the Spec structs having the same members.
This allows retrieving class_index and index without searching or using pointer arithmetic.
'cls_id' is renamed to 'class_index' to make it clearer that it is an index rather than the multichar label of the class.
2024-05-11 02:12:41 +01:00
merni-ns
55a7c59d13
Remove: NPF and pathfinder change settings
2024-05-10 10:38:44 +02:00
Peter Nelson
9008d793ab
Change: Use per-company group numbers. ( #12297 )
...
This is used by the default group name, replacing the use of group index.
2024-05-07 19:01:28 +00:00
Rubidium
66354ab9eb
Codechange: introduce allow list infrastructure for companies
2024-05-07 00:03:15 +02:00
Rubidium
1250ce8fdc
Codechange: support storing std::string vectors/deques in the savegame
2024-05-07 00:03:15 +02:00
Peter Nelson
115ac2629b
Cleanup: Remove TileMatrix that hasn't been used for 4+ years. ( #12621 )
...
This 'nice' structure was left around from #8258 just in case it might be used again.
Spoiler alert: it hasn't.
This removes manual memory management. And otherwise unused and untested code.
2024-05-04 09:41:58 +01:00
Jonathan G Rennison
11ec156b64
Codechange: Add a priority field to TimerGameTick::TPeriod
...
Use this as the primary sort key for TimerGameTick::TPeriod,
to avoid container sort order changes on timer period saveload.
See: #12509
2024-04-25 20:08:24 +02:00
Peter Nelson
26bb87ebf1
Codechange: Replace SaveLoad var length arrays with switch block and sizeof. ( #12570 )
...
SlCalcConvMemLen(), SlCalcConfFileLen() and CalcOldVarLen() follow a pattern of looking up part of a value in an array.
These function returns the size of bytes of a variable type, but is not very clear. Replace with a switch block instead.
Removes lengthof, array indices, and magic numbers.
2024-04-24 21:33:29 +01:00
Peter Nelson
1dc94d0670
Codechange: Construct string_view with first+last. ( #12568 )
...
Avoids needing to calculate size when we already have last.
2024-04-24 21:29:33 +01:00
Peter Nelson
959ced71bb
Codechange: Add constants for original input/output cargo counts. ( #12548 )
...
This replaces some magic 3s and 2s.
2024-04-20 20:50:48 +01:00