IRC logs for #openttd on OFTC at 2023-04-24
β΄ go to previous day
00:21:04 *** Wormnest has quit IRC (Quit: Leaving)
02:15:17 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
02:41:56 *** debdog has quit IRC (Ping timeout: 480 seconds)
02:43:07 *** D-HUND is now known as debdog
03:00:21 *** _aD has quit IRC (Quit: leaving)
04:01:54 *** HerzogDeXtEr has joined #openttd
04:07:42 *** HerzogDeXtEr1 has quit IRC (Ping timeout: 480 seconds)
05:29:00 <andythenorth> goes it wake up?
05:52:30 <andythenorth> random trains eh
05:56:07 <andythenorth> sometimes randomising to the 2nd CC isn't so good π
05:57:09 <andythenorth> I could automagic something so it choose a different but matching colour instead
05:57:18 <andythenorth> or I could just use 1CC
05:57:25 <andythenorth> or we could add 3CC
05:58:00 <andythenorth> or I could set that colour with a parameter
05:59:21 <petern> Sprite-stack based multiple-CC?
06:02:39 <andythenorth> or I just set them all to only use 1CC
06:04:50 <petern> Weird that we have to provide industries with a random seed in the command.
06:05:12 <petern> I know it solves and issue, but it's still weird π
06:08:02 <andythenorth> maybe I remove the remaining ctrl-flip colour changing crap
06:08:22 <andythenorth> goes it less crappy
06:09:25 <andythenorth> maybe I add more 'random wagon from list x, y, z' things
06:09:33 <andythenorth> so there can be more or less random choices
06:09:41 <andythenorth> I should used nested variants or something π
06:09:50 <petern> Drop #10701 otherwise andy gets too many options?
06:11:59 <petern> Hmm, industries don't get rerandomizations triggers.
06:16:53 <andythenorth> "16 would be plenty"
06:24:23 <andythenorth> hmm the problem I have is realism
06:30:02 <andythenorth> I need some complicated randomising π
06:33:10 <petern> Nice, back in the day vehicle random data was different per client.
06:34:38 <petern> And that was TrueBrain's attempt to fix something π
06:41:38 <LordAro> petern: that's a very early commit
07:04:06 <petern> Oops, I missed a bit on this one.
07:05:12 <petern> Well, it's not actually a type, just a macro parameter.
07:08:46 <petern> `Town *t = nullptr, *last_t = nullptr;` Well...
07:08:57 <petern> Just a variable name π
07:09:06 <petern> There's a few `_t` as well as ab abbreviation for tile.
07:09:26 <LordAro> an extra 3 characters wouldn't be the worst thing in the world
07:10:34 <petern> I think anything else beyond those can be another PR.
07:11:56 <LordAro> dunno what that check annotations failure is doing
07:20:14 <andythenorth> ok, goes it throw out more Horse things
07:20:35 <andythenorth> workarounds for 'no variants'
07:22:30 <petern> Also CCountedPtr looks like a recipe for std::shared_ptr replacement but I'm not sure how it works...
07:23:59 <petern> Hmm, not the same at all.
07:37:52 <petern> It all looks very manual though.
07:49:38 *** Elysianthekitsunesheher[m] has quit IRC ()
08:01:16 <petern> Eddi|zuHause, 123 over 73.
08:03:37 <Eddi|zuHause> you know we have DorpsGek for that? :p
08:04:19 <petern> Haha. The blood pressure monitor arrived, which was on order coincidentally.
08:04:20 <DorpsGek> Eddi|zuHause: 1.6849315068493151
08:04:50 <Eddi|zuHause> @calc (1+sqrt(5))/2
08:04:50 <DorpsGek> Eddi|zuHause: 1.618033988749895
08:05:22 <LordAro> petern: i've looked at that one before too
08:07:18 <petern> I don't think "implicit" means what you think it means...
08:12:59 <TrueBrain> petern: A simpler time ... π
08:20:22 <LordAro> Before the dark times
08:21:29 <TrueBrain> Before insanity hit :d
08:25:16 <petern> What is SmallArray even? It seems to be anything but small.
08:25:29 <TrueBrain> It is in core/ right?
08:25:45 <LordAro> petern: it was useful "once" "probably"
08:26:03 <TrueBrain> We got many of those things introduced once ..
08:26:28 <petern> Yeah, before we got on board with STL.
08:26:32 <LordAro> looks like it could be trivially replaced with a vector
08:27:13 <JGR> Presumably it's done that way so that items don't change pointers when thigns are added
08:29:08 <TrueBrain> So similar to std::list?
08:30:27 <JGR> ConnectNodeToCachedData seems to keep a pointer to cache items
08:30:36 <JGR> std::list doesn't have random access
08:31:20 <petern> Does it need random access if you're only using the pointer?
08:32:40 <JGR> PfNodeCacheFetch seems like it's doing a random access lookup
08:33:29 <TrueBrain> so it is a vector of (pre-allocated) vectors π
08:35:56 <JGR> You could probably replace it with std::deque
08:36:57 <JGR> As that uses basically the same memory layout
08:39:43 <petern> Haha Twitter are also verifying fake accounts as official...
08:40:46 <TrueBrain> will they ever learn ...
08:42:00 <Eddi|zuHause> at the current trajectory? i don't think so
09:24:16 *** TROILUS has joined #openttd
09:24:51 <TROILUS> I changed some settings in openttd.cfg
09:25:09 <TROILUS> but the server doesn't apply the changes.
09:25:35 <LordAro> obvious questions - are you sure you're modifying the right file?
09:25:37 <TROILUS> It's a Linux server , I use ./opentyd -D -c ./openttd.cfg
09:25:52 <LordAro> (i.e. introduce something invalid, see if it errors)
09:26:01 <TROILUS> I modify ./openttd.cfg
09:27:23 <petern> andythenorth: Default red is realistic, you see.
09:27:36 <andythenorth> turn them off π
09:27:43 <petern> Add blank signals? π
09:28:19 <andythenorth> I think it's the 'no green until the signal is reached' that's weird
09:28:26 <andythenorth> although JGRPP fixes it
09:29:51 <petern> Half-ten, maybe breakfast.
09:30:04 <petern> /me merges some stuff instead.
09:32:54 <petern> My favourite commit log is "dunno".
09:35:42 <andythenorth> "Proof of concept (partially working)" is my best and most regular one
09:39:59 <petern> Hmm, 18kcal per 100ml probably doesn't count as breakfast.
09:41:48 <petern> `This list is cached till 2023-04-24 09:45:04 UTC.``
09:42:14 <petern> But no since. Is it 5 minutes, 15 minutes? Arbitrary?
09:43:49 <TrueBrain> 5 minutes π PRs are welcome π
09:45:31 <andythenorth> too early for lunch eh
10:10:34 <LordAro> documentation on such things does seem limited
10:18:12 <TrueBrain> also not actually meant to be changed by humans π
10:18:57 <LordAro> doesn't really work for dedicated servers...
10:19:05 <TrueBrain> having a CLI argument to override certain settings might be a better solution honestly
10:19:17 <TrueBrain> or a file you can give, with the format similar to the console
10:19:29 <LordAro> the CLI options for config files are already too complex :D
10:19:33 <TrueBrain> having a completely different format in the ini versus all the other places you can influence a setting is not helping π
10:25:11 <petern> environment variables π
10:49:48 <JohnFranklin> Hello JGR. Has my crash (described in Discord channel #jgr-patch-pack) been solved yet?
10:49:53 *** virtualrandomnumber has joined #openttd
10:51:19 *** virtualrandomnumber has quit IRC ()
11:02:15 *** virtualrandomnumber has joined #openttd
11:02:20 *** virtualrandomnumber has quit IRC ()
11:10:06 <JGR> JohnFranklin: If you can post the logs I can take a look at it later
11:10:16 <petern> Yes, being generic was mainly my point, but the play time while paused thing does throw a spanner in the works.
11:10:41 <TrueBrain> yeah, so that commit resolves that issue, similar to how GameCalendar solves it
11:11:20 <TrueBrain> so up to you .. do we want that? π
11:11:40 <TrueBrain> it might never get used .. and we know how OpenTTD feels about that π
11:16:55 <petern> "PlayedGametime" seems both "probably useful" and yet also "very specific" at the same time.
11:17:19 <petern> Maybe it could be used to show a "You've played too long, take a break" warning π
11:17:34 <TrueBrain> yeah .. that is why I called it "Realtime" now, as that is what it is
11:17:46 <petern> "You've played for 30 minutes, to continue please leave feedback on the Store"
11:18:17 <Eddi|zuHause> "wait 10 minutes or upgrade to a premium account"
11:18:52 <LordAro> "purchase this box for a chance at winning a new train"
11:20:32 <TrueBrain> fuck it, it is just better to have it more generic
11:21:42 <Eddi|zuHause> anyway, i've got both too many and too few trains on this line...
11:24:16 <TrueBrain> regarding #10700, and as petern made a similar comment, would it improve the readability if we move more of those variables inside the TimerGameCalendar? So that you get TimerGameCalendar::year, or something?
11:24:34 <TrueBrain> instead of a `_date` which is changed by TimerGameCalendar, but stored in its own variable π
11:25:36 <petern> You could make a struct and then make those timers inherit that... if the data is the same in both
11:26:23 <TrueBrain> yeah, there is actually no need to have two full implementations of TimerGameCalendar and TimerGameEconomy .. they just need two instances π
11:26:47 <petern> `TimerGameCalendar::year` is (nicely) more verbose than `_cur_year` or `_cur_economy_year`
11:27:55 <TrueBrain> guess I am bored enough to grep the code for `_cur_year` and friends, and see what that looks like π
11:31:15 <TallTyler> I donβt know how to make just a separate instance, but the behavior will be different once I add real-time mode. Economy will either match Calendar or do its own thing, depending on the mode.
11:32:09 <TrueBrain> yeah, so it is only the function that processes a tick that differs π
11:32:19 <TallTyler> They would both have the same fields though if they inherited from the same strict, as Peter suggested π
11:33:39 <petern> Also if they have the same fields, you could start splitting code between calendar and economy without actually changing anything by sneaking a `using TimerGameEconomy = TimerGameCalendar;` in there. I think.
11:34:02 <petern> Then when actually splitting the two you remove that.
11:34:57 <petern> I dunno, depends how the commits are organised.
11:35:44 <TrueBrain> yeah, something like that should be doable
11:36:20 <TrueBrain> okay, replacing `_cur_year` seems to work out fine .. just a bit of work π
11:36:36 <petern> Global search & replace is easy π
11:36:43 <TrueBrain> yeah, but it doesn't take care of includes π¦
11:36:48 <TrueBrain> and `_date` is an annoying name π
11:36:51 <petern> Even easier if you remember to tick the case-sensitive and full-sentence flags.
11:40:16 *** SpComb has quit IRC (Ping timeout: 480 seconds)
11:41:44 <TrueBrain> it even changed the changelog!
11:41:46 <TallTyler> Breakfast first though π
11:41:51 <TrueBrain> (as for some reason there are things like _date in there)
11:46:56 <TrueBrain> adding includes is boring π
11:47:31 <petern> TrueBrain: Hah, yes, I had to exclude that before π
11:52:42 <petern> Hmm, hiding variants based on parent hidden status is more awkward than I thought.
12:07:04 <TrueBrain> pff, checking if `date_func.h` was needed took the longest .. recompile .. recompile .. recompile ...... π
12:12:10 <TrueBrain> I think I fixed all alignment issues even π
12:13:04 <TrueBrain> guess things like SetDate should also move to the class
12:14:15 <petern> This is much easier to suggest when it's someone else's PR π
12:14:30 <petern> But it does seem to be a nice tidy up.
12:15:41 <petern> I had envisioned 2TallTyler doing it all in his PR which would avoid doubly changing things but separate works too.
12:16:32 <TrueBrain> I like small PRs π Makes his PR more readable in the end π
12:16:38 <TrueBrain> so I might finally discover what it actually does π
12:17:30 <TrueBrain> moved `SetDate` too .. now it should all be contained π
12:18:35 <TrueBrain> and I think the ShiftDate stuff should also be moved inside the SetDate function ..
12:18:57 <TrueBrain> but that would be another PR π
12:19:14 <TrueBrain> ideally it would be an event: date-changed
12:24:22 <TrueBrain> that PR totally destroys TallTyler 's PR, but it will be so much more readable π
12:24:52 <TallTyler> Eh, Iβd have to redo it all anyway, so Iβm happy for you to help π
12:25:07 <TrueBrain> why does `date_of_last_service` and `economy_date_of_last_service` exist?
12:25:37 <TrueBrain> I could have read your description
12:25:43 <TrueBrain> that is ..... do we really need to? π
12:25:49 <TallTyler> Silly GRF authors be getting into mischief
12:26:52 <TrueBrain> and why similar with `inaugurated_year`?
12:27:16 <TallTyler> Iβve thought a lot about that, and the only better solution was to eliminate interval based servicing entirely and use percentage only. That RFC PR earned me quite a bit of Zorg wrath but JGR pointed out that percentage setting is awfully confusing and probably shouldnβt be the default
12:27:43 <TallTyler> Inaugurated year is because the calendar year is shown in the company window, and the economy year is used for share trading protections
12:27:47 <TrueBrain> percentage based servicing is the worst .. I don't know who thought up that mechanism, but it is just bad gameplay
12:28:13 <TrueBrain> TallTyler: not sure I like things that are in both timers .. feels weird π
12:28:15 <TallTyler> Surprise surprise, OpenTTD has calendar dates baked in all over the place
12:29:28 <andythenorth> maybe I should make a Zorg honeypot
12:29:41 <andythenorth> reignite the debate about Horse restaurant cars or something
12:30:03 <TrueBrain> hmm, share protection .. that is just a weird mechanism
12:30:20 <TrueBrain> but one can argue that the current setting is based on calendar π
12:31:58 <TrueBrain> yeah, I don't really see the reason why the share protection should be based on the economy?
12:32:29 <petern> TallTyler: Just remove share trading, it's broken anyway π
12:32:31 <TallTyler> Isnβt it to give the company time to start making money, so you canβt just buy it for Β£1 right after launch?
12:32:51 <TrueBrain> but why would that be based on economy? Sounds more correct to do that on calendar
12:33:06 <petern> I think it should stay calendar,.
12:33:08 <TrueBrain> I think we really have to do our best to avoid things being in both timers
12:33:17 <TrueBrain> it will be very confusing to the player otherwise
12:34:59 <TallTyler> Share trading protection would be expressed in periods or minutes, not years
12:35:28 <TallTyler> So I donβt buy the confusion argument per se, although it could be confusing to future developers
12:36:08 <TallTyler> If you have frozen calendar time and use calendar for share trading, it will never be possible
12:36:33 <TrueBrain> I get what you mean, it is just blegh how-ever you look at it
12:37:53 <TallTyler> Oh yeah, a lot of old features are blegh π
12:38:04 <TallTyler> But we have to keep supporting them I guess
12:38:16 <TallTyler> Was share trading in TTD?
12:38:46 <TrueBrain> I really never seen anything good come out of shares ...
12:38:55 <TrueBrain> the idea is nice, but ....... it is so poorly implemented π
12:39:02 <petern> TallTyler: Although... maybe that's desirable... it's kinda understandable at least.
12:39:19 <JGR> It's one of those things that sort of stuck after it was thrown at the wall
12:39:51 <TrueBrain> except for the usual suspects, would anyone really care if we just remove it all together?
12:40:52 <petern> Reimplement with as proper trading
12:41:04 <TallTyler> If we can do persistent clients in network games, we could replace it with player characters buying stock instead of companies buying stock
12:41:10 <JGR> `economy.allow_shares` is already false by default
12:41:12 <TrueBrain> TallTyler: this class-based variable approach also solves your `days_in_year` btw, as it will just be `TimerGameEconomy::days_in_year` π
12:42:17 <TallTyler> TallTyler: This would also make intentional company mergers and buyouts interesting, as the owner(s) could get the purchase price and use it to start their next company π
12:42:49 <petern> FFS I committed to master again :p
12:43:17 <TrueBrain> I am really tempted to just make a PR to remove shares, and leave it to another PR to introduce a new, better, mechanism π
12:43:34 <petern> That's quite a lot of UI work.
12:43:42 <JGR> I don't really see that they need to be replaced with anything at all
12:43:53 <TrueBrain> JGR: that can be a result π
12:45:51 <TallTyler> TrueBrain: Go for it!
12:45:57 <TallTyler> Iβd approve it π
12:46:31 <andythenorth> shared trading, but in a whole other platform
12:46:45 <petern> You could close #7691 with it.
12:46:48 <andythenorth> so you can trade across all live MP games
12:46:56 <andythenorth> and we do our own currency
12:47:10 <ag> Wasn't there a chinese patch some years back with share trading and so on
12:47:23 <andythenorth> shares in ottd are quite LOL
12:47:35 <andythenorth> especially compared to Railroad Tycoon 3
12:47:54 <andythenorth> the stock market was the main meta in RT3, the trains were the 3rd or 4th most important thing
12:48:19 <andythenorth> almost all scenarios involved stock market manipulation, apart from the cargo delivery challenges
12:48:26 <JGR> I don't really think that we want to replicate that kind of thing
12:48:40 <petern> Usual rules, create a game-script to do it? :p
12:49:18 <andythenorth> GS stock market via story book and buttons
12:49:29 <andythenorth> just needs a few architectural improvements π
12:51:12 <TrueBrain> owh, this doesn't even impact bankruptcy .. lol
12:51:45 <FLHerne> I don't see how the share trading delay being a calendar thing could make sense
12:51:53 <FLHerne> it's fundamentally an economy mechanic
12:52:06 <FLHerne> (I also think just removing the whole feature would be fine :p)
12:52:14 <andythenorth> I put some emoji responses on 10708
12:52:28 <andythenorth> I sometimes hide vehicles during grf dev, to make screenshots, or compare sprites
12:52:31 <FLHerne> more options to voluntarily merge companies would be nice though
12:52:57 <andythenorth> flherne, with realistic due diligence?
12:53:01 <andythenorth> and regulatory oversight?
12:53:26 <FLHerne> andythenorth: all companies have audited public accounts already
12:53:45 <petern> Gamescript: Fiddle the books.
12:53:52 <andythenorth> took the words out of my mouth
12:54:00 <FLHerne> well, you can't falsify the numbers, although that might be fun
12:54:02 <andythenorth> every year, a review of the accounting narrative
12:54:15 <andythenorth> you can move things like capex, opex, depreciation around
12:54:25 <LordAro> are 10705 & 10707 duplicates?
12:54:30 <andythenorth> revenue and cost recognition policies
12:54:38 <andythenorth> write downs of goodwill
12:54:40 <FLHerne> yeah, my brother is an auditor, I've heard all the tricks :p
12:55:16 <andythenorth> multiplayer: the new metagame is accounting policy, to make your charts look good
12:55:21 <JGR> Being able to trigger the "company is up for sale" dialog at times other than at bankruptcy can be useful for clearing up company slots and things like that
12:55:55 <JGR> I have a console command for that, mainly for server admins to use
12:56:32 <TrueBrain> that is a nice idea π
12:57:20 <TrueBrain> so weird that I can just remove settings and saveload entries .. π
12:57:20 <andythenorth> GS story book π
12:57:28 <TrueBrain> table-based savegames are easy! π
12:57:31 <andythenorth> storybook for everything
12:59:06 <petern> #10705 has a suspicious non-vanilla UI colour.
13:01:35 <TrueBrain> hmm ... NOT_REACHED after I removed shares ..... wwwhhhhyyyy???!!!!! π
13:01:48 <TrueBrain> CompanyWindow::OnPaint
13:01:56 <TrueBrain> all the info I am getting .. hmm
13:02:01 <glx[d]> most likely 32bpp colors
13:02:02 <petern> Widget tree not terminated properly.
13:04:04 <TrueBrain> owh, ofc, there are no buttons anymore for "other" companies
13:04:07 <TrueBrain> which it tries to render now π
13:08:12 <petern> andythenorth: I added pics. The "after" pic is really, er, useful?
13:10:33 <TrueBrain> that company window ..
13:10:36 <TrueBrain> so full of random buttons π
13:13:21 <TrueBrain> yeah ... and now check what happens when you open the one of another company
13:13:24 <TrueBrain> this `Give money` button appears
13:13:46 <andythenorth> stuff and things
13:14:11 <andythenorth> I enjoy that some of it lines up vertically, some of it doesn't
13:14:24 <andythenorth> it's very...hand-crafted
13:14:32 <petern> I think that is coincidence.
13:14:40 <andythenorth> probably varies with translations
13:22:55 <TrueBrain> ` We can not buy out a real company (temporarily). TODO: well, enable it obviously.`
13:23:00 <TrueBrain> do you want to know how old that TODO is?
13:24:08 <TrueBrain> right, that solves that discussion TallTyler π
13:25:53 <TallTyler> I want to know how old that is π
13:26:04 <TrueBrain> it wouldn't surprise me if I wrote that line π
13:26:09 <TallTyler> Please give me a number as percentage of how many Discord users are younger than that comment π
13:26:10 <TrueBrain> which would date it 2007 somewhere
13:30:58 <TrueBrain> so yeah .. 60% TallTyler π
13:32:13 <TrueBrain> the script that I made to scan for unused strings found an issue! I am shocked! π
13:35:10 <FLHerne> I await the very long Zorgpost
13:35:31 <TrueBrain> in the meantime, I will count how many fucks I am going to give π
13:36:58 <TallTyler> Hope you have enough fingers π
13:37:24 <JohnFranklin> JGR: I have posted in GitHub
13:37:50 <JohnFranklin> Okay, I have seen the solution
13:39:39 <andythenorth> I will buy you a fire suit TrueBrain
13:39:46 <andythenorth> I applaud this courage
13:40:57 <andythenorth> see also: my phone doesn't have a 3.5mm headphone jack port, imagine the horror
13:41:34 <TrueBrain> hmm, I broke regression .. oops
13:41:41 <TrueBrain> saveload .. what did I do wrong .. this should work π
13:42:26 <andythenorth> I will miss share dealing next time I start the game with multiple AIs accidentally configured
13:42:34 <andythenorth> intending to not share the map π
13:43:08 <andythenorth> ah but...cheat...switch company, delete everything in the AI company, max loan, bulldoze the sea
13:48:24 <TrueBrain> owh, I am a peanut .. forgot the min-version .. lol
13:49:19 <glx[d]> andythenorth: I think they sell some kind of adapter for that π
13:51:33 <TrueBrain> so I guess that leaves `date_of_last_service` TallTyler .. really no way around avoiding having that in both timers? π
13:52:02 <TrueBrain> at the very least I guess we should rename `date_of_last_service` to `calendar_date_of_last_service`, for visibility
13:54:12 <TrueBrain> hmm .. I think my PR (#10706) needs a bit more work .. maybe instead of `TimerGameCalendar::date` we could do `TimerGameCalendar()::date`
13:54:49 <TrueBrain> as that would make it a singleton, which we can change. This would make switching between realtime economy and calendar-based economy vastly easier
13:55:27 <TrueBrain> hmm, no, doesn't actually matter
13:57:58 <TallTyler> I'm halfway through a review, should I continue or do you want to change things?
13:58:09 <TrueBrain> no, continue on π
13:58:21 <TrueBrain> but when we get closer to your actual PR, it might change slightly again
13:58:46 <TallTyler> For sure, I'll definitely need some help implementing the two timers when I get to that
13:58:50 <TallTyler> Later today or Wednesday, maybe
13:59:31 <TrueBrain> okay, I did move `tick_counter` wrong .. that really should go to `TimerGameTick` instead
13:59:44 <TrueBrain> but that will be another PR
14:00:21 <TallTyler> Yes, tick counter should not be confused with calendar at all
14:00:29 <TrueBrain> yeah, and your PR moves it to economy
14:00:37 <TrueBrain> but most instance are not economy related
14:00:43 <TallTyler> Which is more correct, but still wrong π
14:00:58 <TrueBrain> most cases really should be `TimerGameTick` π
14:02:04 <TrueBrain> but that will be much more readable after my current PR π
14:02:43 <petern> Run ticks client side, it won't matter if visual things aren't in sync π
14:03:00 <TrueBrain> you ... you ........ π
14:03:00 <petern> I'm gonna get banned...
14:03:31 <TrueBrain> honestly, it is a really funny comment π
14:05:42 <TrueBrain> okay, 3 places where `_tick_counter` is used, I would consider economy .. rest is all animation
14:06:06 <TrueBrain> of those 3, I could argue they shouldn't use `_tick_counter`, but `_date` / `_date_frac`
14:06:18 <TrueBrain> for example, "travel time"
14:06:43 <TrueBrain> or the town algorithm when to send goods to stations
14:06:58 <TrueBrain> or when to call the BigTick on a station
14:08:43 <TrueBrain> usage of `_tick_counter` really is a bit of a mess π
14:15:28 <TallTyler> Does `SaveLoad _date_desc[]` in misc_sl.cpp handle conversion of `_date` to `TimerGameCalendar::date` and such? Reading it directly from the save file?
14:16:44 <TrueBrain> TallTyler: yes, why not?
14:16:50 <TrueBrain> petern: stop giving me more work π
14:17:02 <TallTyler> Thanks, I didn't know how that worked π
14:17:09 <TrueBrain> I really didn't want to revert that part of the PR π
14:17:30 <TrueBrain> TallTyler: `TimerGameCalenader::date` is just a global variable .. so nothing actually changed
14:17:34 <TrueBrain> just the syntax π
14:17:51 <TallTyler> I agree with Peter, sorry π
14:18:00 <petern> You sometimes need to be careful with changing the names of variables, but for globals I think that's explicit anyway.
14:18:03 <TrueBrain> well, you change that then! Ffs ... π
14:19:06 <TrueBrain> the main BLEGH about reverting `_tick_counter`, is that I have to recheck the `date_func.h` include ...
14:20:11 <TallTyler> Do you have a script that did that? My only two pending review comments are about `date_func.h` includes that get removed as the only change to that file
14:20:28 <TrueBrain> no, I manually checked every instance
14:20:35 <TrueBrain> as `date_func.h` was .. misused π
14:21:42 <TrueBrain> so be happy I did it for all files, not just for what I changed π
14:21:53 <TrueBrain> and no, I am not going to make a new PR to remove some includes; so you have to deal with it in this PR π
14:22:34 <TallTyler> Fine by me, just making sure it wasn't a mistake π
14:22:56 <TrueBrain> nope; it was painful though
14:23:34 <TrueBrain> same as this bullshit tick counter π
14:26:38 <TrueBrain> btw, TallTyler , you saw the comment of JGR on the change with switching SetDate? Seems wrong now π
14:28:15 <TallTyler> Yes, Iβm going to fix that today
14:30:57 <TrueBrain> okay, I think I did that correctly ... if not .... euh ... talk to XarothBrook π
14:38:30 <TrueBrain> petern: yeah, that is the thing that saved me here .. for global, the name of the entry is explicit π For other fields it is deduced from the member name, so that is a bit more tricky π
14:39:15 <petern> And because we haven't had any renames yet, there's no macros in place for it.
14:40:05 <TrueBrain> hihi, one can argue that animation should be bound to the calendar timer π
14:40:08 <TrueBrain> but that is just silly π
14:41:24 <petern> I wonder if any animation affects game-state.
14:41:35 <petern> Probably yes if randomness if involved.
14:41:58 *** XarothBrook has joined #openttd
14:41:58 <XarothBrook> TrueBrain: Yes, blame the victim.
14:41:59 <TrueBrain> I am going to point to myself in 2004 ....... it shouldn't, but often it clearly does π
14:42:01 <TallTyler> Snow line will always be calendar timer, of course π
14:42:09 <TrueBrain> XarothBrook: since when have you been a victim? π
14:42:17 <XarothBrook> When did we meet again? π
14:42:30 <TrueBrain> and who is suffering from that moment in time? π
14:42:54 <XarothBrook> The one time I invited you, I even invited you for dinner, and you skipped out on dinner! π
14:43:15 <TrueBrain> who plans their wedding on a weekend I am out with my real friends!
14:43:50 <TrueBrain> people are like: should we leave ... or stay ... or what is going on here? π
14:47:49 <TrueBrain> `if (GB(_tick_counter, 8, 2) == GB(tile, 0, 2)) {`
14:47:58 <TrueBrain> Towns use that to distribute their goods to stations
14:48:04 <TrueBrain> when TCGM_BITCOUNT is used
14:48:23 <TrueBrain> is that a calendar timer? That makes no sense .. economy? I guess?
14:48:27 <TrueBrain> it is just weird π
14:49:32 <TrueBrain> did you do anything with that part in any of your PRs TallTyler ?
14:50:57 <TallTyler> I didn't touch `_tick_counter`. It doesn't change speed at all
14:51:07 <TrueBrain> no, but `TCGM_BITCOUNT`
14:51:11 <TallTyler> I don't think I touched it, anyway
14:51:13 <TrueBrain> as it is clearly under the influence of economy speed
14:51:35 <TallTyler> What's `TCGM_BITCOUNT`? I don't recognize that
14:52:01 <TrueBrain> okay, so something to look into; but basically Town Goods -> Stations
14:53:01 <TrueBrain> owh, lovely, travel-time parameter is fully undocumented in the link graph π
14:53:06 <TrueBrain> guess it got added after-the-fact
14:54:26 <TrueBrain> what does it do? What does it mean? I don't knnnnnooooowwwww
14:56:07 <TrueBrain> or more specifically, should it be under the influence of any speed-up/slow-down (of either calendar or economy)
14:56:41 <TrueBrain> if I am guessing, as long as the speed isn't changing during the measuring, it doesn't actually matter
14:57:34 <TallTyler> Calendar speed doesn't affect production
14:58:06 <TallTyler> My economy/cargo scaling PR scales the amount of town cargo, not the frequency with which it's produced/moved
14:58:29 <TrueBrain> but it is being moved on a timer, so we need to identify which timer π
14:58:44 <TrueBrain> this link-graph travel-time is weird .. it seems to be write-only ..
14:59:47 <glx[d]> 3 files converted for now
15:00:06 <glx[d]> and not really testable until done
15:00:18 <TallTyler> TrueBrain: Oh gotcha. That should be either economy or animation tick, neither of which ever change timer speed
15:00:28 <TrueBrain> owh, finally found `TravelTime()` .. that was hiding π
15:00:45 <TrueBrain> TallTyler: animation tick is a bit weird, I would say π
15:01:05 <TrueBrain> and isn't the economy ticker you change the speed of in one of your PRs?
15:03:03 <TallTyler> TrueBrain: Nope. #10606 changes the interval for how often we call the "every 256 ticks" industry callback, but not the timer itself
15:03:41 <TallTyler> That PR probably needs other things to settle down before I revisit it π
15:03:48 <TallTyler> Lower priority than other things
15:04:11 <TrueBrain> just a few weird usages of tick_counter that needs a bit of consideration
15:05:19 *** WormnestAndroid has quit IRC (Remote host closed the connection)
15:09:36 <TrueBrain> okay, after some overthinking of this tick_counter stuff in those 3 places, if indeed we only scale the amount, not how often, we should be fine
15:10:56 *** WormnestAndroid has joined #openttd
15:17:18 <TrueBrain> I now have an issue with the `byte` vs `uint8`
15:17:21 <TrueBrain> my OCD can't handle that
15:17:27 <TrueBrain> what are we going to do about that TallTyler ? π
15:17:56 <TallTyler> Could just make the const a byte?
15:17:58 <TrueBrain> for sure you will have a merge-conflict with #10706, so you will have to push then again anyway .. so yeah, I dare asking this of you π
15:18:40 <TrueBrain> no clue why that cast is there btw
15:18:56 <TrueBrain> can't you define the const as `Year`?
15:19:06 <TrueBrain> might be even better!
15:20:23 <TallTyler> Yeah, leaving both as Year seems best
15:20:52 <TrueBrain> could do away with the `()` too I guess, but that is getting rather pedantic π
15:21:03 <petern> I was seriously contemplating s/byte/uint8/g
15:21:15 <TrueBrain> enough patch-killers in 14.0 anyway π
15:21:48 <petern> Apparently switching to the actual standard _t versions is a little more problematic.
15:22:13 <TrueBrain> would make so much more sense, to follow .. well .. standards π
15:22:39 <LordAro> petern: butbut std::byte in C++20 !
15:23:12 <petern> std::byte doesn't allow any arithemtic.
15:23:30 <petern> So good for data, bad for constrainted values.
15:23:48 <TrueBrain> petern: just one error left! π
15:24:40 <LordAro> petern: we use data sometimes!
15:24:48 <petern> I guess I broke some format stuff too, but Rubidium fixed that elsewhere.
15:25:21 <petern> LordAro, yes, we could use std::byte in places where it should be a byte. But when we freely mixed byte and uint8, even for the same values, it bugs me π
15:25:47 <petern> You do need to refactor that one though, a global search & replace messes things up.
15:26:04 <petern> e.g. comments like "Network uint8 order" is a bit garbage.
15:26:14 <petern> I mean, not like I've had a go... honest.
15:26:34 <TrueBrain> okay, `_tick_counter` commit is done, just waiting for #10706 to be merged .. piece by piece, step by step
15:28:11 <Rubidium_> petern: just approve some of my format patches and lets revisit #10651
15:29:02 <Rubidium_> and once all the manual changes are done, maybe see what a run of a formatter does? :D
15:30:44 <TrueBrain> TallTyler: does it make sense to have the "max year reached, wrap around" for economy?
15:31:22 <TrueBrain> owh, nevermind, that piece of code is to avoid overflows
15:33:22 <TallTyler> Remind me never to challenge you to a Wild West duel...that was quick
15:34:22 <petern> `r = (*this).mtime` nice avoiding -> there...
15:34:59 <TrueBrain> petern: lol; I know of codebases that never use `->`
15:35:04 <TrueBrain> as "it can be overloaded" or some crap
15:36:06 <TrueBrain> ugh, who made mingw required again? Waiting for CI takes for-ever! π
15:36:24 <TrueBrain> LordAro: if you are overloading `->` for `this`, you have other problems
15:41:20 <TallTyler> Hmm, time for lunch while I wait for #10706 to run actions and auto-merge, then it's time to redo #10700 π
15:41:37 <TallTyler> Should be a thrilling afternoon π
15:45:23 <petern> (No, I'm not just ticking through)
15:51:15 <petern> Urgh, because .net doesn't support multiple inheritance I need to create an interface and then reimplement things every time :/
15:51:20 <TrueBrain> hmm, dinner, now there is an idea! Waiting for 10706 is annoying π
15:52:10 <TrueBrain> our Squirrel is so different from vanilla π
15:57:39 <petern> Yeah, I think all the attempts to even look at the feasibility of upgrading result in "it'll break all existing scripts"
15:58:59 <FLHerne> and if it's going to do that, why upgrade to Squirrel :p
16:00:31 <LordAro> petern: afaik, only those that use slots
16:00:37 <LordAro> which iirc were removed from squirrel3
16:00:57 <LordAro> but i think that includes Zuu's superlib stuff
16:01:54 <petern> And well, lots has changed now π
16:02:14 <FLHerne> my point was if you're breaking all the bastardised-Squirrel-2 scripts, why upgrade to Squirrel 3 and not, say, Lua
16:02:35 <FLHerne> I guess easier for any still-maintained AIs to be updated
16:03:23 <LordAro> agreed, switching to lua makes more sense than squirrel3, imo
16:03:35 <LordAro> also comes with the possibility of writing some sort of compatibility layer
16:04:01 <Rubidium_> wasn't wasm the way to go?!?
16:05:25 <JGR> A compatibility layer would end up much the same as keeping the existing squirrel 2 code around, and putting the new script interpreter in a new directory
16:05:56 <FLHerne> well, with wasm you could compile the squirrel 2 interpreter to wasm :p
16:06:13 <FLHerne> and run it directly inside the new wasm interpreter
16:06:29 <FLHerne> might be a bit silly though
16:06:40 <JGR> Good luck trying to debug that when it doesn't work π
16:06:50 <FLHerne> and need a lot of boilerplate to passthrough all the APIs
16:15:33 *** Wormnest has joined #openttd
16:19:09 <glx[d]> LordAro: it's not slots, it's argc/argv
16:31:42 <andythenorth> petern: probably not horrifically, but eh, WASM
16:32:34 <andythenorth> glx[d]: yes, slots are pretty much the most iconic squirrel design pattern π
16:32:42 <andythenorth> ~everything is slots
16:32:56 <glx[d]> well everything is a table
16:34:37 <andythenorth> glx[d]: in philosophy of science one of the big questions: "is space a thing, or is space what's between things?" π
16:34:41 <andythenorth> seems to apply there
16:50:28 *** SpComb^ has joined #openttd
16:52:57 <TrueBrain> petern: is your comment a suggestion to wire the money back, or are we okay if we just throw it in a black hole? π
16:53:22 <TallTyler> Afterload could just return that to the company bank account, right?
16:53:32 <TrueBrain> you need to load the information first
16:53:52 <TallTyler> I personally don't care if the money disappears, but π€·
16:54:45 <petern> No I don't really care, but I bet someone will complain π
16:54:58 <TallTyler> More than if the feature is fully removed?
16:57:08 <andythenorth> sometimes it would be nice to have data
16:57:14 <TrueBrain> right, time to look at #10700 again .. TallTyler : will you rebase, or do you want me to?
16:57:27 <andythenorth> ratio of high-octane performative complaining
16:57:31 <andythenorth> playing of the game
16:57:46 <TallTyler> Nah, I'll work on it this afternoon
16:57:51 <TallTyler> Gotta keep myself busy somehow π
16:58:21 <andythenorth> what's the main downside of enraging parts of the playerbase?
16:58:32 <TrueBrain> I am wondering if we should have a `TimerGameCalendar::Date`, so you know what kind of `Date` we are talking about .. but that might be for another day π
16:58:43 <andythenorth> net time played goes down? we sell fewer banner ads? MRR subscription value decreases?
16:58:52 <andythenorth> new account activations decrease?
16:59:08 <andythenorth> average account lifetime / lifetime value decline?
16:59:17 <andythenorth> returning log-ins dip?
16:59:23 <FLHerne> so far no-one seems to have complained yet?
16:59:57 <TallTyler> Mostly just dealing with complaints on that and other unrelated PRs, plus reddit, but I'm happy for you to read reddit and tell us if we need to care about anything there π
17:00:08 <andythenorth> flherne they haven't seen the share removal show up yet? π
17:00:25 <andythenorth> if JGR integrates it soon, we'll find out
17:00:50 <petern> FLHerne, the usual route is to wait for it to hit release, then complain that nobody told anyone π
17:01:41 <TallTyler> TrueBrain: As in, a more specific data type than just `Date`? Not a bad idea for Intellisense and CI to go "hey, are you sure you want to do that?"
17:01:59 <TrueBrain> yeah, now it is just a bit unclear what type of `Date` a variable reflects
17:02:37 <TallTyler> Outside real-time mode, they are synchronized so economy date does need to work as a date, but it would be nice to split them
17:03:24 <TrueBrain> might be worth its own PR, to just drag Date into TimerGameCalendar, see how that looks&feel
17:03:57 <TrueBrain> for example, `_last_clean_month` currently is a `byte` .. totally unclear what kind of month it refers to π (with your PR)
17:05:11 <TallTyler> We have a data type for `Month`, using a `byte` is probably wrong no matter what
17:06:20 <TrueBrain> `ShiftDates` also really has to be dragged in the Timer π
17:06:34 <TrueBrain> I already mentioned that earlier, but reading your PR, that becomes very clear .. and you made a boo-boo there π
17:10:00 <TrueBrain> I had to resolve a conflict
17:15:02 <TrueBrain> right, so with that all done .. what was on my agenda next?
17:16:56 <TallTyler> TrueBrain: Are you suggesting that I do that, or that you plan to? Would be nice to know before I update #10700 just for it to get outdated immediately π
17:17:23 <TrueBrain> TallTyler: I am not doing anything atm; so feel free π
17:17:44 <TrueBrain> I don't even know if it is actually a good idea π But these kind of things are more: type it, look at it, does it improve the situation? π
17:18:23 <TrueBrain> Date is used 237 times .. so it might be a bit much π
17:18:36 <TrueBrain> ConvertDateToYMD would need to be templated .. yeah, a rabbithole π
17:19:08 <TrueBrain> still, would be much more clear what is happening with your PR π But, Rome isn't build in a single day π
17:19:27 <petern> The best PRs are either really simple, or get rewritten tons.
17:19:37 <petern> (Some of the worse PRs are too...)
17:19:58 <TrueBrain> π Well, you see that with 10700 .. it just takes a bit more untangling than you would expect at first sight π
17:21:09 <TallTyler> I have a hunch that splitting Date into CalendarDate and EconomyDate may be a good idea
17:21:25 <TrueBrain> well, TimerGameCalendar::Date, but yes π
17:21:55 <TrueBrain> slowly you see that TimerGameCalendar is becoming an entity that is on its own π
17:21:58 <TallTyler> I suspect it would be easier before I resolve #10700
17:22:11 <TrueBrain> same with Month and Year btw
17:22:27 <TrueBrain> just nice to know what Year we are talking about π π
17:22:45 <petern> Hmm, do I need all these stashes.
17:22:52 <andythenorth> hmm, remove support for something I won't use, or just use the built-in configuration setting to turn it off
17:23:12 <andythenorth> petern: is 'stash' the new 'hacked in prod'?
17:24:50 <petern> Hmm, adding more SlErrorCorrupt()... useful?
17:25:23 <petern> Things that the big red "unpause if you dare" can't even work on.
17:26:37 <TallTyler> Hmm, do I need a struct to define these?
17:26:46 <TallTyler> I've never touched typedefs before
17:26:55 <petern> Don't use typedefs now.
17:27:02 <petern> using is the C++ way π
17:27:08 <TrueBrain> lol @ std::min: `This does what you think it does. `
17:27:45 <TrueBrain> TallTyler: : `using Date = uint32`, or what-ever the type is, I think
17:27:59 <TrueBrain> plenty of examples in that very same class π
17:28:37 <TallTyler> `Year TimerGameCalendar::year = {};` ?
17:28:47 <TrueBrain> that is in the cpp file .. look in the header π
17:29:04 *** gelignite has joined #openttd
17:29:04 <TrueBrain> that is a static variable π
17:32:51 <petern> Hmm, does any of this stuff warrant unit tests now that we can unit test? π
17:33:12 <Rubidium_> TrueBrain: for fun... static_assert(std::min(0.0, std::numeric_limits<double>::min()) == std::numeric_limits<double>::min());
17:34:26 <Rubidium_> that'll fail your build as 0.0 is returned by std::min
17:34:41 <TrueBrain> I have no clue what I just read π
17:36:23 <TrueBrain> `STR_TINY_BLACK_COMA` <- why is tiny black and in a coma?
17:41:25 <TrueBrain> all helping in the revival π
17:41:49 <glx[d]> looks like many of these strings could benefit using {COLOUR}
17:42:50 <TallTyler> TrueBrain: How have you been renaming these things? I.e. `Year` to `TimerGameCalendar::Year`, without just searching plain text and catching comments too?
17:43:16 <glx[d]> so many duplicated string with only a different colour tag
17:43:21 <TrueBrain> I haven't. It is why many comments renamed too. But what petern said, in VSCode, whole-words-only, case-sensitive, and go-go-go π
17:44:42 <TallTyler> Ooh, now I get to play "fix the missing #includes" too π¬
17:44:43 <petern> If it has too many clashes you can also use refactor to rename it to something unique, then do global search & replace on that.
17:45:32 <petern> Maybe even just refector to the long name-spaced version π
17:45:41 <glx[d]> finding references already has issues to match the correct class
17:45:50 <petern> Heh, that's what I was looking back on, counting my stashes π
17:46:01 <glx[d]> like finding references for "name" member is a pain
17:46:14 <TallTyler> petern: Tried that, it wouldn't let me
17:46:16 <petern> Refactor also excludes things that are ifdeffed out.
17:47:16 <TrueBrain> Game Options looks so weird with 10674 π I like it π
17:47:58 <TallTyler> Wow, this breaks so much of our arbitrary formatting to align comments
17:48:11 <TrueBrain> so stop doing that!
17:48:19 <TrueBrain> it is so pointless π
17:48:34 <TrueBrain> (personal opinion there ^^ :D)
17:50:50 <petern> There's still misaligned stuff since the NULL to nullptr switch a few years ago.
17:51:28 <TrueBrain> hmm, we don't have a JSON library in our code-base yet, do we?
17:51:36 <TrueBrain> seems we load it into Squirrel, but that doesn't count
17:51:58 <petern> 2TallTyler has a PR that adds one...
17:52:02 <TallTyler> I started working with JSON in #10409, but didn't choose a good library
17:52:32 <TrueBrain> for some reason I am expecting boost π
17:53:09 <TrueBrain> I don't like that JSON library, as it is a fanboy of "STRICT JSON ONLY"
17:53:39 <TallTyler> If you add a library I would happily use it, but choosing one is probably out of my league for now
17:54:05 <TallTyler> That PR is on hold indefinitely waiting on a library solution π
17:54:07 <glx[d]> please not boost, grfcodec using it is enough
17:55:15 <dwfreed> boost is not bad if used sparingly
17:55:35 <glx[d]> the footprint just for a feature is huge
17:56:13 <TrueBrain> although you can also just use the single-header version, and vendor it in our code π
17:56:29 <glx[d]> (was talking about boost)
17:56:43 <TrueBrain> if you install boost properly, it is fine; you can cherry-pick the components
17:56:53 <TrueBrain> just most people don't know how, so yeah ... π
17:57:07 <TrueBrain> (including many package managers)
17:57:47 <petern> Using vcpkg is nice because then we don't have to maintain it.
17:58:10 <petern> And avoids customizing it and ending up completely different...
17:58:14 <andythenorth> JSON for GS - grf comms? π
17:58:19 <TrueBrain> looking at Squirrel now? π
17:58:33 <andythenorth> TOML anyone? π
17:58:46 <TrueBrain> I really need to talk to TallTyler to get kick rights on this Discord ...
17:58:55 <TrueBrain> 2 in one day ... this is getting worth the effort ... π
17:59:11 <TrueBrain> glx[d]: I rest my case π
17:59:27 <TrueBrain> there really is no need for that, in boost's world
17:59:32 <andythenorth> you can't kick people for liking Boost
18:00:19 <TrueBrain> too bad no compiler complained about ^^
18:10:15 <TallTyler> Hmm, does ScriptDate:: just inherit all the OpenTTD data types? Is `ScriptDate::TimerGameCalendar::Date` a valid data type now?
18:12:21 <andythenorth> when train.py is 6148 lines...is that a god object? π
18:13:42 <andythenorth> on the other hand....it generates 223568 lines of nml
18:13:47 <andythenorth> so it's probably appropriate size
18:13:56 <andythenorth> one does not bring a knife to a gun fight
18:17:25 <TrueBrain> TallTyler: no, please don't π
18:17:28 <TrueBrain> but they remap, yes π
18:27:37 <TallTyler> How should I handle it instead?
18:29:08 <TrueBrain> keep the current ScriptDate::Date
18:29:23 <TrueBrain> only replace the `::Date` π
18:29:52 <TrueBrain> the whole API creates his own namespace, which is used in all API functions
18:30:01 <TrueBrain> to make sure there is a good separation between scripts and the rest of the game
18:30:09 <TrueBrain> the implementation maps them back to internal structs
18:30:39 <TrueBrain> so `ScriptDate::Date` is just fine π
18:40:36 <DorpsGek> - Update: Translations from eints (by translators)
18:40:56 <petern> Conflicts everywhere π
18:43:36 <TallTyler> `'TimerGameCalendar': is not a class or namespace name` in `date_type.h`. It has the right #include, not sure what's going on...
18:44:16 <TallTyler> Those two header files #include each other, could that be a problem?
18:46:35 <TrueBrain> it generally is π
18:46:43 <TrueBrain> why would date_type need to use TimerGameCalendar?
18:47:06 <TrueBrain> so the reverse question holds π
18:47:09 <TallTyler> It defines a bunch of consts
18:47:11 <TrueBrain> which might require moving one or two more things π
18:47:12 <TallTyler> The reverse is not needed
18:48:09 <TallTyler> There's some goofy shit going on here
18:56:26 <TallTyler> Now it's time for TrueBrain to tell me everything I did wrong π
18:58:06 <TrueBrain> you did trigger my OCD, that is for sure
19:07:40 *** gelignite has quit IRC (Quit: Stay safe!)
19:31:45 <andythenorth> maybe I can drop the size suffix in the variants
19:32:49 <petern> > WID_GO_DISTANCE_DROPDOWN, ///< Measuring unit dropdown.
19:33:00 <petern> Funny how that still exists but it doesn't exist π
19:33:43 <petern> andythenorth: Imagine if you had to find them under cargo subtype livery refitting shenanigans...
19:35:29 <andythenorth> now I won't sleep
19:36:18 <andythenorth> do we even need names?
19:41:54 <petern> That's quite smalle rnow.
19:42:16 * petern ponders losing some more things
19:43:55 <andythenorth> can it have a resize drag handle, or does that not work here?
19:44:14 <andythenorth> probably doesn't reflow?
19:44:25 <petern> Is it not big enough? :p
19:45:29 <petern> "White" widgets, thats new.
19:46:11 <petern> Anyway, the resize drag handle doesn't really fit when you don't have a scrollbar or row of widgets along the bottom.
19:47:27 <petern> Look at it, just tacked there on the NewGRF settings and multiplayer window...
19:48:31 <andythenorth> petern: on small screens, it's possible to put interface size large enough that the window is mostly off screen
19:48:41 <andythenorth> but drag handle does not prevent that, silly idea
19:49:30 <andythenorth> this is probably an improvement
19:49:42 <petern> What do you think the point of the tabs is?
19:50:09 <andythenorth> I feel like I already went around this silly journey once π
19:50:17 <petern> You can of course put interface already up to 5x but then nothing fits ever.
19:50:22 <petern> Unless you have an 8K screen.
19:50:36 <andythenorth> less parentheses
19:51:39 <petern> Doesn't that get annoying when you start buying them?
19:55:06 <andythenorth> callback innit π
19:55:42 <petern> No I mean, you buy the dual-head part, and fill it with coaches, and now the engine part has moved away...
19:57:51 <petern> Okay, traditional small-buttons-at-the-bottom style tabs work but are definitely too small for game options tabs.
19:58:01 <andythenorth> TBH, I had not tested this π
19:58:07 <andythenorth> these are the things
19:58:36 <andythenorth> going to live with that for now
19:58:50 <andythenorth> at some point maybe we extend a var for the context, like string
19:59:27 <petern> I don't think a variable for "which engine should be bought" makes much sense.
19:59:51 <andythenorth> something else was proposed, a flag to not change to 'last built' or something?
19:59:57 <andythenorth> it's a nice adventure
20:00:14 <andythenorth> I think this is also an improvement
20:00:33 <petern> I'm not sure "proposed" so much as "mumbles that it doesn't do that and then nothing else"
20:01:14 <andythenorth> flying the plane while rebuilding the plane...
20:04:16 <petern> Can you edit hotkeys in game? I'm assuming no :p
20:04:22 <andythenorth> I never found a way π
20:05:03 <andythenorth> randomised is getting clipped less now
20:05:17 <andythenorth> previously they were all like this
20:06:38 <andythenorth> some renaming to do also
20:17:07 <andythenorth> yellow ones? π
20:18:06 <andythenorth> they are quite froggy
20:25:52 <andythenorth> maybe I should nest everything 2 levels deep π
20:26:15 <petern> I think up to 10 may "work"
20:26:23 <petern> Dunno why you would...
20:26:29 <andythenorth> is 'mixed' better than 'randomised'?
20:28:09 <andythenorth> also maybe we don't need to know about 'Curtain Side Van'
20:29:19 <andythenorth> wonder if my code supports chaining randomised to randomised
20:29:29 <andythenorth> currently it's a flat list of random candidates
20:29:50 <andythenorth> and the graphics action 2 chain branches to the chain for the selected candidate
20:30:13 <andythenorth> maybe the candidates could also be randomised wagons
20:30:37 <petern> 255 (concurrent) varactions is enough for anyone
20:31:08 <andythenorth> I had a stupid idea, a vehicle which is just a virtual shell, with a pointer to another real vehicle
20:31:14 <andythenorth> and the pointer can be randomised on build π
20:43:19 *** nielsm has quit IRC (Ping timeout: 480 seconds)
20:48:03 <andythenorth> not sure the blue wagons add much
20:48:06 <andythenorth> might be disruptive
20:50:23 <andythenorth> such realism though
21:25:43 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:00:57 *** keikoz has quit IRC (Ping timeout: 480 seconds)
22:10:22 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
22:20:11 <dP> is 10709 a reaction to Spiff's tournament? π
22:22:20 <dP> ah, no announcement was a bit later
22:23:31 <dP> anyway removing shares the same day it's announced that 100-player tournament will be centered on buying shares is totally awkward...
22:28:35 <Rubidium_> maybe it's a farewell game for the shares
22:32:25 <dP> I guess I'll try to abuse the heck out of shares so they won't be missed xD
22:33:06 <dP> they changed some mechanics though so who knows, maybe it'll actually be good
23:15:29 *** TROILUS has quit IRC (Quit: Ping timeout (120 seconds))
23:20:44 *** TROILUS has joined #openttd
continue to next day β΅