IRC logs for #openttd on OFTC at 2021-08-09
            
00:21:56 *** iSoSyS has joined #openttd
00:26:09 *** iSoSyS has quit IRC ()
01:24:09 *** twpol is now known as Guest3672
01:24:19 *** twpol has joined #openttd
01:27:44 *** Smedles has quit IRC (Read error: Connection reset by peer)
01:28:08 *** Guest3672 has quit IRC (Ping timeout: 480 seconds)
01:28:58 *** Smedles has joined #openttd
02:16:17 *** Wormnest has quit IRC (Quit: Leaving)
02:24:16 *** tokai has joined #openttd
02:24:16 *** ChanServ sets mode: +v tokai
02:31:10 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
02:33:17 *** glx has quit IRC ()
02:59:14 *** debdog has joined #openttd
03:02:35 *** D-HUND has quit IRC (Ping timeout: 480 seconds)
03:31:15 *** Eddi|zuHause has joined #openttd
04:02:31 *** Flygon has joined #openttd
05:41:05 *** virtualrandomnumber has joined #openttd
05:50:12 *** supermop_Home has quit IRC (Ping timeout: 480 seconds)
06:03:22 *** nielsm has joined #openttd
06:10:10 *** sla_ro|master has joined #openttd
06:55:35 *** andythenorth has joined #openttd
07:24:29 *** tokai|noir has joined #openttd
07:24:29 *** ChanServ sets mode: +v tokai|noir
07:31:10 *** tokai has quit IRC (Ping timeout: 480 seconds)
07:33:02 *** tokai has joined #openttd
07:33:02 *** ChanServ sets mode: +v tokai
07:39:39 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
08:13:48 *** andythenorth has quit IRC (Quit: andythenorth)
08:34:56 *** tokai|noir has joined #openttd
08:34:56 *** ChanServ sets mode: +v tokai|noir
08:41:54 *** tokai has quit IRC (Ping timeout: 480 seconds)
08:59:52 *** andythenorth has joined #openttd
09:21:32 *** andythenorth has quit IRC (Quit: andythenorth)
09:22:28 *** virtualrandomnumber has quit IRC (Quit: virtualrandomnumber)
10:11:49 *** iSoSyS has joined #openttd
10:12:32 *** iSoSyS has quit IRC ()
11:32:30 *** andythenorth has joined #openttd
11:38:25 <andythenorth> yo
11:44:52 *** tokai has joined #openttd
11:44:52 *** ChanServ sets mode: +v tokai
11:51:50 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
11:52:08 <andythenorth> hmm
11:52:18 <andythenorth> this FIRS town growth idea is quite broken currently
11:52:44 <andythenorth> the unavoidable FAIL is that grf can't control town growth
11:54:24 * andythenorth sad times
12:22:00 *** Samu has joined #openttd
12:24:14 *** glx has joined #openttd
12:24:14 *** ChanServ sets mode: +v glx
12:25:27 <Samu> hi
12:25:41 <DorpsGek> [OpenTTD/nml] glx22 merged pull request #228: Fix: define PY_SSIZE_T_CLEAN in _lz77.c https://git.io/JBhfz
12:50:44 *** TrueBrain_ii1 has quit IRC (Quit: killed)
13:38:02 *** y2kboy23 has quit IRC (Quit: ZNC - https://znc.in)
13:38:03 *** TrueBrain_ii has joined #openttd
13:39:14 *** y2kboy23 has joined #openttd
13:40:07 *** y2kboy23 has quit IRC ()
13:43:19 *** y2kboy23 has joined #openttd
13:52:40 *** gelignite has joined #openttd
13:58:13 *** tokai|noir has joined #openttd
13:58:13 *** ChanServ sets mode: +v tokai|noir
14:05:09 *** tokai has quit IRC (Ping timeout: 480 seconds)
14:18:45 *** WormnestAndroid has quit IRC (Remote host closed the connection)
14:20:37 *** WormnestAndroid has joined #openttd
14:27:09 *** sla_ro|master has quit IRC ()
14:34:42 <andythenorth> how does town growth work anyone
14:34:45 <andythenorth> anyway *
14:34:49 <andythenorth> some kind of numbers
14:44:38 <andythenorth> coop studied it: http://wiki.openttdcoop.org/User:Mfb/Towns
14:46:27 <Timberwolf> iirc the limit quite quickly becomes the road network causing the town to be unable to place houses, rather than transferred cargo.
14:46:36 <Timberwolf> I think a spiral outward is supposed to be optimal?
14:46:49 <Timberwolf> Possibly you need to keep pruning junctions to avoid it creating a mess of loops.
14:59:00 <andythenorth> hmm
14:59:12 <andythenorth> grf control of towns would also have to consider playing funding :P
14:59:13 <andythenorth> this is lolz
14:59:30 <Timberwolf> And gamescripts with Bad Features.
14:59:52 * andythenorth in UpdateTownGrowth
15:00:06 <Timberwolf> Villages will occasionally make the town with a company HQ grow a bunch of houses on the spot, if the dividend payout is large enough.
15:00:10 <andythenorth> not seeing where / why TOWN_CUSTOM_GROWTH flag gets set
15:00:48 <andythenorth> is CmdTownGrowthRate GS API?
15:01:13 <Timberwolf> There's something in there to change it, you have NONE and NORMAL in there at least.
15:02:12 <Timberwolf> GS can also directly force the "place a house" algorithm to trigger.
15:02:38 <peter1138> Is it beer o'clock?
15:02:56 <andythenorth> it was sometime ago yes
15:02:59 * andythenorth is on holiday
15:03:05 <andythenorth> UpdateTownGrowth now
15:03:15 * peter1138 is also on holiday.
15:03:28 <Timberwolf> It was beer o'clock at the weekend, followed by cocktail o'clock, followed by pretty much an entire day of not doing anything o'clock.
15:04:27 <peter1138> I've been to a pub for a meal, I feel dirty.
15:04:36 <andythenorth> was it a spoons?
15:04:41 <peter1138> Fuck no.
15:04:58 <andythenorth> probably fine then
15:05:15 * andythenorth used to go to spoons a lot, steak and chips was about £4
15:05:25 <andythenorth> "best not to ask how they manage that price"
15:05:35 <LordAro> ^
15:06:26 <andythenorth> uuf
15:06:37 <andythenorth> maybe CmdTownGrowthRate() could be split up
15:06:53 <andythenorth> so there's a function for setting TOWN_CUSTOM_GROWTH and associated red tape
15:07:02 <andythenorth> and the GS cmd calls that
15:07:05 <andythenorth> and also grf can call it
15:08:15 <andythenorth> would the grf callback just need to return number of days between growth attempts?
15:08:55 <peter1138> Do I want to restart Tomb Raider (hit a game-breakng bug in my save-game) or go flying?
15:11:56 <peter1138> Maybe I should go cycling, but it's a bit miserable out.
15:14:42 * andythenorth playing a lot of Solitair
15:14:46 <andythenorth> or Solitaire
15:14:55 <andythenorth> also this beer isn't cold, mistakes were made
15:19:13 *** Wormnest has joined #openttd
15:33:58 <peter1138> My beer is quite hot and tastes of milky tea.
15:34:20 <LordAro> peter1138: ah, so you did go to spoons
15:35:14 <peter1138> hah
15:35:40 <peter1138> Though my local sometimes does an Earl Grey beer.
15:37:37 <LordAro> curious
15:40:21 <andythenorth> hmm grf callbacks
15:40:24 <andythenorth> I wrote one once
15:40:28 <andythenorth> many years ago
15:40:35 <andythenorth> one of my actual OpenTTD commits
15:40:37 <andythenorth> such pride :P
15:40:59 * andythenorth wants a grf callback for https://github.com/OpenTTD/OpenTTD/blob/master/src/town_cmd.cpp#L2856
15:41:08 <andythenorth> minus the GS stuff
15:42:41 <Timberwolf> Who wins if both GS and GRF try to set a town growth rate?
15:44:51 <peter1138> Players
15:45:17 <Timberwolf> I liked the stuff Pikka was doing in TaI with restricting the houses available to a town based on various factors. You could extend that to do cool stuff like a mining town building mostly miners' terraces, etc.
15:45:25 <Timberwolf> Although then you also have to build a town set :p
15:45:54 <Timberwolf> Maybe we need some informal agreement on how industry and town sets are supposed to interact.
15:46:32 <glx> grf are not intended to set stuff, they are only asked by the game (callbacks) and game set stuff
15:52:26 <andythenorth> if both GS and GRF try to set a town growth rate...I don't use those GS
15:52:40 <andythenorth> I'm kinda into patchpack territory here :P
15:53:49 <andythenorth> this stuff is 11 years old https://wiki.openttd.org/en/Development/Design%20Drafts/NewGRF/Town%20Control
15:54:00 <andythenorth> the logs have so many conversations about this that are just air :)
15:55:14 <andythenorth> it would be nice to think that OpenTTD could actually provide this, but....evidence is otherwise so far :)
16:02:34 <andythenorth> ok first problem: is there actually a 'town' in grf? :P
16:02:55 <andythenorth> I think there was and it got deleted?
16:06:54 <andythenorth> maybe that was nml
16:07:18 <andythenorth> we changed feature 0x12 from towns to road types
16:09:02 <andythenorth> and used 0x14 for towns
16:11:31 <andythenorth> so town->callback_mask isn't a thing yet
16:16:06 <andythenorth> no action 0 for towns :)
16:16:09 <andythenorth> oofsie
16:19:18 <andythenorth> other features use e.g. EngineInfo or StationSpec
16:19:26 <andythenorth> seems to be where action 0 stuff goes?
16:19:48 <glx> towns used a fake feature in nml
16:20:15 <glx> it was only for scope IIRC
16:20:48 <andythenorth> oh lol GSF_FAKE_TOWNS
16:20:52 <andythenorth> just found that :)
16:20:54 <andythenorth> in openttd
16:21:09 <glx> same idea I guess
16:23:53 <andythenorth> oh frosch removed the feature 0x14 stuff from nml here https://github.com/OpenTTD/nml/commit/678a9453ead560a95e3fbea7f592bed1a3dccf1d#diff-23e315495dd26363695444fb44183da884c64781e40a21d410f3482d317df694L18
16:24:57 <andythenorth> ok action 0 towns is not a small thing :P
16:44:56 *** Progman has joined #openttd
16:46:48 *** tokai has joined #openttd
16:46:48 *** ChanServ sets mode: +v tokai
16:53:46 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
17:11:14 *** sla_ro|master has joined #openttd
17:21:29 <peter1138> Why am I really tired?
17:30:56 <andythenorth> long covid?
17:47:48 <peter1138> Oh, hope not.
17:48:26 <peter1138> Oh dear, dog managed to catch a bird and brought it inside...
17:49:22 <andythenorth> alive or dead?
17:56:41 *** HerzogDeXtEr has joined #openttd
17:58:07 <peter1138> Dead now, but it was warm...
17:58:26 *** virtualrandomnumber has joined #openttd
18:00:25 <TrueBrain> So some veggies with it and you have your dinner!
18:03:03 <andythenorth> is it a pigeon?
18:04:39 <andythenorth> https://media.discordapp.net/attachments/337701432230805505/874352404181680148/unknown.png
18:04:50 <andythenorth> ^ TrueBrain too many words, but the mechanic is now just 'growth points'
18:04:53 <andythenorth> call the thing what it is
18:05:57 <TrueBrain> Nice :)
18:06:53 <andythenorth> next challenge: grf can't control whether towns grow :D
18:07:03 <andythenorth> 'such lol'
18:08:05 <TrueBrain> Town growth is weird anyway
18:08:18 <andythenorth> it is
18:08:21 <andythenorth> but...why?
18:08:22 <andythenorth> :P
18:08:29 <andythenorth> what would be less weird?
18:08:35 <TrueBrain> No towns
18:09:13 <andythenorth> 'interesting idea'
18:09:50 <TrueBrain> I wanted to add some non constructive suggestions
18:09:54 <TrueBrain> I succeeded
18:10:01 <andythenorth> pls continue
18:10:08 <andythenorth> it's enjoyable
18:10:13 <andythenorth> industry towns?
18:10:16 <TrueBrain> Nah, it is as much I could muster
18:10:22 <andythenorth> towns entirely composed of floating house boats?
18:10:30 <andythenorth> we can't have towns on water, that is an error
18:10:36 <TrueBrain> Sea town .. hmmm
18:10:46 <andythenorth> also unrealistic, assuming climate change isn't just a mind control plot by the global illumaniti
18:16:12 <andythenorth> so how can we connect GS and grf then? :P
18:21:33 *** Flygon has quit IRC (Remote host closed the connection)
18:23:21 <andythenorth> how about AWS Lambdas parsing json from an AWS queue thing?
18:30:15 *** moll has joined #openttd
18:41:55 <TrueBrain> sounds like an excellent idea ;)
18:44:48 <andythenorth> can we afford it?
18:44:48 <andythenorth> :P
18:45:54 <TrueBrain> the latency? No :)
18:47:35 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
18:52:25 *** WormnestAndroid has joined #openttd
18:57:02 <andythenorth> so one serious idea was a fake industry for GS to read
18:57:33 <andythenorth> the current recommended route is for GS to detect the grf by reading the accept / produced cargo at specific industries
18:57:42 <andythenorth> and having an internal table of which grfs do what
18:58:04 <andythenorth> the problem is that the GS might detect the wrong version of the grf
18:58:28 <andythenorth> or that the player might have a newer grf version the GS isn't aware of
18:59:05 <andythenorth> but I could create a hash using the accept/produce cargos at an industry in specific combination
18:59:15 <andythenorth> and the GS only works with specific hashes
18:59:27 <andythenorth> this is a serious suggestion
19:15:38 *** jottyfan has joined #openttd
19:16:48 *** jottyfan has quit IRC ()
19:20:55 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
19:21:52 *** WormnestAndroid has joined #openttd
19:30:29 <andythenorth> hmm so GS has no callbacks?
19:37:02 <TrueBrain> :D You should write this part down ;)
19:37:06 <TrueBrain> GS -> event driven
19:37:08 <TrueBrain> GRF -> callback driven
19:39:09 <andythenorth> is there a monthly event?
19:39:18 * andythenorth looks
19:40:55 <andythenorth> seems not https://docs.openttd.org/gs-api/classGSEventCompanyTown.html
19:40:57 <TrueBrain> you are thinking too NewGRFy :P
19:41:03 <TrueBrain> GS is pumping his own loop
19:41:08 <andythenorth> hmm
19:41:18 <TrueBrain> NewGRF is a slave of OpenTTD, where GS is free to do when-ever what-ever it wants
19:41:31 <TrueBrain> GS is like a real application
19:41:47 <andythenorth> if I can make this work, it would be interesting to graphviz the calls :P
19:41:55 <andythenorth> it's going to be made of complete string
19:42:06 <andythenorth> so can I write my own loop in GS?
19:42:12 <andythenorth> to do a monthly town check?
19:42:56 <andythenorth> maybe the wiki has a GS guide
19:44:48 <andythenorth> maybe the NoAI stuff is what I need
19:45:56 <andythenorth> maybe it's easy
19:46:05 <andythenorth> just check the date, if it's 1st of month, update all towns?
19:48:53 <andythenorth> ha ha ha
19:49:03 <andythenorth> I just found a way to communicate grf -> GS
19:49:17 <andythenorth> I can change cargo acceptance, and GS can read that
19:49:18 <andythenorth> https://docs.openttd.org/gs-api/classGSIndustry.html#a51a771fdb27e742ae6d7814a38bbf6bc
19:49:25 <andythenorth> that gives 1 bit of information
19:51:36 <andythenorth> hmm
19:51:46 <andythenorth> why aren't industries reimplemented in GS?
19:51:59 <andythenorth> surely 'cargo arrives at industry' is just a GS event?
19:52:07 <andythenorth> then the production could be calculated in GS
19:52:58 <andythenorth> GS can do things like set industry text with SetText()
19:53:22 <andythenorth> ditch grf, move it all to GS
19:56:29 <TrueBrain> you keep falling for the same trap with the difference between GS and NewGRF :)
19:56:36 <TrueBrain> GS is async, it doesn't "react" to events
19:56:50 <TrueBrain> it can read them, and act on them
19:56:52 <andythenorth> I keep getting told to use GS though :|
19:56:54 <andythenorth> it's confusing
19:57:04 <TrueBrain> GS and NewGRF, if you draw them in 2 circles
19:57:08 <TrueBrain> their intersection is OpenTTD
19:57:16 <TrueBrain> so what-ever you think NewGRF does, GS is not doing that :P :P :P
19:57:21 <TrueBrain> okay, that was VERY unhelpful, I am sorry :)
19:57:33 <TrueBrain> GS has a mainloop, and you can do stuff in the mainloop
19:57:36 <TrueBrain> part of that is reading events
19:57:38 <TrueBrain> and you can react on them
19:57:42 <TrueBrain> or you can read tile-info
19:57:43 <TrueBrain> and react on that
19:57:46 <TrueBrain> but what-ever it is, you are reactive
19:58:01 <TrueBrain> NewGRFs are being called (via callbacks) when OpenTTD needs something from it
19:58:14 <TrueBrain> OpenTTD halts till NewGRF returns
19:58:30 <TrueBrain> OpenTTD never "halts" for GS (it gives it some cycles to do its thing, but cuts of GS if it is taking too long)
19:58:36 <andythenorth> hmm
19:58:45 <TrueBrain> something like "cargo is delivered to your industry" can be both a callback and an events
19:58:52 <TrueBrain> but for NewGRFs you are always called the moment it happens
19:59:09 <TrueBrain> for GS it becomes an event in the event-stack, which you might or might not react upon, which might or might not be within, say, 10 ticks
19:59:11 <TrueBrain> or 20
19:59:13 <TrueBrain> or 300
19:59:26 <andythenorth> ok so blocking vs. non blocking
19:59:37 <TrueBrain> you keep running circles on what domains GS and NewGRFs cover, for some reason it doesn't really want to stick :)
19:59:43 <TrueBrain> yeah, I didn't want to repeat wording I used last time explaining this :P
19:59:47 <andythenorth> it's because I keep getting told not to use grf
19:59:50 <andythenorth> but to use GS
19:59:55 <andythenorth> but I don't understand GS
20:00:14 <andythenorth> if GS is supposed to replace grf, but by design it can't...."does not compute" :(
20:00:28 <andythenorth> it's very puzzling
20:00:30 <TrueBrain> until you grasp the fundamental difference between the two, it is hard to reason about it .. so maybe just try creating a nice little GS?
20:00:46 <andythenorth> well I made BusyBee with Alberth
20:00:49 <andythenorth> but that's just goal stuff
20:00:50 <TrueBrain> I think you heavily confuse "you should use GS for that" with "GS is replacing GRF"
20:00:55 <TrueBrain> as I think absolutely nobody ever said the latter
20:01:24 <TrueBrain> (GS fundamentally cannot replace GRFs, in the general sense)
20:01:35 <TrueBrain> both have their place in this ecosystem, but both are completely different beasts
20:02:07 <andythenorth> there are a few curious things
20:03:49 <andythenorth> GS can set the industry text
20:03:55 <andythenorth> even though that's grf domain
20:04:25 <andythenorth> maybe that's irrelevant
20:04:39 <TrueBrain> that is not how those "domains" are defined
20:04:53 <TrueBrain> they can share the same functionality, that isn't a real issue
20:04:58 <TrueBrain> the way to go about it, that is the issue :)
20:05:00 <andythenorth> it isn't?
20:05:08 <andythenorth> ok
20:05:13 <TrueBrain> that said, it is a bit weird both can set text on the industry GUI .. what happens if both do? :P
20:05:42 <andythenorth> code will know
20:05:51 <andythenorth> probably industry_cmd.cpp
20:05:52 * andythenorth looks
20:06:33 <andythenorth> IndustryAction::SetText: looks like the command
20:08:05 <andythenorth> GS text won't be shown
20:08:10 <andythenorth> grf callback will replace it
20:08:29 <andythenorth> industry_gui.cpp DrawInfo()
20:09:04 <andythenorth> so similar might also apply if grf had control over some town features
20:09:40 <TrueBrain> basically a bit awkward :P
20:09:49 <andythenorth> stuff and things
20:09:50 <michi_cc> I might be doing heresy in a second here...
20:10:12 <DorpsGek> [OpenTTD/OpenTTD] michicc opened pull request #9464: Add: [Script] Basic information about loaded NewGRFs for scripts. https://git.io/JR2EH
20:10:33 <andythenorth> yes that's a much needed PR :)
20:10:50 <andythenorth> that would enable things like vehicle tech trees and unlocking levels and stuff
20:10:55 <andythenorth> which the rest of GS now has features for
20:10:58 <andythenorth> but is driving blind
20:11:21 <andythenorth> we can unlock a vehicle tech tree, but we have NFI what grfs are in the game :)
20:11:23 <TrueBrain> michi_cc: "Also, there is no way for a script to be informed about changes to loaded NewGRFs after game start." <- unsupported anyway :P
20:12:07 <andythenorth> maybe I should dig out this again https://github.com/andythenorth/town-experiments-GS
20:13:04 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain approved pull request #9464: Add: [Script] Basic information about loaded NewGRFs for scripts. https://git.io/JR2ut
20:13:24 <TrueBrain> I assume you tested it :P
20:13:32 <andythenorth> it compiled, yes?
20:13:41 <andythenorth> "Some checks haven’t completed yet" :D
20:13:42 <TrueBrain> maybe it should be part of the regression ...
20:14:23 <michi_cc> Yes, I hacked some log calls into a GS and they produced something :)
20:14:27 * andythenorth hasn't rebased upstream for a while, time to do that
20:14:47 <andythenorth> 'satisfy this town and get awarded a new train'
20:14:51 <andythenorth> 'level up'
20:14:55 <michi_cc> Would mean OTTD has to ship a regression NewGRF, too.
20:15:21 <TrueBrain> yup. And a savegame update. Lot of work .. not sure it is worth it :)
20:15:27 <TrueBrain> it would be "the correct thing to do", but meh
20:16:17 <michi_cc> You can't get any more bare-bones than this PR anyway, not that much chance for world destruction :)
20:16:53 <TrueBrain> just that we don't validate it doesn't break :P
20:17:06 <andythenorth> tech tree time https://docs.openttd.org/gs-api/classGSEngine.html#a7cb222ce6deb5418ee527c9a378d71b0
20:17:07 <TrueBrain> not that we have maintained the regression set so far
20:17:33 <andythenorth> ha there's also DisableForCompany() for engines
20:17:44 <andythenorth> "you annoyed the town, you can no long build the best train"
20:18:22 *** gelignite has quit IRC (Quit: Stay safe!)
20:20:29 <andythenorth> so towns have persistent storage, segmented by grfid, could GS read that? (not write)
20:22:29 <TrueBrain> I would say that being able to generate an Event in a GS would be more generic, but that is just me
20:24:05 * andythenorth needs a diagram
20:24:51 * andythenorth has a miro account somewhere
20:27:24 <andythenorth> https://miro.com/app/board/o9J_l3bJgz0=/
20:27:52 <TrueBrain> so you have to signup to view a board? Nice
20:28:12 <TrueBrain> a simple guarantee nobody is going to use your service for anything Open Source \o/ :D
20:28:54 <andythenorth> try this https://miro.com/welcomeonboard/dGRKbDlYY1d6RWU0OG1VQVRxMlRIbkk4MWJxbWVFWWVJOVRyQXZaekVEZzZoWW0yb3FPNU1DOFdCb2hGNEtlRHwzMDc0NDU3MzYyMzIwMzY3ODA5
20:28:56 <andythenorth> such hash
20:29:22 <TrueBrain> nein
20:29:25 <andythenorth> lol
20:29:43 <andythenorth> how silly
20:29:56 <TrueBrain> yes
20:30:10 <andythenorth> this is view only :( https://miro.com/app/board/o9J_l3bJgz0=/
20:30:10 <andythenorth> lame
20:30:30 <TrueBrain> at least that works :P
20:30:43 <andythenorth> if I pick one thing open source does weirdly, it's using irc text for design not pictures
20:31:08 <andythenorth> is there a no-account drawing tool?
20:32:44 <andythenorth> nvm :)
20:35:55 <andythenorth> TrueBrain what would generate the event?
20:36:20 <TrueBrain> a NewGRF
20:37:04 <TrueBrain> I see my English sucked there: I would thinking giving the NewGRF the ability to create a generic NewGRF Event for a GS would be the more generic solution
20:39:06 <glx> I guess GS could read persistent storage using grfid
20:39:39 <TrueBrain> personally, I would avoid going that way
20:39:43 <TrueBrain> it would be a nightmare with versions etc etc
20:39:55 <glx> yeah of course
20:40:03 <TrueBrain> hence my suggestion for an event-route :)
20:40:15 <andythenorth> can events have a payload? or do they rely on classes of event or something?
20:40:17 * andythenorth looks in docs
20:40:45 <TrueBrain> events do have a payload, yes.
20:40:56 <andythenorth> seems they have specific methods?
20:41:05 <andythenorth> e.g. https://docs.openttd.org/gs-api/classGSEventIndustryClose.html#a9dfce43a751ba67e49a89b09481f9917
20:41:44 <TrueBrain> yup; so a GSEventNewGRFData or whatever, with a GetData() :P
20:41:58 <TrueBrain> I think an earlier suggestion was to do it in JSON
20:42:07 <TrueBrain> (which can be converted to a Squirrel table, I guess)
20:42:25 <andythenorth> the grf would provide the event how?
20:42:33 <andythenorth> yielded as a callback result in arbitrary callbacks?
20:43:01 * andythenorth thinks it would be weird if vehicles could issue events, but eh, who knows
20:43:16 <TrueBrain> generic solutions allow for people doing fun stuff
20:43:18 <andythenorth> GS has lots of stuff about individual vehicles and so on
20:43:23 <andythenorth> that I never explored
20:43:36 <andythenorth> 'your vehicle has caught fire'
20:44:26 *** Progman has quit IRC (Remote host closed the connection)
20:44:28 <andythenorth> oh there's StartStopVehicle
20:44:38 * andythenorth reinvents breakdowns
20:44:57 <andythenorth> 'you have annoyed the town, all your vehicles have been stopped by police'
20:45:05 <TrueBrain> see, generic is good ;)
20:45:09 <andythenorth> isn't it
20:45:26 <andythenorth> "your train crew went on strike, all trains are stopped"
20:46:04 <andythenorth> I am puzzled where / how the event would be issued though :)
20:48:39 <glx> that's the main "issue" with events is where to fire them
20:49:09 <andythenorth> hmm
20:49:40 <andythenorth> what if there was just a new operator, that can store arbitrary json anywhere in a varact2 chain
20:49:55 <andythenorth> store / fire
20:50:15 <andythenorth> and that's yielded as an event when the varact2 resolves?
20:51:13 <TrueBrain> this is where you need frosch to either tell me it is a stupid idea, or to fill in the blanks :D
20:52:54 * andythenorth wonders what happens if 500 industries all yield an event in the monthly industry loop
20:53:00 <andythenorth> I guess they just get queued up?
20:53:06 <TrueBrain> yup
20:53:12 <andythenorth> and the GS gets through them in it's opcode window
20:53:15 <andythenorth> its *
20:53:38 <glx> exactly it's a stack
20:53:51 <andythenorth> stuff like town growth is probably a case where a bit of latency really doesn't matter
20:53:57 <andythenorth> it's all a dice roll anyway
20:55:44 <Timberwolf> Oh yeah, Villages Is Villages has massive latency on large maps and the only time anyone notices is when it's first setting up and hasn't put text in the town window yet.
20:57:00 <andythenorth> worth knowing :)
21:03:04 *** jottyfan has joined #openttd
21:03:09 *** jottyfan has quit IRC ()
21:03:40 <TrueBrain> honestly, GS for Town stuff is a bit stupid by design .. we have some designs to address that .. but .. difficult :)
21:04:03 <TrueBrain> so I want to add something to my suggestion: GSNewGRFTownEvent, GSNewGRFIndustryEvent, etc, so events are specific for a type
21:04:07 <TrueBrain> makes later changes easier :)
21:06:23 <andythenorth> ok so we need someone who can say 'quak' next :P
21:07:30 * andythenorth tries to imagine writing json from nml :)
21:07:48 <andythenorth> plain strings are probably fine, but it would be much more interesting if it could do the modern equivalent of %s on params
21:08:01 <andythenorth> e.g. grf puts values on a stack and the json string is templated
21:08:16 <TrueBrain> I would think you want to fill a table of sorts
21:08:43 <andythenorth> well we have the text stack
21:08:47 <andythenorth> it's ... clunky
21:08:52 <glx> it's small
21:09:05 <andythenorth> frosch said it would be extensible a bit further
21:10:10 <andythenorth> but it's fiddly to use because it requires pissing around with stuffing things into dwords as you write
21:10:12 <andythenorth> then unpacking them
21:10:26 <andythenorth> so that the string codes get the size of value they expect
21:12:37 <andythenorth> oh GS industry text control is recent :) https://github.com/OpenTTD/OpenTTD/commit/bab7de6cf23dce124ef8b1e284d0d1f3996dc8b8#diff-ce2189a945a85c2aec8e107e2845ab769d2f107f4a22287366a972caf7d796ae
21:12:46 * andythenorth exploring current state of the art
21:14:10 *** nielsm has quit IRC (Ping timeout: 480 seconds)
21:14:28 <andythenorth> curious who wins between GS and grf here https://github.com/OpenTTD/OpenTTD/pull/7912
21:14:30 <TrueBrain> honestly, I think they simply forgot a NewGRF could do that too
21:14:35 <andythenorth> no it was intended
21:15:17 <andythenorth> it's the "I'd rather not use a grf" approach from dp
21:16:01 <TrueBrain> you would think it leaves a marker so one wins from the other explicit, but who am I to judge :)
21:16:27 <andythenorth> yolo
21:16:40 <andythenorth> ultimately it does a lot less harm than all the older non-generic stuff
21:16:51 <andythenorth> livery over-rides I am looking at you
21:16:59 <andythenorth> ChangeIndustryProduction is kind of interesting
21:17:08 <TrueBrain> it is really difficult in an Open Source game to think long-term .. we see that throughout OpenTTD
21:17:09 <TrueBrain> :)
21:17:21 <andythenorth> especially in a game
21:17:28 <andythenorth> platform product is easier
21:17:40 <TrueBrain> I was explicit about the "game" part ;)
21:17:46 <andythenorth> I enjoyed it
21:17:55 <andythenorth> it was a good point well made
21:18:05 <TrueBrain> :P
21:18:17 <andythenorth> most games evolve via major version changes also
21:18:19 <TrueBrain> but yeah, lot of "ooh, pretty flower"
21:19:49 <andythenorth> I am enjoying trying to understand this :P https://github.com/OpenTTD/OpenTTD/blob/master/src/industry_cmd.cpp#L2721
21:20:02 <andythenorth> requires careful parsing of parentheses
21:20:11 <andythenorth> also & vs &&
21:21:22 *** WormnestAndroid has quit IRC (Remote host closed the connection)
21:21:34 *** WormnestAndroid has joined #openttd
21:34:48 <andythenorth> ok this seems like progress anyway
21:34:54 <DorpsGek> [OpenTTD/OpenTTD] michicc merged pull request #9464: Add: [Script] Basic information about loaded NewGRFs for scripts. https://git.io/JR2EH
21:34:58 <andythenorth> :)
21:35:29 <andythenorth> I will test that tomorrow if I get chance :)
21:45:13 *** andythenorth has quit IRC (Quit: andythenorth)
21:46:39 *** Samu has quit IRC (Ping timeout: 480 seconds)
21:52:50 *** sla_ro|master has quit IRC ()
22:29:48 *** virtualrandomnumber has quit IRC (Quit: virtualrandomnumber)
22:53:25 *** tokai|noir has joined #openttd
22:53:25 *** ChanServ sets mode: +v tokai|noir
23:00:06 *** tokai has quit IRC (Ping timeout: 480 seconds)
23:05:26 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
23:08:16 *** tokai has joined #openttd
23:08:16 *** ChanServ sets mode: +v tokai
23:22:27 *** m1cr0m4n has quit IRC (Quit: G'luck)
23:22:51 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
23:29:09 *** m1cr0man has joined #openttd
23:38:18 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)