Back to Home / #openttd / 2016 / 08 / Prev Day | Next Day
#openttd IRC Logs for 2016-08-26

---Logopened Fri Aug 26 00:00:13 2016
00:07-!-zeknurn [] has joined #openttd
00:14-!-alask0ud [~Superdry^@] has quit [Quit: Wink, Wink, nudge, nudge. Know what I mean?]
00:15-!-Snail [] has quit [Quit: Snail]
00:19-!-TrueBrain [] has quit [Ping timeout: 480 seconds]
00:53-!-supermop_ [] has joined #openttd
00:59-!-Clockworker [~Clockwork@] has joined #openttd
01:07-!-Clockworker_ [~Clockwork@] has quit [Ping timeout: 480 seconds]
01:14-!-supermop_ [] has quit [Ping timeout: 480 seconds]
01:56-!-supermop_ [] has joined #openttd
02:00-!-Clockworker_ [~Clockwork@] has joined #openttd
02:02-!-supermop [] has quit [Ping timeout: 480 seconds]
02:07-!-Clockworker [~Clockwork@] has quit [Ping timeout: 480 seconds]
02:07-!-supermop [] has joined #openttd
02:14-!-supermop_ [] has quit [Ping timeout: 480 seconds]
02:20-!-Supercheese [] has quit [Read error: Connection reset by peer]
02:21-!-Supercheese [] has joined #openttd
02:24-!-urdh [] has quit [Remote host closed the connection]
02:30-!-urdh [] has joined #openttd
02:42-!-keoz [] has joined #openttd
03:00-!-Clockworker__ [~Clockwork@] has joined #openttd
03:00-!-HerzogDeXtEr [] has joined #openttd
03:07-!-Clockworker_ [~Clockwork@] has quit [Ping timeout: 480 seconds]
03:12-!-efess [] has quit [Ping timeout: 480 seconds]
03:29-!-Supercheese [] has quit [Quit: Valete omnes]
03:29-!-HerzogDeXtEr [] has quit [Read error: Connection reset by peer]
03:43-!-Sova [] has joined #openttd
03:59-!-sim-al2 [] has quit [Ping timeout: 480 seconds]
04:08-!-TrueBrain [] has joined #openttd
04:24-!-JacobD88 [] has joined #openttd
04:32-!-TrueBrain_ [] has joined #openttd
04:35-!-TrueBrain [] has quit [Ping timeout: 480 seconds]
04:37-!-TrueBrain [] has joined #openttd
04:40-!-TrueBrain_ [] has quit [Ping timeout: 480 seconds]
04:45-!-TrueBrain [] has quit [Ping timeout: 480 seconds]
05:00-!-JacobD88 [] has quit [Quit: JacobD88]
05:04-!-efess [] has joined #openttd
05:22-!-Clockworker_ [~Clockwork@] has joined #openttd
05:30-!-Clockworker__ [~Clockwork@] has quit [Ping timeout: 480 seconds]
05:30-!-Clockworker [Clockworke@] has joined #openttd
05:37-!-Clockworker_ [~Clockwork@] has quit [Ping timeout: 480 seconds]
05:43-!-seatsea [] has joined #openttd
06:03-!-Stimrol [~Stimrol@] has quit [Ping timeout: 480 seconds]
06:08-!-Fuco [] has quit [Remote host closed the connection]
06:10-!-Sova [] has quit [Ping timeout: 480 seconds]
06:12-!-Stimrol [~Stimrol@] has joined #openttd
06:12-!-Fuco [] has joined #openttd
06:13-!-Samu [] has joined #openttd
06:14<Samu>oh, new website for logs, nice~
06:18<argoneus>good morning train friends
06:21-!-Nitrodev [] has joined #openttd
06:22<Nitrodev>hi all
06:32-!-Wolf01 [] has joined #openttd
06:42<Nitrodev>how you doing?
06:43<Wolf01>Bad, packing up lego for tomorrow
06:48-!-Gja [] has joined #openttd
06:51<Samu>grr, how do I extract the axis of a lock that is to be placed?
06:52-!-Sova [] has joined #openttd
06:54<Samu>static inline Axis DiagDirToAxis(DiagDirection d)
06:54<Samu>nice, i think this will do
07:00-!-Clockworker_ [Clockworke@] has joined #openttd
07:06-!-gnu_jj [] has quit [Remote host closed the connection]
07:07-!-gnu_jj [] has joined #openttd
07:07-!-Clockworker [Clockworke@] has quit [Ping timeout: 480 seconds]
07:15-!-Nitrodev [] has quit [Quit: Page closed]
07:19-!-Sova [] has quit [Ping timeout: 480 seconds]
07:20-!-Sova [] has joined #openttd
07:23<Wolf01>I really can't understand how to replicate the grf info for a new roadtype, for railtype it looks like it reads only the label and some lengths and then skips all the other informations
07:29-!-andythenorth [] has joined #openttd
07:30<andythenorth>Wolf01 AIUI, the properties will be read from the grf when needed
07:30-!-Clockworker__ [Clockworke@] has joined #openttd
07:30<Wolf01>Yeah, but I have to try without a grf now
07:30<andythenorth>callbacks definitely are read from the grf
07:31<andythenorth>Ok, you're trying to create a stub/mock for testing?
07:31*andythenorth reads newgrf spec, brb
07:33<andythenorth>Hmm, i
07:33<andythenorth>Need to read ottd src on tablet
07:33<Samu>i always get confused with tilediff
07:37<andythenorth>readin src through the web is blah :p
07:37<andythenorth>RailTypeInfo, where is that class defined?
07:37-!-Clockworker_ [Clockworke@] has quit [Ping timeout: 480 seconds]
07:39<Wolf01>I could put in the array _roadtypes[] another roadtype, but I need to know *when* to do it
07:40<Wolf01>For rails is when it reads the newgrf
07:40<andythenorth>Ach ok
07:40<Samu>done it for the lock
07:40<Samu>now the hardest part... the dock
07:41<Samu>dock is a station, a boring mess of a code station_cmd.cpp
07:42<andythenorth>Wolf01 I have nothing :|
07:44<Samu>who's a code expert? - any idea to avoid repetition?
07:44<Samu>the part with ret = if red failed stuff
07:45<Wolf01>Put it in a function, return ret and call it 2 times?
07:46<Wolf01>There you just change it to "ret = MyCheckFunction(); if (ret.Failed()) return ret;"
07:47<Samu>oh i see
07:49<Wolf01>It could be CommandCost EnsureNoVehicleOnAxis(TrackBits tb, Tile t, Axis axis) { ... }
07:50<Wolf01>And you can even use a loop to cycle the TileIndex "tc"
07:50-!-andythenorth [] has quit [Ping timeout: 480 seconds]
07:52<APTX>there is std::all_of for that kind of thing
07:54<Wolf01>Nice, now I removed the ROAD roadtype...
07:54<Wolf01>Just the opposite of what I want to do
07:55-!-andythenorth [] has joined #openttd
08:02-!-andythenorth [] has quit [Remote host closed the connection]
08:12-!-supermop_ [] has joined #openttd
08:15<Wolf01>I just noticed the problem is on line 1138
08:16<Wolf01>I might have forgot to add the roadtype definition to vehicles
08:19-!-supermop [] has quit [Ping timeout: 480 seconds]
08:20-!-supermop [] has joined #openttd
08:22-!-Sova [] has quit [Ping timeout: 480 seconds]
08:22-!-Sova [] has joined #openttd
08:26-!-supermop_ [] has quit [Ping timeout: 480 seconds]
08:32-!-Sova [] has quit [Quit: Leaving]
08:36-!-supermop_ [] has joined #openttd
08:37<Wolf01>How does the newgrf identifies a road vehicle as a tram?
08:38<Wolf01>Misc flags?
08:42-!-supermop [] has quit [Ping timeout: 480 seconds]
08:43<Wolf01> what am I missing?
08:44<Wolf01>roadtype is always "m_val = 0"
08:46<Wolf01>Which might be even right, but the GetRoadTypeInfo(e->u.road.roadtype) doesn't find it
08:46-!-Snail [] has joined #openttd
08:48<Wolf01>Mmmh, seem there's a problem with roadtype definition
08:55<Wolf01>The roadtypes table looks fine
08:56<Samu>DARN reversed directions
08:57<Samu>it would make no sense to re-reverse it again
08:58-!-Milek7_ [] has joined #openttd
08:58-!-Milek7 [] has quit [Ping timeout: 480 seconds]
08:58-!-APTX [] has quit [Ping timeout: 480 seconds]
09:00-!-APTX [] has joined #openttd
09:01-!-Snail [] has quit [Quit: Snail]
09:02-!-Darksecond [] has quit [Ping timeout: 480 seconds]
09:02-!-Darksecond [] has joined #openttd
09:03<Wolf01>Oh, got it, needed to reset and init the roadtypes, for railtypes it was done by the newgrfs
09:07<Samu>manual reversed the direction
09:07<Samu>so I don't re-reverse it
09:13-!-supermop [] has joined #openttd
09:15<Samu>if (((direction == DIAGDIR_SW && (tb & TRACK_BIT_3WAY_NE) != 0) || (direction == DIAGDIR_NW && (tb & TRACK_BIT_3WAY_SE) != 0) || (direction == DIAGDIR_SE && (tb & TRACK_BIT_3WAY_NW) != 0) || (direction == DIAGDIR_NE && (tb & TRACK_BIT_3WAY_SW) != 0) && !IsShipDepotTile(tile_cur) && IsTileType(tile_cur, MP_WATER) && !IsLock(tile_cur))) {
09:15<Samu>readability... RIP
09:19-!-supermop_ [] has quit [Ping timeout: 480 seconds]
09:19<Samu>sorry to bother you again Wolf01 , docks change the rules a bit...
09:20-!-sim-al2 [] has joined #openttd
09:20<Samu>CommandCost EnsureNoVehicleOnAxis(TrackBits tb, Tile t, Axis axis) { ... } would be a nice function otherwise
09:20<Wolf01>Nobody stops you to do the function AND the station_cmd piece of code indipendently
09:22<Samu>axis to direction... direction to axis, let me see if there's a function that does the conversion
09:23<Samu>derp... DiagDirToAxis, i used it for the lock part,
09:24<Samu>so instead of Axis, maybe EnsureNoVehicleOnDiagDir
09:24<APTX>Samu: what are you trying to fix with that change?
09:27<Samu>prevent lock, dock, ship depot placement if there are ships on those tracks (to avoid possible ship lockup
09:27<Samu>AIs are prone to it
09:27<Wolf01>A grf expert plz
09:29<Wolf01>If I want to introduce a new Rail Type, I must define it as "RAIL" label and then "NEWR" as alternate label or what?
09:39<Eddi|zuHause>Wolf01: if you define it as RAIL label, it will overwrite the original railtype
09:39<Samu>i can't really convert Axis to DiagDir apparently, must investigate
09:39<Samu>only the other way
09:41-!-Guest134 is now known as FR^2
09:41<Samu>oh, i can...
09:41<Samu>AxisToDiagDir(Axis a) * @return The direction pointed to south
09:41<Samu>must take that into consideration
09:42-!-andythenorth [] has joined #openttd
09:44<Wolf01>So I need to 1. reset the roadtypes, 2. add the new roadtype to the _roadtypes[], 3. Init the roadtypes and 4. Allocate the roadtype
09:45<Wolf01>And I still need how to recognize tram from grf
09:46<Wolf01>Because I have only road now
09:47<Eddi|zuHause>why do you need to allocate anything? the array should be fixed size
09:47<andythenorth>Fake the tram bit?
09:48<Wolf01>Eddi|zuHause, that's what I can't understand on how it works
09:48<Wolf01>How do rails allow 12 types?
09:48*andythenorth assumes tram is just a single bit flag, as for vehicles
09:49<Eddi|zuHause>you know how many bits you have in the map array to represent railtypes, the railtype array must have exactly that number of entries
09:49<Eddi|zuHause>so if you have 4 bits, you need 16 entries
09:50<Wolf01>I have ROAD and TRAM, and 16 subtypes for each one (4+4 bits)
09:50<Wolf01>But the subtypes are variations of ROAD or TRAM
09:51<Eddi|zuHause>the idea was to separate road and tram, so you need an array for each of them
09:51<Samu>there is a EnsureNoTrainOnTrackBits(TileIndex tile, TrackBits track_bits);
09:52<Samu>EnsureNoShipOnDiagDir(TileIndex tile, Direction diag_dir); hmm... the naming seems off
09:52-!-andythenorth [] has quit [Remote host closed the connection]
09:53<Wolf01>Ok, so I could make 2 arrays
09:53<Wolf01>Not a problem
09:53<Wolf01>But I still can't get the idea to make it work
09:54-!-LadyHawk [] has quit [Read error: Connection reset by peer]
09:54-!-LadyHawk [] has joined #openttd
09:57-!-andythenorth [] has joined #openttd
09:57-!-andythenorth [] has quit []
09:57<Eddi|zuHause>so here's what i think the railtype code does (i have never actually looked at it): 1) create the table, 2) fill it with the original railtypes, and some "invalid" initialization for the unused one, 3) go through the newgrfs, whether they define any railytpes. if found, overwrite the entry in the table.
09:57-!-andythenorth [] has joined #openttd
09:57<andythenorth>I think alberth proposed an array with offsets per tram / road
09:57<andythenorth>But I need to see if I kept notes
09:59<andythenorth>Hmm, kind of had notes
10:00<Wolf01>Ok, that's the same I'm doing, table, orig roadtypes (road and tram, the tram should be marked as invalid until a proper grf is loaded), initialization, figuring out how to add a new entry to the railtypes
10:00<andythenorth>But the link to Alberth's paste expired
10:02<Eddi|zuHause>Wolf01: no, the tram should be valid, it has a label, and graphics to display. it's just hidden by other code if there are no vehicles for it
10:03<Eddi|zuHause>so you have two different values here. invalid/valid and hidden/available
10:04<andythenorth>Meh, google doesn't find much in irc logs, and logs' own search is broken :(
10:04<andythenorth>This was somewhat discussed by frosch and alberth
10:05<Eddi|zuHause>for railtypes, there are three ways to define availability: 1) if a vehicle is for this type, it's available, 2) it can define another type as reference, and copy that one's availability, or 3) it can be available after a certain date
10:06-!-keoz [] has quit [Ping timeout: 480 seconds]
10:10-!-andythenorth [] has quit [Remote host closed the connection]
10:12-!-andythenorth [] has joined #openttd
10:13-!-supermop_ [] has joined #openttd
10:14<Samu>oh, DiagDirection...
10:15<Samu>CommandCost EnsureNoShipOnDiagDir(TileIndex tile, DiagDirection diag_dir)
10:16<Samu>how do I rotate a DiagDir 90 degrees, or actually minus 90 degrees
10:17-!-keoz [] has joined #openttd
10:18-!-andythenorth [] has quit [Remote host closed the connection]
10:19-!-sim-al2 [] has quit [Ping timeout: 480 seconds]
10:19-!-supermop [] has quit [Ping timeout: 480 seconds]
10:27<Wolf01>Ok, so I only have the used_roadtypes |= GetRoadTypeInfo(e->u.road.roadtype)->introduces_roadtypes; which now hides the TRAM because all vehicles are default to ROAD
10:27<Wolf01>If I remove the check in the other loop, the tram is shown
10:43-!-Alberth [~alberth@2001:981:c6c5:1:be5f:f4ff:feac:e11] has joined #openttd
10:43-!-mode/#openttd [+o Alberth] by ChanServ
10:46-!-keoz [] has quit [Quit: WeeChat 1.5]
10:48<@Alberth>hi hi
10:55-!-dustinm` [~dustinm`] has quit [Quit: Leaving]
11:07-!-Compu [~Compu@] has quit [Ping timeout: 480 seconds]
11:11-!-keoz [] has joined #openttd
11:14-!-ElleKitty [] has quit [Quit: Leaving]
11:14-!-ElleKitty [] has joined #openttd
11:18-!-dustinm` [~dustinm`] has joined #openttd
11:30-!-Clockworker_ [Clockworke@] has joined #openttd
11:31-!-TheMask96 [] has quit [Ping timeout: 480 seconds]
11:32-!-frosch123 [] has joined #openttd
11:37-!-TheMask96 [] has joined #openttd
11:37-!-Clockworker__ [Clockworke@] has quit [Ping timeout: 480 seconds]
11:43<Wolf01> if (!HasBit(e->info.climates, _settings_game.game_creation.landscape)) continue;
11:43<Wolf01>used_roadtypes= GetRoadTypeInfo(HasBit(e->info.misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD)->introduces_roadtypes;
11:43<Wolf01>Wtf I'm doing wrong?
11:43<Wolf01>I have both a tram and a bus running in the map
11:44<Wolf01>FOR_ALL_ENGINE_OF_TYPE -> 1 vehicle
11:45-!-Progman [] has joined #openttd
11:49-!-Compu [~Compu@] has joined #openttd
11:49<@Rubidium>you pass vehicle type instead of engine type?
11:49<Wolf01>It's the same loop used to build the dropdown list in toolbar_gui
11:49<@Rubidium>oh, then ignore my comment ;)
11:54<keoz>Out of curiosity, what are you coding ?
11:55-!-tokai [] has joined #openttd
11:55-!-mode/#openttd [+v tokai] by ChanServ
11:56-!-CompuDesktop [~Compu@] has joined #openttd
11:56-!-Compu [~Compu@] has quit [Remote host closed the connection]
11:58-!-CompuDesktop is now known as Compu
11:58-!-Compu [~Compu@] has quit []
11:58-!-Compu [~Compu@] has joined #openttd
12:01<Samu>how to improve it further
12:01<Samu>i forgot
12:02-!-tokai|noir [] has quit [Ping timeout: 480 seconds]
12:03<Wolf01>It's ok
12:04<Samu>the function name and explanation are a bit unclear
12:05-!-HerzogDeXtEr [] has joined #openttd
12:05<Samu>those 3way tracks
12:05<Samu>must have no ship
12:07<Samu>EnsureNoShipOn3WayTrackBits ? lol
12:08<Wolf01>Isn't track bits for trains only?
12:09<Wolf01>Water has tracks too?
12:09<Samu>they're water bits
12:10<Samu>TrackBits tb = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
12:11<Samu>then it goes deep into that function chain and finds static TrackStatus GetTileTrackStatus_Water(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
12:12<Samu>it converts and re-converts and it's kinda messed, a bit sub-optimal but it gets the job done
12:12<Wolf01>All this for?
12:13<Samu>avoid ships getting blocked
12:13<Wolf01>Why not doing a tile loop around the dock and just chesk if a water tile has a ship on?
12:14<Wolf01>All this track bits on water is confusing
12:14<Samu>because not all tiles need to check for a ship, and not all water tracks need to be checked for a ship presence
12:15<Samu>a paralel ship depot being placed to a ship doesn't need to error out that there's a ship there
12:16<Samu>let me find that screenshot of yesterday
12:17<Samu>ah, here, thx
12:17<Samu>those are the places a ship cannot be
12:17<Samu>those tracks
12:19-!-supermop [] has joined #openttd
12:20<Samu>it will help AIs mostly, not really important for human players, but I was still concerned about the amount of times it would trigger the error
12:21<Samu>trackbits was a way I found to minimize the number of errors
12:21-!-keoz [] has quit [Quit: WeeChat 1.5]
12:21-!-Progman [] has quit [Remote host closed the connection]
12:23-!-TrueBrain [] has joined #openttd
12:23<Samu>i'm also wondering if I can do this for the oil rig as well
12:23<Samu>but oil rig is a bit more complex structure
12:24-!-supermop_ [] has quit [Ping timeout: 480 seconds]
12:25<Samu>i got nonocab saves that show the problem
12:29<Samu>got it
12:31-!-CompuDesktop [~Compu@] has joined #openttd
12:31<Samu>hmm may need further checks for the dock?
12:31<Samu>i got to investigate this further t.t
12:33<Samu>yeh... it needs more checks... t.t
12:33<Samu>back to fixing it t.t
12:36-!-Compu [~Compu@] has quit [Ping timeout: 480 seconds]
12:39<Wolf01>I give up until monday
12:40<@Alberth>fresh look often helps
12:46<Samu>moar checks incoming t.t
12:48-!-Gja [] has quit [Quit: Going offline, see ya! (]
12:58-!-Gja [] has joined #openttd
13:00-!-Clockworker__ [~Clockwork@] has joined #openttd
13:03<Eddi|zuHause>"Track Bit" is just a way of describing which entrance to a tile is connected to which exit
13:03<Eddi|zuHause>on water, all (valid) exits are also connected, so lots of track bits
13:08-!-Clockworker_ [Clockworke@] has quit [Ping timeout: 480 seconds]
13:08-!-Clockworker [~Clockwork@] has joined #openttd
13:10-!-andythenorth [] has joined #openttd
13:12<andythenorth>Samu are 90 degree turns disabled for ships in your test game?
13:13<Samu>they can make 90 degrees
13:15-!-Clockworker__ [~Clockwork@] has quit [Ping timeout: 480 seconds]
13:16-!-andythenorth [] has quit [Remote host closed the connection]
13:16<Samu> - better checkings for docks, i believe
13:17<Samu>now i need to test those rotations, tile differences and crap are not wrong
13:19-!-andythenorth [] has joined #openttd
13:22-!-andythenorth [] has quit [Remote host closed the connection]
13:22-!-supermop_ [] has joined #openttd
13:23<Eddi|zuHause>why have we not removed the 90° setting for ships yet? it's totally pointless
13:24<Eddi|zuHause>it's not even based on "realism"
13:24<Wolf01>At least ships don't make 180° turns
13:26<Eddi|zuHause>they do, when they run into a dead end
13:26<Samu>they reverse direction
13:27-!-andythenorth [] has joined #openttd
13:27<Wolf01>Pfff movement direction and graphics orientation should not read from the same variable :(
13:28<Eddi|zuHause>most ships are not designed to run backwards :p
13:28<Wolf01>And then let them stuck forever
13:28-!-supermop [] has quit [Ping timeout: 480 seconds]
13:30-!-glx [] has joined #openttd
13:30-!-mode/#openttd [+v glx] by ChanServ
13:32<Samu>dauym, a parenthesis bug, fixing, brb
13:35-!-andythenorth [] has quit [Ping timeout: 480 seconds]
13:37-!-Wormnest [] has joined #openttd
13:53<Samu>alright, ship depot placement just tested, it is doing the correct checks
13:53<Samu>testing lock now
14:15<SpComb>frosch123: did you manage to load in the old irclogs?
14:16<Samu>i just thought of a better name for the function
14:17<Samu>what you thnk?
14:20-!-Stimrol [~Stimrol@] has quit [Quit: ZNC -]
14:30-!-Clockworker_ [~Clockwork@] has joined #openttd
14:31<frosch123>i even converted the timezones
14:31<SpComb>frosch123: I added a deprecation notice to
14:32<frosch123>well, except for 2a and 2b o'clock :)
14:32<Samu>strange finding
14:32<frosch123>they are both mapped to 2a, that can only be sorted manually, if someone really cares :p
14:32<Samu>some half-slope tiles have water, some don't
14:32<frosch123>but the rest did python for me :)
14:35<SpComb>you should have used the irclogs LogParser code, it has full timezone support etc :P
14:36<frosch123>i speak regex fluently :)
14:37-!-Clockworker [~Clockwork@] has quit [Ping timeout: 480 seconds]
14:38<Samu>if there are trees, the tiletype no longer has waterclass
14:38<Samu>if there are no trees, it's a coast and now the tile has waterclass
14:39<Samu>trees are evil
14:39<Samu>regardless, it doesn't ruin my function
14:43<Samu>lock tested, it's doing the correct checks
14:43<Samu>next is dock, but now dinner time
14:50-!-supermop [] has joined #openttd
14:56-!-supermop_ [] has quit [Ping timeout: 480 seconds]
15:00-!-Clockworker__ [~Clockwork@] has joined #openttd
15:02-!-Clockworker_ [~Clockwork@] has quit [Read error: Connection reset by peer]
15:02-!-Clockworker__ [~Clockwork@] has quit [Read error: Connection reset by peer]
15:02-!-Clockworker__ [~Clockwork@] has joined #openttd
15:07-!-Clockworker__ is now known as Clockworker
15:10-!-DDR [] has quit [Remote host closed the connection]
15:23<Samu>ship depot is correct!
15:24<Samu>i could perhaps improve ship depot a bit further
15:24<Samu>crap, I mean ship dock
15:24<Samu>when trying to place a ship dock, it wants a flat tile with water
15:25<Samu>doesn't care about half-slope tiles
15:25<Samu>gonna try improve this
15:35<Samu> if (!IsTileType(tile_cur, MP_WATER) || !IsTileFlat(tile_cur) && !IsSlopeWithOneCornerRaised(GetTileSlope(tile_cur))) {
15:35<Samu>better imo
15:35-!-Clockworker [~Clockwork@] has quit [Read error: Connection reset by peer]
15:35-!-Clockworker [~Clockwork@] has joined #openttd
15:37<Samu>* Ensure there is no ship coming from or going to the given diagonal direction.
15:37<Samu>good english?
15:37<Wolf01>Some parenthesis? "a || b && c" or "a || (b && C)"?
15:38<Eddi|zuHause>i'd put them
15:38<Samu>EnsureNoShipFromDiagDir is a more fitting name
15:38<Eddi|zuHause>they might be redundant, but it's not immediately obvious like with + and *
15:39<frosch123>every decent compiler will yell at you if you do a || b && c
15:39<frosch123>oh, i remember something horrible...
15:40<Samu>ah, you talking to me?
15:40<Samu>ok let me fix
15:40<frosch123>some infamous guy figured out a trick to detect "if (a = b)" at compile time
15:40<frosch123>so that assignement inside if does not compile
15:41<frosch123>the trick was to define a macro "#define if(a) if (true && a)"
15:41<frosch123>since "true && a = b" does not compile
15:42<Wolf01>I'm amazed
15:42<frosch123>until eventually a new compiler came around that printed warning to put parentheses around &&
15:42<frosch123>but noone could see the && in "if (a || b)" :)
15:43<Samu>if (!IsTileType(tile_cur, MP_WATER) || (!IsTileFlat(tile_cur) && !IsSlopeWithOneCornerRaised(GetTileSlope(tile_cur)))) {
15:43<frosch123>the macro was long forgotten in some weird header file, which noone remembered, so everyone was puzzled about the weird warnings :p
15:47<Samu>just finished coding
15:47<Samu>what do u think?
15:53<Samu>the first change at line 10 should make it easier to place docks on tight passages now
15:54<Samu>now, onto my next task, about towns and the way they build
15:54-!-sim-al2 [] has joined #openttd
15:54<Samu>where in the code does a town build a house? must find
15:55<Samu>i want to negate building on some certain tile with a given slope configuration (to prevent closing narrow water passages)
15:55<Samu>do not want ships to be blocked
16:00-!-Clockworker_ [~Clockwork@] has joined #openttd
16:02<Samu>AIAI bankrupted with Easy profile, that was strange
16:02<Samu>he usually crashes
16:07-!-Wolf01 is now known as Guest1031
16:07-!-Wolf01 [] has joined #openttd
16:08-!-Clockworker [~Clockwork@] has quit [Ping timeout: 480 seconds]
16:10-!-Samu [] has quit [Ping timeout: 480 seconds]
16:11-!-Alberth [~alberth@2001:981:c6c5:1:be5f:f4ff:feac:e11] has left #openttd []
16:13<Eddi|zuHause>need a compiler that also shows the macro expansion for that line
16:14-!-Guest1031 [] has quit [Ping timeout: 480 seconds]
16:15-!-Samu [] has joined #openttd
16:15<Samu>bah windows updated ruined my testing servers
16:36-!-Samu [] has quit [Ping timeout: 480 seconds]
16:38-!-Progman [] has joined #openttd
16:48-!-Samu [] has joined #openttd
16:48<Samu>strange, my system crashed twice
16:49<Samu>i'm wondering why
16:51<Milek7_>Eddi|zuHause: gcc -E
16:52<Eddi|zuHause>Milek7_: yes, but if it doesn't show it on error message directly, you're unlikely to try that
16:53-!-tokai [] has quit [Quit: c('~' )o]
16:55-!-tokai [] has joined #openttd
16:55-!-mode/#openttd [+v tokai] by ChanServ
17:00-!-Clockworker__ [~Clockwork@] has joined #openttd
17:04-!-Progman [] has quit [Remote host closed the connection]
17:08-!-Clockworker_ [~Clockwork@] has quit [Ping timeout: 480 seconds]
17:10-!-Wolf01 is now known as Guest1044
17:10-!-Wolf01 [] has joined #openttd
17:11-!-Guest1044 [] has quit [Ping timeout: 480 seconds]
17:13-!-supermop_ [] has joined #openttd
17:20-!-supermop [] has quit [Ping timeout: 480 seconds]
17:21-!-Hiddenfunstuff [] has quit [Ping timeout: 480 seconds]
17:22<Samu>started all servers again, let's see if it happens again
17:23-!-frosch123 [] has quit [Quit: be yourself, except: if you have the opportunity to be a unicorn, then be a unicorn]
17:26<_dp_>hm, just got another random idea for fair payments...
17:26-!-supermop [] has joined #openttd
17:27-!-Supercheese [~Superchee@] has joined #openttd
17:27<_dp_>calculate distance as 3 * min(dx, dy) + 2 * |dx-dy| (train time)
17:27<_dp_>but increase all rv speed for 50% xD
17:27<Eddi|zuHause>uhm, how is that "fair"?
17:29<_dp_>ok, nvm, it's not))
17:33-!-supermop_ [] has quit [Ping timeout: 480 seconds]
17:33-!-gelignite [] has joined #openttd
17:37<Samu>where in the code do I deny where town houses can be built at?
17:41<_dp_>hm, you know what... don't increase rv speed, just using that distance will make it fair for all vehicle types except rv and won't change anything in train/rv balance anyway
17:47-!-Wormnest [] has quit [Quit: Leaving]
17:49<_dp_>apparently it's now even a new idea...
17:51<Eddi|zuHause>you know how rare it is for an idea to be actually "new"?
17:55<_dp_>that patch is wierd, it seems it tries to use sqrt(2) which is useless here as vehicles don't travel on diagonals with euclidean speed.
17:55<Eddi|zuHause>the above propsed formula is indeed closer to the way vehicles travel as "shortest" distance, but it has two flaws... 1) 3/2 is a rather poor approximation of sqrt(2), and 2) the way vehicles travel on diagonals (speed vs. length) is not "balanced"
17:57<Eddi|zuHause>well, euclidean distance is the diagonal of a rectangle, the way vehicles travel is a straight bit, and a diagonal of a square
17:57<Eddi|zuHause>with some adjustments to rounding so you can do integer maths gets you to something like your formula
17:58<_dp_>yeah, but it travels of 150% speed (using manhattan distance), not 141% or whatever it is for euclidean
17:59<Eddi|zuHause>you sure? movement on diagonals is totally wonky
18:00<Eddi|zuHause>it randomly applies factors of 1.5 or 0.75 at weird places
18:01<_dp_>I remember seeing some dev saying it's 192 units for straight and 256 for diagonal
18:01<Eddi|zuHause>i think it's the other way around
18:02<Eddi|zuHause>but you also have weird stretching and shrinking effects
18:02<_dp_>also videos like this confirm it
18:02<_dp_>apparenly 256 for 2 diagonal bits
18:03-!-alask0ud [~Superdry^@] has joined #openttd
18:03<_dp_>true, its size increases differently, but that's of no importance for payments
18:09-!-supermop_ [] has joined #openttd
18:09-!-Clockworker__ [~Clockwork@] has quit [Read error: Connection reset by peer]
18:09-!-Clockworker__ [~Clockwork@] has joined #openttd
18:10-!-seatsea [] has quit [Read error: Connection reset by peer]
18:12<Samu>the value is 1.5
18:13<Samu>or 0.66, depending on the point of view
18:13-!-Supercheese [~Superchee@] has quit [Read error: Connection reset by peer]
18:14-!-supermop [] has quit [Ping timeout: 480 seconds]
18:25-!-Wolf01 [] has quit [Quit: Once again the world is quick to bury me.]
18:27-!-supermop [] has joined #openttd
18:30-!-Clockworker_ [~Clockwork@] has joined #openttd
18:32-!-supermop__ [] has joined #openttd
18:33-!-Gja [] has quit [Quit: Going offline, see ya! (]
18:34-!-supermop_ [] has quit [Ping timeout: 480 seconds]
18:35<_dp_>return (this->direction & 1) ? 192 : 256;
18:36-!-Clockworker__ [~Clockwork@] has quit [Read error: Connection reset by peer]
18:36<_dp_>256 is "distance" of diagonal move which is 2 times longer in manhattan distance
18:39<_dp_>somehow this doesn't add up... ok, back to code)
18:49<Samu>i just discovered how towns build bridges
18:50<Samu>well, at least at one of the sides
18:50<_dp_>like any other piece of road
18:51<Samu>slope configuration on the destination side doesn't matter :( must change that
18:51<Samu>slope configuration on the source side, I am not entirely sure, must investigate it further
18:52<Samu>(IsValidTile(bridge_tile) && IsWaterTile(bridge_tile)); - this check isn't sufficient
18:53-!-Clockworker__ [~Clockwork@] has joined #openttd
18:54<_dp_>ok, that formula is wrong, should be 256 * min(dx, dy) + 192 * |dx-dy|
18:55<_dp_> / smth
18:55<_dp_> / 192
18:56<_dp_>so (4 * min(dx, dy) + 3 * |dx-dy|) / 4
18:57<_dp_>(4 * min(dx, dy) + 3 * |dx-dy|) / 3
18:57<Samu>what are you trying to do _dp_?
18:57<_dp_>more fair payment calculation
18:58<Samu>oh, for aircraft going on vertical/horizontal ?
18:59<_dp_>or, rather, instead of rv (as it is currently) make it fair for all other vehicle types
18:59<_dp_>yeah, including planes
19:00<Samu>i'm not sure, seems payment rate could be abused by transfering cargo? I was told that
19:00-!-Clockworker_ [~Clockwork@] has quit [Ping timeout: 480 seconds]
19:00<_dp_>yeah, by me ;)
19:00-!-Clockworker_ [Clockworke@] has joined #openttd
19:01<_dp_>it can be abused if it's calculated differenly for different vehicle types
19:01<Samu>i would consider "virtual" vehicle speed adjustment
19:01<Samu>instead of payment rate
19:04<Samu>also, don't forget ships
19:04<Samu>they move similar to trains
19:05<Samu>as for the formula, uhm... i'm really not sure
19:06<Samu>the vehicles going on those directions seem to be going 1.5x faster
19:07<Samu>how to factor this speed bonus in the income formula as a penalty?
19:08<_dp_>192 / 128 = 1.5
19:08-!-Clockworker__ [~Clockwork@] has quit [Ping timeout: 480 seconds]
19:09<Samu>I wasn't really able to check the speed bonus for aircraft tough due to the different airports and place landing/departing delays
19:09<Samu>i got an approximation between 1.42x to 1.50x
19:09<Samu>plane* landing/departing delays
19:09<Samu>tough > though
19:12<Samu>for ships and trains, I really didn't get 1.50x, I got 1.496xxxx and 1.495xxxx, they still have to accelerate and turn around, tested with a distance of xy=100,100 tiles between stations
19:17<_dp_>acceleration doesn't matter, I'm just using same metrics as openttd does for moving vehicles
19:22<Samu>looks like I don't know what a halftile is after all
19:22-!-alask0ud [~Superdry^@] has quit [Quit: Relax, its only ONES and ZEROS!]
19:23-!-Snail [] has joined #openttd
19:24<Samu>maybe this is what I'm looking for
19:26<Samu> /* don't build a bridge if the tile on the other side has only one corner raised*/ if (IsSlopeWithOneCornerRaised(GetTileSlope(bridge_tile))) return false;
19:30<Samu>bah i failed yet
19:30-!-Clockworker__ [Clockworke@] has joined #openttd
19:38-!-Clockworker_ [Clockworke@] has quit [Ping timeout: 480 seconds]
19:38<Samu>I did it :)
19:38<Samu>no more town bridges on slopes with one corner raised
19:39<Samu>now houses, how do i deal with them?
19:39<Samu>want to give them the same treatment
19:39<Samu>no houses on slopes with one corner raised
19:39<Samu>near water of course
20:00-!-Clockworker_ [Clockworke@] has joined #openttd
20:05-!-Samu_ [] has joined #openttd
20:08-!-Samu [] has quit [Ping timeout: 480 seconds]
20:08-!-Clockworker__ [Clockworke@] has quit [Ping timeout: 480 seconds]
20:31-!-Clockworker__ [~Clockwork@] has joined #openttd
20:38-!-Clockworker_ [Clockworke@] has quit [Ping timeout: 480 seconds]
20:39<Samu_>if (IsSlopeWithOneCornerRaised(slope) && IsCoastTile(tile)) return false;
20:40<Samu_>towns won't build bridges only on coastal tiles
20:40<Samu_>if they have 1 corner raised
20:41<Samu_>I see more bridges now
20:41-!-gelignite [] has quit [Quit:]
20:53-!-ConductorCat [] has quit [Read error: Connection reset by peer]
21:00-!-Clockworker_ [~Clockwork@] has joined #openttd
21:04-!-Clockworker__ [~Clockwork@] has quit [Read error: No route to host]
21:05-!-ConductorCat [] has joined #openttd
21:40-!-CompuDesktop [~Compu@] has quit [Quit:]
21:41-!-Compu [~Compu@] has joined #openttd
21:52<Eddi|zuHause><_dp_> return (this->direction & 1) ? 192 : 256; <-- this is the size of one "step" on the map, there are 16 steps per tile along the axis, and 8 steps per (half-)tile along the diagonals
21:55<Eddi|zuHause>so if min(dx,dy) is the diagonal part of the travel, that gives you the number of half-tiles for the diagonal, and |dx-dy| is the straight bit of the travel, which gives you full tiles along the axis
21:57<Eddi|zuHause>there might also be an off-by-one error, because you can't travel through the corner of a tile
22:00-!-Clockworker__ [~Clockwork@] has joined #openttd
22:08-!-Clockworker_ [~Clockwork@] has quit [Ping timeout: 480 seconds]
22:26-!-Supercheese [] has joined #openttd
22:31-!-Clockworker_ [Clockworke@] has joined #openttd
22:35-!-Samu_ [] has quit [Ping timeout: 480 seconds]
22:38-!-Clockworker__ [~Clockwork@] has quit [Ping timeout: 480 seconds]
23:02-!-Snail [] has quit [Quit: Snail]
23:03-!-glx [] has quit [Quit: Bye]
23:11-!-HerzogDeXtEr [] has quit [Read error: Connection reset by peer]
23:27-!-FR^2 [~frquadrat@2001:41d0:1:f924::1] has quit [Ping timeout: 480 seconds]
23:27-!-FR^2 [] has joined #openttd
23:28-!-FR^2 is now known as Guest1061
23:31-!-Clockworker__ [Clockworke@] has joined #openttd
23:35-!-Clockworker__ is now known as Clockworker
23:38-!-Clockworker_ [Clockworke@] has quit [Ping timeout: 480 seconds]
23:47-!-Clockworker_ [Clockworke@] has joined #openttd
23:54-!-Clockworker [Clockworke@] has quit [Ping timeout: 480 seconds]
---Logclosed Sat Aug 27 00:00:15 2016