Back to Home / #openttd / 2007 / 07 / Prev Day | Next Day
#openttd IRC Logs for 2007-07-05

---Logopened Thu Jul 05 00:00:25 2007
00:03|-|Thomas[NL] [] has joined #openttd
00:09|-|Thomas[NL] [] has quit [Remote host closed the connection]
00:15|-|Osai^zZz [] has joined #openttd
00:18|-|Osai^zZz changed nick to Osai
00:25|-|TinoM [] has joined #openttd
00:38|-|Osai [] has quit [Quit: Osai]
00:42|-|HMage [] has joined #openttd
00:53|-|lolman [] has joined #openttd
01:03|-|lolman [] has quit [Ping timeout: 480 seconds]
01:13|-|benc_ [] has quit [Quit: Leaving.]
01:26|-|Ammler [] has joined #openttd
01:38|-|Maedhros [] has joined #openttd
01:41|-|HMage [] has quit [Ping timeout: 480 seconds]
---Logclosed Thu Jul 05 02:10:53 2007
---Logopened Thu Jul 05 02:16:03 2007
02:16|-|mikegrb [~michael@] has joined #openttd
02:16|-|Ekipa kanalu #openttd: Wszystkich: 71 |-| +op [4] |-| +voice [1] |-| normalnych [66]
02:17|-|Kanal #openttd zsynchronizowany w 293 sekundy
02:18|-|XeryusTC [] has joined #openttd
02:34|-|Tlustoch [] has joined #openttd
02:39|-|Barry [] has joined #openttd
02:39|-|Barry [] has quit []
02:43|-|setrodox [] has joined #openttd
02:47|-|HMage [] has joined #openttd
02:50|-|prakti [] has joined #openttd
02:56<Gekkko`>Who wants booze?
02:57<Noldo>you got some?
03:31|-|tokai|ni [] has quit [Ping timeout: 480 seconds]
03:33|-|tokai|ni [] has joined #openttd
03:42|-|Gekkko` [] has quit [Quit: - Now less gay.]
03:44|-|dihedral [] has joined #openttd
03:45<dihedral>orudge: whats up with tt-forums web server?
03:47<hylje>i believe he's hinting at some funnies regarding it
03:47<dihedral>getting a timeout for nearly every to every second request
03:48<@peter1138>no problems from here
03:55|-|Tlustoch [] has quit [Quit: Leaving]
04:17|-|Sacro [~ben@adsl-87-102-80-216.karoo.KCOM.COM] has joined #openttd
04:21|-|smoovi [] has joined #openttd
04:32|-|Sacro [~ben@adsl-87-102-80-216.karoo.KCOM.COM] has quit [Quit: Leaving]
04:32|-|Sacro [~ben@adsl-87-102-80-216.karoo.KCOM.COM] has joined #openttd
04:56|-|Tlustoch [] has joined #openttd
04:58|-|Nickman [] has joined #openttd
05:26|-|Purno [] has joined #openttd
05:28|-|raimar3 [] has joined #openttd
05:32|-|raimar2 [] has quit [Ping timeout: 480 seconds]
05:45|-|Vikthor [] has joined #openttd
05:50|-|MarkSlap [] has joined #openttd
05:54|-|Markkisen [] has joined #openttd
05:54|-|Osai [] has joined #openttd
05:57|-|MarkMc [] has quit [Ping timeout: 480 seconds]
06:01|-|MarkSlap [] has quit [Ping timeout: 480 seconds]
06:13<stillunknown>Is it possible to convert a Vehicle pointer into a subclass pointer?
06:14<Maedhros>v = new Subclass(v) ?
06:15<stillunknown>That's actually useable after creation?
06:16<Noldo>stillunknown: what exactly did you have in mind
06:16<Noldo>what do you need it for?
06:16<stillunknown>If you have functions that are specific for a type of vehicle, you either need to make them static or have empty virtual functions for the base vehicle class.
06:17<stillunknown>The last is a bad idea if the other vehicles don't use the function.
06:17<hylje>dynamic typing?
06:17<Noldo>what do you need it for?
06:18<stillunknown>I'd like to make a few Train specific functions non-static, to do that the object must of type Train and not Vehicle.
06:18<Noldo>what kind of functions?
06:18<@peter1138>Train *t = (Train*)v; ... heh
06:19<Noldo>where are they called from?
06:19<stillunknown>From functions inside the Train class.
06:19<Noldo>that shouldn't be a problem
06:19<Noldo>this will be correctly typed anyway
06:20<stillunknown>It is, since "this" is a Vehicle object.
06:20<stillunknown>I think.
06:20<Noldo>well it's vehicle too
06:20<Noldo>but that doesn't matter as long as it's a train
06:20<stillunknown>So at compile time you get complains about lacking a function for all other vehicle types.
06:21<Noldo>you don't have to put the function in to vehicle interface at all if they are only called for trains
06:23<Noldo>but if you have a loop of all vehicles where you want to call some vehicletype specific functions then you need something else
06:24<@peter1138>stillunknown: private function, no?
06:24<stillunknown>It did work this time.
06:24<stillunknown>This was a private function.
06:25<Noldo>even better
06:26<@peter1138>mmm, spring onions
06:26<stillunknown>Most functions should be private.
06:31<stillunknown>My optimizing session is coming to an end, i used existing acceleration code since it was easier to optimize, but i'm still waiting on the authors ok.
06:38|-|Vikthor [] has quit [Remote host closed the connection]
06:38|-|Vikthor [] has joined #openttd
06:41|-|helb [~helb@] has quit [Remote host closed the connection]
06:47<stillunknown>Is there any common opinion about the usage of other people's patches in your own (with credit)?
06:47|-|helb [~helb@] has joined #openttd
06:52|-|Sacro [~ben@adsl-87-102-80-216.karoo.KCOM.COM] has quit [Quit: Leaving]
07:13|-|Purno_ [] has joined #openttd
07:13|-|Purno [] has quit [Read error: Connection reset by peer]
07:16|-|Ammler [] has quit [Quit: Konversation terminated!]
07:16|-|Ammler [] has joined #openttd
07:17|-|Ammler [] has quit [Remote host closed the connection]
07:17|-|Ammler [] has joined #openttd
07:24<CIA-1>OpenTTD: peter1138 * r10444 /trunk/ (48 files in 7 dirs): -Codechange: switch to c++ classes and inheritance for sound/music/video drivers, using self-registration based on the blitter-model.
07:30<CIA-1>OpenTTD: KUDr * r10445 /trunk/src/win32.cpp: -Fix (Win32, r10444): remove #include "hal.h"
07:31<hylje>remarks :)
07:31<hylje>oh, kudr is teh back?!
07:32<KUDr>i have vacation
07:32<KUDr>and next week back to work
07:37<dihedral>what is hal.h for?
07:41|-|Progman [] has joined #openttd
07:49<KUDr>hal is hidden advertisement fo IBM
07:49<@peter1138>it's not
07:49<@peter1138>@ dihedral, heh
07:50<KUDr>'I' - 1 = 'H', 'B' - 1 = 'A', 'M' - 1 = 'L'
07:50<KUDr>peter1138: don't try to convince us about "Hardware Abstraction Layer' or so
07:51<@peter1138>KUDr: i meant it's not *for* anything, as it no longer exists :)
07:51<KUDr>ahh, yes
07:52<KUDr>IBM announced bankrubcy so we removed their advertisemens :)
07:55<@peter1138>yeah, we charged too much for them
07:55<@peter1138>and brought them down
07:56|-|ThePizzaKing [] has quit [Ping timeout: 480 seconds]
07:59|-|MarkSlap [] has joined #openttd
07:59|-|BamBam [] has joined #openttd
08:00<Phazorx>question, server keeps complaining about "slow client" and suggest increasing *net*freq
08:01<Phazorx>what exactly is that and how to deal with it?
08:06|-|Markkisen [] has quit [Ping timeout: 480 seconds]
08:09|-|glx [] has joined #openttd
08:09|-|mode/#openttd [+v glx] by ChanServ
08:13|-|Digitalfox [] has quit [Quit: ChatZilla [Firefox]]
08:13|-|NukeBuster [] has joined #openttd
08:18<@peter1138>well it tells you
08:19<CIA-1>OpenTTD: peter1138 * r10446 /trunk/src/music/ (extmidi.cpp extmidi.h): -Codechange: Move extmidi's global data into its class.
08:25<@peter1138>it tells you what tod o
08:25|-|Chicago_R_A [] has joined #openttd
08:28|-|Nickman changed nick to Nickman^Away
08:29|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has joined #openttd
08:31<Phazorx>peter1138: i dont see that thing as patch option and have no idea about values
08:36<@peter1138>not all options are patch options...
08:41|-|Peakki [] has joined #openttd
08:42[~]peter1138 ponders that signal gui
08:44<Phazorx>so is there some kind of guidance i can get on what and how neets to be set with that particular param?
08:45<@peter1138>check the current value, and then increase it
08:45<Noldo>peter1138: just tell him where he can do that
08:45<@peter1138>in the console
08:46|-|NukeBuster [] has quit [Read error: Connection reset by peer]
08:46|-|NukeBuster [] has joined #openttd
08:47|-|BamBam [] has quit []
08:49|-|valhalla1w changed nick to valhallasw
08:50<Tlustoch>Is it possible to use more engines in one train?
08:51<Chicago_R_A>In the build window, build 2 engines and then drag one of them up to the line of the first engine
08:53<Tlustoch>How's the speed increased?
08:53<@peter1138>it's not
08:53<@peter1138>but power is
08:58|-|BamBam [] has joined #openttd
08:59<Phazorx>patch *net_frame_freq
08:59<Phazorx>'*net_frame_freq' is an unknown patch setting.
08:59<Phazorx>patch net_frame_freq
08:59<Phazorx>'net_frame_freq' is an unknown patch setting.
08:59<+glx>it's not a pathc
08:59<Phazorx>what is it then ?
08:59<+glx>it's a variable
09:00<Phazorx>thanks glx
09:00<+glx>'net_frame_freq' to display the current value, 'net_frame_freq = value' to change it
09:00|-|iPandaMojo [] has joined #openttd
09:03|-|Progman [] has quit [Remote host closed the connection]
09:06|-|NukeBuster [] has left #openttd []
09:19<stillunknown>Can anyone tell me why trains can go full speed when only the first engine has left the bridge?
09:20<Noldo>it propably just checks that
09:21<stillunknown>But is there a good reason for it?
09:21<Maedhros>probably not
09:22<@peter1138>well it's quicker ;)
09:23<stillunknown>In terms of train speed or code speed?
09:23<Maedhros>both :)
09:23|-||kami|Death [] has quit [Read error: Connection reset by peer]
09:27|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has quit [Remote host closed the connection]
09:28|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has joined #openttd
09:36|-|Progman [] has joined #openttd
09:38|-|helb [~helb@] has quit [Remote host closed the connection]
09:48|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has quit [Remote host closed the connection]
09:49|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has joined #openttd
09:50|-|lolman [] has joined #openttd
09:50<stillunknown>Why won't a Vehicle* be changed to a Train* outside the Train class?
09:51<hylje>subclassing vehicle
09:51<stillunknown>I can't cast it or use the new operator.
09:51<Noldo>what would you like to do?
09:52<stillunknown>I have a function outside the Train class, which only works on trains.
09:52<stillunknown>I removed a useless virtual function from the Vehicle class and now it complains.
09:53<stillunknown>And it won't let me convert the vehicle pointer to a train pointer.
09:53<Noldo>of cource it won't
09:53|-|lolman_ [] has joined #openttd
09:53<Noldo>the vehicle pointer only promices that the object that it points to is a vehicle
09:54<stillunknown>I did the same inside the train class, maybe there it's considered safe.
09:54<Noldo>if you convert vehicle pointer to train pointer it's like saying that all vehicles are trains
09:54<iPandaMojo>stillunknown: Erm, no, implicit conversion of Vehicle* to Train* isn't safe inside Train's scope either.
09:55<stillunknown>It's an explicit conversion.
09:55<iPandaMojo>At least, assuming it isn't safe outside of Train's scope.
09:55<stillunknown> v = new (v) Train();
09:55<iPandaMojo>That's not a conversion.
09:55<iPandaMojo>That's a placement new.
09:56<Noldo>does that work btw?
09:56<iPandaMojo>And a broken one with that wonky syntax it looks like.
09:56<iPandaMojo>(the v=... part is redundant)
09:56<iPandaMojo>(probably legal/defined behavior, but redundant)
09:56<iPandaMojo>You probably want:
09:56<iPandaMojo>v = new Train();
09:56<stillunknown>I don't.
09:57<stillunknown>Nor does openttd.
09:57<iPandaMojo>If v is a Vehicle*, it's worth noting that this is converting Train to Vehicle, not vicea versa.
09:57<stillunknown>On creation time you create a vehicle, then you convert it into whatever you'd like.
09:57<stillunknown> * This class 'wraps' Vehicle; you do not actually instantiate this class.
09:57<stillunknown> * You create a Vehicle using AllocateVehicle, so it is added to the pool
09:57<stillunknown> * and you reinitialize that to a Train using:
09:57<stillunknown> * v = new (v) Train();
09:57<Noldo>that's not how it works
09:58<@peter1138>it's magic
09:58<@peter1138>strange crazy magic, perhaps
09:58<iPandaMojo>v= new (v) T(); is black magic >_>
09:58|-|lolman_ [] has quit [Read error: Connection reset by peer]
09:59|-|lolman [] has quit [Read error: No route to host]
09:59<stillunknown>((Train *)u)->
09:59<stillunknown>this does work
09:59<iPandaMojo>Right. That's an explicit cast.
09:59<iPandaMojo>v = new (v) T(); definately does not involve any explicit casts, I can assert that much.
09:59<Noldo>now you are saying that all vehicles are trains
09:59<iPandaMojo>Well, he's saying that u is a train.
09:59<stillunknown>But i don't see why: Train *something = (Train *)u; doesn't work
09:59<iPandaMojo>Which isn't true for the general case.
10:00<iPandaMojo>Hence the need for an explicit cast if he's figuring this out programmatically.
10:00<iPandaMojo>(To avoid doing this by accident)
10:00<stillunknown>It's in the function AdvanceWagons which is only used for trains.
10:01<iPandaMojo>Train *something = (Train*)u; should work if u is any pointer type.
10:01<ln->iPandaMojo: "definately" is spelled "definitely"
10:01<iPandaMojo>Gah, thank you for the correction.
10:01<stillunknown>I have that problem too.
10:02<@peter1138>yeah, Train *foo = (Train *)bar; should work
10:02<Noldo>but it is somewhat dangerous
10:03<@peter1138>possibly assert(bar->type == VEH_TRAIN); just before :)
10:03<iPandaMojo>dynamic_cast! ;-)
10:04<Noldo>I'm sure even dynamic_cast can be avoided with proper planning
10:04<Noldo>btw how do memory pools work?
10:04<iPandaMojo>dynamic_cast is just the C++ RTTI version of foo->type checks
10:05<iPandaMojo>(Well, at least where each type == a different class)
10:10<Noldo>but c++ has it's normal way of creating objects and varying from that doesn't sound like a very good idea
10:10<caladan>well, it is
10:11|-|lolman [] has joined #openttd
10:11<caladan>cause it is more memory efficient
10:16<Eddi|zuHause2>but he's not creating an object
10:16<Eddi|zuHause2>he's just typecasting
10:16<iPandaMojo>I can say this much for certain: new has no place in "casting".
10:16<Eddi|zuHause2>or "inverse polymorphic access"
10:16|-|helb [~helb@] has joined #openttd
10:16<iPandaMojo>Only construction, which is quite different.
10:17<iPandaMojo>If you're using memory pools, hide that shit from user code.
10:17<iPandaMojo>The only use of placement new should be inside containers and memory allocators (pools included), really.
10:17<Eddi|zuHause2>yes, how about calling the function with a Train* in the first place?
10:18<caladan>and everywhere else should be calls to memory pools
10:18<iPandaMojo>(Well, there may be an exception or two, but whatever-the-hell he's trying to do certainly isn't one of those exceptions)
10:18<Noldo>I wonder what is the big change stillunknown is going for
10:19|-|lolman [] has quit [Read error: Connection reset by peer]
10:19[~]iPandaMojo is too lazy to play 20 questions to figure it out
10:20<Eddi|zuHause2>maybe he should show a typical hand movement of the job :)
10:20<Noldo>also I'm a bit sceptical about archieving memory efficency with custom allocators
10:20<stillunknown>Some of it is bringing more stuff into their respective vehicle classes, most of it is a considerable redesign of the train controller.
10:21<stillunknown>I'm just cleaning things up, like unused virtual functions.
10:21<stillunknown>And no, i'm not using new anywere.
10:21<iPandaMojo>The best memory efficiency is only going to come about with placement hints, but if you're not doing that, custom allocators can be pushed to just about the limit of the envelope
10:21<iPandaMojo>(then what was the point of that line you pasted earlier w/ new in it?)
10:23<stillunknown>I tried something (explicit casting didn't work the first time), i happened to read that and i saw what the new does.
10:23<iPandaMojo>Oh yes: And, technically, the SC++L allocator interface actually allows for a hint to be passed to said allocator.
10:23<iPandaMojo>Not all the containers end up using them but...
10:24|-|lolman [] has joined #openttd
10:24<stillunknown>My experience in C++ is limited, as it's just a hobby.
10:25<iPandaMojo>I know too much C++ for my own good.
10:25<stillunknown>So C++ for me is like: C+classes+more overloadable operators+stdlib
10:25<stillunknown>And a few other things i can't think of right now.
10:26<Noldo>stillunknown: are Vehicles and Trains still separate classes in your code, I mean is one inherited from the other?
10:26<iPandaMojo>*overloading in the first place, custom operator implementation in the first place
10:26<stillunknown>Noldo: Yes, they still inherit eachother.
10:26<Eddi|zuHause2>stillunknown: templates :)
10:26<stillunknown>The basic structure remains unchanged.
10:27<Noldo>stillunknown: is it based on trunk or something else?
10:27<hylje>circular inheritance!
10:27<stillunknown>My main goal was optimizing trains, i did that, obviously i want it merged at some point.
10:28<iPandaMojo>Template + Macro Metaprogramming with File iteration!
10:28<iPandaMojo>O(N^2) template specializations!
10:29|-|helb [~helb@] has quit [Remote host closed the connection]
10:29<iPandaMojo>SFINAE, Koeing Lookup, and dependant templates!
10:29[~]iPandaMojo explodes
10:29<stillunknown>But soon i will have to ask someone how i'm going to get a 120 KiB patch merged :-(
10:30<Eddi|zuHause2>split it in 120 1kB patches :)
10:30<stillunknown>Because much seperation is impossible.
10:30<Eddi|zuHause2>each line separately :p
10:30<stillunknown>Maybe one or two splits, but a lot of the code is interdependent.
10:31<iPandaMojo>I'm half tempted to start trying to get OTTD unit tested
10:31<Eddi|zuHause2>it's probably easier if the devs could follow the development path
10:31<Eddi|zuHause2>iPandaMojo: i think YAPF had a unittest
10:32<stillunknown>Eddi: the development path is pretty much done, and some of the intermediate stages are embarrassing.
10:32<Eddi|zuHause2>haha :)
10:32<iPandaMojo>panda:~/openttd-trunk-head $ fgrep "Unit Test" * */* */*/*
10:32<iPandaMojo>panda:~/openttd-trunk-head $
10:32<Maedhros>iPandaMojo: i think you'd probably go insane before you managed it, but it would be cool if possible ;)
10:33<Eddi|zuHause2>iPandaMojo: look in the old yapf branch... i think it got removed later
10:33<iPandaMojo>Maedhros: To go insane, one needs to have been sane in the first place.
10:33<iPandaMojo>Removed unit tests? :(
10:33<Maedhros>well, there is that :)
10:33<Noldo>what are those VehicleRoad etc structs in vehicle.h
10:33<Eddi|zuHause2>iPandaMojo: a unittest is not of much use after the product is finished
10:33<iPandaMojo>Sure it is.
10:33<stillunknown>Noldo: They are unions of the Vehicle struct.
10:34<Noldo>ok, yes now there it is
10:34<Eddi|zuHause2>iPandaMojo: and the bugs that actually occured later (mostly multiplayer desyncs) you could never have caught with a unittest
10:34<Noldo>is that the stuff you would like to move to the subclasses?
10:35<iPandaMojo>I haven't worked on OTTD that much, but I've encountered bugs that WOULD have been caught by unit tests just fine.
10:35<iPandaMojo>No, you can't catch everything.
10:35<iPandaMojo>But that doesn't mean you can't catch anything that's worthwhile to catch.
10:36<Eddi|zuHause2>yes, sure...
10:36<stillunknown>But is it worth the effort?
10:36<Eddi|zuHause2>but after yapf was finished and merged, there was no use for it anymore
10:36<Noldo>oh my, so someone already overloaded new for vehicles
10:36<Eddi|zuHause2>because there were hardly any further changes
10:36<iPandaMojo>What, could none of the tests be reused for any other pathfinder that might be implemented in the future?
10:37<iPandaMojo>Or better yet, to ensure you don't break shit when upgrading the internals to handle, say, PBS?
10:37<Eddi|zuHause2>iPandaMojo: the file is still in SVN
10:37<Eddi|zuHause2>just it's no use in trunk, that's why it got removed
10:38<iPandaMojo>Mmm. See, I'm lazy, so I just leave my tests in so I don't have to go hunting through my SVN history to find whatever tests I might want to use again.
10:39<iPandaMojo>Which, not being in trunk, aren't mantained and thus have probably been broken, both in terms of not compiling AND not running.
10:39<iPandaMojo>(without errors)
10:39<Eddi|zuHause2>!openttd log 6410
10:39<_42_>Eddi|zuHause2: r6410 log: -remove unittest
10:40<Eddi|zuHause2>why that useless highlight in there?
10:40<Noldo>And bacause the new is overloaded the syntax demonstratted earlier is actually valid
10:40<Eddi|zuHause2>!openttd commit 6410
10:40<_42_>Commit by glx :: r6410 /trunk/Makefile (2006-09-06 13:58:31 UTC)
10:40<_42_>-remove unittest
10:40<Noldo>who on earth wrote this stuff??
10:40|-|lolman [] has quit [Read error: Connection reset by peer]
10:41<Eddi|zuHause2>iPandaMojo: exactly, it's just useless maintenance work to keep it around
10:41|-|lolman [] has joined #openttd
10:42<Eddi|zuHause2>(under the assumption that the product is finished and hardly any future changes are to be expected)
10:42<iPandaMojo>Extremely easy mantinence (when it's broken, not when it's been been broken for 1000s of revs) with future worth in a long lived project.
10:43|-|Brianetta [] has joined #openttd
10:43<iPandaMojo>I guess I'm just under the differing impression that more than "hardly any" future changes are to be expected.
10:44|-|Nickman^Away changed nick to Nickman
10:44<Noldo>svn praise is so handy
10:45<hylje>what does it do
10:45<Eddi|zuHause2>iPandaMojo: not in YAPF
10:46<Eddi|zuHause2>YAPF was almost unchanged for a year
10:46|-|Digitalfox [] has joined #openttd
10:46<iPandaMojo>Not much work on PBS right now.
10:47<Eddi|zuHause2>yapf should not be changed (much) for a new PBS
10:47<iPandaMojo>If guaranteed greens ever get worked on, I'd be suprised if that didn't require pathfinder modifications too.
10:47<Eddi|zuHause2>besides, it was already planned with a new PBS implementation in mind
10:48<Eddi|zuHause2>it doesn't need much change, just penalties for red/green signals handled differently
10:50<iPandaMojo>Well, your project.
10:50<iPandaMojo>(or at least not mine)
10:51<Noldo>hylje: it tells who is responsible for each line of code
10:53<Eddi|zuHause2>it's actually just an alias for "svn blame" :p
10:53<Eddi|zuHause2>for people whose glass is half full ;)
10:54<hylje>my glass is twice as large as necessary
10:54<Noldo>yes I used blame, but thought it would be nicer this way
10:54<Noldo>and it's conseptually impossible to determine which is alias for which
10:55<Eddi|zuHause2>~/spiele/OpenTTD> svn help praise
10:55<Eddi|zuHause2>blame (praise, annotate, ann): Gibt den Inhalt der angegebenen Dateien oder URLs mit
10:55<Eddi|zuHause2>den Revisons- und Autoreninformationen für jede Zeile aus.
10:55<Eddi|zuHause2>it clearly states a "favourite" :)
10:55<iPandaMojo>That could just be based on alphabetical ordering.
10:56<iPandaMojo>Of course, this totally ignores inside the parenthesis, but that's besides the point.... ;-)
10:56<Eddi|zuHause2>yes, because "annotate" comes after "praise" in your alphabet?
10:56<iPandaMojo>Also it comes after blame.
10:56[~]iPandaMojo coughs
10:58|-|MUcht [] has joined #openttd
10:59<iPandaMojo>You see, the leading A is accented in... some language... causing the corresponding extended ASCII character to trail "blame" and "praise" in... some encoding :D
11:00<iPandaMojo>Time to move out and stuff. Later.
11:00|-|iPandaMojo [] has quit [Quit: iPandaMojo]
11:00<Eddi|zuHause2>in german, "ä" ist supposed to be treated like "a" in lexicographic ordering
11:02|-|Mucht_ [] has quit [Ping timeout: 480 seconds]
11:03|-|lolman [] has quit [Read error: Connection reset by peer]
11:08|-|lolman [] has joined #openttd
11:12|-|BamBam [] has left #openttd []
11:18|-|BobingAbout [~BobingAbo@adsl-83-100-203-68.karoo.KCOM.COM] has joined #openttd
11:18|-|BobingAbout [~BobingAbo@adsl-83-100-203-68.karoo.KCOM.COM] has left #openttd []
11:23<dihedral>Eddi|zuHause2: i always wonderd about that...
11:26<Eddi|zuHause2>in what way?
11:27<CIA-1>OpenTTD: belugas * r10447 /trunk/src/industry.h: -Codechange: Don't need to specify values on an enum when those values are contiguous
11:34|-|Wolf01 [] has joined #openttd
11:39|-|Prof_Frink [] has joined #openttd
11:40<CIA-1>OpenTTD: belugas * r10448 /trunk/src/newgrf.cpp: -Codechange: Industry Tiles and Houses share almost the same spritegroup format.
11:40|-|Chris82 [] has joined #openttd
11:40<Chris82>good evening :)
11:40<CIA-1>OpenTTD: miham * r10449 /trunk/src/lang/ (catalan.txt french.txt russian.txt):
11:40<CIA-1>OpenTTD: -Update: WebTranslator2 update to 2007-07-05 18:40:00
11:40<CIA-1>OpenTTD: catalan - 1 changed by arnaullv (1)
11:40<CIA-1>OpenTTD: french - 4 changed by glx (4)
11:40<CIA-1>OpenTTD: russian - 2 fixed by Smoky555 (2)
11:40<Chris82>I am just looking at the code of Advanced Town Handling
11:41<Chris82>and I was wondering what "distance = DistanceManhattan(tile,t->xy);" means
11:41<Chris82>it's supposed to calculate the distance from the town center, but what is this DistanceManhatten
11:41<Chris82>the patch doesn't define it
11:41<+glx>it is in OTTD source
11:42<Chris82>hmmm is it still? because I can't find this anywhere
11:42<Maedhros>look in map.h
11:42<Maedhros>and indeed map.cpp
11:42<Chris82>ahhhh my mistake was I wrote Manahtten
11:43<stillunknown>Does adding a patch option require a savegame change?
11:44<Eddi|zuHause2>Chris82: "manhattan distance" == "only use streets and avenues, do not go diagonal"
11:44<Maedhros>if it needs to be synced across network games, yes
11:44<Noldo>mathemathically |x1-x2| + |y1-y2|
11:45<Eddi|zuHause2>it has the advantage of not needing (floating point, or rounded) square roots, like the euclidean distance
11:46<Chris82>ah ok thanks :) then I know how it measures distance now
11:46<Maedhros>and the disadvantage that you can make far more money with a mostly diagonal railway :)
11:48<Chris82>hmmm interesting point :D
11:48<Chris82>ok I have one compiler error saying:
11:48<Chris82>..\src\clear_cmd.cpp(464) : error C2676: binary '*' : 'CommandCost' does not define this operator or a conversion to a type acceptable to the predefined operator
11:48<Chris82>with this line:
11:48<Chris82> towncost = (cost * population / 300 * (30 * 1000 / (distance + 15)) / 1000);
11:48<Eddi|zuHause2>probably an old patch
11:49<Chris82>how do I need to change this so it works with CommandCost instead of int32 ?
11:49<Chris82>yeah but I haven't quite gotten how this CommandCost stuff works yet
11:49|-|Darkebie [] has joined #openttd
11:51<Eddi|zuHause2>Chris82: "CommandCost" is a class, and has a member "cost"
11:52<Eddi|zuHause2>(pherhaps "CommandResult" would have been a better name)
11:52<Chris82>hmmm ok well I understand what I can do with cost.AddCost and cost.GetCost
11:52<Eddi|zuHause2>try the GetCost() accessor function
11:53<Chris82>what I don't know is how to calculate anything like x * y + z and make that the costs
11:53<Chris82>oh cost.GetCost() instead of cost indeed compiles, I forgot the () :D
11:53<Eddi|zuHause2>new CommandCost(money)?
11:53<Chris82>let's see if the code works
11:55<Eddi|zuHause2>yeah, the () is one of the stupid things about C-syntax
11:55<Eddi|zuHause2>"function" evaluates to the pointer to the function, while "function()" actually calls the function
11:56<Eddi|zuHause2>but it is so rarely that you want the function pointer, they should have made a different syntax for that one
11:57<Maedhros>Eddi|zuHause2: you don't want to use new, as it'll never be deleted
11:58<hylje>function to refer and function() to call is pretty standard
11:58<Eddi|zuHause2>hylje: it is totally useless, and cause of a lot of unnecessary errors
11:59<Eddi|zuHause2>and just because everyone is trying to copy C does not mean it is actually good
11:59<hylje>how would you refer to a function then?
11:59<Chris82>hmmmm well my code compiled but it's not doing what I want :D
11:59<Chris82>back to the code
11:59<Eddi|zuHause2>by a special construct?
12:00<Chris82> if (_patches.town_construction_cost) {
12:00<Eddi|zuHause2>i don't know exactly how they did it in pascal
12:00<Chris82>does this work to check if I shall do something when the patch is enabled?
12:00<Chris82>or do I need more in the brackets?
12:00<Eddi|zuHause2>but they had function pointers as well, but "function" was an abbreviation for "function()"
12:00<hylje>self._callback = function
12:00<Chris82>like == true
12:00<Maedhros>Chris82: if town_construction_cost is a bool, that's fine
12:00<Chris82>it's a bool yeah
12:01<Chris82>hmmm ok then something else is wrong
12:01<Maedhros>using == true works, but is redundant :)
12:01<Chris82>can I use cost.AddCost multiple times to add several values before I return the cost?
12:01<Chris82>like cost.AddCost(towncost);
12:01<Chris82>and then return cost.AddCost(_price.purchase_land * 10);
12:01|-|Nukebuster [] has joined #openttd
12:02<Maedhros>you should be able to AddCost more than once, but i'd be wary of returning it
12:02<Maedhros>just return cost; at the end
12:02<Chris82>well that return line is from trunk, I didn't change it
12:02<Maedhros>really? ok then
12:02<Eddi|zuHause2>Maedhros: how and where are CommandCosts created and destroyed then?
12:02<Chris82>it's from the CommandCost to buy land
12:03<Chris82>in clear_cmd.cpp but if it's bad coding style I can AddCost before and just return cost; at the end
12:04<Chris82>this might have been overlooked actually, when I look in other places in source AddCost is always done before the return
12:04<Eddi|zuHause2>"return x.y();" should work fine
12:04<Maedhros>Eddi|zuHause2: you can return entire structs, you don't need pointers to them
12:04<Eddi|zuHause2>even "return x.y().y().y();"
12:05<Maedhros>Chris82: it's not bad style, but i wasn't sure that AddCost wasn't a void function
12:05|-||Jeroen| [] has joined #openttd
12:05<Chris82>ah ok :)
12:05|-|Ammller [] has joined #openttd
12:05<Chris82>hmmm well I still have to figure out why my code isn't working, I hate it when the reason is not a compiler error :D
12:09<dihedral>it's pretty silly of me to rsync my server to a replacement machine... forgetting to exclude the various ottd checkouts
12:09<dihedral>'allo Chris82
12:09|-|Ammler [] has quit [Ping timeout: 480 seconds]
12:10<Chris82>I am just writing a new Advanced Town Handling patch
12:11<@peter1138>hello Chris82
12:12<Chris82>hi :)
12:13<@peter1138>did my autosignals cause much problem?
12:14<Chris82>oh I haven't checked their compatibility with Signal GUI yet, that's why I didn't put it in the IN yet
12:14<Chris82>it's working fine with trunk code :)
12:14|-|skidd13 [] has joined #openttd
12:14<Chris82>I am just working on two other patches that's why I didn't look at it yesterday
12:21|-|Brianetta [] has quit [Quit: Tschüß]
12:23|-|skidd13 [] has left #openttd []
12:28<Chris82> towncost = (cost.GetCost() * population / 300 * (30 * 1000 / (distance + 15)) / 1000);
12:28<Chris82>is it possible that the result for towncost is always the same?
12:28<Chris82>because it seems like it, no matter how far away from a city/town I build it always costs the same
12:28<Chris82>but I see that something is added to the standard price
12:33<Eddi|zuHause2>maybe wrong order of evaluation?
12:34<Eddi|zuHause2>e.g. a/b*100 is something different than (a*100)/b
12:35<Chris82>maybe somebody wants to do a look here :)
12:36<Eddi|zuHause2>this site totally cannot handle large font sizes---
12:37<Eddi|zuHause2>did you check that the if() part is actually reached?
12:37<Eddi|zuHause2>try a few debug() or printf()
12:38<Chris82>well the if part must be reached because it adds costs
12:38<Chris82>but always the same amount
12:39|-|lolman [] has quit [Read error: Connection reset by peer]
12:40<Eddi|zuHause2>towncost should be int rather than CommandCost
12:40<Eddi|zuHause2>or Money
12:41<Eddi|zuHause2>and probably all those variables should be local to the if-block
12:41<Eddi|zuHause2>or removed alltogether
12:41<Chris82>hmmm well the variables are detected otherwise I'd get a compiler error
12:41<Chris82>but I'll try making towncost Money
12:42<Chris82>you can't make it int because that's not compatible with the CommandCost class
12:42<Chris82>no not removed, population and distance is not defined elsewhere
12:43<Darkebie>When you build a railstation near 2 industries, does it suffice to cover only 1 square of both industries to load/unload for them?
12:43<Eddi|zuHause2>i mean nest them into the calculation, without temporary variables
12:43<Chris82>2>..\src\clear_cmd.cpp(447) : error C2440: '=' : cannot convert from 'CommandCost' to 'Money' :/
12:45<Chris82>I just tried to make the formular really simple (cost * population) / 300 and see if another value is added then
12:45<Eddi|zuHause2>which line is that?
12:46<Chris82>interesting I have to pay the same value
12:47<Chris82>the towncost = line
12:47<Chris82>so it doesn't add the towncost value but something else
12:48<+glx>Chris82: you probably need GetCost() in this line
12:48<dihedral>on my way home... cu laters :-)
12:48<Eddi|zuHause2>you definitely do something wrong
12:50<Chris82> towncost = (cost.GetCost() * (t->population) / 300 * (30 * 1000 / (distance + 15)) / 1000);
12:50<Chris82>I use GetCost
12:52<Eddi|zuHause2>okay... easy things... replace that whole line with towncost=distance
12:52<Maedhros>ah! cost isn't actually used anywhere, is it?
12:52<Maedhros>in which case you're multiplying the whole line by 0...
12:52<Chris82>hmmm but there is something added with the changes I've done
12:52<Chris82>so that can't be the problem I guess
12:53<Chris82>ah bugger they close the computer rooms in 7 mins :D
12:53<Chris82>gotta go home now
12:54<Eddi|zuHause2> towncost = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); <- replace that by "cost"
12:54|-|Ammller changed nick to Ammler
12:54<Eddi|zuHause2>since towncost is no longer a cost
12:54<Eddi|zuHause2>a CommandCost i mean
12:56<Eddi|zuHause2>this piece of code is totally inconsistent...
12:57<Chris82>hmmm ok I'll look at it when I am at home gotta hurry now or my bus leaves :D
12:58|-|Chris82 [] has quit [Quit: ((((way home))))]
13:04<Maedhros>i'm not entirely sure that the advanced town handling patch should be touching CmdPurchaseLandArea at all, tbg
13:05<Eddi|zuHause2>yeah, it should rather be modifying clearing land
13:06<@peter1138>what does "advanced town handling" mean, anyway?
13:06<Eddi|zuHause2>if i read it correctly, tiles close to the town center should get more expensive
13:07<Maedhros>see you tomorrow
13:08|-|Maedhros [] has quit [Quit: leaving]
13:08<Eddi|zuHause2>this piece of code is totally ugly... i would throw it away
13:15|-|e1ko [] has joined #openttd
13:19|-|Brianetta [] has joined #openttd
13:22<CIA-1>OpenTTD: peter1138 * r10450 /trunk/src/video/ -Fix (r10444): Fix search & replace errors
13:23|-|helb [~helb@] has joined #openttd
13:29<Sacro|Laptop>anyone here good with C++
13:29<Sacro|Laptop>i'm confused
13:29<Noldo>Sacro|Laptop: about what?
13:29<@peter1138>i hope no osx user wants to play tonight ;)
13:30<Sacro|Laptop>Noldo: inheritence... virtual functions
13:30<Noldo>Sacro|Laptop: shoot
13:30<caladan>kk, what you got :D
13:31<Sacro|Laptop>mmm, i'm trying to work out how to get things into scope
13:31<@peter1138>class fred { public: virtual void sheila() = 0; }; class jim : public fred { void sheila() { ... } };
13:32<Sacro|Laptop>peter1138: how useful
13:32<Sacro|Laptop>and the ..., is that so i can pass %i ?
13:32<@peter1138>no :)
13:32<Noldo>Sacro|Laptop: into scope?
13:33<Sacro|Laptop>Noldo: yes, i'd changed the class name, but not updated the relevent othery bits
13:33|-|MarkSlap [] has quit [Ping timeout: 480 seconds]
13:34<Noldo>won't the compiler help if you try to compile it?
13:38<Sacro|Laptop>slightly, yeah
13:40|-|Peakki [] has quit [Read error: Connection reset by peer]
13:41<Sacro|Laptop>sdl is confusing me
13:42<Noldo>well, that's not my area of expertice
13:42<@peter1138>just steal it all from ottd
13:42<@peter1138>best code ever ;)
13:43<Sacro|Laptop>peter1138: yes...
13:44|-|nfc_ [] has quit [Quit: saato]
13:45<Sacro|Laptop>hmm, what is SDL_CALL
13:47<@Belugas>5 letters and an underscore
13:48<+glx>7 letters indeed :)
13:48<+glx>and for most platforms it is empty
13:49<@Belugas>SDLCA = 5
13:49<+glx>right :)
13:49<@Belugas>why count for duplicates?
13:49[~]Belugas is loosing his mind
13:50[~]peter1138 finds it
13:50<@peter1138>down the back of the sofa
13:51<@Belugas>yeah... we spent a lot of time on that sofa you and me!
13:52<@peter1138>+SDT_CONDBOOL(Patches, enable_signal_gui, 70, SL_MAX_VERSION, 0, 0, false, STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI, NULL),
13:52|-|lolman [] has joined #openttd
13:52<@peter1138>i somehow don't think that setting needs saving...
13:52|-|scrooge [] has joined #openttd
13:54<Sacro|Laptop>would i be right in assoming that x = 0 will compile to x AND 0
13:59|-|nfc [] has joined #openttd
13:59<Eddi|zuHause2>why have a patch option for that anyway?!?
14:00<Eddi|zuHause2>it should just open a new window, the default behaviour should not change...
14:05<@peter1138>if you don't want that window...
14:06|-|HMage [] has quit [Ping timeout: 480 seconds]
14:07|-|MarkSlap [] has joined #openttd
14:17|-|Peakki [] has joined #openttd
14:17|-|Peakki [] has quit []
14:18<Smoovious>I wouldn't always want that window
14:18<Smoovious>and for that matter, I'd want the setting saved to the settings file. :P
14:19<Eddi|zuHause2>well, even then, settings file != savegame
14:20<Smoovious>didn't say it was
14:20<Eddi|zuHause2>but still, why makea
14:20<Eddi|zuHause2>a difference for this window?
14:20<Eddi|zuHause2>there is no option to show the depot window, or station window
14:21<Smoovious>because for those, you have to make a choice... for signals, we already are used to the keyboard shortcuts for most of our building, and a window would get in the way of speedy signal placement
14:22<Smoovious>just one more thing to click that you d on't have to
14:22<Eddi|zuHause2>you don't have to click on the window
14:22<Eddi|zuHause2>the current shortcuts stay the same
14:23|-|Nickman changed nick to Nickman^Away
14:23<Smoovious>is there something wrong with being able to customize your interface to your liking tho?
14:24<Smoovious>perhaps have the GUI as a pulldown option of the signal button, defaultitng to no GUI
14:24<Smoovious>and just clicking th e button, will use thhe l ast known selection, just like track-type
14:25<Smoovious>then no patch menu option is necessary
14:27|-|MarkSlap [] has quit [Ping timeout: 480 seconds]
14:31|-|HMage [] has joined #openttd
14:32|-|HMage [] has quit []
14:39<stillunknown>Signal building is fine the way it is.
14:40|-|MarkSlap [] has joined #openttd
14:45<Eddi|zuHause2>i actually like the signal gui
14:45<Eddi|zuHause2>and it is probably newbie friendly
14:46<Darkebie>im new and after reading the manual i havent had a prob with it
14:46|-|KritiK [] has joined #openttd
14:46<Eddi|zuHause2>see... how many people do you know that actually read the manual?
14:47<Smoovious>if people don't read the manual, it is their own fault
14:48<Eddi|zuHause2>no, programs should be very self explaining
14:49<Darkebie>depends on what program
14:49<stillunknown>It's a shortterm vs longterm efficiency question.
14:49<Smoovious>if that's the goal, then a tooltip wiith the instructions of how to use signals would be plenty
14:49<stillunknown>I prefer the latter.
14:50<Smoovious>personally, I find programs that insist on treating me like a clueless noob full time, irritating, and not pleasant
14:50[~]stillunknown too
14:52<Nukebuster>well, thats why it should be a patch option...
14:53<Nukebuster>as soon as you get annoyed... you just turn it off
14:53[~]Darkebie mumbles something about world of warcraft and tooltips :p
14:54<stillunknown>Noone serious would use a signal gui to build a lot of signals, it's too inefficient.
14:56<Nukebuster>how extreme is this gui thingie anyway...
14:57<Nukebuster>doesn't it allow you to switch between semaphores,normal signals and distance between signals when dragged?
14:57|-|nfc [] has quit [Quit: leaving]
14:58<Darkebie>I don't get the 'unload' 'load' and 'transfer' options for orders, when i do transfer between 2 endpointstations i earn 8k and my ore just piles up, when i do unload & load between them i only earn 5k and i barely get to move stuff :s
14:59<Eddi|zuHause2>Darkebie: "transfer" means "leave cargo at the station to let another train pick it up"
15:00<Eddi|zuHause2>it does not actually pay you anything
15:00<Eddi|zuHause2>it just shows a income information
15:00<Eddi|zuHause2>you get payed if you actually deliver the stuff to an industry
15:00<Darkebie>ahh :p
15:00<Darkebie>ok ty
15:00|-|nfc [] has joined #openttd
15:02|-|MarkSlap [] has quit [Ping timeout: 480 seconds]
15:05<Darkebie>another question, does it suffice for a station to cover 1 square of an industry to transfer for it?
15:05<Eddi|zuHause2>deliver, not transfer
15:06<+glx>it depends on the industry type
15:06<Eddi|zuHause2>no, you have to cover a piece that actually accept the goods
15:06<Eddi|zuHause2>not all industry tiles accept everything... especially power stations and oil refineries
15:07<Darkebie>I see :p
15:08<Eddi|zuHause2>use the query tool on one of those industries
15:08<Eddi|zuHause2>also, the station build window will tell you if you are near enough to deliver cargo
15:09<Darkebie>true, but when there are 2 nearby industries of the same type I don't know if it works for both or not :-p
15:12<@Belugas>the system will dispatch based on the nearest one
15:12<Darkebie>Aha so I need 2 anyway, alright tyvm :)
15:14|-|Eddi|zuHause [] has joined #openttd
15:16|-|Barry [] has joined #openttd
15:18|-|Eddi|zuHause2 [] has quit [Ping timeout: 480 seconds]
15:24<@peter1138>"this acceleration is more realistic for maglevs (they won't go over mountains for example)"
15:24<@peter1138>why is that more realistic?
15:24<valhallasw>then no trains should go over mountains :P
15:25<@peter1138>stillunknown: you should remove pointless changes
15:25<Eddi|zuHause>what would prevent a maglev from going uphill?
15:25<@peter1138>- _disastervehicle_tick_procs[this->subtype](this);
15:25<@peter1138>+ _disastervehicle_tick_procs[subtype](this);
15:26<valhallasw>peter1138: imo this->x is more clear than x, but if the openttd coding style is that way...
15:26<Eddi|zuHause>why would that STOP the maglev from going uphill?
15:26<stillunknown>It seems i was wrong, will change the beheaviour.
15:26[~]valhallasw mainly does python where self. is needed anyway
15:26<@peter1138>valhallasw: right... the patch removes the this-> ;)
15:26<valhallasw>aaah wait
15:26<valhallasw>right :)
15:26[~]valhallasw should read ^_^
15:28<stillunknown>I think that change happened when i skipped a trunk revision.
15:29<stillunknown>About the maglev, will have to look at it further, since i kind of like the fact that maglevs don't accelerate like rockets.
15:29<@peter1138>i'm saying it's bad
15:29<@peter1138>but it's not necessarily realistic (nor is the current...)
15:31<@peter1138>you should probably use this-> as well
15:31|-|MarkSlap [] has joined #openttd
15:32<stillunknown>peter1138: the whole point of working in a class is not doing that.
15:34|-|lolman [] has quit [Read error: Connection reset by peer]
15:34<Noldo>stillunknown: and being able to use private members
15:34<valhallasw>stillunknown: the whole point of a class is being able to instantiate
15:34<valhallasw>and when you want to use the instance, it is just logical to use this->
15:34|-|Wolf01 [] has quit [Quit: Once again the world is quick to bury me.]
15:37<stillunknown>It's a personal preference, and more than one or two people need to express that preference before i changed a large amount of code.
15:38<@peter1138>it's not exactly consistent at the moment
15:39<stillunknown>Openttd is strange anyway, there were no private functions in the vehicle class.
15:39|-|Nukebuster [] has left #openttd []
15:39<@peter1138>that's because there were no classes
15:41<stillunknown>peter1138: do you happen to know for fact how other devs think about this->?
15:42[~]Belugas agrees with peter1138
15:44<stillunknown>Rubidium: What's your opinion on this->?
15:46<@Belugas>are you going to ask each and everyone of us??
15:48<Rubidium>stillunknown: what do you think? Who wrote the this-> in that diff-chunk?
15:49<stillunknown>You did i guess.
15:53<stillunknown>peter1138: Would you also do this for class based functions?
15:54<stillunknown>this->MyFunc() ?
15:57<Noldo>I never really understood private functions
15:58|-|lolman [] has joined #openttd
16:00<stillunknown>Noldo: In an ideal world a class has an outside interface like a kitchen appliance and you never touch the insides.
16:00<stillunknown>The insides are private functions.
16:01<@peter1138>except with c++ you need to expose the interface :)
16:01<Noldo>peter1138: yes, that is the idiotic part
16:02|-|setrodox [] has quit [Quit: Hapiness ;D]
16:02<stillunknown>You always need to expose some interface.
16:02<Sacro|Laptop>stillunknown: you don't even have to wiggle a knife inside once in a while?
16:02<Noldo>stillunknown: but the interface of private functions
16:02<Noldo>stillunknown: they are not going to be called from outside anyway
16:02<Noldo>so they are basically just implementation details
16:03|-|NukeBuster [] has joined #openttd
16:03<Eddi|zuHause>an outside program should not even know that there are private functions
16:04<Noldo>Eddi|zuHause: well not outside programs, but outside classes
16:04<Eddi|zuHause>that depends on the specific details of "private"
16:05<Eddi|zuHause>some private functions are not private within the class, but within the file or compilation unit
16:05<Noldo>for out side programs you will use abstract classes as an iterface anyway
16:07|-||Jeroen| [] has quit [Remote host closed the connection]
16:08<dihedral>good night ladies
16:08[~]dihedral goes to bed
16:08|-|dihedral [] has quit [Quit: leaving]
16:09<@peter1138>me too
16:10<Eddi|zuHause>you can't only expose abstract classes, because you need to have real classes to instantiate objects
16:12<NukeBuster>what's with doxygen?
16:13<Noldo>Eddi|zuHause: bla bla
16:13<Eddi|zuHause>that's a serious sign for running out of arguments :p
16:15<Noldo>I would need some sleep
16:15<Noldo>all member functions need to be declared in the class definition which usually is in the header file
16:16<Noldo>now if the class is widely used in the program many other files will depend on the header file
16:17<Noldo>now the class has a nice and clean interface that is used all over the program and you are working on the dirty details on how the class is doing it's thing
16:19<Noldo>you find out that hey, wouldn't it be nice to make this often used snippet of code a function, but oh, it needs to be member function because it needs access to private members and of course it wants to be private because it's just some implementation stuff
16:20<Noldo>now you need to add that function to the class definition
16:20<Eddi|zuHause>i know how classes work
16:20|-|Chicago_R_A [] has quit [Ping timeout: 480 seconds]
16:20<Noldo>and this forces all the other people working on the different parts of the project to recompile all parts that are dependent on that header file
16:21<Rubidium>Noldo: there's another solution
16:21<Noldo>yes friend
16:21<Noldo>but that makes private member functions completely useless
16:22<Rubidium>make the public part of the class in the header and extend that class in an "internal" header and then you always instantiate such an "internal" classes.
16:23<Eddi|zuHause>you mean if someone instantiates an object of the "public" class, you instantiate another object of the "private" class internally and return that one?
16:24<Eddi|zuHause>i think that will horribly fail if the other program tries to inherit from your public class
16:25|-|prakti [] has quit [Quit: Quitting .... Hackedi...hackedi...weg.]
16:25|-|orudge [~orudge@] has quit [Quit: Goodbye.]
16:25|-|orudge [~orudge@] has joined #openttd
16:25|-|mode/#openttd [+o orudge] by ChanServ
16:26<Rubidium>Eddi|zuHause: true, but it's a hack anyway
16:26<Eddi|zuHause>C header files are a horrible concept anyway
16:29<Noldo>Rubidium: wouldn't it then be easier to make tehe public part an abstract class?
16:30<Eddi|zuHause>Noldo: again no, because you cannot instantiate abstract classes
16:30<Rubidium>Noldo: that was kind-of what I proposed, but it won't work nicely because when you inherit, you need to inherit the "hidden" one
16:31<Noldo>Rubidium: but it wouldn't give the user any false hopes about getting any functionality with the inheritance
16:31<Noldo>Eddi|zuHause: you can't instantiate those public part classes either
16:32<@orudge>Hmm, OpenTTD doesn't compile on OS/2 any more, it can't find vswprintf
16:32[~]orudge pokes around
16:32<Eddi|zuHause>Noldo: you have to call "new Something()"
16:32<Eddi|zuHause>you cannot do that with abstract classes
16:33<Noldo>I know
16:33|-|TinoM [] has quit [Quit: Verlassend]
16:33<Noldo>but that better because the compiler will tell you you can't do that
16:33<Noldo>without abstracting the public part the compiler can't warn you about the mistake you are making
16:34<Rubidium>though I think you can *never* make the private functions completely invisible from anything else
16:34<Rubidium>and keep the inheritance nice
16:34<Rubidium>even in Java they failed in that
16:35<Rubidium>the whole private/protected/public is done on compile time and nobody cares when you pass private functions as function pointers to somewhere
16:35<@orudge>hmm, for some reason, vswprintf is listed as "todo" in the wchar.h file
16:36<Noldo>I need to get some sleep soon
16:36<+glx>orudge: disable unicode then
16:36<@orudge>that's a bit drastic
16:36<@orudge>it works fine otherwise
16:36<@orudge>it's just that one definition :/
16:36<Noldo>I need to look like I'm coding tomorrow
16:36<+glx>unicode is disabled for win9x
16:36<Eddi|zuHause>hm, but you have to export the function pointer from an internal function
16:36<@orudge>which for some reason doesn't appear to be defined fully
16:36<@orudge>glx: well, it all compiled fine up until r10389
16:37<@orudge>with Unicode
16:37<Rubidium>KUDr added some debugging stuff
16:37<@orudge>it's not that OS/2 doesn't support it
16:37<Rubidium>breaks MorphOS too
16:37<@orudge>it's just that, for some reason, this thing doen't appear to be defined properly in the header
16:37<@orudge>on gcc 3.2.2 here
16:37<Rubidium>and I wonder whether it's actually used
16:39<@orudge>Hmm, this is it compiling now, but whether it'll link properly, or the headers were just out of date, I'm not sure yet
16:39<KUDr>it is there just for debugger
16:39<Rubidium>is it actually needed to have wide char debugging stuff?
16:40<KUDr>CStrT supports both ANSI and Unicode
16:40<Rubidium>and UTF-8 is ANSI?
16:41|-|kaan [~Klaus@] has joined #openttd
16:41<KUDr>so orudge, please declare some dummy inline function for that elsewhere
16:41<kaan>good evening all
16:41<@orudge>it's not that
16:41<@orudge>it's just the fact that, in my wchar.h file, the definition is commented out with "@todo" next to it
16:41<@orudge>I'm not entirely sure why.
16:41<@orudge>so, I'll find out what happens if I uncomment it...
16:41<KUDr>UTF-8 is like ANSI
16:41<KUDr>WIDE is real UNICODE
16:43<Eddi|zuHause>WIDE is UCS4?
16:43<KUDr>orudge: in ottd we don't use wide chars i think, but CStrT is now the same as I use on other projects and i would like to keep it in sync for easier maintenance
16:44<KUDr>WIDE is UTF-16 on Win32 or UTF-32 otherwise (UCS-2/UCS4)
16:45<KUDr>and in ottd it is not called so linker eliminates it
16:45<Rubidium>ooh, joy: the defacto "there is no standard standard"
16:45<KUDr>so you can fake it
16:45<@orudge>well, that's fine then
16:45<@orudge>as I say, it was present in the wchar.h file, just commented out
16:46<SpComb>Logs: (old: )
16:48<Eddi|zuHause>why is there no --disable-debug?
16:48<Eddi|zuHause>(have to use --enable-debug=0)
16:49|-|e1ko [] has quit [Quit: bye, Im going off]
16:49<@orudge>Ah, there we go, it's built OK
16:52|-|Purno_ [] has quit [Quit: Life is a game of pick-up-sticks, played by fucking lunatics.]
17:06<+glx>Eddi|zuHause: debug is disabled by default
17:06<Eddi|zuHause>yes, but if i enabled it once, i have to disable it again
17:07<+glx>non you just reconfigure without enabling it
17:07<Eddi|zuHause>ok, next time i know that :)
17:11|-|Progman [] has quit [Remote host closed the connection]
17:24|-|Barry [] has quit [Quit: ChatZilla [Firefox]]
17:30|-|NukeBuster [] has quit [Read error: Connection reset by peer]
17:31|-|black_Nightmare [] has joined #openttd
17:31<kaan>so im going again, night all
17:31<black_Nightmare>just curious but anyone know who the owner might be for the 'slovenia superhard' server?
17:32|-|kaan [~Klaus@] has left #openttd []
17:32<Sacro|Laptop>not me
17:32<black_Nightmare>well there's some sick mania loose there wrecking things
17:33<black_Nightmare>and its not even a deathmatch server or anything
17:33[~]black_Nightmare sighs
17:33<black_Nightmare>if you want to (its just a normal server) .. find it in the top of server list and go look at lalala and kpl's company
17:33<black_Nightmare>enough said
17:33|-|DorpsGek [] has quit [Remote host closed the connection]
17:34|-|orudge [~orudge@] has quit [Ping timeout: 480 seconds]
17:34|-|orudge [~orudge@] has joined #openttd
17:35|-|mode/#openttd [+o orudge] by ChanServ
17:35<Eddi|zuHause>shouldn't the server have a hint who to contact for admin?
17:35|-|DorpsGek [] has joined #openttd
17:35|-|mode/#openttd [+o DorpsGek] by ChanServ
17:36<Eddi|zuHause>we need a place for a short description of the server, besides the title
17:37<black_Nightmare>eddi...its only like named 'Server server' in the client list and yeah the server dialog is as less helpful
17:37<black_Nightmare>good idea there
17:39|-|elmex_ [] has quit [Remote host closed the connection]
17:40<black_Nightmare>eddi...if you'll feel free... look up the server and just mind your jaws dropping
17:41<Eddi|zuHause>i don't have a release build
17:41<black_Nightmare>oh ic
17:43<black_Nightmare>crazy idea: a kick vote and if over 3/4 of the players agree...bam?
17:43<black_Nightmare>since this is one sick player against six normal ones otherwise
17:49|-|Vikthor [] has quit [Quit: Leaving.]
17:55|-|Nigel_ [~nigel@] has joined #openttd
17:57|-|Nigel [~nigel@] has quit [Ping timeout: 480 seconds]
18:01|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has quit [Ping timeout: 480 seconds]
18:05|-|Tlustoch [] has quit [Quit: Leaving]
18:09<black_Nightmare>either way just curious about it but anyone ever played any servers with any trainset grfs? (well aside to the obvious one daily uk grf)
18:14|-|Nickman^Away changed nick to Nickman
18:17|-|Osai changed nick to Osai^zZz
18:20<Eddi|zuHause>i have seen several servers using newgrfs
18:20<Eddi|zuHause>but i don't play online usually
18:20<black_Nightmare>yeah well most of the times these seem to be clueless ones..often no sites to help on finding grfs or for what the pw is.. but then I guess there're private online player groups somewhere me think
18:24|-|smoovi [] has quit [Ping timeout: 480 seconds]
18:25|-|ThePizzaKing [] has joined #openttd
18:26|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has joined #openttd
18:30|-|Ammler [] has quit [Remote host closed the connection]
18:30|-|Ammler [] has joined #openttd
18:32|-|smoovi [] has joined #openttd
18:35|-|Brianetta [] has quit [Quit: Tschüß]
18:45|-|Nickman [] has quit [Quit: ( :: NoNameScript 4.02 :: )]
18:46|-|black_Nightmare [] has left #openttd [bye]
18:50|-|NukeBuster [] has joined #openttd
18:50<NukeBuster>at what revision did the directory structure change?
18:50<NukeBuster>cd ..
18:53|-|Osai^zZz [] has quit [Quit: Osai^zZz]
18:54<NukeBuster>found it...
19:00|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has quit [Quit: Leaving]
19:02|-|Sacro|Laptop [~Ben@adsl-87-102-43-21.karoo.KCOM.COM] has joined #openttd
19:03<Sionide>why do you ask NukeBuster ?
19:08<NukeBuster>i am trying to rediff a patch from before that...
19:08<NukeBuster>from 7236 to be precise
19:25|-|XeryusTC [] has quit [Quit: Solong, and thanks for all the fish.]
19:26|-|Gekko [~brendan@] has joined #openttd
20:02|-|scrooge [] has quit [Quit: Konversation terminated!]
20:02|-|lolman [] has quit [Read error: Connection reset by peer]
20:04|-|KritiK [] has quit [Quit: Leaving]
20:06|-|Gekko [~brendan@] has quit [Remote host closed the connection]
20:31|-|Eddi|zuHause2 [] has joined #openttd
20:34|-|NukeBuster [] has quit [Read error: Connection reset by peer]
20:34|-|NukeBuster [] has joined #openttd
20:35<NukeBuster>anyone still awake?
20:35|-|glx [] has quit [Quit: bye]
20:36<NukeBuster>What does it mean when a number is followed by an U for example 15U
20:36<NukeBuster>- int t = max(1, dist - 4);
20:36<NukeBuster>+ int t = max(1U, dist - 4);
20:36|-|TPK [~jeff@] has joined #openttd
20:36|-|ThePizzaKing [] has quit [Read error: Connection reset by peer]
20:37<NukeBuster>int t = max((uint)1, dist - 4);
20:37<NukeBuster>so would be the same?
20:37|-|TPK changed nick to ThePizzaKing
20:37<Frostregen>should be
20:37|-|Eddi|zuHause [] has quit [Ping timeout: 480 seconds]
20:38<NukeBuster>ok thank you for clearing that up
20:38<Frostregen>maybe the size is different
20:42<NukeBuster>is it possible to have an unsigned enum?
20:45<Frostregen>what do you want to do?
20:45<NukeBuster>i seem to have 3 constants which are stored in an enum
20:47<NukeBuster>now they used to be used with max()
20:48<NukeBuster>but max() now only accepts uints.. as i can see in the changes from 8054:8055
20:49<Frostregen>casting to uint does not work?
20:50<Frostregen>or int
20:50|-|lolman [] has joined #openttd
20:53<NukeBuster>well... typecasting to int worked :D
20:53<NukeBuster>it compiles flawlessly
20:53<NukeBuster>thank you very much!
20:54<NukeBuster>now i can continue svn upping :P
20:54<Frostregen>i don't get why they changed everything to enum's anyway
21:00|-|Digitalfox [] has quit [Quit: Bye]
21:05|-|Digitalfox [] has joined #openttd
21:09|-|smoovi [] has quit [Quit: #idlerpg]
21:17<Frostregen>in case you need to convert an int back to an enum: enumName(8) should do the trick
21:19<NukeBuster>ah thank you, but that wasn't needed to get the result :)
21:20<Frostregen>ok ;)
21:20<NukeBuster>i'm now at r9900
21:22<Smoovious>peter1138: ping
21:38|-|Digitalfox [] has quit [Quit: ChatZilla [Firefox]]
21:45<Sacro|Laptop>Smoovious: its 3:45 am
21:48<NukeBuster>4.45 here :P
22:03|-|Nigel [~nigel@] has joined #openttd
22:06|-|Nigel_ [~nigel@] has quit [Ping timeout: 480 seconds]
22:12<@Belugas>11:13h and i've got enough of fighting sleep... i surrender
22:19<NukeBuster>hmm... it's on #openttd.notice before i see my flyspray entry
22:19<NukeBuster>in my browser...
22:20|-|Cablekid [] has joined #openttd
22:20<Smoovious>IRC is more efficient... much less decoding and rendering involved
22:22<Cablekid>Just saying hi, I'm interested in your coop concept
22:23<Cablekid>It seems like a neat idea all the stuff you guys do in the server
22:33<_Ben_>any dev's around, or anybody who has a clue as to their intensions in respect to the 32bpp + zoom stuff?
22:33<NukeBuster>well i'm out... g'night
22:34|-|NukeBuster [] has left #openttd []
22:40|-|_Ben_ [~Ben@] has quit [Read error: Connection reset by peer]
22:42|-|Ammler [] has quit [Ping timeout: 480 seconds]
22:46|-|Cablekid [] has quit []
23:34|-|Frostregen_ [] has joined #openttd
23:39|-|Frostregen [] has quit [Ping timeout: 480 seconds]
23:40|-|Frostregen_ changed nick to Frostregen
---Logclosed Fri Jul 06 00:00:28 2007