IRC logs for #openttd on OFTC at 2024-04-30
โด go to previous day
00:22:36 <talltyler> Companies that have a station rating?
00:22:51 <talltyler> (Would only tell you whoโs interacted recently, not ever)
00:34:10 <peter1138> Btw, `THIS_MONTH` and `LAST_MONTH` probably want renaming now ๐
00:35:10 <talltyler> Although economy months are still called just that
00:35:13 <peter1138> Interacted recently is all I'd like anyway ๐
00:35:39 <talltyler> Station rating should be a much longer time scale than just this or last month ๐
00:36:13 <talltyler> FIRS industries boost cargos require a delivery once every 3 months and I still miss those
00:42:37 <peter1138> Just a random idea, blue is industries my company interacts with, grey is other companies.
00:43:14 <peter1138> Kinda redundant as the % transported is already some kind of indication.
00:44:04 <peter1138> Probably will just leave this as a stash, eh.
00:57:23 *** reldred has quit IRC (Quit: User went offline on Discord a while ago)
02:22:30 *** gnu_jj_ has joined #openttd
02:24:49 <talltyler> What about leaving the percentage blank if your company has no station rating? (And therefore you donโt care about the transported percentage)
02:25:40 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
02:28:34 <talltyler> Simplify by showing less info, not more ๐
02:31:34 *** debdog has quit IRC (Ping timeout: 480 seconds)
02:34:00 <talltyler> Also #12595 is already a contender for my favorite feature in 15.0 โค๏ธ
02:50:02 *** Smedles has joined #openttd
03:04:03 *** reldred has joined #openttd
03:04:03 <reldred> talltyler: OMG I love it
03:13:18 <audigex> talltyler: Yes please!
03:16:36 <audigex> I like 8480 too, if it makes it into 15.0
03:22:23 <reldred> Lmao Iโve been screaming about 8480 forever
03:23:46 *** Wormnest has quit IRC (Quit: Leaving)
03:52:20 <bootmii> We're already talking about 15.0? 14.x needs bugfixes first
03:53:01 <bootmii> The sooner we ship the desync fix in stable the better
04:01:44 *** aperezdc has quit IRC (Ping timeout: 480 seconds)
04:07:23 *** Smedles has joined #openttd
04:26:20 *** Smedles has joined #openttd
04:40:41 <DorpsGek> - Update: Translations from eints (by translators)
05:20:17 *** Smedles has joined #openttd
05:24:23 *** keikoz has quit IRC (Ping timeout: 480 seconds)
05:28:43 <kamnet> peter1138: Can you check #12595 using some of the recent AuzObjects releases? I got a feeling that these may not look so well with these features
05:28:59 *** Smedles has joined #openttd
05:53:50 *** aperezdc has joined #openttd
06:01:55 <reldred> I mean ideally if you leave everything stock as a rock it *should* work just fine
06:02:13 <reldred> if you change the ordering/filtering/etc. etc. then you'll run into issues
06:24:38 <locosage> hm, for whatever reason nml can't find ply in python 3.11
06:24:44 <locosage> 3.10 and 3.12 work fine
07:16:57 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
08:05:04 <peter1138> kamnet: That's a bit hand-wavy. There's a preview build, you can try yourself and be more specific.
08:17:14 *** mindlesstux has joined #openttd
08:26:25 <reldred> now, i wonder if i can get road warrior ipsec working on this mikrotik after having got the site to site tunnel working
08:27:25 <reldred> I have multiple public IP addresses at least
08:27:40 <peter1138> I had it working but it was so much admin :S
08:27:43 <reldred> Even worse, I'm doing RADIUS to AD to fetch creds ๐
08:27:54 <reldred> Anything has to be better than RRAS
08:28:13 <reldred> Especially a broken RRAS that's been flattened and rebuilt more times than I can count.
08:28:26 <peter1138> Wireguard was touted as the better way, but then it turns out THAT needs manual administration for every bloody connection you might need ๐ฆ
08:29:10 <reldred> Wireguard is a fucking shit, cooked up by nerds who've never had to admin an actual environment to any sort of scale, and I've yet to proove under any real world scenarios that it's even more performant than IPSEC
08:29:44 <reldred> and yet I'm still going to have to get it working for a few new macs that won't talk ipsec on any common ciphers that Windows clients use. FML
08:30:29 <reldred> Computers were a mistake
08:31:36 <reldred> Worse yet, try and run VXLAN over Wireguard, what a crapshow.
08:32:07 <reldred> Even raw file transfers between two big chunky Xeon VPS's in the same DC in the same public IP block, Wireguard was no faster than IPSEC and in a lot of cases, slower.
08:32:33 <peter1138> I originally had ipsec-1 with cliemt certificates and radius, which worked but had random issues with Windows clients (they would randomly drop after a few hours)
08:33:10 <peter1138> I did also set up ipsec 2 later, but couldn't figure out a way to get that going with certificates and radius, only radius. That did stay connected though.
08:33:10 <reldred> This is just gonna be PSK to be honest.
08:33:33 <peter1138> ipsec 1 with PSK is a no-no these days, I think ipsec 2 is okay though.
08:33:34 <reldred> The old RRAS setup was just using psk and their windows creds.
08:34:27 <peter1138> My working set up was always a bit flakey though as RouterOS was convinced the configuration was invalid.
08:35:05 <peter1138> For l2tp/ipsec is really really wants you to input a PSK, but that means you can't do the client certificate part
08:36:44 <reldred> I've already burnt far too many billable hours getting this client back on the air after RRAS crapped itself, PSK with strong ciphers is still considered 'good enough' in the eyes of the people I have to keep happy.
08:39:18 * peter1138 waits for the cocodamol to kick in
08:40:27 <pickpacket> Sorry if someone replied yesterday and I missed it. Is there a way to colour code rail tracks? I've seen some youtubers do it. Or at least I think I have :/
08:40:44 <reldred> That's PURR rails I believe
08:44:24 <pickpacket> I wonder if I can add it to a savegame
08:44:29 <reldred> I wouldn't know, I don't use it personally.
09:01:32 <truebrain> same answer, but a few more words ๐
09:03:26 <truebrain> rather happy frosch already addressed this with nile ๐
09:05:48 <peter1138> Hmm, vcpkg found the lib, cmake found the lib, linking... didn't find the lib D:
09:08:02 <_glx_> might be something wrong in lib port
09:08:31 <_glx_> like mismatch between lib filename and link command
09:12:26 <peter1138> Hmm, might be that opusfile depends on opus. vcpkg automatically includes it as a dependency, but my cmake changes only reference opusfile.
09:15:11 <peter1138> The whole `Find*.cmake` system is a bit shite isn't it.
09:17:34 <truebrain> "very flexible" ๐
09:21:20 <peter1138> Still, at least I'm not spamming here.
09:21:54 <truebrain> now I am hungryr ... spam ... hmmm
09:23:23 <peter1138> Whoever's paying for me to compile 8 versions all at once, thank you...
09:24:46 <peter1138> Bah, no change ๐ฆ
09:26:38 <peter1138> ``` The package opusfile provides CMake targets:
09:26:38 <peter1138> find_package(OpusFile CONFIG REQUIRED)
09:26:38 <peter1138> target_link_libraries(main PRIVATE OpusFile::opusfile)```
09:27:03 <peter1138> None of the other vcpkg modules say that.
09:27:29 <peter1138> Oh whoops, yes that do.
09:44:23 *** Smedles has joined #openttd
10:04:21 <truebrain> we never lack ideas ๐
10:20:34 <peter1138> That's basically asking to document each string.
10:20:53 <LordAro> only the ones with more than one parameter :)
10:30:49 <truebrain> If with 1 parameter it isn't always clear to translators what the parameter is; so I understand the request
10:32:18 <LordAro> i feel like the simplest change would be to change the parameter indexes into a string dict, that just uses 0.. by default
10:32:22 <LordAro> kinda like php arrays :)
10:32:35 <LordAro> then actual "names" could be rolled out slowly
10:50:35 <peter1138> The names need to be freeform, yes.,
10:50:50 <peter1138> The suggested "CARGO_STR" is way too rigid.
10:57:55 <_glx_> Maybe some hint system between string id and the `:`
10:59:51 <truebrain> There are also cases where the string can be anything
11:00:07 <truebrain> Which brings me back to: how much value does this really bring?
11:01:43 <_glx_> In many cases the parameter is obvious, but sometimes without explicitly knowing where it's drawn it's less easy
11:03:14 <reldred> well, got client to site with radius auth and site to site all working simultaneously. aren't i clever.
11:03:25 <_glx_> For the given example, the string name itself should be enough, though judging by the suggestion it seems it's not
11:34:57 <reldred> just had a late dinner ๐ช
11:35:05 <reldred> nearly time to tuck in
11:42:01 <pickpacket> how long bridges can towns build?
11:42:20 <pickpacket> does it matter if it's over rails or water?
12:05:22 <FLHerne> pickpacket: 11 tiles, and no
12:05:40 <FLHerne> it's a smaller number for small towns
12:06:35 <FLHerne> hm, now I'm not sure if I was imagining towns building bridges over rail :p
12:06:36 <LordAro> the behaviour probably isn't perfect
12:09:24 <FLHerne> they do, if they can't build level crossings
13:53:16 <peter1138> Where are the rest...?!
13:53:58 <peter1138> No, it's a caption I have no changed because I didn't want to edit english.txt
13:53:59 <_glx_> look like objects to me
13:54:28 <peter1138> But there's only 27.
13:54:47 <merni> perhaps it only displays those that can be currently built?
13:55:17 <peter1138> Sort of. That is all for temperate.
13:55:34 <peter1138> The rest must be random variations. TIL.
13:56:14 <peter1138> `_town_draw_tile_data[house_id << 4 | TileHash2Bit(ti->x, ti->y) << 2 | GetHouseBuildingStage(ti->tile)]`
13:56:26 <talltyler> There are a lot of random variations, I believe
13:56:36 <peter1138> 2 bits of random variation which you do not get to choose. Fantastic.
13:56:37 <talltyler> Additional complications for the house picker ๐
13:57:01 <peter1138> talltyler: "me: generic framework allows picking anything" -> "houses: screw you"
13:57:32 <peter1138> But still, I was able to create a house picker pretty quickly. Doesn't actually do anything though.
13:58:03 <talltyler> Houses probably have a ton of tech debt ๐ฆ
13:58:26 <talltyler> Houses can also have colours besides company colours - there are white and brick palettes
13:58:38 <_glx_> oh it's just like nml and stations, they use spritelayout like objects and industries, but you can't do exactly the same
13:58:39 <merni> hm, looks like the same
13:58:51 <merni> only limited options even in jgrpp
13:58:51 <talltyler> I donโt think those colours mix with company colours though โ itโs one palette or the other
13:59:00 <peter1138> NewGRF houses do, original houses only have ground and a sprite on top.
13:59:09 <peter1138> House palettes are different, yeah.
13:59:15 <peter1138> They're random, that's fine.
13:59:42 <peter1138> Anyway, with newgrf houses this will allow any of them to be picked.
13:59:45 <peter1138> I was just surprised ๐
13:59:45 <talltyler> Colours can also be chosen by the GRF via callback so it wouldnโt make sense for the player to choose
14:00:21 <peter1138> Also the fountain & statue are in the wrong position. Hmm.
14:00:25 <talltyler> ITL Houses shows land value using house colour in subarctic and subtropic. It was originally a debug feature but I liked it enough to leave it ๐
14:00:37 <talltyler> Yes, those have offsets unlike other houses
14:00:42 <peter1138> Hmm, I think loads of things do.
14:01:28 <peter1138> I tried applying the subtile position but that was way out for everything, haven't investigated further.
14:01:50 <peter1138> It should be necessary.
14:01:58 <peter1138> And it is. But it was worse with it ๐
14:04:22 <emperorjake> Some buildings must be missing, where's the 2x2 shopping centre?
14:04:25 <merni> hm, I can't spot the difference
14:05:11 <peter1138> Oh true, I filtered all the non-1x1 tiles.
14:10:10 <peter1138> Fixed, now there are 31.
14:10:45 <peter1138> Preview only draws the top corner though ๐
14:12:01 <talltyler> How are you handling town zone requirements? I wouldnโt mind seeing those ignored if placed manually, although of course the NewGRF callbacks should be respected.
14:12:07 <peter1138> Well, anyway, this was just a test to see house easy it is to add a picker. It's easy.
14:12:17 <peter1138> I'm not doing anything around actually placing buildings.
14:12:24 <talltyler> Ah, just GUI, got it ๐
14:12:40 <peter1138> It would be useful in scenario editor, I think.
14:14:00 <peter1138> And in sandbox mode.
14:14:08 <peter1138> Along with the 4096 limit patch.
14:14:26 <peter1138> It could replace a lot of the objects-as-houses with hoises that are actually useful.
14:14:34 <talltyler> Hmm, in Scenario Editor town zones would be informed by building placement (indirectly, via population) so thereโs my argument to ignore town zones ๐
14:14:44 <talltyler> Actually, not just in SE
14:14:48 <peter1138> I would ignore town zones for manual placement.
14:15:01 <talltyler> Yes, Iโd love to see objects-as-houses replaced with functional houses ๐
14:15:08 <peter1138> I think they're more a guide for what the town will build, and in this case the town isn't building them.
14:15:49 <peter1138> Perhaps a bit on the map to prevent it being removed (rather than relying just on the spec's bit) would help for scenarios.
14:16:13 <talltyler> Sort of like probability for industry generation โ we donโt check that when funding industries to see if thereโs a suitable number ๐
14:16:43 <talltyler> But also not like that ๐
14:25:35 <peter1138> Not many variations either.
15:11:04 <truebrain> that looks spooky ๐
15:11:09 <merni> peter1138: What's that?
15:11:40 <peter1138> Youv'e not implemented it yet ๐
15:12:28 <merni> What would it consist of :P
15:14:31 <peter1138> Not really a mode. Just a general "catch all" phrase for things outside of normal game play.
15:14:56 <peter1138> Placing houses in game...
15:14:58 <merni> peter1138: That makes more sense
15:19:08 <truebrain> just terrible to assume `SDLK_KP_` are sequential, but okay
15:20:41 <merni> 1 to 9 then 0 makes more sense than 1 to 0 tbh
15:21:03 <merni> though I guess pretty much all keyboards do 1 to 0 on the main number keys
15:21:58 <peter1138> kale91: Nothing implements, just ideas...
15:22:15 <truebrain> there, fixed my comment ๐
15:23:44 <andythenorth> peter1138: is that flat docks?
15:23:50 <kale91> peter1138: good ideas!
15:24:15 <peter1138> Tbh, this stems from my view that objects are pointless ๐
15:24:30 <andythenorth> that's the point of them
15:24:54 <peter1138> Yes, but then you get people asking for them to behave like other things. Producing cargo or whatnot.
15:25:08 <andythenorth> probably someone is wrong on the internet or something
15:25:14 <peter1138> Or being stations :p
15:25:19 <_jgr_> Lots of fun things in life are fundamentally pointless ๐
15:25:27 <andythenorth> might have been me asking for objects-are-stations ๐
15:25:43 <andythenorth> aren't I converting most of my non-track station tiles to objects?
15:25:48 <andythenorth> because non-track rail stations are silly
15:25:52 <andythenorth> trains can't use them
15:26:06 <andythenorth> we made a mistake somewhere
15:26:08 <merni> can trains use the concourse of King's Cross
15:26:39 <andythenorth> I think we should goes it throw out a limitation
15:26:42 <andythenorth> just not sure which one
15:27:05 <merni> barring such a situation at least
15:27:22 <talltyler> Someone forgot to set the non-traversible bit
15:27:38 <peter1138> Imho non-track station tiles are a useful thing, bui bundling them in as part of railstations was an error (ttdpatch's error)
15:28:11 <talltyler> A mode-agnostic station placer would be better, yes
15:28:17 <peter1138> introducing separate non-transport station tiles might be useful, yeah.
15:28:21 <kale91> peter1138: objects are more about painting a picture which when viewed in certain ways, are pointless
15:28:32 <kale91> but it would be really nice if they weren't pointless
15:28:40 <merni> talltyler: mode-agnostic? what are these modes?
15:28:41 <andythenorth> aren't they just decor though?
15:28:42 <kale91> in my opinion at least
15:28:54 <peter1138> Mostly yes, and it's fine. but there are so many objects that look like houses that it would be nicer to just have thoses as houss...
15:28:58 <andythenorth> isn't the point of decor to be decor?
15:29:00 <talltyler> merni: Rail, road, air, water
15:29:06 <andythenorth> houses aren't decor
15:29:16 <talltyler> So houses should not be objects ๐
15:29:26 <kale91> well I think there's a lot of objects that lean towards decor and then there's objects that look like they should be functional but they aren't
15:29:27 <andythenorth> dogs aren't cats
15:29:31 <andythenorth> sheep aren't goats
15:29:32 <merni> well the problme with that so far has been you can't place houses
15:29:36 <_jgr_> Passengers are very much not in short supply with default settings
15:29:41 <kale91> like skyscrapers, lots of houses
15:30:05 <_jgr_> There isn't much pressure to make decorative areas produce even more passengers
15:30:11 <kale91> and yes like JGR said you can usually just mess with your settings to get the desired effect with a small amount of "real" houses and use the object "houses" to make things like nice
15:30:11 <peter1138> That's not the point.
15:30:27 <talltyler> _jgr_: In towns, no, but some people build cities out of nothing but objects. No houses to be seen.
15:30:57 <andythenorth> I am curious what objections could be raised to a house picker, apart from code surface area, maintenance, and 'is it worth it?'
15:31:01 <kale91> kale91: but this is more a product of just doing what you can with whats available
15:31:03 <talltyler> Also, we have town cargo scaling in vanilla now so โdefault settingsโ arenโt the only status quo anymore ๐
15:31:06 <andythenorth> does it violate some gameplay pitchfork boundary?
15:31:46 <talltyler> Iโve never seen any objections besides โitโs a lot of work and I personally donโt feel like doing itโ ๐
15:31:48 <merni> andythenorth: as long as it's disable-able or disabled by default probably none. If it's always enabled then it might be "misused" in multiplayer
15:32:01 <_jgr_> andythenorth: I used to have one in game, written by someone else, but I removed the in-game functionality because it wasn't implemented properly and so wasn't multiplayer safe
15:32:03 <kale91> I think if you could place houses and have them still provide some functional purpose it would make sense in a more traditional way
15:32:19 <kale91> like then someone could come from CS and be like "ah I see how this works" without much thinking
15:32:22 <_jgr_> The removal didn't inspire much comment
15:32:29 <peter1138> andythenorth: The picker is barely any code all with my PR.
15:33:08 <peter1138> (The house picker is not in the PR,)
15:34:14 <andythenorth> can GS place houses? ๐
15:34:22 <peter1138> And yes, of course we could nothing and just let players place objects by hand.
15:34:44 <peter1138> Or we could try and improve it, let them place houses by hand. And allow more houses to exist for them to chose from.
15:34:50 <andythenorth> maybe we could follow that to the next stage and remove industry funding ๐
15:34:55 <andythenorth> just use objects"
15:35:26 <peter1138> And that way, players who aren't into micromanaging graphics on the tile level still get to benefit from a wider range of houses.
15:36:30 <andythenorth> random house placer? ๐
15:36:32 <kale91> right now I think people come in and see all the nice screenshots and get disappointed when they realize it's all basically just a facade sometimes
15:36:41 <andythenorth> oooh random industry placer
15:37:22 <kale91> the ability to make house sets placeable would probably make things a lot more approachable to these kinds of people
15:38:10 <talltyler> If you make a PR for a house picker Iโll approve it, I suspect weโd see no pitchforks at all. I donโt even know why weโre worrying about hypothetical pitchforks here.
15:38:29 <kale91> because unless you've been around here for awhile it seems somewhat confusing as to why you'd do a lot of these kinds of things
15:39:25 <talltyler> andythenorth: We have two already, donโt we? Industry placement by the game based on the industry density, and industry prospecting by the player ๐
15:39:45 <talltyler> Or a GS if you want to write the logic yourself ๐
15:40:34 <kale91> there would definitely be no pitchforks for a house picker, I don't remember that ever being a thing
15:41:12 <peter1138> It has to work correctly though ๐
15:41:38 <_jgr_> The people who don't like it can be easily mollified by a setting which turns it off
15:41:47 <talltyler> Psh, โwork correctlyโ is a silly requirement ๐
15:43:16 <kale91> _jgr_: I kind of want to pin this comment ironically ๐
15:43:53 <kale91> This quote will go on TrueBrain's tombstone
15:44:34 <merni> I think peter: "I have a patch for that" is more worthy of being pinned :P
15:45:01 <kale91> Lucky for him he can pin himself
15:47:13 <kale91> ... unless you add placeable houses ๐
16:00:40 <peter1138> Oh, that's surprising, my new interface worked first time.
16:11:52 <talltyler> Always a pleasant surprise!
16:24:01 *** Wormnest has joined #openttd
16:48:23 *** ufo-piloot_ has joined #openttd
16:52:58 <talltyler> Tech debt for another day
16:57:14 <talltyler> How do I convert a setting that is currently a bool to an integer, in saveload? I can't figure out how to read the old value properly...
17:06:29 <peter1138> My RAII FILE* goes a bit further than that.
17:06:45 <peter1138> Got sidetracked by the std::filesystem stuff first.
17:08:33 <frosch123> talltyler: rename it, and convert on starting ottd
17:08:55 <frosch123> openttd.cfg is shared by all installations of different versions, so it shall be compatible in both directions
17:11:19 <frosch123> talltyler: right_click_wnd_close is an example
17:13:56 <peter1138> Grass growth on my modern high-speed railways seems a bit weird to me ๐
17:17:34 <peter1138> Hmm, yes, I should get rid of the standalone bits until that's implemented. I did get rid of most of it.
17:43:48 <talltyler> frosch123: Thanks. I tried to follow this example, but it still doesn't load. (And I'm not sure if my changes to `newgrf.cpp` are correct or will break something ๐ฆ )
17:45:25 <frosch123> newgrf.cpp should have a `!= Off` instead of the int->bool cast, otherwise it is fine
17:47:19 <frosch123> converting openttd.cfg should work with your diff. but you also need something for the savegame
17:48:12 <frosch123> no, `EngineExpiryMode::Off` ๐
17:48:39 <frosch123> currently you have `engine_expiry` on the left of `?`
17:48:47 <frosch123> which does an implicit int->bool cast
17:48:53 <frosch123> we do not want that, but an explicit comparision
17:49:19 <talltyler> Silly Discord font made that look like you wrote `0ff` ๐
17:50:10 <frosch123> currently you have a conversion in `LoadFromConfig`, you need something similar in `AfterLoadGame`
17:50:18 <talltyler> Ah, I see what this ternary is doing, I think
17:50:41 <frosch123> `condition ? result_if_true : result_if_false`
17:51:06 <talltyler> The bitshifting is throwing me off
17:52:03 <frosch123> actually i do not know whether you need the renaming for the saveload, or whether it can somehow convert a bool to an int
17:52:15 <frosch123> i do not know whether we have a precedent for that ๐
17:52:36 <talltyler> Well, the old setting currently does not exist so I need to change it somehow
17:52:39 <frosch123> we convert savegames, we convert configs, but you need both :p
17:53:04 <talltyler> Do I have to convert the config if the setting changes names?
17:53:18 <talltyler> I am happy to just convert the savegame, but I can't figure out how to do that
17:55:37 <frosch123> someoneโข wanted to write a savegame howto
17:56:23 <talltyler> What a slacker, that Someone
17:57:28 <andythenorth> Someone hasn't finished FIRS 5
18:15:30 <andythenorth> is that flat docks?
18:31:04 <peter1138> No but but the dock picker becomes a bit smaller with it
18:32:47 *** gelignite has joined #openttd
18:44:22 <talltyler> andythenorth: Does this meet your needs? ^^^
18:45:00 <peter1138> More sandbox features ๐
18:46:15 <truebrain> There are those comments you make more often than any other ๐
18:47:17 <truebrain> I wonder how often I need to comment it before talltyler remembers ๐
18:47:20 <talltyler> It is an enum setting?
18:47:28 <talltyler> Did I forget something again? ๐
18:47:43 <truebrain> is it stored as number in openttd.cfg?
18:48:25 <peter1138> Hmm, does my "classic github access token" need any particular permissions for the backport.py script to work?
18:48:34 <peter1138> (I've never used it, so thought I'd take a look)
18:48:43 <truebrain> And do we have a method to store it as the enum name? ๐
18:49:09 <talltyler> truebrain: You expect me to answer yes, but I do not know ๐
18:49:18 <talltyler> It's defined as `enum EngineExpiryMode : uint8_t`
18:49:24 <truebrain> round and round we go ๐
18:49:27 <talltyler> I thought I did it right this time ๐ฆ
18:49:36 <truebrain> yet it still is a number in openttd.cfg ๐
18:49:50 <truebrain> look at `_roadsides` in the same `game_settings.ini` file
18:50:48 <talltyler> Woah, that is new to me. Very cool though! ๐
18:51:01 <truebrain> I am like 99% sure you said that before ๐
18:51:32 <talltyler> Maybe you are just gaslighting me ๐
18:53:04 <truebrain> I once tried to convert all numbers to names, but it doesn't make for good backwards compatible configuration files ๐
18:53:40 <peter1138> Just remove all settings and don't worry about.
18:55:41 <truebrain> I am not. But seems you never actually understood what I meant with the reference commit, and I never followed up ๐
18:56:25 <truebrain> so I failed in jogging your memory as it was never stored ๐ My bad ๐
18:57:04 <truebrain> no, I am to blame for not checking that PR better ๐ Missed chance to make it a readable setting ๐
18:57:25 <talltyler> Okay, I'm following _roadsides, but it's still storing a number ๐ค
18:57:38 <truebrain> check the setting-type
18:57:41 <truebrain> it no longer is a `VAR`
18:59:24 <talltyler> `engine_expiry = Never` ๐
18:59:36 <truebrain> now lowercase it, and let's go ๐
19:00:05 *** ufo-piloot_ has quit IRC ()
19:00:44 <talltyler> Now to cache the list of owned vehicles...
19:01:14 *** ufo-piloot_ has joined #openttd
19:01:16 <talltyler> I really need a true/false for each EngineID, not really a list of each engine
19:02:14 <talltyler> Any suggestions on a pattern to follow?
19:03:49 <peter1138> You could store it in Engine?
19:04:36 <peter1138> Depends what you need, I guess.
19:04:40 <talltyler> Yes, I've gotten that far. Stuck on what type of list to use
19:04:50 <peter1138> Why do you need a list?
19:05:55 <talltyler> When we try to age a vehicle, I want to check if its ID already exists in the cache of vehicles that are currently owned by any company and should be protected from expiry
19:06:15 <talltyler> So I need some way to store a bunch of EngineIDs
19:06:19 <peter1138> Yes, but why do you need a cache and or a list?
19:06:55 <peter1138> Can it not be stored as state within the Engine object itself?
19:07:07 <talltyler> OH, I see what you mean
19:07:32 <talltyler> Updated when a vehicle is purchased or deleted?
19:07:35 <peter1138> I imagine a CompanyMask is the thing to use.
19:08:24 <talltyler> Expiry is universal, not per-company
19:08:35 <talltyler> (in my implementation)
19:09:10 <peter1138> Problem with removal (however it's stored) is you will need to check if see if it exists.
19:09:40 <talltyler> Yes, it goes back to the iterating through all vehicles problem, but deleting vehicles is probably a less frequent action than aging them ๐
19:09:41 <peter1138> Unless you use a counter but then needs maintaining properly ๐
19:10:15 <_jgr_> You could add to the mask on build, and then re-iterate all the vehicles periodically
19:10:35 <_jgr_> It's probably not that important that expiry is instant after the last vehicle is removed
19:11:21 <peter1138> The flag need to be saved of course.
19:11:48 <talltyler> Yeah, I need to figure out saveload...
19:15:50 <peter1138> > File "/home/petern/src/openttd/.github/backport.py", line 180, in main
19:15:50 <peter1138> > for pr in sorted(all_prs["data"]["search"]["edges"], key=lambda x: x["node"]["mergedAt"]):
19:15:50 <peter1138> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
19:15:50 <peter1138> > TypeError: '<' not supported between instances of 'NoneType' and 'str'
19:16:15 <truebrain> you broke it! Or the person before you did! ๐
19:16:36 <peter1138> All I did is change 13 to 14. ๐
19:19:05 <talltyler> Yeah, I have no idea how to change the size of each engine in memory
19:19:30 <peter1138> That is... not something you need to do.
19:19:31 <talltyler> To add a `bool is_owned` field
19:19:38 <peter1138> You just add a field.
19:19:58 <talltyler> That seems suspiciously easy ๐
19:20:17 <peter1138> C++ knows how big it is.
19:20:27 <peter1138> byte flags has 1 byte space after it.
19:20:39 <peter1138> So if you add it after flags, then it won't even make Engine bigger.
19:21:04 <talltyler> Cool, I will do that ๐
19:21:20 <peter1138> Handy this modern IDE stuff ๐
19:21:36 <peter1138> And it is kind of a flag ๐
19:21:55 <peter1138> flags_2 lol no don't.
19:22:03 <peter1138> We used to have variables like that.
19:22:13 <peter1138> And "unk_1", "unk_2" etc...
19:22:27 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
19:22:38 <talltyler> Mine is a bit different display, but I assume `Alignment` is the equivalent
19:23:38 <peter1138> flags is only has 2 bits used.
19:23:48 <peter1138> And they are about availability.
19:23:59 <peter1138> So you could just use bit another bit there.
19:24:29 <peter1138> Just means you need HasBit/SetBit/ClrBit.
19:24:55 <peter1138> That means you don't need to touch the savegame format.
19:24:57 <_glx_> peter1138: `is a classic token you need to generate that has public_repo
19:25:27 <_glx_> just one check box needed
19:25:51 <peter1138> Hmm, okay. it has that.
19:26:52 <talltyler> Oh, so use an existing bit in `flags`?
19:27:29 <_glx_> ah script fails for me too ๐
19:27:35 <peter1138> ```enum EngineFlags {
19:27:35 <peter1138> ENGINE_AVAILABLE = 1, ///< This vehicle is available to everyone.
19:27:35 <peter1138> ENGINE_EXCLUSIVE_PREVIEW = 2, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a company.
19:27:46 <_glx_> but it was fine last time I ran it
19:27:56 <peter1138> Those existing flags feel pretty related to what you are doing too, so it makes sense to.
19:28:29 <_glx_> maybe github changed some stuff in the API
19:29:21 <talltyler> Where does `ExtraEngineFlags` get used? Just in the spec?
19:30:11 <truebrain> _glx_: doubtful; more likely an edge case not seen before ๐
19:30:42 <truebrain> like a closed PR with "backport requested" label
19:30:44 <peter1138> ExtraEngineFlags is int EngineInfo.
19:30:45 <truebrain> that might just do it ๐
19:30:51 <_glx_> "Webhooks and GitHub Actions will no longer be run for any push that includes over 5000 branches." I guess somebody did it so they had to prevent
19:30:53 <truebrain> not sure how backporting a non-merged PR should look like
19:30:58 <peter1138> EngineInfo is the "psec" of the engine. Engine is that actual settings.
19:32:09 <_glx_> truebrain: maybe it should just remove the label in this case
19:32:25 <truebrain> I really think the script should not do it ๐
19:32:33 <_glx_> well it does for --mark-done
19:32:46 <truebrain> yeah .. but that is because it actually did something
19:32:53 <truebrain> removing labels because the human didn't, feels bad ๐
19:32:54 <peter1138> Yeah that was the one.
19:33:01 <peter1138> Cherry-pick failed: please fix the issue manually and run script again.
19:33:12 <_glx_> warn nicely then and stop
19:33:24 <truebrain> feels like a lot of work for something that shouldn't actually happen all that often ๐
19:33:29 <truebrain> but go for it, ofc ๐
19:33:41 <_glx_> "git merge-tool" then "git cherry-pick --continue"
19:34:55 <_glx_> and if unlucky it detected a squashed commit while it was a rebase
19:37:52 <peter1138> I guess I need to thoroughly test it all...
19:38:16 <peter1138> Or at least run the unit-tests.
19:39:35 <peter1138> Oh maybe VS Code is trying to run tests added since 14.0.
19:50:58 <frosch123> truebrain: did you intentionally forbid rebase-merge in nile?
19:51:17 <frosch123> fine, squash everything
19:51:29 <truebrain> but in general, I always prefer 3 PRs over 1 PR with 3 commits
19:52:25 <frosch123> so much busy work opening PRs ๐
19:52:33 <truebrain> yeah, but it would have made reviewing far easier
19:53:25 <truebrain> nah, without joking, the CI is just easier/better when it is done on each commit, instead of a collection of commits
19:53:51 <truebrain> so all my personal projects just forbit rebase; but I enabled it for nile ๐
19:54:17 <truebrain> it still has quirks that are a bit tricky to deal with
19:54:41 <truebrain> but it also heavily stimulates non-rebase PRs ๐ (and makes it actually practical to do, instead of the amount of work you need to do for the same result with vanilla git)
19:56:41 <frosch123> lol, that is not answer i wanted ๐ noone understands it
19:56:49 <talltyler> I know, I'm sorry ๐
20:00:54 <truebrain> I have no clue how this user made the decision to continue translation outside of eints ..
20:01:04 <truebrain> all questions and conversations have been about eints
20:02:08 <peter1138> Probably because you linked the basque.txt file in the repo.
20:02:29 <truebrain> to search, yes. But even so.
20:02:42 <truebrain> there is also still a "Download Lang File" in eints
20:03:08 <truebrain> anyway, it was more that all questions were about eints, which gave the suggestion they were on the right path
20:04:36 <peter1138> Playing a fairly vanilla multiplayer game, one company has way more tracks than anyone else, so... they get all UFOs.
20:04:59 <peter1138> Even jammed they still make more money than me ๐
20:06:22 *** Wormnest has joined #openttd
20:06:58 <peter1138> Double message, hmm.
20:07:15 <peter1138> Ah, I guess one from the rcon, and one local.
20:07:18 <truebrain> one from rcon other from gameplay? ๐
20:08:54 <peter1138> I would've just used the console but it's not responding ๐ฎ
20:10:15 <michi_cc> Somebody just needs to make a changelog now.
20:10:45 <peter1138> Everything I typed into the game console showed up in the shell after I quit. Weird.
20:17:30 <frosch123> if i was a translator, i wished it was possible to enter `panic!` in `{G ` for cases, which are not possible
20:17:51 <truebrain> and crash the game? ๐
20:18:32 <frosch123> well, at least plenty of space to store your passwords
20:19:10 <frosch123> "i backup my data in unused cases of openttd translations"
20:23:44 <truebrain> eints shows the current "state" of a string (outdated, missing, ..)
20:23:46 <truebrain> is that actually useful?
20:24:49 <truebrain> should it show errors when no translation is entered yet?
20:24:54 <_glx_> well, for missing it's easy to spot ๐ (the translation is empty)
20:25:33 <frosch123> for "outdated" i think there was an explicit button to "confirm current translation"
20:25:33 <_glx_> but outdated is a nice hint
20:26:08 <frosch123> if the translator just gets an already valid translation, they may be confused on what is expected from them
20:26:22 <_glx_> though eints shows previous english and current english IIRC
20:26:33 <truebrain> frosch123: can't find that button
20:26:37 <truebrain> frosch123: that is fair
20:26:48 <truebrain> _glx_: it does indeed
20:27:00 <truebrain> I did not plan on supporting that, I have to admit ๐
20:27:48 *** nielsm has quit IRC (Ping timeout: 480 seconds)
20:27:48 <_glx_> but it's a nice feature, because sometimes it's not really "outdated" just reworded and translation is still valid
20:28:26 <_glx_> and seeing both old and new helps a lot
20:28:48 <truebrain> I can see the value; it is just incredibly difficult to support with the type of backend I created ๐
20:29:24 <peter1138> If the translation changes significantly we should change the string id.
20:29:44 <peter1138> Therefore if it's only oujt of date, it's only been reworded.
20:29:59 <peter1138> But... dunno how to express that.
20:30:05 <_glx_> sometimes commands changed
20:30:20 <frosch123> sometimes the formatting changes, colors, parentheses, ellipses...
20:30:35 <frosch123> those are hard to spot, if not seeing both versions of the text
20:30:37 <_glx_> and then it's reverted and eints goes crazy
20:31:12 <frosch123> truebrain: we could store a copy of the english text in the nile-data json of each translation
20:31:27 <frosch123> or add a case "base"
20:31:30 <truebrain> I need to think about it a bit; the file is already huge
20:32:35 <frosch123> btw. i may have some time tomorrow, but i am a bit lost on what nile-tools needs, and what you may already have drafted
20:32:57 <truebrain> I only did importing
20:33:03 <truebrain> I guess the next thing would be to export .txt files
20:33:42 <frosch123> any ideas about the commit message?
20:34:02 <frosch123> i assume nile-data would work like wiki, so commits are attributed to the translator users
20:34:19 <frosch123> the nightly sync to openttd could use "co-authored" or something
20:34:26 <truebrain> that is a nice idea
20:34:36 <truebrain> but that requires you to also parse the git history ๐
20:35:24 <frosch123> that way all translators get that stupid be "pair extraordinare" achievement
20:35:57 <talltyler> I already have that achievement from making website post suggestions ๐
20:36:12 <frosch123> truebrain: i would try to use the same blame strategy as on importing
20:36:58 <frosch123> talltyler: we all got it because some random dude added us all to some vaguely openttd related commit to some software collection list
20:37:19 <frosch123> half of my achievements i received for silly / invalid reasons
20:38:02 <frosch123> like closing my own bug report in my own repository within 5 minutes, when i actually just wanted to test some markdown formatting or something
20:38:14 <talltyler> Haha that reminds me of an email I got today,
20:38:14 <talltyler> I'm reaching out to invite you to participate in a brief survey (approved by IRB #24-138 at VT) about dark patterns in industry environments. We identified you as a potential developer who has contributed to this topic on GitHub.
20:38:14 <talltyler> Dark patterns are user interface design choices crafted to manipulate, deceive, or trick users into taking actions that they might not otherwise choose to do. We are interested in software developers' awareness and perception of dark patterns within the software engineering community.
20:38:33 <talltyler> Seems someone discovered the cryptominer I hid in NotDaylength ๐
20:40:04 <frosch123> i only got a spanish/portuguese complaint about a crashing AI
20:40:26 <talltyler> `Which types of dark pattern designs have you implemented in your work as a software engineer? (Select all that apply)`
20:40:45 <talltyler> Geez, what kind of monster does this study think I am?
20:41:17 <frosch123> dark mode ui design?
20:41:33 <peter1138> Well, I implemented a plague and ruined the game.
20:41:57 <truebrain> I thought I was the plague ๐ข
20:41:59 <talltyler> Would you classify that as Nagging, Obstruction, Sneaking, Interface Interference, or Forced Action?
20:42:24 <frosch123> ah, you did hide the block signals
20:42:33 <frosch123> that is an obstruction
20:42:46 <talltyler> Interface Interference maybe
20:43:26 <frosch123> also "honking" is a "forced action", everyone has to try it
20:43:34 <talltyler> `What factors influence your decision not to implement dark patterns in your projects?`
20:43:41 <talltyler> I answered "One project is an open-source game, the other is for internal users. And I'm not a monster."
20:44:09 <frosch123> that's what monsters say
20:44:21 <truebrain> You almost added a setting reading 0/1/2, how is that not a dark pattern?! ๐
20:44:38 <talltyler> Users don't read the config file ๐
20:44:44 <talltyler> (or maybe they do, I dunno)
20:52:56 <truebrain> should you be able to save a string if there is an error/warning? I guess ..
20:56:05 <_glx_> maybe, to fix it in next session, but it should not end in the final txt
20:56:20 <truebrain> warnings should ๐ But yeah ๐
20:58:17 <truebrain> valid warnings even! ๐
20:58:33 <truebrain> right, next up to highlight the cases whether they have a translation or not
21:04:41 <peter1138> ```$ python3 .github/backport.py --mark-done 12600
21:04:41 <peter1138> Update labels from backported PRs
21:04:41 <peter1138> Traceback (most recent call last):
21:04:41 <peter1138> File "/home/petern/src/openttd/.github/backport.py", line 275, in <module>
21:04:42 <peter1138> File "/home/petern/src/openttd/.github/backport.py", line 146, in main
21:04:44 <peter1138> UnboundLocalError: cannot access local variable 'prs' where it is not associated with a value```
21:05:12 <andythenorth> what now is bedtime ๐
21:05:58 <truebrain> did you actually copy all the text the script told you in the PR?
21:06:08 <truebrain> I am missing a `<!--` statement
21:07:34 <peter1138> It's just a comment, why would I copy a comment :p
21:07:46 <truebrain> especially one that looks very much like metadata ๐
21:11:41 <truebrain> hmm ... toggling the "active" on 5000 HTML elements appears to be sluggish .. I am not enough of a React expert to have a clue why ๐
21:29:07 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
21:57:27 *** Wormnest has joined #openttd
22:01:06 <peter1138> Hmm, houses have classes but they are totally different to the normal NewGRFClass.
22:10:57 <_glx_> it's the GRF spec, what did you expect? ๐
22:12:07 <truebrain> hmmm ... now the question of all questions ... should nile have a "save" button
22:12:09 <truebrain> or should it just save
22:13:10 <truebrain> I now made it that it validates the string while you are typing it
22:13:14 <truebrain> which is surprisingly quick
22:13:25 <truebrain> but that also makes saving kinda redundant
22:13:49 <truebrain> hmm .. I guess having an explicit "Save" is good to avoid accidental "typing in the wrong field" situations
22:20:59 <peter1138> Windows 10 with 8GiB. Should be "enough".
22:25:28 <peter1138> Houses definitely have a few issues ๐
22:46:36 <peter1138> > if (HasBit(pal, SPRITE_MODIFIER_CUSTOM_SPRITE)) pal += stage;
23:42:34 *** tokai|noir has joined #openttd
23:42:34 *** ChanServ sets mode: +v tokai|noir
23:49:25 *** tokai has quit IRC (Ping timeout: 480 seconds)
continue to next day โต