IRC logs for #openttd on OFTC at 2013-12-16
            
00:18:18 *** Elukka has joined #openttd
00:26:28 *** djura-san has quit IRC
00:29:46 *** DarkAce-Z has joined #openttd
00:34:48 *** DarkAceZ has quit IRC
00:40:22 *** adf88 has quit IRC
01:05:20 *** Dark-Ace-Z has joined #openttd
01:07:26 *** krushia has joined #openttd
01:08:18 <krushia> are there any fun features in trunk that aren't in 1.3.3?
01:09:25 *** DarkAceZ has joined #openttd
01:11:08 *** DarkAce-Z has quit IRC
01:11:15 <Eddi|zuHause> yes
01:13:08 *** KenjiE20 has joined #openttd
01:14:26 *** Dark-Ace-Z has quit IRC
01:15:48 *** yorick has quit IRC
01:21:56 *** Myhorta has quit IRC
01:22:15 <krushia> Eddi|zuHause: like?
01:26:46 *** GriffinOneTwo has joined #openttd
01:30:22 *** LordAro has quit IRC
01:31:12 *** KritiK has quit IRC
01:51:22 *** roadt has joined #openttd
01:51:24 *** roadt_ has joined #openttd
01:53:36 *** glx has quit IRC
01:54:19 *** GriffinOneTwo has quit IRC
01:59:42 *** Djohaal has quit IRC
02:21:40 *** Japa_ has joined #openttd
02:28:20 *** Japa has quit IRC
02:34:15 *** HerzogDeXtEr has quit IRC
02:57:49 *** GriffinOneTwo has joined #openttd
03:47:45 *** Japa_ has quit IRC
03:48:12 *** Japa_ has joined #openttd
04:16:05 *** Hazzard has quit IRC
04:20:43 *** Japa__ has joined #openttd
04:26:57 *** Japa_ has quit IRC
05:11:37 *** lugo has quit IRC
05:14:31 *** lugo has joined #openttd
05:29:02 *** Super_Random has quit IRC
05:53:35 *** Pereba has quit IRC
05:56:01 *** Eddi|zuHause has quit IRC
05:56:16 *** Eddi|zuHause has joined #openttd
06:04:50 *** Japa__ has quit IRC
06:05:14 *** Japa__ has joined #openttd
06:24:25 *** Pecio has joined #openttd
06:29:01 *** GriffinOneTwo has quit IRC
06:35:20 *** roadt__ has joined #openttd
06:42:06 *** roadt_ has quit IRC
06:42:16 *** roadt has quit IRC
06:42:26 *** roadt has joined #openttd
07:01:54 *** Progman has joined #openttd
08:34:31 *** Gethiox3 has joined #openttd
08:40:15 *** Gethiox2 has quit IRC
08:42:01 *** Gethiox3 is now known as Gethiox
09:00:33 *** adf88 has joined #openttd
09:24:25 <George> Good morning.
09:24:49 <George> Can anyone tell me what tracker does devzone use?
09:27:17 <planetmaker> DevZone uses Redmine
09:27:24 <planetmaker> hello George :)
09:30:49 <Xaroth|Work> o/ planetmaker
09:30:54 <Xaroth|Work> did you get my spam from last night?
09:31:43 <planetmaker> hey Xaroth yeah, just reading back now. Sounds interesting speed gain
09:33:15 *** Pecio has left #openttd
09:36:32 <Xaroth|Work> pypy gives a really nice speed gain most of the time, it's just a pita to get working
09:37:09 <planetmaker> I never used it. What's the pitfalls?
09:37:28 <Xaroth|Work> er, basically it installs as if it's a different python version
09:37:56 <Xaroth|Work> but libraries with scripts (i.e. easy_install) aren't always aware
09:38:06 <Xaroth|Work> so they override your system's version to only use pypy
09:38:12 <Xaroth|Work> which is annoying if you want to run it side-by-side
09:39:10 <Xaroth|Work> ofcourse, that's mainly only setting-up issues
09:39:29 <Xaroth|Work> once the libraries are installed (and the scripts fixed to remain using python), you're fine
09:39:53 <planetmaker> I see.
09:40:07 <Xaroth|Work> you can then run nmlc's script through pypy, rather than through python (so instead of /usr/local/lib/nmlc <args> you run pypy /usr/local/lib/nmlc <args> )
09:40:22 <Xaroth|Work> there's only 1 pitfall
09:40:26 <planetmaker> sounds quite annoying but can be handled
09:40:27 <Xaroth|Work> that I can see at this point
09:40:48 <Xaroth|Work> binary output differs (but same in size) between pypy and python2.7
09:41:01 <Xaroth|Work> I -think- that's due to a tuple or dict being iterated upon
09:41:03 <planetmaker> that's easy enough done by providing NML=pypy /path/to/nmlc on Makefile command line
09:41:35 <Xaroth|Work> and those aren't fixed-order (where list and ordereddict are)
09:41:56 <planetmaker> Output being different... well.... yeah, might explain it. As long as the effective grf result ingame isn't different :)
09:42:13 <Xaroth|Work> well
09:42:15 <Xaroth|Work> the md5 differs
09:42:40 <Xaroth|Work> so firs compiled with python 2.7 will yield a different hash than firs compiled with pypy
09:43:40 <planetmaker> so does FIRS when compiled with nmlc version X vs. nmlc version Y
09:45:31 <Xaroth|Work> fair enough then
09:51:48 <Xaroth|Work> if you want me to do a few more timing runs, lemme know.
09:57:10 <planetmaker> thanks :)
09:59:23 *** Japa_ has joined #openttd
10:05:00 *** wakou2 has quit IRC
10:06:02 *** Japa__ has quit IRC
10:17:44 <peter1138> Eh, same nmlc version should give the same output.
10:24:02 *** andythenorth has joined #openttd
10:25:11 <planetmaker> you might read again, peter1138 ;)
10:27:15 *** Virtual-- has joined #openttd
10:29:04 *** Pecio has joined #openttd
10:30:02 <andythenorth> Xaroth|Work: presumably you can virtualenv pypy same as any other python version?
10:31:31 <Xaroth|Work> should work
10:31:43 <Xaroth|Work> I installed my version globally
10:31:46 *** DarkAceZ has quit IRC
10:31:46 *** Elukka has quit IRC
10:31:46 *** Osai has quit IRC
10:31:46 *** planetmaker has quit IRC
10:31:46 *** V453000 has quit IRC
10:31:46 *** Virtual- has quit IRC
10:31:56 <Xaroth|Work> was quite pleased with the speed increase
10:32:38 <andythenorth> I guess I should find a build of pypy :P
10:33:26 <andythenorth> hmm the python buildout can do it
10:33:53 *** waffle is now known as dotwaffle
10:34:22 <Xaroth|Work> if you're running ubuntu, there's a PPA for it
10:34:25 <Xaroth|Work> works like a charm
10:34:27 *** Osai has joined #openttd
10:34:30 <andythenorth> OS X
10:34:33 <Xaroth|Work> ah
10:34:41 <andythenorth> I'll figure it out later
10:34:50 <Xaroth|Work> you'll want 2.2.1 btw
10:34:57 *** V453000 has joined #openttd
10:34:57 *** planetmaker has joined #openttd
10:34:58 *** ChanServ sets mode: +o planetmaker
10:35:00 <Xaroth|Work> 1.8 series doesn't work well with Pillow
10:40:49 <peter1138> planetmaker, I read that different versions give different output (obviously fine) but that when the difference is python 2.7 vs pypy (no nmlc version difference specified) it differs also.
10:42:08 *** DarkAceZ has joined #openttd
10:44:42 <Xaroth|Work> peter1138: correct
10:44:56 <Xaroth|Work> pypy output != py2.7 output
10:56:17 <planetmaker> peter1138, yeah, but I'm not too concerned as indeed automatic ordering is done which can be done one way or another. Or real sprites aranged one way or another.
10:57:51 *** Myhorta has joined #openttd
11:01:13 <peter1138> different output from same version makes unittesting... well... pointless
11:02:42 *** valhallasw has joined #openttd
11:05:05 <planetmaker> you use a different compiler then effectively. So that's kinda expected, no?
11:05:30 <planetmaker> Different optimizations
11:06:02 <planetmaker> the interesting question will be whether the regression tests nml ships with - they need to work regardless
11:07:11 *** Alberth has joined #openttd
11:07:11 *** ChanServ sets mode: +o Alberth
11:07:20 <Alberth> moin
11:07:41 <planetmaker> hi :)
11:08:55 *** guru3 has joined #openttd
11:09:30 *** guru3_ has quit IRC
11:13:53 <Xaroth|Work> planetmaker: if you point me in the right direction I can have my compile box run those tests on pypy?
11:13:56 *** Alberth has quit IRC
11:14:40 <planetmaker> Xaroth, checkout nml. cd regressions. run make
11:14:50 <Xaroth|Work> rgr
11:14:52 *** Alberth has joined #openttd
11:14:52 *** magnet.oftc.net sets mode: +o Alberth
11:14:52 <planetmaker> or just run 'make regressions' might also work
11:14:53 *** ChanServ sets mode: +v Alberth
11:15:13 <planetmaker> make regression
11:15:19 <planetmaker> just in main nml dir
11:15:30 <Xaroth|Work> now to force pypy, hm
11:19:27 <Xaroth|Work> so far so good
11:20:31 <Xaroth|Work> all 30 tests done
11:20:37 <Xaroth|Work> no warnings/error/whatever
11:22:01 *** Twofish has joined #openttd
11:28:20 *** |2rB has joined #openttd
11:28:56 *** sla_ro|master has joined #openttd
11:32:26 *** Twofish has quit IRC
11:32:26 *** Alberth has quit IRC
11:38:33 *** Alberth has joined #openttd
11:38:33 *** magnet.oftc.net sets mode: +ov Alberth Alberth
11:59:25 <planetmaker> so that's good :)
11:59:38 <planetmaker> The crucial things are the same then :)
12:07:02 *** Devroush has joined #openttd
12:12:46 *** TheMask96 has quit IRC
12:18:19 *** TheMask96 has joined #openttd
12:43:42 *** MNIM has quit IRC
12:50:59 *** HerzogDeXtEr has joined #openttd
12:51:41 *** Myhorta has quit IRC
12:53:47 *** andythenorth has quit IRC
13:03:12 *** andythenorth has joined #openttd
13:19:47 *** GriffinOneTwo has joined #openttd
13:21:47 *** valhallasw has quit IRC
13:23:40 *** Virtual-- has quit IRC
13:24:02 *** Virtual-- has joined #openttd
13:31:47 *** Myhorta has joined #openttd
13:36:59 *** andythenorth has quit IRC
13:37:53 *** LordAro has joined #openttd
13:54:03 *** TheMask96 has quit IRC
13:54:12 *** Pecio has left #openttd
13:54:31 *** |2rB has quit IRC
13:58:37 *** TheMask96 has joined #openttd
14:08:53 *** valhallasw has joined #openttd
14:13:17 *** adf88 has quit IRC
14:19:50 *** Ristovski has joined #openttd
14:28:28 *** adf88 has joined #openttd
14:39:47 *** retro|cz has joined #openttd
14:41:35 *** oskari89 has joined #openttd
14:50:45 *** yorick has joined #openttd
15:53:10 *** DarkAce-Z has joined #openttd
15:58:10 *** DarkAceZ has quit IRC
16:09:11 *** DarkAce-Z is now known as DarkAceZ
16:13:09 *** roadt__ has quit IRC
16:17:52 *** yorick has quit IRC
16:19:50 *** yorick has joined #openttd
16:21:23 *** Belugas has quit IRC
16:23:06 *** TheMask96 has quit IRC
16:23:58 *** DarkAceZ has quit IRC
16:24:07 *** adf88 has quit IRC
16:27:38 *** TheMask96 has joined #openttd
16:53:38 *** DarkAceZ has joined #openttd
17:04:52 *** GriffinOneTwo has quit IRC
17:21:08 *** roadt has quit IRC
17:25:25 *** frosch123 has joined #openttd
17:30:31 *** Pereba has joined #openttd
17:58:23 *** tokai|noir has joined #openttd
17:58:23 *** ChanServ sets mode: +v tokai|noir
18:01:37 *** glx has joined #openttd
18:01:37 *** ChanServ sets mode: +v glx
18:04:33 *** tokai|mdlx has quit IRC
18:08:22 *** Arr`Gone is now known as Arrgh
18:10:06 *** Haube has joined #openttd
18:14:31 *** Neighbour has joined #openttd
18:15:47 <Neighbour> so I just compiled a dedicated server with the daylength patch and now i can't join it ("Could not load savegame" on client)..what's wrong?
18:16:08 <Neighbour> (server on debian, client on win7 x64)
18:16:25 <Eddi|zuHause> you must use the exact same patch on both client and server
18:16:41 <Neighbour> ah, that would explain it :)
18:16:42 <Eddi|zuHause> and the location of the config file must be writable
18:16:56 <Neighbour> the client is unpatched, so that must be it
18:17:58 <Eddi|zuHause> also you violated the versioning which clearly must state that the version has modifications
18:18:17 <Neighbour> ?
18:18:41 <Alberth> you return the wrong version number to the client
18:18:50 <Neighbour> yes, but nothing in the game told me that
18:18:52 <Alberth> or it would not even attempt to connect
18:19:00 <Neighbour> nothing in the debug log of the server either (-d 9)
18:19:05 <DorpsGek> Commit by frosch :: r26161 trunk/src/newgrf_storage.h (2013-12-16 18:18:58 UTC)
18:19:06 <DorpsGek> -Fix [FS#5830] (r22567) (r25956-ish): Backup data of altered persistent storage arrays was freed twice.
18:19:16 <Eddi|zuHause> your compile is wrong
18:19:44 <Neighbour> i just followed the readme...how could that be wrong?
18:20:03 <Alberth> I doubt the readme covers custom patching :)
18:20:21 <Neighbour> btw, the configure-script should also check for the presence of pkg-config before using it
18:21:00 <Neighbour> stuff failed in the configure script, it claimed because libraries were missing, but that wasn't the case (library presence is checked using pkg-config, which was actually missing)
18:21:37 <Alberth> if you compile from within a source checkout, the build will change the program name to state you're made changes to the source
18:22:11 <Neighbour> ah, that could be the difference...i didn't compile from a source checkout, just from the downloaded source .gz
18:22:24 *** gynter has left #openttd
18:25:43 <Neighbour> thanks :)
18:29:00 *** Arrgh has quit IRC
18:44:54 *** adf88 has joined #openttd
18:45:15 <DorpsGek> Commit by translators :: r26162 trunk/src/lang/thai.txt (2013-12-16 18:45:08 UTC)
18:45:16 <DorpsGek> -Update from WebTranslator v3.0:
18:45:17 <DorpsGek> thai - 1 changes by nirakanz
18:47:31 *** Pauli has joined #openttd
18:47:34 *** gelignite has joined #openttd
18:47:38 <Pauli> Servus
19:12:28 *** Belugas has joined #openttd
19:12:28 *** ChanServ sets mode: +o Belugas
19:16:38 *** andythenorth has joined #openttd
19:22:49 *** Wolf01 has joined #openttd
19:23:32 <Wolf01> hello o/
19:33:19 <andythenorth> lo Wolf01
19:45:52 <Xaroth|Work> andythenorth: got pypy working yet? :P
19:46:53 <andythenorth> nah
19:46:56 <andythenorth> didn't try yet
19:47:03 <andythenorth> too busy watching slow compiles
19:47:10 <andythenorth> where's that xkcd strip?
19:47:44 * Alberth is watching slow fish ships :)
19:48:07 <andythenorth> o_O
19:48:18 <andythenorth> there's a parameter for that :P
19:49:28 <Alberth> oh, it's even squid alpha 1 :)
19:49:44 <Alberth> but it's set to "ideal", cannot be better right? :)
19:49:55 <andythenorth> he he
19:50:07 <andythenorth> Alberth: at least try the latest version :(
19:50:14 <andythenorth> it will entirely break your savegame
19:50:26 <andythenorth> but what's a savegame loss between friends? :P
19:50:42 <Alberth> trying to connect firs industries, but there are too many, and too diverse cargoes :p
19:51:07 <andythenorth> Alberth: which economy?
19:51:40 <Alberth> firs economy
19:52:13 <Alberth> maybe have a simpler default?
19:53:41 <Alberth> time tabling of ships works nicely to get a regular service :)
19:54:21 <Alberth> also, you can use fishing grounds as nodes in the cdist network to distribute fish
19:54:51 <andythenorth> yes
19:54:59 <andythenorth> I am wondering about a simpler default FIRS
19:56:01 *** oskari89 has quit IRC
19:56:49 <Alberth> if you're considering playing with nuts, the PURR tracks are a bit tooo colourful
20:01:02 <andythenorth> Alberth: tried a FIRS basic economy ever? o_O
20:05:34 <Alberth> I think I did
20:06:00 <andythenorth> definitely more relaxing
20:06:18 <Alberth> the tropical one iirc
20:07:22 <andythenorth> afaict, about 24 cargos and 24 industries is the max sane amount for even a complex game
20:07:31 <andythenorth> and the basic ones are about 16 and 16
20:07:51 <Alberth> definitely, but these things just happen; it's hard to get all grfs and all parameters right for a game
20:08:23 <andythenorth> isn't it :)
20:08:44 <andythenorth> so hard for example, that I add grfs or change settings on every game I play :)
20:09:24 <andythenorth> sometimes I wonder about packaging grfs into packs
20:09:45 <andythenorth> thereby ensuring (for example) that vehicles are provided for the cargos in an industry grf
20:09:53 <Alberth> I was so happy I had added a tram grf, only to find it only carries pax :p
20:09:55 <andythenorth> and providing settings like 'harder' and 'easier'
20:10:18 <andythenorth> he he :)
20:10:33 <Alberth> thus making andy-style getting grain from farms impossible :)
20:10:42 <andythenorth> just add HEQS :P
20:10:50 <andythenorth> probably nothing goes wrong :P
20:11:05 <andythenorth> adding is usually safe
20:11:47 <Alberth> oh, either I live without it, or I start a new game :)
20:11:55 <Alberth> in this case, trucks worked too :)
20:12:36 <andythenorth> I wish I could think of a solution to this :)
20:12:40 <andythenorth> on the one hand choice is good
20:12:51 <andythenorth> on the other sane choices require knowledge and a good memory :P
20:13:22 <Alberth> you want some compose assistance
20:14:16 <Alberth> "you added non-standard cargoes, should I add foo grf as well?"
20:15:03 *** Pauli has quit IRC
20:15:11 <Alberth> [x] use trams for industrial cargoes
20:16:00 <Alberth> [x] always use newest grf
20:16:38 <Alberth> [ ] add scenery for harbours
20:16:59 <andythenorth> something like that
20:17:13 <andythenorth> or express dependencies or something
20:17:48 <andythenorth> I wondered if new scenario format could be used as packaging
20:18:03 <Alberth> you need some "provides" or "supports" dependencies
20:19:28 <Alberth> not in its current form, as it ties the setup to that scenario then
20:20:11 <Alberth> I am not even sure it has newgrf support, but if it has, it's probably not much more than a simple list
20:20:39 <andythenorth> is it a similar problem to ports trees?
20:20:56 <Alberth> ?
20:22:02 <Alberth> I have a similar problem with save games. I have a bunch of them at the disk, and the name indicates which ones belong together, and the game date, but it's impossible to find eg the one with firs basic economy
20:22:28 <Alberth> or what they were about
20:22:44 <Alberth> I always have to load one of them before I remember
20:23:22 <Alberth> saving a thumbnail in the game would be so useful here :p
20:24:00 <andythenorth> screenshot preview?
20:24:18 <Alberth> something like that
20:24:26 <andythenorth> I found a nice quote the other day, about the illusion of big features versus removing all the small limitations
20:24:31 <andythenorth> limitations / irritations
20:24:38 <andythenorth> can't find it now, but nvm
20:24:49 <andythenorth> pinning the window size is my favourite feature this year I think :)
20:24:51 <Alberth> I can imagine it :)
20:25:18 <andythenorth> big features just add more new places to be irritated :)
20:25:54 <Alberth> sure, but on the other hand, you cannot add eg cdist by doing small steps
20:26:11 <andythenorth> indeed
20:27:01 <Alberth> it seems you need big features to open up new areas
20:27:19 <andythenorth> agreed
20:27:27 <andythenorth> I think there's somehow a diminishing return on them somewhere
20:27:28 <Alberth> but I agree polishing the user experience is also worth a lot
20:28:45 <Alberth> perhaps integrating a big features in the other game play makes it increasingly harder to add new big features?
20:29:10 <andythenorth> I think so
20:29:25 <andythenorth> that's what I've found in other places
20:29:33 <andythenorth> more dimensions to consider
20:29:37 <Alberth> if you drop a new piece of functionality in the middle, everything has to shift itself into a new place
20:29:59 <Alberth> and re-think how they relate to the new feature and each other
20:30:06 <andythenorth> unless it's totally orthogonal
20:30:25 <andythenorth> anyway, we might have a new FIRS for christmas :)
20:30:43 <Alberth> imo it hardly ever is completely orthogonal
20:31:09 <Alberth> or it somewhat means you're adding a new feature not related to all existing features :)
20:31:15 <andythenorth> agree
20:31:31 <Alberth> :o new firs
20:31:46 <Alberth> what have you been cooking? :)
20:32:19 <andythenorth> new economy
20:32:27 <andythenorth> started in June
20:32:35 <andythenorth> had it 90% done by September
20:32:40 <andythenorth> been trying to find time to finish it :)
20:32:54 <Alberth> always a hard problem :)
20:33:29 <andythenorth> specially if you start a train set :P
20:34:16 <Alberth> I tend to extend eints in such cases :)
20:35:27 *** DanMacK has joined #openttd
20:35:51 <andythenorth> lo DabuYu
20:35:53 <andythenorth> oops
20:35:56 <andythenorth> lo DanMacK sorry :)
20:37:30 *** KritiK has joined #openttd
20:47:30 <DanMacK> lol, hey
21:12:16 *** DDR has quit IRC
21:13:14 *** DDR has joined #openttd
21:28:00 *** Haube has quit IRC
21:38:15 *** Alberth has left #openttd
21:42:45 *** sla_ro|master has quit IRC
21:49:43 <frosch123> night
21:49:46 *** frosch123 has quit IRC
22:13:52 * andythenorth bed
22:14:01 *** andythenorth has left #openttd
22:14:38 *** DanMacK has quit IRC
22:21:35 *** valhallasw has quit IRC
22:29:57 <Neighbour> is there a working daylength patch?
22:31:45 <Neighbour> because the daylength patch (01 and 02) from http://www.tt-forums.net/viewtopic.php?f=33&t=46399&start=0 gives an assertion failure with the current build
22:32:50 <Taede> don't think there are any working with current trunk revisions
22:34:32 <Taede> are you using the binaries from that thread, or are you compiling your own?
22:34:57 <Neighbour> compiling my own, since i want to run a dedicated server and have a few friends join the game
22:35:07 *** Super_Random has joined #openttd
22:36:02 <Taede> if you're dead set on daylenght, i'd advise using the trunk version reported in that same thread
22:36:14 *** Ristovski has quit IRC
22:36:51 <Taede> or find a patch-pack which may be based on a more recent version (though i think a lot of them are behind a significant bit as well)
22:37:23 <Neighbour> i was looking for a way to make a single game last weeks (real time)
22:37:23 *** gelignite has quit IRC
22:40:54 <Taede> best you can do with current trunk is to set min_clients to 1 (so the game is paused unless theres at least one player in a company), and maybe using vehicle sets that have a wider range of introduction dates
22:51:45 <Eddi|zuHause> Neighbour: i had a "hotfix" for the asserition somewhere
22:53:15 <Neighbour> Eddi|zuHause: sounds interesting...still have it? :)
22:57:32 <Eddi|zuHause> [Mittwoch, 1. Mai 2013] [20:42:32] <Eddi|zuHause> hm, this is totally awkward, but i just put "if (_date_daylength_factor == 0) _date_daylength_factor = 1;" into "MakeNewgameSettingsLive()" now
23:01:30 <Neighbour> Eddi|zuHause: which file is that? MakeNewgameSettingsLive() exists in 3 cpp files
23:01:57 *** Myhorta has quit IRC
23:01:58 <Neighbour> oh, nm...2 extern declarations
23:02:14 <Eddi|zuHause> there should only be one definition
23:04:07 *** Myhorta has joined #openttd
23:12:46 <Neighbour> Eddi|zuHause: yep, that works
23:40:45 *** Progman has quit IRC
23:45:02 *** Devroush has quit IRC
23:46:11 <Wolf01> 'night
23:46:15 *** Wolf01 has quit IRC
23:46:57 *** Lord_Aro has joined #openttd
23:53:28 <Neighbour> Taede: which setting is min_clients in the .cfg? and which section does it go in? (it's not there by default and the wiki doesn't say)
23:53:35 *** LordAro has quit IRC