Peter Nelson
09a12f230f
Fix: Signals were incorrectly shifted by 1 pixel when selected. ( #12005 )
...
Most shifting when pressed was removed by 884b9e66
.
2024-02-05 17:55:04 +00:00
Loïc Guilloux
75015cdad2
Fix 6f6f099: Signals exist only on plain rail tiles ( #11977 )
2024-02-04 10:39:06 +01:00
frosch
b1718478c8
Codechange: Replace old non-standard attributes with C++17/20 standard attributes.
2024-02-02 22:29:28 +01:00
Tyler Trahan
f2db624e85
Change: Add dividers between signal groups ( #11897 )
2024-02-02 15:52:20 -05:00
Tyler Trahan
6f6f09910d
Fix #10118 : Cycle through current signal group, not just path signals ( #11798 )
2024-02-02 15:51:57 -05:00
dP
b370ae1212
Change: Build signals to the next junction when dragging regardless of the Ctrl state ( #9637 )
2024-01-30 19:14:26 +01:00
dP
acaceb45ba
Codechange: Make command constant names consistent with command proc ( #11920 )
2024-01-29 13:41:36 +01:00
Peter Nelson
a9a0bfffc1
Change: Disable building rail infrastructure if train build limit is zero. ( #11847 )
...
This matches the behaviour of road, ship and aircraft infrastructure.
2024-01-21 16:51:23 +00:00
Rubidium
aa5ba5bd7f
Codechange: allow certain enumeration to be added
...
Otherwise C++20 doesn't like it.
2024-01-16 23:30:23 +01:00
Peter Nelson
7737aa6640
Codechange: Make all NWidgetPart arrays constexpr.
...
This ensures that the arrays are not created at runtime and prevents using non-constexpr values.
2024-01-16 21:57:05 +00:00
Tyler Trahan
68814bd912
Codechange: Rename SIGTYPE_NORMAL to SIGTYPE_BLOCK ( #11788 )
2024-01-15 15:27:48 -05:00
Peter Nelson
628092f133
Codechange: Use GetParentWidget to find widget's NWidgetMatrix container.
2023-12-30 22:02:37 +00:00
Peter Nelson
6215e9bf77
Fix #11655 : Crash due to NWidgetMatrix modifying widget->index. ( #11657 )
...
NWidgetMatrix modifies its child widget's index to indicate which element
is to be drawn, which now causes issues with code that does not know about
stuffing extra data into the index.
Instead, let NWidgetMatrix store the currently processing element, and
retrieve this information from the matrix widget while child widgets are
being drawn.
This means only widgets that are children of NWidgetMatrix need to know
anything about their extra data.
2023-12-30 18:24:26 +00:00
Peter Nelson
a0dfb76e34
Codechange: Replace mishmash of types for widget index with WidgetID.
...
Indices were stored as int, but often passed around as uint/uint8_t and casts.
Now they should all use WidgetID.
2023-12-30 00:23:57 +00:00
Peter Nelson
7466c3c39e
Fix: Draw unavailable mask over picker sprite instead of behind it.
...
This makes these disabled picker buttons consistent with other disabled buttons.
2023-12-20 09:29:28 +00:00
Peter Nelson
712a4bb40b
Fix: Prevent picker preview sprites from overflowing button bevel.
2023-12-20 09:29:28 +00:00
Peter Nelson
313ee13e5f
Codechange: Add Rect version of FillDrawPixelInfo().
...
This simplifies most callers as they longer have to split out a rect.
2023-12-20 09:29:28 +00:00
Peter Nelson
661e0cd82d
Fix: Make compact picker windows expand to fill if necessary. ( #11591 )
2023-12-16 23:08:42 +00:00
Peter Nelson
fb60f8f2f5
Codechange: Simplify BuildRailStationWindow initialization.
2023-12-10 12:01:55 +00:00
Peter Nelson
dcf730f1f6
Codechange: Optionally allow passing state to GUIList sorter function.
...
GUIList sorter functions can currently only use global state, which makes per-window-instance sorting difficult.
2023-12-04 08:24:39 +00:00
Peter Nelson
8db7c79e79
Codechange: Add DropDownIcon constructor to override dimension.
...
This avoids the need to construct a DropDownIcon and set the dimension after.
2023-12-02 15:23:05 +00:00
Peter Nelson
c18a1494b7
Codechange: Remove FONT_HEIGHT_... macros. ( #11481 )
...
These make it look like we're dealing with a constant, but actually each is a call to `GetCharacterHeight(...)`.
2023-11-21 19:04:24 +00:00
Peter Nelson
f58a7ef673
Codechange: Remove now-unnecessary containers in picker layouts. ( #11473 )
...
These are no longer necessary as the issue they work around was resolved by #11471
2023-11-20 00:14:06 +00:00
Peter Nelson
61deab08fc
Change: Improve layout of station picker.
2023-11-07 18:27:51 +00:00
Peter Nelson
d380f2f3a2
Codechange: Simplify layout of depot pickers.
2023-11-05 20:09:45 +00:00
Peter Nelson
ef385499c7
Codechange: Remove ineffective NWidgetParts. ( #11443 )
2023-11-05 14:09:47 +00:00
Peter Nelson
18fb8e153f
Codechange: Add __FILE__/__LINE__ of WindowDesc to WindowDesc.
...
This is to allow unit-tests to produce more useful output.
2023-11-02 22:25:01 +00:00
Rubidium
c9276c2959
Codechange: replace x.size() == 0 with x.empty()
2023-10-20 23:05:43 +02:00
Peter Nelson
fd6f1e844a
Codechange: Avoid emplace_back(new()) into a unique_ptr. ( #11384 )
...
This could theoretically leave an unmanaged pointer in certain circumstances, and directly using
make_unique shows intent.
2023-10-20 18:40:48 +01:00
Peter Nelson
f379b31e28
Add: data parameter in Window::Close method.
...
This allows passing data when closing a window, e.g. to indicate how it was closed.
2023-10-13 20:47:28 +01:00
frosch
b5885295f0
Codechange: Use parameters, which should be used.
2023-09-19 22:49:59 +02:00
frosch
b6c8f301be
Codechange: Silence warnings about intentionally unused parameters.
2023-09-19 22:49:59 +02:00
Rubidium
3a2509198f
Codechange: use better location for the "invalid" action sentinel value
...
It used to be a random sentinel for end-of-(widget-)list that was used to tell
that no action has taken place yet. Since the last action is practically the
widget that was pressed, add the sentinel to that enumeration.
2023-09-17 19:44:20 +02:00
PeterN
acd7d3c913
Codechange: Rename *Railtype* to *RailType* for consistency. ( #11287 )
2023-09-11 08:55:12 +00:00
Peter Nelson
e8015e497d
Codechange: Use begin/end of nwidget parts of begin/length.
...
This simplifies processing nwidget parts as, unlike the remaining length, the pointer to the end of the list never changes. This is the same principle as we use(d) for tracking end instead of length for C-style strings.
And this removes 160~ instances of the lengthof() macro.
2023-09-04 10:20:45 +01:00
Rubidium
eaae0bb5e7
Codechange: automatic adding of _t to (u)int types, and WChar to char32_t
...
for i in `find src -type f|grep -v 3rdparty/fmt|grep -v 3rdparty/catch2|grep -v 3rdparty/opengl|grep -v stdafx.h`; do sed 's/uint16& /uint16 \&/g;s/int8\([ >*),;[]\)/int8_t\1/g;s/int16\([ >*),;[]\)/int16_t\1/g;s/int32\([ >*),;[]\)/int32_t\1/g;s/int64\([ >*),;[]\)/int64_t\1/g;s/ uint32(/ uint32_t(/g;s/_uint8_t/_uint8/;s/Uint8_t/Uint8/;s/ft_int64_t/ft_int64/g;s/uint64$/uint64_t/;s/WChar/char32_t/g;s/char32_t char32_t/char32_t WChar/' -i $i; done
2023-07-19 19:30:14 +02:00
glx22
46b504a700
Fix: ini_key issues reported by the script
2023-07-14 14:32:46 +02:00
PeterN
d42a78f3e8
Codechange: Make DropDownListStringItem preformat and remove other implementations. ( #11063 )
...
Having to choose between DropDownListStringItem, DropDownListCharStringItem, and DropDownListParamStringItem depending on whether to draw a StringID, a raw string, or a StringID with extra parameters was needlessly complex.
Instead, allow passing a StringID or raw string to DropDownListStringItem. This will preformat the StringID into a raw string, and can therefore accept parameters via the normal SetDParam mechanism.
This also means that strings no longer need to be formatted on every draw.
2023-06-23 08:30:13 +00:00
Rubidium
7c37dcb8e3
Fix: do not use {STRING} when {STRING1} or {STRING2} is needed
2023-06-14 09:44:06 +02:00
PeterN
f814c86389
Codechange: Reorganise hotkey initialisation. ( #10951 )
...
Hotkeys are now initialized inline, and use std::vector instead of
separate static C-arrays and std::string instead of char *. The list end
marker is no longer required.
2023-06-05 18:12:30 +01:00
PeterN
6ae6b65edb
Cleanup: Remove doubled statements. ( #10944 )
2023-06-04 21:54:44 +01:00
Jonathan G Rennison
d7bf6b2c07
Feature: Highlight waypoint tiles when adjacent or distant joining
2023-06-04 16:54:48 +01:00
Jonathan G Rennison
ba11467c02
Fix: Rail waypoint selection window not closed
...
When rail toolbar or rail waypoint build windows closed
2023-05-26 08:41:13 +02:00
PeterN
bc45c3f66c
Change: Remember waypoint filter string. ( #10857 )
2023-05-22 08:03:20 +01:00
PeterN
07473bfd2e
Fix: Don't use a loop to test if classid is valid. ( #10818 )
...
Additionally the Object class test was broken.
2023-05-13 21:27:32 +00:00
Peter Nelson
941dbadf9e
Codechange: Add and use GetScrolledItemFromWidget to get a list item.
...
This function returns an iterator, either to the selected item or the
container's end.
This makes handling the result more robust as indices are not used.
2023-05-12 21:45:32 +01:00
Peter Nelson
f5158c8b79
Feature: Add search filter and name text to build waypoint window.
2023-05-09 23:03:14 +02:00
Peter Nelson
dc50ff807c
Change: Remove incorrect minimal size.
2023-05-09 23:03:14 +02:00
Peter Nelson
b54d7f15ac
Change: Reduce size of waypoint matrix to 3 x 2.
2023-05-09 23:03:14 +02:00
Peter Nelson
0513a6ccb0
Change: Use separate names for default stations/roadstops.
2023-05-09 23:03:14 +02:00
Peter Nelson
93d49fa8b3
Fix: Make scrollwheel work on panel behind waypoint matrix.
2023-05-09 23:03:14 +02:00
PeterN
882f06bf14
Fix: Support more than 256 stations/waypoints/roadstops per class. ( #10793 )
...
It was already possible to define more than 256 per class, but not possible
to use them as the index used in GUI and passed through commands was limited
to a byte.
2023-05-08 18:09:33 +00:00
Peter Nelson
d2034d9c38
Codechange: Scrollbar methods now accept size_t.
...
This clears up a lot of casts from size_t to int.
2023-05-07 20:25:44 +01:00
Peter Nelson
0880616851
Codechange: Remove various STRING strings.
2023-05-05 07:07:54 +01:00
Peter Nelson
4767641c8c
Codechange: Remove various INT strings.
2023-05-05 07:07:54 +01:00
Tyler Trahan
ba3de0383a
Codechange: Pass more std::string to StringFilter::AddLine() ( #10743 )
2023-04-30 10:23:05 +02:00
Patric Stout
7aa2b9ab0a
Codechange: move all date-related variables inside the timer ( #10706 )
2023-04-24 15:56:01 +00:00
Patric Stout
3ebc7ad16e
Codechange: migrate all game-time-related timers to the new framework
2023-04-15 13:58:55 +02:00
PeterN
f1144de509
Feature: Separate rail/road and sea/air velocity units, and add knots. ( #10594 )
...
This is achieved by packing vehicle type along with the velocity so that
the string system can decode and pick the appropriate unit.
2023-04-08 12:26:13 -04:00
Rubidium
f001e84e5e
Codechange: use RAII to automatically restore _cur_dpi after use
2023-01-28 20:33:02 +01:00
Rubidium
fe2bcd2a58
Codechange: migrate size related functions to Map structure
2023-01-21 17:11:40 +01:00
PeterN
387c57b023
Fix eb4ba1991: Signal icons incorrectly positioned in UI. ( #10199 )
2022-11-28 20:03:27 +00:00
Peter Nelson
ed60c88b0a
Change: Use power-of-2 scaling for some dimensions in GUI.
...
These are related to drawing sprites that are normally drawn on the
landscape, and should therefore still follow power-of-2 scaling to fit
correctly.
2022-11-12 18:28:39 +00:00
Peter Nelson
890b2666d3
Change: Use scaled WidgetDimensions.
2022-11-12 18:28:39 +00:00
Peter Nelson
b6ed595176
Codechange: Prefer suggested widget padding.
2022-11-12 18:28:39 +00:00
Peter Nelson
1f1378c129
Change: Align picker previews to button centre.
2022-11-12 18:28:39 +00:00
Peter Nelson
6f95e04005
Change: Use Rect helpers for widget drawing.
...
This replaces repetitive and sometimes unwieldy use of constants.
2022-11-12 18:28:39 +00:00
Peter Nelson
f5f035a22b
Codechange: Make use of Rect Width/Height helpers.
2022-11-12 18:28:39 +00:00
Peter Nelson
eb4ba1991b
Change: Use CenterBounds function in more places.
...
CenterBounds may have a 1 pixel difference so the result is not exactly
the same.
2022-11-12 18:28:39 +00:00
Peter Nelson
ef8322ba25
Change: Add panel widget to waypoint GUI.
2022-10-23 00:07:15 +01:00
Peter Nelson
0e3400894f
Cleanup: Remove redundant WWT_PANEL SetDataTips.
...
WWT_PANEL defaults to 0x0 data and no tooltip, so no need to declare
the same in the widget tree.
2022-10-16 14:24:51 +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
Peter Nelson
af6c4d50ce
Change: Tidy up coverage area label widget layout.
...
Label is now centered properly and uses standard spacing.
2022-10-03 22:14:18 +01:00
Peter Nelson
8626090b24
Codechange: Draw station acceptance text in its own widget.
2022-10-03 22:14:18 +01:00
SamuXarick
374f0c7d11
Fix 6fe445e: Removing rail station parts without ctrl pressed was also removing tracks
...
The behaviour of holding ctrl key is swapped
2022-08-07 10:58:43 +02:00
Tyler Trahan
7f0efbe00e
Feature: Remember the last-used signal between games ( #9792 )
2022-02-02 21:26:46 +00:00
Jonathan G Rennison
6ccf020dc2
Fix #9802 : Assertion failure in BuildRailWaypointWindow constructor
2022-01-30 11:20:00 +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
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
eab18f06a4
Codechange: Pass additional data as byte stream to command callbacks.
2021-12-16 22:28:32 +01:00
Michael Lutz
0f64ee5ce1
Codechange: Template DoCommandP to automagically reflect the parameters of the command proc.
...
When finished, this will allow each command handler to take individually
different parameters, obliviating the need for bit-packing.
2021-12-16 22:28:32 +01:00
Michael Lutz
e740c24eb7
Codechange: Template DoCommand to automagically reflect the parameters of the command proc.
...
When finished, this will allow each command handler to take individually
different parameters, obliviating the need for bit-packing.
2021-12-16 22:28:32 +01:00
Michael Lutz
996b16de70
Codechange: Use lambdas instead of CommandContainer to manage station picker commands.
2021-12-16 22:28:32 +01:00
Michael Lutz
4fc055d6e9
Codechange: Align parameter order of command callbacks to command handlers.
2021-12-16 22:28:32 +01:00
Michael Lutz
a38bbefe1b
Codechange: Untangle command code, flags and error string for DoCommand*.
2021-12-16 22:28:32 +01:00
Michael Lutz
549caca39c
Codechange: Move command arguments to the back of the networked command function calls.
2021-12-16 22:28:32 +01:00
Michael Lutz
b6933a2ebd
Codechange: Move command arguments to the back of the DoCommand function call.
2021-12-16 22:28:32 +01:00
Charles Pigott
0853c1979b
Feature: Button to toggle showing advanced signal types ( #9617 )
2021-10-17 19:24:50 +01:00
Tyler Trahan
7469f00c5b
Feature: Hide block signals in GUI by default ( #8688 )
2021-09-05 20:22:27 +02:00
glx22
5799402f7a
Codechange: Rename window related DeleteXXX to match new behaviour
2021-05-29 21:08:25 +02:00
glx22
994bf19aef
Fix f6d5c01: Delay deletion when closing windows
2021-05-29 21:08:25 +02:00
rubidium42
08308d808c
Codechange: use separate pre and post callbacks for int settings
2021-05-29 10:07:30 +02:00
rubidium42
44ca7d9377
Change: Use gender-neutral pronouns
2021-05-15 10:16:48 +02:00
Rubidium
bb9121dbd4
Fix: comparison of narrow type to wide type in loop (potential for infinite loops)
2021-05-15 10:16:10 +02:00
Peter Nelson
3b3d80c8ef
Cleanup: Replace FOR_ALL_SORTED_RAILTYPES macro with range iterator.
2021-04-28 23:54:31 +01:00
Peter Nelson
2a0365b3d9
Cleanup: Remove unnecessary parameter of GetScrolledRowFromWidget()
...
Line height defaults to the resize height of the relevant widget, which is
set in all cases. Therefore it is not necessary to specify this value every time.
Additionally fixes scrolled padding for the framerate window.
2021-04-21 23:12:10 +02:00
Didac Perez Parera
e760c9fbec
Fix: adjust object and rail station selection window padding to be consistent ( #8929 )
...
consistent
2021-04-02 10:15:26 +02:00
stormcone
c56e9a546d
Add: Hotkey to focus the rail station class name filter editbox.
2021-04-02 10:12:47 +02:00