From: E. A. H. M. <coz...@gm...> - 2008-02-29 03:46:53
|
Revision: 1605 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1605&view=rev Author: hikerstk Date: 2008-02-28 19:26:07 -0800 (Thu, 28 Feb 2008) Log Message: ----------- First part of directory restructuring: all track specific files are now in their own subdirectory (including models, textures). Modified Paths: -------------- trunk/supertuxkart/configure.ac trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/data/tracks/beach/beach.track trunk/supertuxkart/data/tracks/bsodcastle/bsodcastle.track trunk/supertuxkart/data/tracks/geekopeak/geekopeak.track trunk/supertuxkart/data/tracks/gownsbow/gownsbow.track trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track trunk/supertuxkart/data/tracks/lighthouse/lighthouse.track trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track trunk/supertuxkart/data/tracks/olivermath/olivermath.track trunk/supertuxkart/data/tracks/race/race.track trunk/supertuxkart/data/tracks/sandtrack/sandtrack.track trunk/supertuxkart/data/tracks/startrack/startrack.track trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track trunk/supertuxkart/data/tracks/volcano/volcano.track trunk/supertuxkart/src/collectable_manager.cpp trunk/supertuxkart/src/cup_data.cpp trunk/supertuxkart/src/game_manager.cpp trunk/supertuxkart/src/gui/credits_menu.cpp trunk/supertuxkart/src/gui/font.cpp trunk/supertuxkart/src/gui/grand_prix_select.cpp trunk/supertuxkart/src/gui/track_sel.cpp trunk/supertuxkart/src/herring_manager.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/loader.cpp trunk/supertuxkart/src/loader.hpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/material.cpp trunk/supertuxkart/src/material.hpp trunk/supertuxkart/src/material_manager.cpp trunk/supertuxkart/src/material_manager.hpp trunk/supertuxkart/src/music_ogg.cpp trunk/supertuxkart/src/sfx_openal.cpp trunk/supertuxkart/src/sound_manager.cpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track.hpp trunk/supertuxkart/src/translation.cpp Added Paths: ----------- trunk/supertuxkart/data/textures/ trunk/supertuxkart/data/textures/Gown_beak.rgb trunk/supertuxkart/data/textures/Gown_body.rgb trunk/supertuxkart/data/textures/Makefile.am trunk/supertuxkart/data/textures/Penguin_orig.rgb trunk/supertuxkart/data/textures/Tuxclouds.rgb trunk/supertuxkart/data/textures/aarmco.rgb trunk/supertuxkart/data/textures/adverts.rgb trunk/supertuxkart/data/textures/anvil.rgb trunk/supertuxkart/data/textures/backpack.rgb trunk/supertuxkart/data/textures/banana.rgb trunk/supertuxkart/data/textures/bananawrap.rgb trunk/supertuxkart/data/textures/bonusblock.rgb trunk/supertuxkart/data/textures/bow.rgb trunk/supertuxkart/data/textures/brick.rgb trunk/supertuxkart/data/textures/butterfly.rgb trunk/supertuxkart/data/textures/bzzt.rgb trunk/supertuxkart/data/textures/candy_stripe.rgb trunk/supertuxkart/data/textures/chess.rgb trunk/supertuxkart/data/textures/chrome.rgb trunk/supertuxkart/data/textures/chrome2.rgb trunk/supertuxkart/data/textures/concrete.rgb trunk/supertuxkart/data/textures/coniferous_tree.rgb trunk/supertuxkart/data/textures/dinoicon.rgb trunk/supertuxkart/data/textures/dinoshadow.rgb trunk/supertuxkart/data/textures/dirt.rgb trunk/supertuxkart/data/textures/dirtwall.rgb trunk/supertuxkart/data/textures/egypt.rgb trunk/supertuxkart/data/textures/embossed_herring.rgb trunk/supertuxkart/data/textures/eviltuxicon.rgb trunk/supertuxkart/data/textures/explode.rgb trunk/supertuxkart/data/textures/fence.rgb trunk/supertuxkart/data/textures/flames.rgb trunk/supertuxkart/data/textures/floor.rgb trunk/supertuxkart/data/textures/fuzzy.rgb trunk/supertuxkart/data/textures/fuzzy_sand.rgb trunk/supertuxkart/data/textures/grass.rgb trunk/supertuxkart/data/textures/herring.rgb trunk/supertuxkart/data/textures/herringbones.rgb trunk/supertuxkart/data/textures/herringwall.rgb trunk/supertuxkart/data/textures/hexley_eye.rgb trunk/supertuxkart/data/textures/hexley_kart_textura.rgb trunk/supertuxkart/data/textures/hexleyicon.rgb trunk/supertuxkart/data/textures/hexleyshadow.rgb trunk/supertuxkart/data/textures/homework.rgb trunk/supertuxkart/data/textures/homingmissile.rgb trunk/supertuxkart/data/textures/icecreamtruck.rgb trunk/supertuxkart/data/textures/lava.rgb trunk/supertuxkart/data/textures/lava2.rgb trunk/supertuxkart/data/textures/lighthouse.rgb trunk/supertuxkart/data/textures/lighthouse_sky.rgb trunk/supertuxkart/data/textures/lscales.rgb trunk/supertuxkart/data/textures/lunchbox.rgb trunk/supertuxkart/data/textures/lunchbox2.rgb trunk/supertuxkart/data/textures/magnet.rgb trunk/supertuxkart/data/textures/materials.dat trunk/supertuxkart/data/textures/mathclassceiling.rgb trunk/supertuxkart/data/textures/mathclasseast.rgb trunk/supertuxkart/data/textures/mathclassfloor.rgb trunk/supertuxkart/data/textures/mathclassnorth.rgb trunk/supertuxkart/data/textures/mathclasssouth.rgb trunk/supertuxkart/data/textures/mathclasswest.rgb trunk/supertuxkart/data/textures/metalgrid.rgb trunk/supertuxkart/data/textures/missile.rgb trunk/supertuxkart/data/textures/mriceblockicon.rgb trunk/supertuxkart/data/textures/mriceblockshadow.rgb trunk/supertuxkart/data/textures/nolokicon.rgb trunk/supertuxkart/data/textures/palm.rgb trunk/supertuxkart/data/textures/palmtree.rgb trunk/supertuxkart/data/textures/parachute.rgb trunk/supertuxkart/data/textures/pebbles.rgb trunk/supertuxkart/data/textures/pennyicon.rgb trunk/supertuxkart/data/textures/pennyshadow.rgb trunk/supertuxkart/data/textures/pyramidwall.rgb trunk/supertuxkart/data/textures/railing.rgb trunk/supertuxkart/data/textures/rainbow.rgb trunk/supertuxkart/data/textures/rainbow3.rgb trunk/supertuxkart/data/textures/redwhite.rgb trunk/supertuxkart/data/textures/roadway.rgb trunk/supertuxkart/data/textures/rock.rgb trunk/supertuxkart/data/textures/ruler.rgb trunk/supertuxkart/data/textures/sand.rgb trunk/supertuxkart/data/textures/sandgrass.rgb trunk/supertuxkart/data/textures/sea.rgb trunk/supertuxkart/data/textures/shine.rgb trunk/supertuxkart/data/textures/skirpyicon.rgb trunk/supertuxkart/data/textures/smoke.rgb trunk/supertuxkart/data/textures/spark.rgb trunk/supertuxkart/data/textures/speedback.rgb trunk/supertuxkart/data/textures/speedfore.rgb trunk/supertuxkart/data/textures/st_title_screen.rgb trunk/supertuxkart/data/textures/stonegrass.rgb trunk/supertuxkart/data/textures/stones.rgb trunk/supertuxkart/data/textures/stonetex.rgb trunk/supertuxkart/data/textures/stonewall.rgb trunk/supertuxkart/data/textures/sushiicon.rgb trunk/supertuxkart/data/textures/sushishadow.rgb trunk/supertuxkart/data/textures/tinytux.rgb trunk/supertuxkart/data/textures/track.rgb trunk/supertuxkart/data/textures/track2.rgb trunk/supertuxkart/data/textures/trackborder.rgb trunk/supertuxkart/data/textures/tux_body.rgb trunk/supertuxkart/data/textures/tuxicon.rgb trunk/supertuxkart/data/textures/tuxkart.rgb trunk/supertuxkart/data/textures/tuxkartshadow.rgb trunk/supertuxkart/data/textures/tv.rgb trunk/supertuxkart/data/textures/usaflag.rgb trunk/supertuxkart/data/textures/water.rgb trunk/supertuxkart/data/textures/water_light.rgb trunk/supertuxkart/data/textures/waterfall.rgb trunk/supertuxkart/data/textures/wheel.rgb trunk/supertuxkart/data/textures/wilber.rgb trunk/supertuxkart/data/textures/wilbericon.rgb trunk/supertuxkart/data/textures/wilbershadow.rgb trunk/supertuxkart/data/textures/window.rgb trunk/supertuxkart/data/textures/wood.rgb trunk/supertuxkart/data/textures/yetiicon.rgb trunk/supertuxkart/data/textures/yetishadow.rgb trunk/supertuxkart/data/textures/zipper.rgb trunk/supertuxkart/data/textures/zipper_collect.rgb trunk/supertuxkart/data/tracks/beach/beachtrack.ac trunk/supertuxkart/data/tracks/beach/sshot-beach.rgb trunk/supertuxkart/data/tracks/beach/topview-beach.rgb trunk/supertuxkart/data/tracks/bsodcastle/bsodcastle.ac trunk/supertuxkart/data/tracks/bsodcastle/sshot-bsodcastle.rgb trunk/supertuxkart/data/tracks/bsodcastle/topview-bsodcastle.rgb trunk/supertuxkart/data/tracks/geekopeak/geekopeak.ac trunk/supertuxkart/data/tracks/geekopeak/sshot-geekopeak.rgb trunk/supertuxkart/data/tracks/geekopeak/topview-geekopeak.rgb trunk/supertuxkart/data/tracks/gownsbow/gownsbow.ac trunk/supertuxkart/data/tracks/gownsbow/sshot-gownsbow.rgb trunk/supertuxkart/data/tracks/gownsbow/topview-gownsbow.rgb trunk/supertuxkart/data/tracks/islandtrack/grass2.rgb trunk/supertuxkart/data/tracks/islandtrack/islandtrack.ac trunk/supertuxkart/data/tracks/islandtrack/palmtree3.rgb trunk/supertuxkart/data/tracks/islandtrack/readme.txt trunk/supertuxkart/data/tracks/islandtrack/road_sand.rgb trunk/supertuxkart/data/tracks/islandtrack/road_sand_side.rgb trunk/supertuxkart/data/tracks/islandtrack/rock1.rgb trunk/supertuxkart/data/tracks/islandtrack/rock4.rgb trunk/supertuxkart/data/tracks/islandtrack/sand2.rgb trunk/supertuxkart/data/tracks/islandtrack/sky2.rgb trunk/supertuxkart/data/tracks/islandtrack/sshot-islandtrack.rgb trunk/supertuxkart/data/tracks/islandtrack/topview-islandtrack.rgb trunk/supertuxkart/data/tracks/islandtrack/water2.rgb trunk/supertuxkart/data/tracks/lighthouse/lighthousetrack.ac trunk/supertuxkart/data/tracks/lighthouse/sshot-lighthouse.rgb trunk/supertuxkart/data/tracks/lighthouse/topview-lighthouse.rgb trunk/supertuxkart/data/tracks/littlevolcano/littlevolcanotrack.ac trunk/supertuxkart/data/tracks/littlevolcano/sshot-littlevolcano.rgb trunk/supertuxkart/data/tracks/littlevolcano/topview-littlevolcano.rgb trunk/supertuxkart/data/tracks/olivermath/backpack.ac trunk/supertuxkart/data/tracks/olivermath/bananawrap.ac trunk/supertuxkart/data/tracks/olivermath/bookwall.ac trunk/supertuxkart/data/tracks/olivermath/desk.ac trunk/supertuxkart/data/tracks/olivermath/lego_bridge.ac trunk/supertuxkart/data/tracks/olivermath/lunchbox_wall.ac trunk/supertuxkart/data/tracks/olivermath/olivermath.ac trunk/supertuxkart/data/tracks/olivermath/paperairplane.ac trunk/supertuxkart/data/tracks/olivermath/pencil.ac trunk/supertuxkart/data/tracks/olivermath/ruler_bridge.ac trunk/supertuxkart/data/tracks/olivermath/ruler_jump.ac trunk/supertuxkart/data/tracks/olivermath/sshot-olivermath.rgb trunk/supertuxkart/data/tracks/olivermath/teachersdesk.ac trunk/supertuxkart/data/tracks/olivermath/topview-olivermath.rgb trunk/supertuxkart/data/tracks/race/racetrack.ac trunk/supertuxkart/data/tracks/race/sshot-race.rgb trunk/supertuxkart/data/tracks/race/topview-race.rgb trunk/supertuxkart/data/tracks/sandtrack/sandtrack.ac trunk/supertuxkart/data/tracks/sandtrack/sshot-sandtrack.rgb trunk/supertuxkart/data/tracks/sandtrack/topview-sandtrack.rgb trunk/supertuxkart/data/tracks/startrack/sshot-startrack.rgb trunk/supertuxkart/data/tracks/startrack/startrack.ac trunk/supertuxkart/data/tracks/startrack/topview-startrack.rgb trunk/supertuxkart/data/tracks/subseatrack/sshot-subseatrack.rgb trunk/supertuxkart/data/tracks/subseatrack/subseatrack.ac trunk/supertuxkart/data/tracks/subseatrack/topview-subseatrack.rgb trunk/supertuxkart/data/tracks/tuxtrack/icecreamtruck.ac trunk/supertuxkart/data/tracks/tuxtrack/multisign.ac trunk/supertuxkart/data/tracks/tuxtrack/roadblock.ac trunk/supertuxkart/data/tracks/tuxtrack/roadcone.ac trunk/supertuxkart/data/tracks/tuxtrack/sshot-tuxtrack.rgb trunk/supertuxkart/data/tracks/tuxtrack/susesign.ac trunk/supertuxkart/data/tracks/tuxtrack/topview-tuxtrack.rgb trunk/supertuxkart/data/tracks/tuxtrack/track1a.ac trunk/supertuxkart/data/tracks/tuxtrack/track1b.ac trunk/supertuxkart/data/tracks/tuxtrack/track1c.ac trunk/supertuxkart/data/tracks/tuxtrack/track1d.ac trunk/supertuxkart/data/tracks/tuxtrack/track1e.ac trunk/supertuxkart/data/tracks/tuxtrack/track1f.ac trunk/supertuxkart/data/tracks/tuxtrack/track1g.ac trunk/supertuxkart/data/tracks/tuxtrack/track1h.ac trunk/supertuxkart/data/tracks/tuxtrack/tuxsign.ac trunk/supertuxkart/data/tracks/tuxtrack/vasign.ac trunk/supertuxkart/data/tracks/volcano/sshot-volcano.rgb trunk/supertuxkart/data/tracks/volcano/topview-volcano.rgb trunk/supertuxkart/data/tracks/volcano/volcanotrack.ac Removed Paths: ------------- trunk/supertuxkart/data/materials.dat trunk/supertuxkart/images/ trunk/supertuxkart/models/backpack.ac trunk/supertuxkart/models/bananawrap.ac trunk/supertuxkart/models/beachtrack.ac trunk/supertuxkart/models/bookwall.ac trunk/supertuxkart/models/bsodcastle.ac trunk/supertuxkart/models/desk.ac trunk/supertuxkart/models/geekopeak.ac trunk/supertuxkart/models/gownsbow.ac trunk/supertuxkart/models/icecreamtruck.ac trunk/supertuxkart/models/islandtrack.ac trunk/supertuxkart/models/lego_bridge.ac trunk/supertuxkart/models/lighthousetrack.ac trunk/supertuxkart/models/littlevolcanotrack.ac trunk/supertuxkart/models/lunchbox_wall.ac trunk/supertuxkart/models/multisign.ac trunk/supertuxkart/models/olivermath.ac trunk/supertuxkart/models/paperairplane.ac trunk/supertuxkart/models/pencil.ac trunk/supertuxkart/models/racetrack.ac trunk/supertuxkart/models/roadblock.ac trunk/supertuxkart/models/roadcone.ac trunk/supertuxkart/models/ruler_bridge.ac trunk/supertuxkart/models/ruler_jump.ac trunk/supertuxkart/models/sandtrack.ac trunk/supertuxkart/models/startrack.ac trunk/supertuxkart/models/subseatrack.ac trunk/supertuxkart/models/susesign.ac trunk/supertuxkart/models/teachersdesk.ac trunk/supertuxkart/models/track1a.ac trunk/supertuxkart/models/track1b.ac trunk/supertuxkart/models/track1c.ac trunk/supertuxkart/models/track1d.ac trunk/supertuxkart/models/track1e.ac trunk/supertuxkart/models/track1f.ac trunk/supertuxkart/models/track1g.ac trunk/supertuxkart/models/track1h.ac trunk/supertuxkart/models/tuxsign.ac trunk/supertuxkart/models/vasign.ac trunk/supertuxkart/models/volcanotrack.ac [Details removed to lower message size] |
From: <hik...@us...> - 2008-03-01 03:18:55
|
Revision: 1610 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1610&view=rev Author: hikerstk Date: 2008-02-29 19:18:53 -0800 (Fri, 29 Feb 2008) Log Message: ----------- 1) Renamed loader to file_manager 2) Moved more track specific textures into corresponding track subdirectories. Modified Paths: -------------- trunk/supertuxkart/data/textures/materials.dat trunk/supertuxkart/src/attachment.cpp trunk/supertuxkart/src/attachment_manager.cpp trunk/supertuxkart/src/collectable_manager.cpp trunk/supertuxkart/src/cup_data.cpp trunk/supertuxkart/src/gui/char_sel.cpp trunk/supertuxkart/src/gui/credits_menu.cpp trunk/supertuxkart/src/gui/font.cpp trunk/supertuxkart/src/gui/grand_prix_ending.cpp trunk/supertuxkart/src/gui/grand_prix_select.cpp trunk/supertuxkart/src/herring_manager.cpp trunk/supertuxkart/src/highscore_manager.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties_manager.cpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/material.cpp trunk/supertuxkart/src/material_manager.cpp trunk/supertuxkart/src/music_ogg.cpp trunk/supertuxkart/src/projectile_manager.cpp trunk/supertuxkart/src/race_manager.cpp trunk/supertuxkart/src/sdldrv.cpp trunk/supertuxkart/src/sfx_openal.cpp trunk/supertuxkart/src/sound_manager.cpp trunk/supertuxkart/src/string_utils.cpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track_manager.cpp trunk/supertuxkart/src/user_config.cpp trunk/supertuxkart/src/world.cpp Added Paths: ----------- trunk/supertuxkart/data/tracks/olivermath/backpack.rgb trunk/supertuxkart/data/tracks/olivermath/homework.rgb trunk/supertuxkart/data/tracks/olivermath/lunchbox.rgb trunk/supertuxkart/data/tracks/olivermath/lunchbox2.rgb trunk/supertuxkart/data/tracks/olivermath/materials.dat trunk/supertuxkart/data/tracks/olivermath/mathclassceiling.rgb trunk/supertuxkart/data/tracks/olivermath/mathclasseast.rgb trunk/supertuxkart/data/tracks/olivermath/mathclassfloor.rgb trunk/supertuxkart/data/tracks/olivermath/mathclassnorth.rgb trunk/supertuxkart/data/tracks/olivermath/mathclasssouth.rgb trunk/supertuxkart/data/tracks/olivermath/mathclasswest.rgb trunk/supertuxkart/data/tracks/olivermath/ruler.rgb trunk/supertuxkart/data/tracks/olivermath/shine.rgb trunk/supertuxkart/data/tracks/olivermath/tv.rgb trunk/supertuxkart/data/tracks/olivermath/usaflag.rgb trunk/supertuxkart/data/tracks/tuxtrack/Penguin_orig.rgb trunk/supertuxkart/data/tracks/tuxtrack/adverts.rgb trunk/supertuxkart/data/tracks/tuxtrack/candy_stripe.rgb trunk/supertuxkart/data/tracks/tuxtrack/materials.dat trunk/supertuxkart/src/file_manager.cpp trunk/supertuxkart/src/file_manager.hpp Removed Paths: ------------- trunk/supertuxkart/data/textures/Penguin_orig.rgb trunk/supertuxkart/data/textures/adverts.rgb trunk/supertuxkart/data/textures/backpack.rgb trunk/supertuxkart/data/textures/candy_stripe.rgb trunk/supertuxkart/data/textures/homework.rgb trunk/supertuxkart/data/textures/lunchbox.rgb trunk/supertuxkart/data/textures/lunchbox2.rgb trunk/supertuxkart/data/textures/mathclassceiling.rgb trunk/supertuxkart/data/textures/mathclasseast.rgb trunk/supertuxkart/data/textures/mathclassfloor.rgb trunk/supertuxkart/data/textures/mathclassnorth.rgb trunk/supertuxkart/data/textures/mathclasssouth.rgb trunk/supertuxkart/data/textures/mathclasswest.rgb trunk/supertuxkart/data/textures/ruler.rgb trunk/supertuxkart/data/textures/shine.rgb trunk/supertuxkart/data/textures/tv.rgb trunk/supertuxkart/data/textures/usaflag.rgb trunk/supertuxkart/src/loader.cpp trunk/supertuxkart/src/loader.hpp Deleted: trunk/supertuxkart/data/textures/Penguin_orig.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/adverts.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/backpack.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/candy_stripe.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/homework.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/lunchbox.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/lunchbox2.rgb =================================================================== (Binary files differ) Modified: trunk/supertuxkart/data/textures/materials.dat =================================================================== --- trunk/supertuxkart/data/textures/materials.dat 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/data/textures/materials.dat 2008-03-01 03:18:53 UTC (rev 1610) @@ -111,7 +111,6 @@ "chrome.rgb" N N N 0.0 N Y 0.5 N N N N "chrome2.rgb" N N N 0.0 N Y 0.5 N N N N "railing.rgb" N Y Y 0.5 Y N 1.0 N N N N -"ruler.rgb" N N Y 0.2 Y N 1.0 N N N N "adverts.rgb" N N N 0.0 Y N 1.0 N N N Y "wood.rgb" N N N 0.0 Y N 1.0 N N N N "concrete.rgb" N N N 0.0 Y N 1.0 N N N Y @@ -134,7 +133,6 @@ "rainbow.rgb" N N Y 0.0 N N 1.0 N N N N "tinytux.rgb" Y Y Y 0.8 N N 1.0 Y N N N "butterfly.rgb" Y Y Y 0.8 N N 1.0 Y N N N -"Penguin_orig.rgb" N N N 0.0 Y N 1.0 N N N N "grass.rgb" N N N 0.0 Y N 0.7 N N N N "track2.rgb" N N N 0.0 Y N 1.0 N N N N "zipper_collect.rgb" N N N 0.0 N N 1.0 N Y N N Deleted: trunk/supertuxkart/data/textures/mathclassceiling.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/mathclasseast.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/mathclassfloor.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/mathclassnorth.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/mathclasssouth.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/mathclasswest.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/ruler.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/shine.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/tv.rgb =================================================================== (Binary files differ) Deleted: trunk/supertuxkart/data/textures/usaflag.rgb =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/backpack.rgb (from rev 1605, trunk/supertuxkart/data/textures/backpack.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/homework.rgb (from rev 1605, trunk/supertuxkart/data/textures/homework.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/lunchbox.rgb (from rev 1605, trunk/supertuxkart/data/textures/lunchbox.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/lunchbox2.rgb (from rev 1605, trunk/supertuxkart/data/textures/lunchbox2.rgb) =================================================================== (Binary files differ) Added: trunk/supertuxkart/data/tracks/olivermath/materials.dat =================================================================== --- trunk/supertuxkart/data/tracks/olivermath/materials.dat (rev 0) +++ trunk/supertuxkart/data/tracks/olivermath/materials.dat 2008-03-01 03:18:53 UTC (rev 1610) @@ -0,0 +1,5 @@ +# See textures/materials.dat for a detailed description of the fields. + +# TextureName Clamp Trans Alpha Light SphMp Frict Ign Zip Rst Col +"ruler.rgb" N N Y 0.2 Y N 1.0 N N N N +# EOF # Copied: trunk/supertuxkart/data/tracks/olivermath/mathclassceiling.rgb (from rev 1605, trunk/supertuxkart/data/textures/mathclassceiling.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/mathclasseast.rgb (from rev 1605, trunk/supertuxkart/data/textures/mathclasseast.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/mathclassfloor.rgb (from rev 1605, trunk/supertuxkart/data/textures/mathclassfloor.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/mathclassnorth.rgb (from rev 1605, trunk/supertuxkart/data/textures/mathclassnorth.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/mathclasssouth.rgb (from rev 1605, trunk/supertuxkart/data/textures/mathclasssouth.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/mathclasswest.rgb (from rev 1605, trunk/supertuxkart/data/textures/mathclasswest.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/ruler.rgb (from rev 1605, trunk/supertuxkart/data/textures/ruler.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/shine.rgb (from rev 1605, trunk/supertuxkart/data/textures/shine.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/tv.rgb (from rev 1605, trunk/supertuxkart/data/textures/tv.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/olivermath/usaflag.rgb (from rev 1605, trunk/supertuxkart/data/textures/usaflag.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/tuxtrack/Penguin_orig.rgb (from rev 1605, trunk/supertuxkart/data/textures/Penguin_orig.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/tuxtrack/adverts.rgb (from rev 1605, trunk/supertuxkart/data/textures/adverts.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/tracks/tuxtrack/candy_stripe.rgb (from rev 1605, trunk/supertuxkart/data/textures/candy_stripe.rgb) =================================================================== (Binary files differ) Added: trunk/supertuxkart/data/tracks/tuxtrack/materials.dat =================================================================== --- trunk/supertuxkart/data/tracks/tuxtrack/materials.dat (rev 0) +++ trunk/supertuxkart/data/tracks/tuxtrack/materials.dat 2008-03-01 03:18:53 UTC (rev 1610) @@ -0,0 +1,6 @@ +# See textures/materials.dat for a detailed description of the fields. + +# TextureName Clamp Trans Alpha Light SphMp Frict Ign Zip Rst Col +"Penguin_orig.rgb" N N N 0.0 Y N 1.0 N N N N +"adverts.rgb" N N N 0.0 Y N 1.0 N N N Y +# EOF # Modified: trunk/supertuxkart/src/attachment.cpp =================================================================== --- trunk/supertuxkart/src/attachment.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/attachment.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -24,7 +24,6 @@ #include "projectile_manager.hpp" #include "kart.hpp" #include "constants.hpp" -#include "loader.hpp" #include "world.hpp" #include "sound_manager.hpp" #include "stk_config.hpp" Modified: trunk/supertuxkart/src/attachment_manager.cpp =================================================================== --- trunk/supertuxkart/src/attachment_manager.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/attachment_manager.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -18,7 +18,7 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "attachment_manager.hpp" -#include "loader.hpp" +#include "file_manager.hpp" AttachmentManager *attachment_manager = 0; @@ -65,7 +65,7 @@ { for(int i=0; iat[i].attachment!=ATTACH_MAX; i++) { - m_attachments[iat[i].attachment]=loader->load(iat[i].file, CB_ATTACHMENT); + m_attachments[iat[i].attachment]=file_manager->load(iat[i].file, CB_ATTACHMENT); m_attachments[iat[i].attachment]->ref(); } // for } // reInit Modified: trunk/supertuxkart/src/collectable_manager.cpp =================================================================== --- trunk/supertuxkart/src/collectable_manager.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/collectable_manager.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -20,7 +20,7 @@ #include <iostream> #include <stdexcept> #include "collectable_manager.hpp" -#include "loader.hpp" +#include "file_manager.hpp" #include "material_manager.hpp" #include "material.hpp" #include "translation.hpp" @@ -89,7 +89,7 @@ lisp::Parser parser; std::string tmp= "data/" + (std::string)filename; - ROOT = parser.parse(loader->getConfigFile(filename)); + ROOT = parser.parse(file_manager->getConfigFile(filename)); const lisp::Lisp* lisp = ROOT->getLisp("tuxkart-collectable"); if(!lisp) @@ -124,7 +124,7 @@ if(sModel!="") { - ssgEntity* e = loader->load(sModel, CB_COLLECTABLE); + ssgEntity* e = file_manager->load(sModel, CB_COLLECTABLE); m_all_models[collectType] = e; e->ref(); e->clrTraversalMaskBits(SSGTRAV_ISECT|SSGTRAV_HOT); Modified: trunk/supertuxkart/src/cup_data.cpp =================================================================== --- trunk/supertuxkart/src/cup_data.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/cup_data.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -20,7 +20,7 @@ #include <iostream> #include <stdexcept> -#include "loader.hpp" +#include "file_manager.hpp" #include "lisp/parser.hpp" #include "lisp/lisp.hpp" #include "cup_data.hpp" @@ -32,7 +32,7 @@ try { lisp::Parser parser; - lisp = parser.parse(loader->getConfigFile(m_filename)); + lisp = parser.parse(file_manager->getConfigFile(m_filename)); lisp = lisp->getLisp("supertuxkart-cup"); if(!lisp) Copied: trunk/supertuxkart/src/file_manager.cpp (from rev 1605, trunk/supertuxkart/src/loader.cpp) =================================================================== --- trunk/supertuxkart/src/file_manager.cpp (rev 0) +++ trunk/supertuxkart/src/file_manager.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -0,0 +1,459 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2004 Steve Baker <sjb...@ai...> +// (C) 2008 Steve Baker, Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#include <stdexcept> +#include <sstream> +#include <sys/stat.h> +#include <string> +#ifdef WIN32 +# include <io.h> +# include <stdio.h> +# ifndef __CYGWIN__ +# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) + // Some portabilty defines +# define snprintf _snprintf +# define access _access +# define F_OK 04 +# endif +# define CONFIGDIR "." +#else +# define CONFIGDIR ".supertuxkart" +#endif +#include "plib/ul.h" +#include "file_manager.hpp" +#include "world.hpp" +#include "btBulletDynamicsCommon.h" +#include "moving_physics.hpp" +#include "moving_texture.hpp" +#include "translation.hpp" +#include "material_manager.hpp" +#include "string_utils.hpp" + +#ifdef __APPLE__ +// dynamic data path detection onmac +# include <CoreFoundation/CoreFoundation.h> + +bool macSetBundlePathIfRelevant(std::string& data_dir) +{ + printf("checking whether we are using an app bundle... "); + // the following code will enable STK to find its data when placed in an app bundle on mac OS X. + // returns true if path is set, returns false if path was not set + char path[1024]; + CFBundleRef main_bundle = CFBundleGetMainBundle(); assert(main_bundle); + CFURLRef main_bundle_URL = CFBundleCopyBundleURL(main_bundle); assert(main_bundle_URL); + CFStringRef cf_string_ref = CFURLCopyFileSystemPath( main_bundle_URL, kCFURLPOSIXPathStyle); assert(cf_string_ref); + CFStringGetCString(cf_string_ref, path, 1024, kCFStringEncodingASCII); + CFRelease(main_bundle_URL); + CFRelease(cf_string_ref); + + std::string contents = std::string(path) + std::string("/Contents"); + if(contents.find(".app") != std::string::npos) + { + printf("yes\n"); + // executable is inside an app bundle, use app bundle-relative paths + data_dir = contents + std::string("/Resources/data"); + return true; + } + else + { + printf("no\n"); + return false; + } +} +#endif + +FileManager* file_manager = 0; + +FileManager::FileManager() +{ + m_is_full_path = false; + + m_current_callback_type = CB_COLLECTABLE; + + if ( getenv ( "SUPERTUXKART_DATADIR" ) != NULL ) + m_root_dir= getenv ( "SUPERTUXKART_DATADIR" ) ; +#ifdef __APPLE__ + else if( macSetBundlePathIfRelevant( m_root_dir ) ) { /* nothing to do */ } +#endif + else if ( access ( "data/stk_config.data", F_OK ) == 0 ) + m_root_dir = "." ; + else if ( access ( "../data/stk_config.data", F_OK ) == 0 ) + m_root_dir = ".." ; + else +#ifdef SUPERTUXKART_DATADIR + m_root_dir = SUPERTUXKART_DATADIR ; +#else + m_root_dir = "/usr/local/share/games/supertuxkart" ; +#endif + fprintf(stderr, _("Data files will be fetched from: '%s'\n"), + m_root_dir.c_str() ); + + pushTextureSearchPath(m_root_dir+"/data/textures"); + pushModelSearchPath (m_root_dir+"/models" ); + pushMusicSearchPath (m_root_dir+"/ogg" ); +} // FileManager + +//----------------------------------------------------------------------------- +FileManager::~FileManager() +{ + popMusicSearchPath(); + popModelSearchPath(); + popTextureSearchPath(); +} // ~FileManager + +//----------------------------------------------------------------------------- +bool FileManager::findFile(std::string& full_path, + const std::string& fname, + const std::vector<std::string>& search_path) const +{ + struct stat mystat; + + for(std::vector<std::string>::const_iterator i = search_path.begin(); + i != search_path.end(); ++i) + { + //full_path=m_root_dir + "/" + *i + "/" + fname; + full_path = *i + "/" + fname; + if(stat(full_path.c_str(), &mystat) >= 0) return true; + } + full_path=""; + return false; +} // findFile + +//----------------------------------------------------------------------------- +void FileManager::makeModelPath(char* path, const char* FNAME) const +{ + if(m_is_full_path) + { + strcpy(path, FNAME); + return; + } + + std::string p; + if(findFile(p, FNAME, m_model_search_path)) + { + strcpy(path, p.c_str()); + return; + } +} // makeModelPath + +//----------------------------------------------------------------------------- +std::string FileManager::getTextureFile(const std::string& FNAME) const +{ + std::string path; + findFile(path, FNAME, m_texture_search_path); + return path; +} // makeTexturePath + +//----------------------------------------------------------------------------- +std::string FileManager::getModelFile(const std::string& FNAME) const +{ + std::string path; + findFile(path, FNAME, m_model_search_path); + return path; +} // makeTexturePath + +//----------------------------------------------------------------------------- +std::string FileManager::getKartFile(const std::string& fname) const +{ + return m_root_dir+"/data/"+fname; +} // getKartFile + +//----------------------------------------------------------------------------- +std::string FileManager::getTrackDir() const +{ + return m_root_dir+"/data/tracks"; +} // getTrackDir +//----------------------------------------------------------------------------- +std::string FileManager::getTrackFile(const std::string& fname, + const std::string& track_name) const +{ + // tracks file are in data/tracks/TRACKNAME/TRACKNAME.ext + // but if a track name is supplied use it (which is necessary + // e.g. to load a model from a track directory + std::string basename = (track_name!="") ? track_name + : StringUtils::without_extension(fname); + return getTrackDir()+"/"+basename+"/"+fname; +} // getTrackFile + +//----------------------------------------------------------------------------- +std::string FileManager::getConfigFile(const std::string& fname) const +{ + return m_root_dir+"/data/"+fname; +} // getConfigFile + +//----------------------------------------------------------------------------- +std::string FileManager::getHomeDir() const +{ + std::string DIRNAME; +#ifdef WIN32 + // For now the old windows config way is used: store a config file + // in the current directory (in other OS a special subdirectory is created) + DIRNAME="."; +#else + if(getenv("HOME")!=NULL) + { + DIRNAME = getenv("HOME"); + } + else + { + DIRNAME = "."; + } + DIRNAME += "/"; + DIRNAME += CONFIGDIR; +#endif + return DIRNAME; +} // getHomeDir + +//----------------------------------------------------------------------------- +std::string FileManager::getLogFile(const std::string& fname) const +{ + return getHomeDir()+"/"+fname; +} // getLogFile + +//----------------------------------------------------------------------------- +std::string FileManager::getMusicFile(const std::string& fname) const +{ + return m_root_dir+"/oggs/"+fname; +} // getMusicFile +//----------------------------------------------------------------------------- +std::string FileManager::getSFXFile(const std::string& fname) const +{ + return m_root_dir+"/wavs/"+fname; +} // getSFXFile +//----------------------------------------------------------------------------- +std::string FileManager::getFontFile(const std::string& fname) const +{ + return m_root_dir+"/fonts/"+fname; +} // getFontFile +//----------------------------------------------------------------------------- +std::string FileManager::getHighscoreFile(const std::string& fname) const +{ + return getHomeDir()+"/"+fname; +} // getHighscoreFile + +//----------------------------------------------------------------------------- +#ifdef HAVE_GHOST_REPLAY +std::string FileManager::getReplayFile(const std::string& fname) const +{ + return m_root_dir+"/replay/"+fname; +} // getReplayFile +#endif +//----------------------------------------------------------------------------- +void FileManager::initConfigDir() +{ +#ifdef WIN32 + /*nothing*/ +#else + /*if HOME environment variable exists + create directory $HOME/.supertuxkart*/ + if(getenv("HOME")!=NULL) + { + std::string pathname; + pathname = getenv("HOME"); + pathname += "/.supertuxkart"; + mkdir(pathname.c_str(), 0755); + } +#endif +} // initConfigDir + +//----------------------------------------------------------------------------- +void FileManager::listFiles(std::set<std::string>& result, const std::string& dir, + bool is_full_path) const +{ + struct stat mystat; + + // don't list directories with a slash on the end, it'll fail on win32 + assert(dir[dir.size()-1] != '/'); + + result.clear(); + + std::string path = is_full_path ? dir : m_root_dir+"/"+dir; + + if(stat(path.c_str(), &mystat) < 0) return; + if(! S_ISDIR(mystat.st_mode)) return; + + ulDir* mydir = ulOpenDir(path.c_str()); + if(!mydir) return; + + ulDirEnt* mydirent; + while( (mydirent = ulReadDir(mydir)) != 0) + { + result.insert(mydirent->d_name); + } + ulCloseDir(mydir); +} // listFiles + +//----------------------------------------------------------------------------- +/** Loads a .ac model + * + * Loads the .ac model 'filename'. Callbacks contained in this file + * are stored in the callback class t. If optimise is set to false, + * the file will not be flattened, which is necessary for the kart + * models - flattening them will remove the wheel nodes, withouth + * which the wheels do not rotate. + * + * \param filename File to load + * + * \param t Callback category for callbacks included in this + * file (see callback_manager.hpp) + * + * \param optimise Default is true. If set to false, the model will not + * be flattened. + */ +ssgEntity *FileManager::load(const std::string& filename, CallbackType t, + bool optimise, bool is_full_path) +{ + m_current_callback_type = t; + m_is_full_path = is_full_path; + ssgEntity *obj = optimise ? ssgLoad (filename.c_str(), this) + : ssgLoadAC(filename.c_str(), this); + preProcessObj(obj, false); + return obj; +} // load + +//----------------------------------------------------------------------------- +void FileManager::preProcessObj ( ssgEntity *n, bool mirror ) +{ + if ( n == NULL ) return ; + + n -> dirtyBSphere () ; + + if ( n -> isAKindOf ( ssgTypeLeaf() ) ) + { + if ( mirror ) + for ( int i = 0 ; i < ((ssgLeaf *)n) -> getNumVertices () ; i++ ) + ((ssgLeaf *)n) -> getVertex ( i ) [ 0 ] *= -1.0f ; + + material_manager->getMaterial ( (ssgLeaf *) n ) -> applyToLeaf ( (ssgLeaf *) n ) ; + return ; + } + + if ( mirror && n -> isAKindOf ( ssgTypeTransform () ) ) + { + sgMat4 xform ; + + ((ssgTransform *)n) -> getTransform ( xform ) ; + xform [ 0 ][ 0 ] *= -1.0f ; + xform [ 1 ][ 0 ] *= -1.0f ; + xform [ 2 ][ 0 ] *= -1.0f ; + xform [ 3 ][ 0 ] *= -1.0f ; + ((ssgTransform *)n) -> setTransform ( xform ) ; + } + + ssgBranch *b = (ssgBranch *) n ; + + for ( int i = 0 ; i < b -> getNumKids () ; i++ ) + preProcessObj ( b -> getKid ( i ), mirror ) ; +} + +//----------------------------------------------------------------------------- +ssgBranch *FileManager::animInit (char *data ) const +{ + while ( ! isdigit ( *data ) && *data != '\0' ) + data++ ; + + const int START_LIM = strtol(data, &data, 0 ); + const int END_LIM = strtol(data, &data, 0 ); + const float TIME_LIM = (float)strtod(data, &data ); + + while ( *data <= ' ' && *data != '\0' ) + data++ ; + + char mode = toupper ( *data ) ; + + ssgTimedSelector *br = new ssgTimedSelector; + + br->setLimits (START_LIM+1, END_LIM+1 ) ; + br->setDuration(TIME_LIM ) ; + br->setMode ((mode=='O') ? SSG_ANIM_ONESHOT + : (mode=='S') ? SSG_ANIM_SWING + : SSG_ANIM_SHUTTLE ) ; + br->control (SSG_ANIM_START ) ; + + return br; +} // animInit + + +//----------------------------------------------------------------------------- +/** Handle userdata that is stored in the model files. Mostly the userdata + * indicates that a special branch is to be created (e.g. a ssgCutout instead + * of the standard branch). But some userdata indicate that callbacks need + * to be created, which are then handled by the callback manager. + */ + +ssgBranch *FileManager::createBranch(char *data) const +{ + + if ( data == NULL || data[0] != '@' ) return NULL; + + data++ ; /* Skip the '@' */ + + if ( strncmp("billboard", data, strlen("billboard") ) == 0 ) + return new ssgCutout(); + + if ( strncmp("DONT_DELETE", data, strlen("DONT_DELETE") ) == 0 ) + { + printf("DONT\n"); + ssgBranch *br = new ssgTransform(); + br->setUserData(new ssgBase()); + return br; + } + + if ( strncmp("invisible", data, strlen("invisible") ) == 0 ) + return new ssgInvisible(); + + if ( strncmp ( "switch", data, strlen ( "switch" ) ) == 0 ) + { + ssgSelector *sel = new ssgSelector(); + sel->select(0); + return sel; + } + + if ( strncmp ( "animate", data, strlen ( "animate" ) ) == 0 ) + return animInit(data); + + + if ( strncmp ( "autodcs", data, strlen ( "autodcs" ) ) == 0 ) + { + ssgTransform *br = new ssgTransform(); + Callback *c = new MovingTexture(data, br); + br->setUserData(new ssgBase()); + callback_manager->addCallback(c, m_current_callback_type); + return br; + } + + if ( strncmp ( "autotex", data, strlen ( "autotex" ) ) == 0 ) + { + ssgTexTrans *br = new ssgTexTrans(); + Callback *c = new MovingTexture(data, br); + callback_manager->addCallback(c, m_current_callback_type); + return br; + } + if(strncmp("physics", data, strlen("physics")) == 0) + { + MovingPhysics *mp = new MovingPhysics(std::string(data)); + callback_manager->addCallback(mp, m_current_callback_type); + return mp; + } + fprintf(stderr, "Warning: Ignoring userdata '%s'\n", data); + return NULL ; +} // createBranch + Copied: trunk/supertuxkart/src/file_manager.hpp (from rev 1605, trunk/supertuxkart/src/loader.hpp) =================================================================== --- trunk/supertuxkart/src/file_manager.hpp (rev 0) +++ trunk/supertuxkart/src/file_manager.hpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -0,0 +1,92 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2004 Steve Baker <sjb...@ai...> +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_FILE_MANAGER_H +#define HEADER_FILE_MANAGER_H + +#include <plib/ssg.h> +#include <string> +#include <vector> +#include <set> +#include "callback_manager.hpp" + +class FileManager : public ssgLoaderOptions +{ +private: + bool m_is_full_path; + std::string m_root_dir; + std::vector<std::string> m_texture_search_path, + m_model_search_path, + m_music_search_path; + bool findFile (std::string& full_path, + const std::string& fname, + const std::vector<std::string>& search_path) const; +public: + FileManager(); + ~FileManager(); + + virtual void makeModelPath (char* path, const char* fname) const; + std::string getTextureFile (const std::string& fname) const; + std::string getKartFile (const std::string& fname) const; + std::string getTrackFile (const std::string& fname, + const std::string& track="") const; + std::string getConfigFile (const std::string& fname) const; + std::string getHighscoreFile(const std::string& fname) const; + std::string getLogFile (const std::string& fname) const; + std::string getMusicFile (const std::string& fname) const; + std::string getSFXFile (const std::string& fname) const; + std::string getFontFile (const std::string& fname) const; + std::string getModelFile (const std::string& fname) const; + std::string getHomeDir () const; + std::string getTrackDir () const; +#ifdef HAVE_GHOST_REPLAY + std::string getReplayFile(const std::string& fname) const; +#endif + + void listFiles(std::set<std::string>& result, const std::string& dir, + bool is_full_path=false) + const; + + void pushTextureSearchPath(const std::string& path) + { m_texture_search_path.push_back(path);} + void pushModelSearchPath (const std::string& path) + { m_model_search_path.push_back(path); } + void pushMusicSearchPath (const std::string& path) + { m_music_search_path.push_back(path); } + void popTextureSearchPath () {m_texture_search_path.pop_back(); } + void popModelSearchPath () {m_model_search_path.pop_back(); } + void popMusicSearchPath () {m_music_search_path.pop_back(); } + void initConfigDir(); + ssgEntity *load(const std::string& filename, CallbackType t, bool optimise=true, + bool is_full_path=false); + void setCallbackType(CallbackType t) {m_current_callback_type=t;} +private: + CallbackType m_current_callback_type; + + void makePath (std::string& path, const std::string& dir, + const std::string& fname) const; + ssgBranch *createBranch (char *data) const; + void preProcessObj( ssgEntity *n, bool mirror ); + ssgBranch *animInit (char *data) const; +}; + +extern FileManager* file_manager; + +#endif + Modified: trunk/supertuxkart/src/gui/char_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/char_sel.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/gui/char_sel.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -20,7 +20,6 @@ #include <sstream> #include <string> -#include "loader.hpp" #include "char_sel.hpp" #include "kart_properties_manager.hpp" #include "widget_manager.hpp" Modified: trunk/supertuxkart/src/gui/credits_menu.cpp =================================================================== --- trunk/supertuxkart/src/gui/credits_menu.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/gui/credits_menu.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -21,7 +21,7 @@ #include <iostream> #include "credits_menu.hpp" -#include "loader.hpp" +#include "file_manager.hpp" #include "translation.hpp" #include "widget_manager.hpp" #include "menu_manager.hpp" @@ -42,7 +42,7 @@ std::string line; std::string credits_text; - filename = loader->getConfigFile("CREDITS"); + filename = file_manager->getConfigFile("CREDITS"); std::ifstream file(filename.c_str()); if( file.is_open() ) Modified: trunk/supertuxkart/src/gui/font.cpp =================================================================== --- trunk/supertuxkart/src/gui/font.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/gui/font.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -17,7 +17,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#include "loader.hpp" +#include "file_manager.hpp" #include "user_config.hpp" #include "gui/font.hpp" @@ -42,7 +42,7 @@ // ============================================================================= Font::Font(const char *fontname) { - m_fnt = new fntTexFont(loader->getFontFile(fontname).c_str(), + m_fnt = new fntTexFont(file_manager->getFontFile(fontname).c_str(), GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR); m_text_out = new fntRenderer(); m_text_out->setFont(m_fnt); Modified: trunk/supertuxkart/src/gui/grand_prix_ending.cpp =================================================================== --- trunk/supertuxkart/src/gui/grand_prix_ending.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/gui/grand_prix_ending.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -22,7 +22,7 @@ #include <SDL/SDL.h> -#include "loader.hpp" +#include "file_manager.hpp" #include "sound_manager.hpp" #include "grand_prix_ending.hpp" #include "kart_properties_manager.hpp" @@ -177,7 +177,7 @@ //going white after finishing the grandprix // FIXME: I think this is not necessary anymore after the // texture bug fix (r733) - but I can't currently test this. - loader->shared_textures.removeAll(); + file_manager->shared_textures.removeAll(); } //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/gui/grand_prix_select.cpp =================================================================== --- trunk/supertuxkart/src/gui/grand_prix_select.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/gui/grand_prix_select.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -18,7 +18,7 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include <set> -#include "loader.hpp" +#include "file_manager.hpp" #include "string_utils.hpp" #include "grand_prix_select.hpp" #include "widget_manager.hpp" @@ -54,7 +54,7 @@ widget_manager->setWgtText(WTOK_TITLE, _("Choose a Grand Prix")); std::set<std::string> result; - loader->listFiles(result, "data"); + file_manager->listFiles(result, "data"); widget_manager->setInitialActivationState(true); // Findout which grand prixs are available and load them Modified: trunk/supertuxkart/src/herring_manager.cpp =================================================================== --- trunk/supertuxkart/src/herring_manager.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/herring_manager.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -22,7 +22,7 @@ #include <sstream> #include "user_config.hpp" #include "herring_manager.hpp" -#include "loader.hpp" +#include "file_manager.hpp" #include "material_manager.hpp" #include "material.hpp" #include "kart.hpp" @@ -116,19 +116,19 @@ //----------------------------------------------------------------------------- void HerringManager::loadDefaultHerrings() { - // Load all models. This can't be done in the constructor, since the loader + // Load all models. This can't be done in the constructor, since the file_manager // isn't ready at that stage. // Load all models from the models/herrings directory // -------------------------------------------------- std::set<std::string> files; - loader->listFiles(files, "models/herrings"); + file_manager->listFiles(files, "models/herrings"); for(std::set<std::string>::iterator i = files.begin(); i != files.end(); ++i) { if(!StringUtils::has_suffix(*i, ".ac")) continue; std::string fullName = "herrings/"+(*i); - ssgEntity* h = loader->load(fullName, CB_HERRING); + ssgEntity* h = file_manager->load(fullName, CB_HERRING); std::string shortName = StringUtils::without_extension(*i); h->ref(); h->setName(shortName.c_str()); @@ -333,7 +333,7 @@ const lisp::Lisp* root = 0; lisp::Parser parser; - root = parser.parse(loader->getConfigFile(filename + ".herring")); + root = parser.parse(file_manager->getConfigFile(filename + ".herring")); const lisp::Lisp* herring_node = root->getLisp("herring"); if(!herring_node) Modified: trunk/supertuxkart/src/highscore_manager.cpp =================================================================== --- trunk/supertuxkart/src/highscore_manager.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/highscore_manager.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -23,7 +23,7 @@ #include "lisp/writer.hpp" #include "translation.hpp" #include "string_utils.hpp" -#include "loader.hpp" +#include "file_manager.hpp" #include "race_setup.hpp" #include "user_config.hpp" #if defined(WIN32) && !defined(__CYGWIN__) @@ -59,7 +59,7 @@ } else { - m_filename=loader->getHighscoreFile("highscore.data"); + m_filename=file_manager->getHighscoreFile("highscore.data"); } return; Modified: trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-03-01 03:18:53 UTC (rev 1610) @@ -703,6 +703,10 @@ > </File> <File + RelativePath="..\..\file_manager.cpp" + > + </File> + <File RelativePath="..\..\flyable.cpp" > </File> @@ -751,10 +755,6 @@ > </File> <File - RelativePath="../../../src\loader.cpp" - > - </File> - <File RelativePath="../../../src\main.cpp" > </File> @@ -1097,6 +1097,10 @@ > </File> <File + RelativePath="..\..\file_manager.hpp" + > + </File> + <File RelativePath="..\..\flyable.hpp" > </File> @@ -1157,10 +1161,6 @@ > </File> <File - RelativePath="../../../src\loader.hpp" - > - </File> - <File RelativePath="../../../src\material.hpp" > </File> Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/kart.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -23,7 +23,7 @@ #include "herring_manager.hpp" #include "sound_manager.hpp" -#include "loader.hpp" +#include "file_manager.hpp" #include "skid_mark.hpp" #include "user_config.hpp" #include "constants.hpp" @@ -1104,7 +1104,7 @@ float r [ 2 ] = { -10.0f, 100.0f } ; m_smokepuff = new ssgSimpleState (); - m_smokepuff -> setTexture (loader->createTexture ("smoke.rgb", true, true, true)) ; + m_smokepuff -> setTexture (file_manager->createTexture ("smoke.rgb", true, true, true)) ; m_smokepuff -> setTranslucent () ; m_smokepuff -> enable ( GL_TEXTURE_2D ) ; m_smokepuff -> setShadeModel ( GL_SMOOTH ) ; Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -23,7 +23,7 @@ #include "material_manager.hpp" #include "lisp/parser.hpp" #include "lisp/lisp.hpp" -#include "loader.hpp" +#include "file_manager.hpp" #include "string_utils.hpp" #include "kart_properties.hpp" #include "stk_config.hpp" @@ -83,7 +83,7 @@ // Load model, except when called as part of --list-karts if(m_model_file.length()>0 && !dont_load_models) { - m_model = loader->load(m_model_file, CB_KART, false); + m_model = file_manager->load(m_model_file, CB_KART, false); ssgStripify(m_model); float x_min, x_max, y_min, y_max, z_min, z_max; MinMax(m_model, &x_min, &x_max, &y_min, &y_max, &z_min, &z_max); Modified: trunk/supertuxkart/src/kart_properties_manager.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties_manager.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/kart_properties_manager.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -20,7 +20,7 @@ #include <stdexcept> #include <algorithm> #include <ctime> -#include "loader.hpp" +#include "file_manager.hpp" #include "string_utils.hpp" #include "kart_properties_manager.hpp" #include "kart_properties.hpp" @@ -59,7 +59,7 @@ { m_max_steer_angle = -1.0f; std::set<std::string> result; - loader->listFiles(result, "data"); + file_manager->listFiles(result, "data"); // Find out which characters are available and load them for(std::set<std::string>::iterator i = result.begin(); @@ -68,7 +68,7 @@ if (StringUtils::has_suffix(*i, ".tkkf")) { KartProperties* kp = new KartProperties(); - std::string filename=loader->getKartFile(*i); + std::string filename=file_manager->getKartFile(*i); kp->load(filename.c_str(), "tuxkart-kart", dont_load_models); m_karts_properties.push_back(kp); if(kp->getMaxSteerAngle() > m_max_steer_angle) Deleted: trunk/supertuxkart/src/loader.cpp =================================================================== --- trunk/supertuxkart/src/loader.cpp 2008-02-29 23:39:38 UTC (rev 1609) +++ trunk/supertuxkart/src/loader.cpp 2008-03-01 03:18:53 UTC (rev 1610) @@ -1,459 +0,0 @@ -// $Id$ -// -// SuperTuxKart - a fun racing game with go-kart -// Copyright (C) 2004 Steve Baker <sjb...@ai...> -// (C) 2008 Steve Baker, Joerg Henrichs -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - -#include <stdexcept> -#include <sstream> -#include <sys/stat.h> -#include <string> -#ifdef WIN32 -# include <io.h> -# include <stdio.h> -# ifndef __CYGWIN__ -# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) - // Some portabilty defines -# define snprintf _snprintf -# define access _access -# define F_OK 04 -# endif -# define CONFIGDIR "." -#else -# define CONFIGDIR ".supertuxkart" -#endif -#include "plib/ul.h" -#include "loader.hpp" -#include "world.hpp" -#include "btBulletDynamicsCommon.h" -#include "moving_physics.hpp" -#include "moving_texture.hpp" -#include "translation.hpp" -#include "material_manager.hpp" -#include "string_utils.hpp" - -#ifdef __APPLE__ -// dynamic data path detection onmac -# include <CoreFoundation/CoreFoundation.h> - -bool macSetBundlePathIfRelevant(std::string& data_dir) -{ - printf("checking whether we are using an app bundle... "); - // the following code will enable STK to find its data when placed in an app bundle on mac OS X. - // returns true if path is set, returns false if path was not set - char path[1024]; - CFBundleRef main_bundle = CFBundleGetMainBundle(); assert(main_bundle); - CFURLRef main_bundle_URL = CFBundleCopyBundleURL(main_bundle); assert(main_bundle_URL); - CFStringRef cf_string_ref = CFURLCopyFileSystemPath( main_bundle_URL, kCFURLPOSIXPathStyle); assert(cf_string_ref); - CFStringGetCString(cf_string_ref, path, 1024, kCFStringEncodingASCII); - CFRelease(main_bundle_URL); - CFRelease(cf_string_ref); - - std::string contents = std::string(path) + std::string("/Contents"); - if(contents.find(".app") != std::string::npos) - { - printf("yes\n"); - // executable is inside an app bundle, use app bundle-relative paths - data_dir = contents + std::string("/Resources/data"); - return true; - } - else - { - printf("no\n"); - return false; - } -} -#endif - -Loader* loader = 0; - -Loader::Loader() -{ - m_is_full_path = false; - - m_current_callback_type = CB_COLLECTABLE; - - if ( getenv ( "SUPERTUXKART_DATADIR" ) != NULL ) - m_root_dir= getenv ( "SUPERTUXKART_DATADIR" ) ; -#ifdef __APPLE__ - else if( macSetBundlePathIfRelevant( m_root_dir ) ) { /* nothing to do */ } -#endif - else if ( access ( "data/stk_config.data", F_OK ) == 0 ) - m_root_dir = "." ; - else if ( access ( "../data/stk_config.data", F_OK ) == 0 ) - m_root_dir = ".." ; - else -#ifdef SUPERTUXKART_DATADIR - m_root_dir = SUPERTUXKART_DATADIR ; -#else - m_root_dir = "/usr/local/share/games/supertuxkart" ; -#endif - fprintf(stderr, _("Data files will be fetched from: '%s'\n"), - m_root_dir.c_str() ); - - pushTextureSearchPath(m_root_dir+"/data/textures"); - pushModelSearchPath (m_root_dir+"/models" ); - pushMusicSearchPath (m_root_dir+"/ogg" ); -} // Loader - -//----------------------------------------------------------------------------- -Loader::~Loader() -{ - popMusicSearchPath(); - popModelSearchPath(); - popTextureSearchPath(); -} // ~Loader - -//----------------------------------------------------------------------------- -bool Loader::findFile(std::string& full_path, - const std::string& fname, - const std::vector<std::string>& search_path) const -{ - struct stat mystat; - - for(std::vector<std::string>::const_iterator i = search_path.begin(); - i != search_path.end(); ++i) - { - //full_path=m_root_dir + "/" + *i + "/" + fname; - full_path = *i + "/" + fname; - if(stat(full_path.c_str(), &mystat) >= 0) return true; - } - full_path=""; - return false; -} // findFile - -//----------------------------------------------------------------------------- -void Loader::makeModelPath(char* path, const char* FNAME) const -{ - if(m_is_full_path) - { - strcpy(path, FNAME); - return; - } - - std::string p; - if(findFile(p, FNAME, m_model_search_path)) - { - strcpy(path, p.c_str()); - return; - } -} // makeModelPath - -//----------------------------------------------------------------------------- -std::string Loader::getTextureFile(const std::string& FNAME) const -{ - std::string path; - findFile(path, FNAME, m_texture_search_path); - return path; -} // makeTexturePath - -//----------------------------------------------------------------------------- -std::string Loader::getModelFile(const std::string& FNAME) const -{ - std::string path; - findFile(path, FNAME, m_model_search_path); - return path; -} // makeTexturePath - -//----------------------------------------------------------------------------- -std::string Loader::getKartFile(const std::string& fname) const -{ - return m_root_dir+"/data/"+fname; -} // getKartFile - -//----------------------------------------------------------------------------- -std::string Loader::getTrackDir() const -{ - return m_root_dir+"/data/tracks"; -} // getTrackDir -//----------------------------------------------------------------------------- -std::string Loader::getTrackFile(const std::string& fname, - const std::string& track_name) const -{ - // tracks file are in data/tracks/TRACKNAME/TRACKNAME.ext - // but if a track name is supplied use it (which is necessary - // e.g. to load a model from a track directory - std::string basename = (track_name!="") ? track_name - : StringUtils::without_extension(fname); - return getTrackDir()+"/"+basename+"/"+fname; -} // getTrackFile - -//----------------------------------------------------------------------------- -std::string Loader::getConfigFile(const std::string& fname) const -{ - return m_root_dir+"/data/"+fname; -} // getConfigFile - -//----------------------------------------------------------------------------- -std::string Loader::getHomeDir() const -{ - std::string DIRNAME; -#ifdef WIN32 - // For now the old windows config way is used: store a config file - // in the current directory (in other OS a special subdirectory is created) - DIRNAME="."; -#else - if(getenv("HOME")!=NULL) - { - DIRNAME = getenv("HOME"); - } - else - { - DIRNAME = "."; - } - DIRNAME += "/"; - DIRNAME += CONFIGDIR; -#endif - return DIRNAME; -} // getHomeDir - -//----------------------------------------------------------------------------- -std::string Loader::getLogFile(const std::string& fname) const -{ - return getHomeDir()+"/"+fname; -} // getLogFile - -//----------------------------------------------------------------------------- -std::string Loader::getMusicFile(const std::string& fname) const -{ - return m_root_dir+"/oggs/"+fname; -} // getMusicFile -//----------------------------------------------------------------------------- -std::string Loader::getSFXFile(const std::string& fname) const -{ - return m_root_dir+"/wavs/"+fname; -} // getSFXFile -//----------------------------------------------------------------------------- -std::string Loader::getFontFile(const std::string& fname) const -{ - return m_root_dir+"/fonts/"+fname; -} // getFontFile -//----------------------------------------------------------------------------- -std::string Loader::getHighscoreFile(const std::string& fname) const -{ - return getHomeDir()+"/"+fname; -} // getHighscoreFile - -//----------------------------------------------------------------------------- -#ifdef HAVE_GHOST_REPLAY -std::string Loader::getReplayFile(const std::string& fname) const -{ - return m_root_dir+"/replay/"+fname; -} // getReplayFile -#endif -//----------------------------------------------------------------------------- -void Loader::initConfigDir() -{ -#ifdef WIN32 - /*nothing*/ -#else - /*if HOME environment variable exists - create directory $HOME/.supertuxkart*/ - if(getenv("HOME")!=NULL) - { - std::string pathname; - pathname = getenv("HOME"); - pathname += "/.supertuxkart"; - mkdir(pathname.c_str(), 0755); - } -#endif -} // initConfigDir - -//----------------------------------------------------------------------------- -void Loader::listFiles(std::set<std::string>& result, const std::string& dir, - bool is_full_path) const -{ - struct stat mystat; - - // don't list directories with a slash on the end, it'll fail on win32 - assert(dir[dir.size()-1] != '/'); - - result.clear(); - - std::string path = is_full_path ? dir : m_root_dir+"/"+dir; - - if(stat(path.c_str(), &mystat) < 0) return; - if(! S_ISDIR(mystat.st_mode)) return; - - ulDir* mydir = ulOpenDir(path.c_str()); - if(!mydir) return; - - ulDirEnt* mydirent; - while( (mydirent = ulReadDir(mydir)) != 0) - { - result.insert(mydirent->d_name); - } - ulCloseDir(mydir); -} // listFiles - -//----------------------------------------------------------------------------- -/** Loads a .ac model - * - * Loads the .ac model 'filename'. Callbacks contained in this file - * are stored in the callback class t. If optimise is set to false, - * the file will not be flattened, which is necessary for the kart - * models - flattening them will remove the wheel nodes, withouth - * which the wheels do not rotate. - * - * \param filename File to load - * - * \param t Callback category for callbacks included in this - * file (see callback_manager.hpp) - * - * \param optimise Default is true. If set to false, the model will not - * be flattened. - */ -ssgEntity *Loader::load(const std::string& filename, CallbackType t, - bool optimise, bool is_full_path) -{ - m_current_callback_type = t; - m_is_full_path = is_full_path; - ssgEntity *obj = optimise ? ssgLoad (filename.c_str(), this) - : ssgLoadAC(filename.c_str(), this); - preProcessObj(obj, false); - return obj; -} // load - -//----------------------------------------------------------------------------- -void Loader::preProcessObj ( ssgEntity *n, bool mirror ) -{ - if ( n == NULL ) return ; - - n -> dirtyBSphere () ; - - if ( n -> isAKindOf ( ssgTypeLeaf() ) ) - { - if ( mirror ) - for ( int i = 0 ; i < ((ssgLeaf *)n) -> getNumVertices () ; i++ ) - ((ssgLeaf *)n) -> getVertex ( i ) [ 0 ] *= -1.0f ; - - material_manager->getMaterial ( (ssgLeaf *) n ) -> applyToLeaf ( (ssgLeaf *) n ) ; - return ; - } - - if ( mirror && n -> isAKindOf ( ssgTypeTransform () ) ) - { - sgMat4 xform ; - - ((ssgTransform *)n) -> getTransform ( xform ) ; - xform [ 0 ][ 0 ] *= -1.0f ; - xform [ 1 ][ 0 ] *= -1.0f ; - xform [ 2 ][ 0 ] *= -1.0f ; - xform [ 3 ][ 0 ] *= -1.0f ; - ((ssgTransform *)n) -> setTransform ( xform ) ; - } - - ssgBranch *b = (ssgBranch *) n ; - - for ( int i = 0 ; i < b -> getNumKids () ; i++ ) - preProcessObj ( b -> getKid ( i ), mirror ) ; -} - -//----------------------------------------------------------------------------- -ssgBranch *Loader::animInit (char *data ) const -{ - while ( ! isdigit ( *data ) && *data != '\0' ) - data++ ; - - const int START_LIM = strtol(data, &data, 0 ); - const int END_LIM = strtol(data, &data, 0 ); - const float TIME_LIM = (float)strtod(data, &data ); - - while ( *data <= ' ' && *data != '\0' ) - data++ ; - - char mode = toupper ( *data ) ; - - ssgTimedSelector *br = new ssgTimedSelector; - - br->setLimits (START_LIM+1, END_LIM+1 ) ; - br->setDuration(TIME_LIM ) ; - br->setMode ((mode=='O') ? SSG_ANIM_ONESHOT - : (mode=='S') ? SSG_ANIM_SWING - : SSG_ANIM_SHUTTLE ) ; - br->control (SSG_ANIM_START ) ; - - return br; -} // animInit - - -//----------------------------------------------------------------------------- -/** Handle userdata that is stored in the model files. Mo... [truncated message content] |
From: <hik...@us...> - 2008-03-03 03:31:17
|
Revision: 1619 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1619&view=rev Author: hikerstk Date: 2008-03-02 19:31:12 -0800 (Sun, 02 Mar 2008) Log Message: ----------- 1) Split file_manager into file handling functions (in file_manager), and loading related (very plib specific) functions in the new loader object. 2) Move *.tkkf files into separate subdirs, and renamed them to *.kart files. Modified Paths: -------------- trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/attachment_manager.cpp trunk/supertuxkart/src/collectable_manager.cpp trunk/supertuxkart/src/file_manager.cpp trunk/supertuxkart/src/file_manager.hpp trunk/supertuxkart/src/herring_manager.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties_manager.cpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/projectile_manager.cpp trunk/supertuxkart/src/track.cpp Added Paths: ----------- trunk/supertuxkart/data/karts/ trunk/supertuxkart/data/karts/dinokart/ trunk/supertuxkart/data/karts/dinokart/dinokart.kart trunk/supertuxkart/data/karts/eviltux/ trunk/supertuxkart/data/karts/eviltux/eviltux.kart trunk/supertuxkart/data/karts/hexleykart/ trunk/supertuxkart/data/karts/hexleykart/hexleykart.kart trunk/supertuxkart/data/karts/mriceblock/ trunk/supertuxkart/data/karts/mriceblock/mriceblock.kart trunk/supertuxkart/data/karts/nolokkart/ trunk/supertuxkart/data/karts/nolokkart/nolokkart.kart trunk/supertuxkart/data/karts/pennykart/ trunk/supertuxkart/data/karts/pennykart/pennykart.kart trunk/supertuxkart/data/karts/skirpy/ trunk/supertuxkart/data/karts/skirpy/skirpy.kart trunk/supertuxkart/data/karts/sushikart/ trunk/supertuxkart/data/karts/sushikart/sushikart.kart trunk/supertuxkart/data/karts/tuxkart/ trunk/supertuxkart/data/karts/tuxkart/tuxkart.kart trunk/supertuxkart/data/karts/wilber/ trunk/supertuxkart/data/karts/wilber/wilber.kart trunk/supertuxkart/data/karts/yetikart/ trunk/supertuxkart/data/karts/yetikart/yetikart.kart Removed Paths: ------------- trunk/supertuxkart/data/dinokart.tkkf trunk/supertuxkart/data/eviltux.tkkf trunk/supertuxkart/data/hexleykart.tkkf trunk/supertuxkart/data/mriceblock.tkkf trunk/supertuxkart/data/nolokkart.tkkf trunk/supertuxkart/data/pennykart.tkkf trunk/supertuxkart/data/skirpy.tkkf trunk/supertuxkart/data/sushikart.tkkf trunk/supertuxkart/data/tuxkart.tkkf trunk/supertuxkart/data/wilber.tkkf trunk/supertuxkart/data/yetikart.tkkf Deleted: trunk/supertuxkart/data/dinokart.tkkf =================================================================== --- trunk/supertuxkart/data/dinokart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/dinokart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Dino") - (model-file "dinokart-high.ac") - (icon-file "dinoicon.rgb") - (shadow-file "dinoshadow.rgb") - - (red 1.0) - (green 0.7) - (blue 0.1) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/eviltux.tkkf =================================================================== --- trunk/supertuxkart/data/eviltux.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/eviltux.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Eviltux") - (model-file "eviltux.ac") - (icon-file "eviltuxicon.rgb") - (shadow-file "tuxkartshadow.rgb") - - (red 0.3) - (green 0.1) - (blue 0.6) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/hexleykart.tkkf =================================================================== --- trunk/supertuxkart/data/hexleykart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/hexleykart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Hexley") - (model-file "hexleykart.ac") - (icon-file "hexleyicon.rgb") - (shadow-file "hexleyshadow.rgb") - - (red 0.9) - (green 0.2) - (blue 0.2) - -) -;; EOF ;; Copied: trunk/supertuxkart/data/karts/dinokart/dinokart.kart (from rev 1613, trunk/supertuxkart/data/dinokart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/dinokart/dinokart.kart (rev 0) +++ trunk/supertuxkart/data/karts/dinokart/dinokart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Dino") + (model-file "dinokart-high.ac") + (icon-file "dinoicon.rgb") + (shadow-file "dinoshadow.rgb") + + (red 1.0) + (green 0.7) + (blue 0.1) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/eviltux/eviltux.kart (from rev 1613, trunk/supertuxkart/data/eviltux.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/eviltux/eviltux.kart (rev 0) +++ trunk/supertuxkart/data/karts/eviltux/eviltux.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Eviltux") + (model-file "eviltux.ac") + (icon-file "eviltuxicon.rgb") + (shadow-file "tuxkartshadow.rgb") + + (red 0.3) + (green 0.1) + (blue 0.6) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/hexleykart/hexleykart.kart (from rev 1613, trunk/supertuxkart/data/hexleykart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/hexleykart/hexleykart.kart (rev 0) +++ trunk/supertuxkart/data/karts/hexleykart/hexleykart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Hexley") + (model-file "hexleykart.ac") + (icon-file "hexleyicon.rgb") + (shadow-file "hexleyshadow.rgb") + + (red 0.9) + (green 0.2) + (blue 0.2) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/mriceblock/mriceblock.kart (from rev 1613, trunk/supertuxkart/data/mriceblock.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/mriceblock/mriceblock.kart (rev 0) +++ trunk/supertuxkart/data/karts/mriceblock/mriceblock.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Mr. Ice Block") + (model-file "mriceblock.ac") + (icon-file "mriceblockicon.rgb") + (shadow-file "mriceblockshadow.rgb") + + (red 0.0) + (green 0.9) + (blue 1.0) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/nolokkart/nolokkart.kart (from rev 1613, trunk/supertuxkart/data/nolokkart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/nolokkart/nolokkart.kart (rev 0) +++ trunk/supertuxkart/data/karts/nolokkart/nolokkart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,15 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Nolok") + (model-file "nolokkart-high.ac") + (icon-file "nolokicon.rgb") + (shadow-file "tuxkartshadow.rgb") + + (red 0.6) + (green 0.6) + (blue 0.5) + +) + +;; EOF ;; Copied: trunk/supertuxkart/data/karts/pennykart/pennykart.kart (from rev 1613, trunk/supertuxkart/data/pennykart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/pennykart/pennykart.kart (rev 0) +++ trunk/supertuxkart/data/karts/pennykart/pennykart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Penny") + (model-file "pennykart-med.ac") + (icon-file "pennyicon.rgb") + (shadow-file "pennyshadow.rgb") + + (red 0.8) + (green 0.2) + (blue 0.6) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/skirpy/skirpy.kart (from rev 1613, trunk/supertuxkart/data/skirpy.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/skirpy/skirpy.kart (rev 0) +++ trunk/supertuxkart/data/karts/skirpy/skirpy.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Skirpy") + (model-file "skirpy-high.ac") + (icon-file "skirpyicon.rgb") + (shadow-file "tuxkartshadow.rgb") + + (red 0.1) + (green 0.5) + (blue 0.1) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/sushikart/sushikart.kart (from rev 1613, trunk/supertuxkart/data/sushikart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/sushikart/sushikart.kart (rev 0) +++ trunk/supertuxkart/data/karts/sushikart/sushikart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Sushi") + (model-file "sushikart.ac") + (icon-file "sushiicon.rgb") + (shadow-file "sushishadow.rgb") + + (red 0.8) + (green 0.0) + (blue 0.5) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/tuxkart/tuxkart.kart (from rev 1613, trunk/supertuxkart/data/tuxkart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/tuxkart/tuxkart.kart (rev 0) +++ trunk/supertuxkart/data/karts/tuxkart/tuxkart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,13 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Tux") + (model-file "tuxkart.ac") + (icon-file "tuxicon.rgb") + (shadow-file "tuxkartshadow.rgb") + + (red 0.7) + (green 0.0) + (blue 0.0) +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/wilber/wilber.kart (from rev 1613, trunk/supertuxkart/data/wilber.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/wilber/wilber.kart (rev 0) +++ trunk/supertuxkart/data/karts/wilber/wilber.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Wilber") + (model-file "wilber-low.ac") + (icon-file "wilbericon.rgb") + (shadow-file "wilbershadow.rgb") + + (red 0.25) + (green 0.23) + (blue 0.18) + +) +;; EOF ;; Copied: trunk/supertuxkart/data/karts/yetikart/yetikart.kart (from rev 1613, trunk/supertuxkart/data/yetikart.tkkf) =================================================================== --- trunk/supertuxkart/data/karts/yetikart/yetikart.kart (rev 0) +++ trunk/supertuxkart/data/karts/yetikart/yetikart.kart 2008-03-03 03:31:12 UTC (rev 1619) @@ -0,0 +1,14 @@ +;; -*- mode: lisp -*- + +(tuxkart-kart + (name "Yeti") + (model-file "yetikart.ac") + (icon-file "yetiicon.rgb") + (shadow-file "yetishadow.rgb") + + (red 0.5) + (green 0.8) + (blue 1.0) + +) +;; EOF ;; Deleted: trunk/supertuxkart/data/mriceblock.tkkf =================================================================== --- trunk/supertuxkart/data/mriceblock.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/mriceblock.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Mr. Ice Block") - (model-file "mriceblock.ac") - (icon-file "mriceblockicon.rgb") - (shadow-file "mriceblockshadow.rgb") - - (red 0.0) - (green 0.9) - (blue 1.0) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/nolokkart.tkkf =================================================================== --- trunk/supertuxkart/data/nolokkart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/nolokkart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,15 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Nolok") - (model-file "nolokkart-high.ac") - (icon-file "nolokicon.rgb") - (shadow-file "tuxkartshadow.rgb") - - (red 0.6) - (green 0.6) - (blue 0.5) - -) - -;; EOF ;; Deleted: trunk/supertuxkart/data/pennykart.tkkf =================================================================== --- trunk/supertuxkart/data/pennykart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/pennykart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Penny") - (model-file "pennykart-med.ac") - (icon-file "pennyicon.rgb") - (shadow-file "pennyshadow.rgb") - - (red 0.8) - (green 0.2) - (blue 0.6) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/skirpy.tkkf =================================================================== --- trunk/supertuxkart/data/skirpy.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/skirpy.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Skirpy") - (model-file "skirpy-high.ac") - (icon-file "skirpyicon.rgb") - (shadow-file "tuxkartshadow.rgb") - - (red 0.1) - (green 0.5) - (blue 0.1) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/sushikart.tkkf =================================================================== --- trunk/supertuxkart/data/sushikart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/sushikart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Sushi") - (model-file "sushikart.ac") - (icon-file "sushiicon.rgb") - (shadow-file "sushishadow.rgb") - - (red 0.8) - (green 0.0) - (blue 0.5) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/tuxkart.tkkf =================================================================== --- trunk/supertuxkart/data/tuxkart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/tuxkart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,13 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Tux") - (model-file "tuxkart.ac") - (icon-file "tuxicon.rgb") - (shadow-file "tuxkartshadow.rgb") - - (red 0.7) - (green 0.0) - (blue 0.0) -) -;; EOF ;; Deleted: trunk/supertuxkart/data/wilber.tkkf =================================================================== --- trunk/supertuxkart/data/wilber.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/wilber.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Wilber") - (model-file "wilber-low.ac") - (icon-file "wilbericon.rgb") - (shadow-file "wilbershadow.rgb") - - (red 0.25) - (green 0.23) - (blue 0.18) - -) -;; EOF ;; Deleted: trunk/supertuxkart/data/yetikart.tkkf =================================================================== --- trunk/supertuxkart/data/yetikart.tkkf 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/data/yetikart.tkkf 2008-03-03 03:31:12 UTC (rev 1619) @@ -1,14 +0,0 @@ -;; -*- mode: lisp -*- - -(tuxkart-kart - (name "Yeti") - (model-file "yetikart.ac") - (icon-file "yetiicon.rgb") - (shadow-file "yetishadow.rgb") - - (red 0.5) - (green 0.8) - (blue 1.0) - -) -;; EOF ;; Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/Makefile.am 2008-03-03 03:31:12 UTC (rev 1619) @@ -51,7 +51,8 @@ stk_config.cpp stk_config.hpp \ highscores.cpp highscores.hpp \ highscore_manager.cpp highscore_manager.hpp \ - file_manager.cpp file_manager.hpp \ + file_manager.cpp file_manager.hpp \ + loader.cpp loadre.hpp \ race_manager.cpp race_manager.hpp \ string_utils.cpp string_utils.hpp \ track_manager.cpp track_manager.hpp \ Modified: trunk/supertuxkart/src/attachment_manager.cpp =================================================================== --- trunk/supertuxkart/src/attachment_manager.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/attachment_manager.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -19,6 +19,7 @@ #include "attachment_manager.hpp" #include "file_manager.hpp" +#include "loader.hpp" AttachmentManager *attachment_manager = 0; @@ -65,7 +66,7 @@ { for(int i=0; iat[i].attachment!=ATTACH_MAX; i++) { - m_attachments[iat[i].attachment]=file_manager->load(iat[i].file, CB_ATTACHMENT); + m_attachments[iat[i].attachment]=loader->load(iat[i].file, CB_ATTACHMENT); m_attachments[iat[i].attachment]->ref(); } // for } // reInit Modified: trunk/supertuxkart/src/collectable_manager.cpp =================================================================== --- trunk/supertuxkart/src/collectable_manager.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/collectable_manager.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -27,6 +27,8 @@ #include "spark.hpp" #include "missile.hpp" #include "homing.hpp" +#include "loader.hpp" + #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf #endif @@ -124,7 +126,7 @@ if(sModel!="") { - ssgEntity* e = file_manager->load(sModel, CB_COLLECTABLE); + ssgEntity* e = loader->load(sModel, CB_COLLECTABLE); m_all_models[collectType] = e; e->ref(); e->clrTraversalMaskBits(SSGTRAV_ISECT|SSGTRAV_HOT); Modified: trunk/supertuxkart/src/file_manager.cpp =================================================================== --- trunk/supertuxkart/src/file_manager.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/file_manager.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -86,8 +86,6 @@ { m_is_full_path = false; - m_current_callback_type = CB_COLLECTABLE; - if ( getenv ( "SUPERTUXKART_DATADIR" ) != NULL ) m_root_dir= getenv ( "SUPERTUXKART_DATADIR" ) ; #ifdef __APPLE__ @@ -138,23 +136,6 @@ } // findFile //----------------------------------------------------------------------------- -void FileManager::makeModelPath(char* path, const char* FNAME) const -{ - if(m_is_full_path) - { - strcpy(path, FNAME); - return; - } - - std::string p; - if(findFile(p, FNAME, m_model_search_path)) - { - strcpy(path, p.c_str()); - return; - } -} // makeModelPath - -//----------------------------------------------------------------------------- std::string FileManager::getTextureFile(const std::string& FNAME) const { std::string path; @@ -171,19 +152,20 @@ } // makeTexturePath //----------------------------------------------------------------------------- -std::string FileManager::getKartFile(const std::string& fname) const -{ - return m_root_dir+"/data/"+fname; -} // getKartFile - -//----------------------------------------------------------------------------- std::string FileManager::getTrackDir() const { return m_root_dir+"/data/tracks"; } // getTrackDir + //----------------------------------------------------------------------------- +std::string FileManager::getKartDir() const +{ + return m_root_dir+"/data/karts"; +} // getKartDir + +//----------------------------------------------------------------------------- std::string FileManager::getTrackFile(const std::string& fname, - const std::string& track_name) const + const std::string& track_name) const { // tracks file are in data/tracks/TRACKNAME/TRACKNAME.ext // but if a track name is supplied use it (which is necessary @@ -194,6 +176,18 @@ } // getTrackFile //----------------------------------------------------------------------------- +std::string FileManager::getKartFile(const std::string& fname, + const std::string& kart_name) const +{ + // kart file are in data/karts/KARTNAME/KARTNAME.ext + // but if a kart name is supplied use it (which is necessary + // e.g. to load a model from a kart directory + std::string basename = (kart_name!="") ? kart_name + : StringUtils::without_extension(fname); + return getKartDir()+"/"+basename+"/"+fname; +} // getKartFile + +//----------------------------------------------------------------------------- std::string FileManager::getConfigFile(const std::string& fname) const { return m_root_dir+"/data/"+fname; @@ -301,159 +295,4 @@ ulCloseDir(mydir); } // listFiles -//----------------------------------------------------------------------------- -/** Loads a .ac model - * - * Loads the .ac model 'filename'. Callbacks contained in this file - * are stored in the callback class t. If optimise is set to false, - * the file will not be flattened, which is necessary for the kart - * models - flattening them will remove the wheel nodes, withouth - * which the wheels do not rotate. - * - * \param filename File to load - * - * \param t Callback category for callbacks included in this - * file (see callback_manager.hpp) - * - * \param optimise Default is true. If set to false, the model will not - * be flattened. - */ -ssgEntity *FileManager::load(const std::string& filename, CallbackType t, - bool optimise, bool is_full_path) -{ - m_current_callback_type = t; - m_is_full_path = is_full_path; - ssgEntity *obj = optimise ? ssgLoad (filename.c_str(), this) - : ssgLoadAC(filename.c_str(), this); - preProcessObj(obj, false); - return obj; -} // load - -//----------------------------------------------------------------------------- -void FileManager::preProcessObj ( ssgEntity *n, bool mirror ) -{ - if ( n == NULL ) return ; - - n -> dirtyBSphere () ; - - if ( n -> isAKindOf ( ssgTypeLeaf() ) ) - { - if ( mirror ) - for ( int i = 0 ; i < ((ssgLeaf *)n) -> getNumVertices () ; i++ ) - ((ssgLeaf *)n) -> getVertex ( i ) [ 0 ] *= -1.0f ; - - material_manager->getMaterial ( (ssgLeaf *) n ) -> applyToLeaf ( (ssgLeaf *) n ) ; - return ; - } - - if ( mirror && n -> isAKindOf ( ssgTypeTransform () ) ) - { - sgMat4 xform ; - - ((ssgTransform *)n) -> getTransform ( xform ) ; - xform [ 0 ][ 0 ] *= -1.0f ; - xform [ 1 ][ 0 ] *= -1.0f ; - xform [ 2 ][ 0 ] *= -1.0f ; - xform [ 3 ][ 0 ] *= -1.0f ; - ((ssgTransform *)n) -> setTransform ( xform ) ; - } - - ssgBranch *b = (ssgBranch *) n ; - - for ( int i = 0 ; i < b -> getNumKids () ; i++ ) - preProcessObj ( b -> getKid ( i ), mirror ) ; -} - -//----------------------------------------------------------------------------- -ssgBranch *FileManager::animInit (char *data ) const -{ - while ( ! isdigit ( *data ) && *data != '\0' ) - data++ ; - - const int START_LIM = strtol(data, &data, 0 ); - const int END_LIM = strtol(data, &data, 0 ); - const float TIME_LIM = (float)strtod(data, &data ); - - while ( *data <= ' ' && *data != '\0' ) - data++ ; - - char mode = toupper ( *data ) ; - - ssgTimedSelector *br = new ssgTimedSelector; - - br->setLimits (START_LIM+1, END_LIM+1 ) ; - br->setDuration(TIME_LIM ) ; - br->setMode ((mode=='O') ? SSG_ANIM_ONESHOT - : (mode=='S') ? SSG_ANIM_SWING - : SSG_ANIM_SHUTTLE ) ; - br->control (SSG_ANIM_START ) ; - - return br; -} // animInit - - -//----------------------------------------------------------------------------- -/** Handle userdata that is stored in the model files. Mostly the userdata - * indicates that a special branch is to be created (e.g. a ssgCutout instead - * of the standard branch). But some userdata indicate that callbacks need - * to be created, which are then handled by the callback manager. - */ - -ssgBranch *FileManager::createBranch(char *data) const -{ - - if ( data == NULL || data[0] != '@' ) return NULL; - - data++ ; /* Skip the '@' */ - - if ( strncmp("billboard", data, strlen("billboard") ) == 0 ) - return new ssgCutout(); - - if ( strncmp("DONT_DELETE", data, strlen("DONT_DELETE") ) == 0 ) - { - printf("DONT\n"); - ssgBranch *br = new ssgTransform(); - br->setUserData(new ssgBase()); - return br; - } - - if ( strncmp("invisible", data, strlen("invisible") ) == 0 ) - return new ssgInvisible(); - - if ( strncmp ( "switch", data, strlen ( "switch" ) ) == 0 ) - { - ssgSelector *sel = new ssgSelector(); - sel->select(0); - return sel; - } - - if ( strncmp ( "animate", data, strlen ( "animate" ) ) == 0 ) - return animInit(data); - - - if ( strncmp ( "autodcs", data, strlen ( "autodcs" ) ) == 0 ) - { - ssgTransform *br = new ssgTransform(); - Callback *c = new MovingTexture(data, br); - br->setUserData(new ssgBase()); - callback_manager->addCallback(c, m_current_callback_type); - return br; - } - - if ( strncmp ( "autotex", data, strlen ( "autotex" ) ) == 0 ) - { - ssgTexTrans *br = new ssgTexTrans(); - Callback *c = new MovingTexture(data, br); - callback_manager->addCallback(c, m_current_callback_type); - return br; - } - if(strncmp("physics", data, strlen("physics")) == 0) - { - MovingPhysics *mp = new MovingPhysics(std::string(data)); - callback_manager->addCallback(mp, m_current_callback_type); - return mp; - } - fprintf(stderr, "Warning: Ignoring userdata '%s'\n", data); - return NULL ; -} // createBranch - +//----------------------------------------------------------------------------- \ No newline at end of file Modified: trunk/supertuxkart/src/file_manager.hpp =================================================================== --- trunk/supertuxkart/src/file_manager.hpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/file_manager.hpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -20,7 +20,6 @@ #ifndef HEADER_FILE_MANAGER_H #define HEADER_FILE_MANAGER_H -#include <plib/ssg.h> #include <string> #include <vector> #include <set> @@ -41,9 +40,12 @@ FileManager(); ~FileManager(); - virtual void makeModelPath (char* path, const char* fname) const; + std::string getHomeDir () const; + std::string getTrackDir () const; + std::string getKartDir () const; std::string getTextureFile (const std::string& fname) const; - std::string getKartFile (const std::string& fname) const; + std::string getKartFile (const std::string& fname, + const std::string& kart="") const; std::string getTrackFile (const std::string& fname, const std::string& track="") const; std::string getConfigFile (const std::string& fname) const; @@ -53,8 +55,6 @@ std::string getSFXFile (const std::string& fname) const; std::string getFontFile (const std::string& fname) const; std::string getModelFile (const std::string& fname) const; - std::string getHomeDir () const; - std::string getTrackDir () const; #ifdef HAVE_GHOST_REPLAY std::string getReplayFile(const std::string& fname) const; #endif @@ -73,17 +73,9 @@ void popModelSearchPath () {m_model_search_path.pop_back(); } void popMusicSearchPath () {m_music_search_path.pop_back(); } void initConfigDir(); - ssgEntity *load(const std::string& filename, CallbackType t, bool optimise=true, - bool is_full_path=false); - void setCallbackType(CallbackType t) {m_current_callback_type=t;} private: - CallbackType m_current_callback_type; - void makePath (std::string& path, const std::string& dir, const std::string& fname) const; - ssgBranch *createBranch (char *data) const; - void preProcessObj( ssgEntity *n, bool mirror ); - ssgBranch *animInit (char *data) const; }; extern FileManager* file_manager; Modified: trunk/supertuxkart/src/herring_manager.cpp =================================================================== --- trunk/supertuxkart/src/herring_manager.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/herring_manager.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -23,6 +23,7 @@ #include "user_config.hpp" #include "herring_manager.hpp" #include "file_manager.hpp" +#include "loader.hpp" #include "material_manager.hpp" #include "material.hpp" #include "kart.hpp" @@ -128,7 +129,7 @@ { if(!StringUtils::has_suffix(*i, ".ac")) continue; std::string fullName = "herrings/"+(*i); - ssgEntity* h = file_manager->load(fullName, CB_HERRING); + ssgEntity* h = loader->load(fullName, CB_HERRING); std::string shortName = StringUtils::without_extension(*i); h->ref(); h->setName(shortName.c_str()); Modified: trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-03-03 03:31:12 UTC (rev 1619) @@ -755,6 +755,10 @@ > </File> <File + RelativePath="..\..\loader.cpp" + > + </File> + <File RelativePath="../../../src\main.cpp" > </File> @@ -1161,6 +1165,10 @@ > </File> <File + RelativePath="..\..\loader.hpp" + > + </File> + <File RelativePath="../../../src\material.hpp" > </File> Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -23,6 +23,7 @@ #include "material_manager.hpp" #include "lisp/parser.hpp" #include "lisp/lisp.hpp" +#include "loader.hpp" #include "file_manager.hpp" #include "string_utils.hpp" #include "kart_properties.hpp" @@ -83,7 +84,8 @@ // Load model, except when called as part of --list-karts if(m_model_file.length()>0 && !dont_load_models) { - m_model = file_manager->load(m_model_file, CB_KART, false); + + m_model = loader->load(m_model_file, CB_KART, false); ssgStripify(m_model); float x_min, x_max, y_min, y_max, z_min, z_max; MinMax(m_model, &x_min, &x_max, &y_min, &y_max, &z_min, &z_max); Modified: trunk/supertuxkart/src/kart_properties_manager.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties_manager.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/kart_properties_manager.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -59,24 +59,35 @@ { m_max_steer_angle = -1.0f; std::set<std::string> result; - file_manager->listFiles(result, "data"); + file_manager->listFiles(result, file_manager->getKartDir(), + /*is_full_path*/ true); // Find out which characters are available and load them for(std::set<std::string>::iterator i = result.begin(); i != result.end(); ++i) + { + std::string kart_file; + if(*i=="." || *i=="..") continue; + try { - if (StringUtils::has_suffix(*i, ".tkkf")) - { - KartProperties* kp = new KartProperties(); - std::string filename=file_manager->getKartFile(*i); - kp->load(filename.c_str(), "tuxkart-kart", dont_load_models); - m_karts_properties.push_back(kp); - if(kp->getMaxSteerAngle() > m_max_steer_angle) - { - m_max_steer_angle = kp->getMaxSteerAngle(); - } - } // if - } // for i + kart_file = file_manager->getKartFile((*i)+".kart"); + } + catch (std::exception& e) + { + (void)e; // remove warning about unused variable + continue; + } + FILE *f=fopen(kart_file.c_str(),"r"); + if(!f) continue; + fclose(f); + KartProperties* kp = new KartProperties(); + kp->load(kart_file, "tuxkart-kart", dont_load_models); + m_karts_properties.push_back(kp); + if(kp->getMaxSteerAngle() > m_max_steer_angle) + { + m_max_steer_angle = kp->getMaxSteerAngle(); + } + } // for i } // loadKartData //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/main.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -51,6 +51,7 @@ #include "projectile_manager.hpp" #include "race_manager.hpp" #include "file_manager.hpp" +#include "loader.hpp" #include "game_manager.hpp" #include "widget_manager.hpp" #include "material_manager.hpp" @@ -370,7 +371,8 @@ void InitTuxkart() { file_manager = new FileManager(); - file_manager->setCreateStateCallback(getAppState); + loader = new Loader(); + loader->setCreateStateCallback(getAppState); user_config = new UserConfig(); sound_manager = new SoundManager(); Modified: trunk/supertuxkart/src/projectile_manager.cpp =================================================================== --- trunk/supertuxkart/src/projectile_manager.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/projectile_manager.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -17,7 +17,7 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -#include "file_manager.hpp" +#include "loader.hpp" #include "projectile_manager.hpp" #include "spark.hpp" #include "missile.hpp" @@ -36,7 +36,7 @@ // Load the explosion model and find the actual selector branch in it. // Only the explosion model is loaded here, see collectable_manager. - m_explosion_model = find_selector((ssgBranch*)file_manager->load("explode.ac", + m_explosion_model = find_selector((ssgBranch*)loader->load("explode.ac", CB_EXPLOSION) ); m_explosion_model->ref(); if ( m_explosion_model == NULL ) Modified: trunk/supertuxkart/src/track.cpp =================================================================== --- trunk/supertuxkart/src/track.cpp 2008-03-02 13:02:16 UTC (rev 1618) +++ trunk/supertuxkart/src/track.cpp 2008-03-03 03:31:12 UTC (rev 1619) @@ -22,6 +22,7 @@ #include <sstream> #include <plib/ssgAux.h> #include "file_manager.hpp" +#include "loader.hpp" #include "track.hpp" #include "string_utils.hpp" #include "lisp/lisp.hpp" @@ -1249,7 +1250,7 @@ } } // if need_hat - ssgEntity *obj = file_manager->load(file_manager->getModelFile(fname), + ssgEntity *obj = loader->load(file_manager->getModelFile(fname), CB_TRACK, /* optimise */ true, /*is_full_path*/ true); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-03-05 02:09:58
|
Revision: 1629 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1629&view=rev Author: hikerstk Date: 2008-03-04 18:09:50 -0800 (Tue, 04 Mar 2008) Log Message: ----------- Moved all kart specific files into separate subdirs. Modified Paths: -------------- trunk/supertuxkart/data/karts/eviltux/eviltux.kart trunk/supertuxkart/data/karts/nolokkart/nolokkart.kart trunk/supertuxkart/data/karts/skirpy/skirpy.kart trunk/supertuxkart/data/textures/materials.dat trunk/supertuxkart/data/tracks/tuxtrack/materials.dat trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties.hpp trunk/supertuxkart/src/material_manager.cpp trunk/supertuxkart/src/material_manager.hpp trunk/supertuxkart/src/stk_config.cpp Added Paths: ----------- trunk/supertuxkart/data/karts/dinokart/dinoicon.rgb trunk/supertuxkart/data/karts/dinokart/dinokart-high.ac trunk/supertuxkart/data/karts/dinokart/dinokart.ac trunk/supertuxkart/data/karts/dinokart/dinoshadow.rgb trunk/supertuxkart/data/karts/dinokart/materials.dat trunk/supertuxkart/data/karts/eviltux/eviltux.ac trunk/supertuxkart/data/karts/eviltux/eviltuxicon.rgb trunk/supertuxkart/data/karts/eviltux/materials.dat trunk/supertuxkart/data/karts/hexleykart/hexley_eye.rgb trunk/supertuxkart/data/karts/hexleykart/hexley_kart_textura.rgb trunk/supertuxkart/data/karts/hexleykart/hexleyicon.rgb trunk/supertuxkart/data/karts/hexleykart/hexleykart.ac trunk/supertuxkart/data/karts/hexleykart/hexleyshadow.rgb trunk/supertuxkart/data/karts/hexleykart/materials.dat trunk/supertuxkart/data/karts/mriceblock/materials.dat trunk/supertuxkart/data/karts/mriceblock/mriceblock.ac trunk/supertuxkart/data/karts/mriceblock/mriceblockicon.rgb trunk/supertuxkart/data/karts/mriceblock/mriceblockshadow.rgb trunk/supertuxkart/data/karts/nolokkart/materials.dat trunk/supertuxkart/data/karts/nolokkart/nolokicon.rgb trunk/supertuxkart/data/karts/nolokkart/nolokkart-high.ac trunk/supertuxkart/data/karts/pennykart/materials.dat trunk/supertuxkart/data/karts/pennykart/pennyicon.rgb trunk/supertuxkart/data/karts/pennykart/pennykart-med.ac trunk/supertuxkart/data/karts/pennykart/pennyshadow.rgb trunk/supertuxkart/data/karts/skirpy/materials.dat trunk/supertuxkart/data/karts/skirpy/skirpy-high.ac trunk/supertuxkart/data/karts/skirpy/skirpyicon.rgb trunk/supertuxkart/data/karts/sushikart/materials.dat trunk/supertuxkart/data/karts/sushikart/sushiicon.rgb trunk/supertuxkart/data/karts/sushikart/sushikart.ac trunk/supertuxkart/data/karts/sushikart/sushishadow.rgb trunk/supertuxkart/data/karts/tuxkart/materials.dat trunk/supertuxkart/data/karts/tuxkart/tux_body.rgb trunk/supertuxkart/data/karts/tuxkart/tuxicon.rgb trunk/supertuxkart/data/karts/tuxkart/tuxkart.ac trunk/supertuxkart/data/karts/tuxkart/tuxkart.rgb trunk/supertuxkart/data/karts/tuxkart/tuxkartshadow.rgb trunk/supertuxkart/data/karts/wilber/materials.dat trunk/supertuxkart/data/karts/wilber/wilber-hi.ac trunk/supertuxkart/data/karts/wilber/wilber-low.ac trunk/supertuxkart/data/karts/wilber/wilber.rgb trunk/supertuxkart/data/karts/wilber/wilbericon.rgb trunk/supertuxkart/data/karts/wilber/wilbershadow.rgb trunk/supertuxkart/data/karts/yetikart/materials.dat trunk/supertuxkart/data/karts/yetikart/yetiicon.rgb trunk/supertuxkart/data/karts/yetikart/yetikart.ac trunk/supertuxkart/data/karts/yetikart/yetishadow.rgb Removed Paths: ------------- trunk/supertuxkart/data/textures/dinoicon.rgb trunk/supertuxkart/data/textures/dinoshadow.rgb trunk/supertuxkart/data/textures/eviltuxicon.rgb trunk/supertuxkart/data/textures/hexley_eye.rgb trunk/supertuxkart/data/textures/hexley_kart_textura.rgb trunk/supertuxkart/data/textures/hexleyicon.rgb trunk/supertuxkart/data/textures/hexleyshadow.rgb trunk/supertuxkart/data/textures/mriceblockicon.rgb trunk/supertuxkart/data/textures/mriceblockshadow.rgb trunk/supertuxkart/data/textures/nolokicon.rgb trunk/supertuxkart/data/textures/pennyicon.rgb trunk/supertuxkart/data/textures/pennyshadow.rgb trunk/supertuxkart/data/textures/skirpyicon.rgb trunk/supertuxkart/data/textures/sushiicon.rgb trunk/supertuxkart/data/textures/sushishadow.rgb trunk/supertuxkart/data/textures/tux_body.rgb trunk/supertuxkart/data/textures/tuxicon.rgb trunk/supertuxkart/data/textures/tuxkart.rgb trunk/supertuxkart/data/textures/tuxkartshadow.rgb trunk/supertuxkart/data/textures/wilber.rgb trunk/supertuxkart/data/textures/wilbericon.rgb trunk/supertuxkart/data/textures/wilbershadow.rgb trunk/supertuxkart/data/textures/yetiicon.rgb trunk/supertuxkart/data/textures/yetishadow.rgb trunk/supertuxkart/models/dinokart-high.ac trunk/supertuxkart/models/dinokart.ac trunk/supertuxkart/models/eviltux.ac trunk/supertuxkart/models/hexleykart.ac trunk/supertuxkart/models/mriceblock.ac trunk/supertuxkart/models/nolokkart-high.ac trunk/supertuxkart/models/pennykart-med.ac trunk/supertuxkart/models/skirpy-high.ac trunk/supertuxkart/models/sushikart.ac trunk/supertuxkart/models/tuxkart.ac trunk/supertuxkart/models/wilber-hi.ac trunk/supertuxkart/models/wilber-low.ac trunk/supertuxkart/models/yetikart.ac Copied: trunk/supertuxkart/data/karts/dinokart/dinoicon.rgb (from rev 1625, trunk/supertuxkart/data/textures/dinoicon.rgb) =================================================================== (Binary files differ) Copied: trunk/supertuxkart/data/karts/dinokart/dinokart-high.ac (from rev 1621, trunk/supertuxkart/models/dinokart-high.ac) =================================================================== --- trunk/supertuxkart/data/karts/dinokart/dinokart-high.ac (rev 0) +++ trunk/supertuxkart/data/karts/dinokart/dinokart-high.ac 2008-03-05 02:09:50 UTC (rev 1629) @@ -0,0 +1,6401 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0 +MATERIAL "Engine.004" rgb 1 0.8 0 amb 0.5 0.5 0.5 emis 0 0 0 spec 1 1 1 shi 72 trans 0 +MATERIAL "Tire.005" rgb 0 0 0 amb 0.5 0.5 0.5 emis 0 0 0 spec 1 1 1 shi 72 trans 0 +MATERIAL "Body.001" rgb 1 0.6 0.2 amb 0.5 0.5 0.5 emis 0 0 0 spec 1 1 1 shi 72 trans 0 +MATERIAL "Engine.005" rgb 1 0.5 0 amb 0.5 0.5 0.5 emis 0 0 0 spec 1 1 1 shi 72 trans 0 +MATERIAL "Car.001" rgb 0.4 0.3 1 amb 0.5 0.5 0.5 emis 0 0 0 spec 1 1 1 shi 72 trans 0 +OBJECT world +kids 13 +OBJECT poly +name "Cylinder.008" +data 8 +Mesh.030 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.013747 0.341423 0.431833 +numvert 68 +-0.327261 0.208954 0.374545 +-0.363392 0.14612 0.374545 +-0.327041 0.083414 0.374545 +-0.254561 0.08354 0.374545 +-0.218431 0.146374 0.374545 +-0.254781 0.20908 0.374545 +-0.327261 0.208954 0.434595 +-0.363392 0.14612 0.434595 +-0.327041 0.083414 0.434595 +-0.254561 0.08354 0.434595 +-0.218431 0.146374 0.434595 +-0.254781 0.20908 0.434595 +-0.290912 0.146247 0.434595 +-0.259969 0.164184 0.294739 +-0.272807 0.115015 0.294992 +-0.321854 0.12831 0.294739 +-0.309017 0.177479 0.294992 +-0.310671 0.189247 0.031808 +-0.324684 0.141504 0.056317 +-0.27115 0.128755 0.063255 +-0.25714 0.176244 0.038257 +-0.236834 -0.058299 -0.312286 +-0.25927 -0.13287 -0.269585 +-0.344987 -0.112864 -0.281412 +-0.322552 -0.037858 -0.323345 +-0.334568 -0.058463 -0.434232 +-0.365522 -0.177026 -0.433932 +-0.247255 -0.20908 -0.433077 +-0.216301 -0.090526 -0.434595 +-0.290912 -0.133776 -0.434263 +-0.320622 0.138175 -0.176632 +-0.240132 0.119638 -0.165427 +-0.2612 0.052115 -0.122356 +-0.34169 0.070213 -0.134256 +0.327261 0.208954 0.374545 +0.363392 0.14612 0.374545 +0.327041 0.083414 0.374545 +0.254561 0.08354 0.374545 +0.218431 0.146374 0.374545 +0.254781 0.20908 0.374545 +0.327261 0.208954 0.434595 +0.363392 0.14612 0.434595 +0.327041 0.083414 0.434595 +0.254561 0.08354 0.434595 +0.218431 0.146374 0.434595 +0.254781 0.20908 0.434595 +0.290912 0.146247 0.434595 +0.259969 0.164184 0.294739 +0.272807 0.115015 0.294992 +0.321854 0.12831 0.294739 +0.309017 0.177479 0.294992 +0.310673 0.189247 0.031808 +0.324684 0.141504 0.056317 +0.271151 0.128755 0.063255 +0.257139 0.176244 0.038257 +0.236835 -0.058299 -0.312286 +0.259271 -0.13287 -0.269585 +0.344987 -0.112864 -0.281412 +0.322552 -0.037858 -0.323345 +0.334568 -0.058463 -0.434232 +0.365522 -0.177026 -0.433932 +0.247255 -0.20908 -0.433077 +0.216301 -0.090526 -0.434595 +0.290912 -0.133776 -0.434263 +0.320622 0.138175 -0.176632 +0.240132 0.119638 -0.165427 +0.261199 0.052115 -0.122356 +0.34169 0.070213 -0.134256 +numsurf 76 +SURF 0x10 +mat 1 +refs 3 +12 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +12 0.0 0.0 +7 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +12 0.0 0.0 +8 0.0 0.0 +9 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +12 0.0 0.0 +9 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +12 0.0 0.0 +10 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +12 0.0 0.0 +11 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +0 0.0 0.0 +1 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +1 0.0 0.0 +2 0.0 0.0 +8 0.0 0.0 +7 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +2 0.0 0.0 +3 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +3 0.0 0.0 +4 0.0 0.0 +10 0.0 0.0 +9 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +4 0.0 0.0 +5 0.0 0.0 +11 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +5 0.0 0.0 +0 0.0 0.0 +6 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +16 0.0 0.0 +0 0.0 0.0 +5 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +4 0.0 0.0 +13 0.0 0.0 +5 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +3 0.0 0.0 +14 0.0 0.0 +13 0.0 0.0 +4 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +2 0.0 0.0 +15 0.0 0.0 +14 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +1 0.0 0.0 +15 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +0 0.0 0.0 +16 0.0 0.0 +15 0.0 0.0 +1 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +16 0.0 0.0 +17 0.0 0.0 +18 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +15 0.0 0.0 +18 0.0 0.0 +19 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +14 0.0 0.0 +19 0.0 0.0 +20 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +13 0.0 0.0 +20 0.0 0.0 +17 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +20 0.0 0.0 +31 0.0 0.0 +30 0.0 0.0 +17 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +19 0.0 0.0 +32 0.0 0.0 +31 0.0 0.0 +20 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +18 0.0 0.0 +33 0.0 0.0 +32 0.0 0.0 +19 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +17 0.0 0.0 +30 0.0 0.0 +33 0.0 0.0 +18 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +24 0.0 0.0 +25 0.0 0.0 +26 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +23 0.0 0.0 +26 0.0 0.0 +27 0.0 0.0 +22 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +22 0.0 0.0 +27 0.0 0.0 +28 0.0 0.0 +21 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +21 0.0 0.0 +28 0.0 0.0 +25 0.0 0.0 +24 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +29 0.0 0.0 +26 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +29 0.0 0.0 +27 0.0 0.0 +26 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +29 0.0 0.0 +28 0.0 0.0 +27 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +28 0.0 0.0 +29 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +33 0.0 0.0 +30 0.0 0.0 +24 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +32 0.0 0.0 +33 0.0 0.0 +23 0.0 0.0 +22 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +31 0.0 0.0 +32 0.0 0.0 +22 0.0 0.0 +21 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +30 0.0 0.0 +31 0.0 0.0 +21 0.0 0.0 +24 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +46 0.0 0.0 +41 0.0 0.0 +40 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +46 0.0 0.0 +42 0.0 0.0 +41 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +46 0.0 0.0 +43 0.0 0.0 +42 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +46 0.0 0.0 +44 0.0 0.0 +43 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +46 0.0 0.0 +45 0.0 0.0 +44 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +46 0.0 0.0 +40 0.0 0.0 +45 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +34 0.0 0.0 +40 0.0 0.0 +41 0.0 0.0 +35 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +35 0.0 0.0 +41 0.0 0.0 +42 0.0 0.0 +36 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +36 0.0 0.0 +42 0.0 0.0 +43 0.0 0.0 +37 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +37 0.0 0.0 +43 0.0 0.0 +44 0.0 0.0 +38 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +38 0.0 0.0 +44 0.0 0.0 +45 0.0 0.0 +39 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +40 0.0 0.0 +34 0.0 0.0 +39 0.0 0.0 +45 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +39 0.0 0.0 +34 0.0 0.0 +50 0.0 0.0 +47 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +38 0.0 0.0 +39 0.0 0.0 +47 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +37 0.0 0.0 +38 0.0 0.0 +47 0.0 0.0 +48 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +36 0.0 0.0 +37 0.0 0.0 +48 0.0 0.0 +49 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +35 0.0 0.0 +36 0.0 0.0 +49 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +34 0.0 0.0 +35 0.0 0.0 +49 0.0 0.0 +50 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +50 0.0 0.0 +49 0.0 0.0 +52 0.0 0.0 +51 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +49 0.0 0.0 +48 0.0 0.0 +53 0.0 0.0 +52 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +48 0.0 0.0 +47 0.0 0.0 +54 0.0 0.0 +53 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +47 0.0 0.0 +50 0.0 0.0 +51 0.0 0.0 +54 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +54 0.0 0.0 +51 0.0 0.0 +64 0.0 0.0 +65 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +53 0.0 0.0 +54 0.0 0.0 +65 0.0 0.0 +66 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +52 0.0 0.0 +53 0.0 0.0 +66 0.0 0.0 +67 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +51 0.0 0.0 +52 0.0 0.0 +67 0.0 0.0 +64 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +58 0.0 0.0 +57 0.0 0.0 +60 0.0 0.0 +59 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +57 0.0 0.0 +56 0.0 0.0 +61 0.0 0.0 +60 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +56 0.0 0.0 +55 0.0 0.0 +62 0.0 0.0 +61 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +55 0.0 0.0 +58 0.0 0.0 +59 0.0 0.0 +62 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +63 0.0 0.0 +59 0.0 0.0 +60 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +63 0.0 0.0 +60 0.0 0.0 +61 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +63 0.0 0.0 +61 0.0 0.0 +62 0.0 0.0 +SURF 0x10 +mat 1 +refs 3 +62 0.0 0.0 +59 0.0 0.0 +63 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +67 0.0 0.0 +57 0.0 0.0 +58 0.0 0.0 +64 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +66 0.0 0.0 +56 0.0 0.0 +57 0.0 0.0 +67 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +65 0.0 0.0 +55 0.0 0.0 +56 0.0 0.0 +66 0.0 0.0 +SURF 0x10 +mat 1 +refs 4 +64 0.0 0.0 +58 0.0 0.0 +55 0.0 0.0 +65 0.0 0.0 +kids 0 +OBJECT poly +name "WheelRear.R" +data 8 +Mesh.031 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.364589 0.188269 0.454568 +numvert 18 +0.152604 0 0 +-0.152604 0 0 +0.152604 0.191702 -0.078709 +0.152604 0.191209 0.079898 +0.152604 0.078709 0.191702 +0.152604 -0.079898 0.191209 +0.152604 -0.191702 0.078709 +0.152604 -0.19121 -0.079898 +0.152604 -0.078709 -0.191702 +0.152604 0.079898 -0.191209 +-0.152604 0.191702 -0.078709 +-0.152604 0.191209 0.079898 +-0.152604 0.078709 0.191702 +-0.152604 -0.079898 0.191209 +-0.152604 -0.191702 0.078709 +-0.152604 -0.19121 -0.079898 +-0.152604 -0.078709 -0.191702 +-0.152604 0.079898 -0.191209 +numsurf 24 +SURF 0x10 +mat 2 +refs 4 +9 0.0 0.0 +17 0.0 0.0 +10 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +11 0.0 0.0 +3 0.0 0.0 +2 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +12 0.0 0.0 +4 0.0 0.0 +3 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +13 0.0 0.0 +5 0.0 0.0 +4 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +14 0.0 0.0 +6 0.0 0.0 +5 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +15 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +16 0.0 0.0 +8 0.0 0.0 +7 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +17 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +9 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +10 0.0 0.0 +17 0.0 0.0 +1 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +2 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +11 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +12 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +4 0.0 0.0 +5 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +13 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +5 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +14 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +15 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +7 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +16 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +8 0.0 0.0 +9 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +17 0.0 0.0 +16 0.0 0.0 +kids 0 +OBJECT poly +name "Cylinder.014" +data 9 +Mesh.1614 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.357792 0.291311 -0.097419 +numvert 40 +-0.059864 -0.043058 -0.084099 +-0.032227 -0.043058 -0.041887 +0.016458 -0.043058 -0.055127 +0.018911 -0.043058 -0.105521 +-0.028258 -0.043058 -0.123427 +-0.059864 0.017638 -0.084099 +-0.032227 0.017638 -0.041887 +0.016458 0.017638 -0.055127 +0.018911 0.017638 -0.105521 +-0.028259 0.017638 -0.123427 +-0.023349 -0.023792 -0.105373 +0.003259 -0.023792 -0.095273 +0.001875 -0.023792 -0.066847 +-0.025588 -0.023792 -0.059378 +-0.041177 -0.023792 -0.083189 +-0.023349 -0.107632 -0.105373 +0.003259 -0.107632 -0.095273 +0.001875 -0.107632 -0.066847 +-0.025588 -0.107632 -0.059378 +-0.041177 -0.107632 -0.083189 +-0.033951 0.034318 0.043717 +-0.033883 0.034318 0.104659 +0.024097 0.034318 0.123427 +0.059864 0.034318 0.074084 +0.023988 0.034318 0.02482 +-0.033951 0.107632 0.043717 +-0.033883 0.107632 0.104659 +0.024097 0.107632 0.123427 +0.059864 0.107632 0.074084 +0.023988 0.107632 0.02482 +0.017029 0.057589 0.04632 +0.037265 0.057589 0.074109 +0.01709 0.057589 0.101943 +-0.015616 0.057589 0.091356 +-0.015654 0.057589 0.056979 +0.017029 -0.04368 0.04632 +0.037265 -0.04368 0.074109 +0.01709 -0.04368 0.101943 +-0.015616 -0.04368 0.091356 +-0.015654 -0.04368 0.056979 +numsurf 24 +SURF 0x00 +mat 1 +refs 4 +0 0.0 0.0 +1 0.0 0.0 +6 0.0 0.0 +5 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +1 0.0 0.0 +2 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +2 0.0 0.0 +3 0.0 0.0 +8 0.0 0.0 +7 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +3 0.0 0.0 +4 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +4 0.0 0.0 +0 0.0 0.0 +5 0.0 0.0 +9 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +19 0.0 0.0 +18 0.0 0.0 +13 0.0 0.0 +14 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +18 0.0 0.0 +17 0.0 0.0 +12 0.0 0.0 +13 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +17 0.0 0.0 +16 0.0 0.0 +11 0.0 0.0 +12 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +16 0.0 0.0 +15 0.0 0.0 +10 0.0 0.0 +11 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +14 0.0 0.0 +10 0.0 0.0 +15 0.0 0.0 +19 0.0 0.0 +SURF 0x00 +mat 1 +refs 3 +7 0.0 0.0 +8 0.0 0.0 +9 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +5 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +9 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +20 0.0 0.0 +21 0.0 0.0 +26 0.0 0.0 +25 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +21 0.0 0.0 +22 0.0 0.0 +27 0.0 0.0 +26 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +22 0.0 0.0 +23 0.0 0.0 +28 0.0 0.0 +27 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +23 0.0 0.0 +24 0.0 0.0 +29 0.0 0.0 +28 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +25 0.0 0.0 +29 0.0 0.0 +24 0.0 0.0 +20 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +39 0.0 0.0 +38 0.0 0.0 +33 0.0 0.0 +34 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +38 0.0 0.0 +37 0.0 0.0 +32 0.0 0.0 +33 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +37 0.0 0.0 +36 0.0 0.0 +31 0.0 0.0 +32 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +36 0.0 0.0 +35 0.0 0.0 +30 0.0 0.0 +31 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +34 0.0 0.0 +30 0.0 0.0 +35 0.0 0.0 +39 0.0 0.0 +SURF 0x00 +mat 1 +refs 3 +27 0.0 0.0 +28 0.0 0.0 +29 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +25 0.0 0.0 +26 0.0 0.0 +27 0.0 0.0 +29 0.0 0.0 +kids 0 +OBJECT poly +name "Cylinder.013" +data 9 +Mesh.1615 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc -0.325252 0.291311 -0.097419 +numvert 40 +0.059864 -0.043058 -0.084099 +0.032227 -0.043058 -0.041887 +-0.016459 -0.043058 -0.055127 +-0.018912 -0.043058 -0.105521 +0.028258 -0.043058 -0.123427 +0.059864 0.017638 -0.084099 +0.032227 0.017638 -0.041887 +-0.016459 0.017638 -0.055127 +-0.018912 0.017638 -0.105521 +0.028258 0.017638 -0.123427 +0.023348 -0.023792 -0.105373 +-0.003259 -0.023792 -0.095273 +-0.001876 -0.023792 -0.066847 +0.025587 -0.023792 -0.059378 +0.041177 -0.023792 -0.083189 +0.023348 -0.107632 -0.105373 +-0.003259 -0.107632 -0.095273 +-0.001876 -0.107632 -0.066847 +0.025587 -0.107632 -0.059378 +0.041177 -0.107632 -0.083189 +0.03395 0.034318 0.043717 +0.033883 0.034318 0.104659 +-0.024098 0.034318 0.123427 +-0.059864 0.034318 0.074084 +-0.023989 0.034318 0.02482 +0.03395 0.107632 0.043717 +0.033883 0.107632 0.104659 +-0.024098 0.107632 0.123427 +-0.059864 0.107632 0.074084 +-0.023989 0.107632 0.02482 +-0.017029 0.057589 0.04632 +-0.037266 0.057589 0.074109 +-0.017091 0.057589 0.101943 +0.015615 0.057589 0.091356 +0.015653 0.057589 0.056979 +-0.017029 -0.04368 0.04632 +-0.037266 -0.04368 0.074109 +-0.017091 -0.04368 0.101943 +0.015615 -0.04368 0.091356 +0.015653 -0.04368 0.056979 +numsurf 24 +SURF 0x00 +mat 1 +refs 4 +0 0.0 0.0 +5 0.0 0.0 +6 0.0 0.0 +1 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +1 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +2 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +2 0.0 0.0 +7 0.0 0.0 +8 0.0 0.0 +3 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +3 0.0 0.0 +8 0.0 0.0 +9 0.0 0.0 +4 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +5 0.0 0.0 +0 0.0 0.0 +4 0.0 0.0 +9 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +19 0.0 0.0 +14 0.0 0.0 +13 0.0 0.0 +18 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +18 0.0 0.0 +13 0.0 0.0 +12 0.0 0.0 +17 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +17 0.0 0.0 +12 0.0 0.0 +11 0.0 0.0 +16 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +16 0.0 0.0 +11 0.0 0.0 +10 0.0 0.0 +15 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +14 0.0 0.0 +19 0.0 0.0 +15 0.0 0.0 +10 0.0 0.0 +SURF 0x00 +mat 1 +refs 3 +7 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +5 0.0 0.0 +9 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +20 0.0 0.0 +25 0.0 0.0 +26 0.0 0.0 +21 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +21 0.0 0.0 +26 0.0 0.0 +27 0.0 0.0 +22 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +22 0.0 0.0 +27 0.0 0.0 +28 0.0 0.0 +23 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +23 0.0 0.0 +28 0.0 0.0 +29 0.0 0.0 +24 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +25 0.0 0.0 +20 0.0 0.0 +24 0.0 0.0 +29 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +39 0.0 0.0 +34 0.0 0.0 +33 0.0 0.0 +38 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +38 0.0 0.0 +33 0.0 0.0 +32 0.0 0.0 +37 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +37 0.0 0.0 +32 0.0 0.0 +31 0.0 0.0 +36 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +36 0.0 0.0 +31 0.0 0.0 +30 0.0 0.0 +35 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +34 0.0 0.0 +39 0.0 0.0 +35 0.0 0.0 +30 0.0 0.0 +SURF 0x00 +mat 1 +refs 3 +27 0.0 0.0 +29 0.0 0.0 +28 0.0 0.0 +SURF 0x00 +mat 1 +refs 4 +25 0.0 0.0 +29 0.0 0.0 +27 0.0 0.0 +26 0.0 0.0 +kids 0 +OBJECT poly +name "Plane" +data 9 +Mesh.1616 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.014264 0.406277 -0.134386 +numvert 246 +0.173848 -0.086771 -0.519552 +0.031649 -0.086772 -0.519552 +0.031649 -0.075723 -0.478198 +0.173848 -0.075723 -0.478198 +0.102749 -0.086772 -0.519552 +0.102749 -0.075723 -0.478198 +0.067199 -0.162141 -0.455109 +0.067199 -0.17319 -0.496463 +0.138299 -0.162141 -0.455109 +0.138299 -0.17319 -0.496463 +0.138299 -0.176854 -0.495484 +0.138299 -0.165805 -0.45413 +0.067199 -0.176854 -0.495484 +0.067199 -0.165805 -0.45413 +0.102749 -0.165805 -0.45413 +0.102749 -0.176854 -0.495484 +0.173848 -0.165805 -0.45413 +0.031649 -0.165805 -0.45413 +0.031649 -0.176854 -0.495484 +0.173848 -0.176854 -0.495484 +0.143254 -0.346131 -0.448745 +0.062243 -0.346131 -0.448745 +0.173848 -0.198808 -0.489618 +0.031649 -0.198808 -0.489618 +0.031649 -0.187759 -0.448264 +0.173848 -0.187759 -0.448264 +0.062243 -0.335082 -0.407391 +0.143254 -0.335082 -0.407391 +0.14322 -0.290428 -0.342526 +0.062276 -0.290428 -0.342526 +0.14322 -0.212915 -0.416417 +0.062276 -0.212915 -0.416417 +0.098326 -0.083313 0.152939 +0.290965 -0.327154 0.175891 +0.262152 -0.278839 0.274379 +0.290965 -0.307414 0.256561 +0.254061 -0.335094 -0.022223 +0.023721 -0.335093 0.035411 +0.254061 -0.089717 -0.022223 +0.028215 -0.066642 0.036873 +0.04485 -0.030496 -0.095232 +0.06334 -0.002641 -0.214955 +0.201568 -4.1e-05 -0.245855 +0.240434 -0.030496 -0.126242 +0.04485 -0.246809 -0.108638 +0.06334 -0.168542 -0.208966 +0.201568 -0.165942 -0.239866 +0.240434 -0.23498 -0.126242 +0.221143 -0.061762 0.598612 +0.287527 -0.243079 0.746497 +0.200065 -0.344243 -0.099349 +0.220348 -0.213139 0.90181 +0.214036 0.037847 0.645929 +0.149182 0.027808 0.944825 +0.18458 -0.148963 0.956724 +0.096228 -0.011787 0.345373 +0.139432 -0.308402 -0.279596 +0.06224 -0.354588 -0.471279 +0.025808 -0.205834 -0.27109 +0.065295 -0.150206 -0.593339 +0.065295 -0.26212 -0.585599 +0.001267 -0.386348 -0.749768 +0.001267 -0.315702 -0.786113 +8.4e-05 -0.360642 -0.164951 +0.165289 -0.221836 0.908731 +0.197318 -0.271795 0.872099 +0.257504 -0.312319 0.733018 +0.020347 -0.36387 -0.956724 +0.020347 -0.398813 -0.956724 +0.002516 0.192308 0.944621 +0.22095 0.146086 0.631128 +0.120645 0.149807 0.578861 +0.10309 0.139494 0.384043 +0.09247 0.145995 0.487037 +0.09247 0.162567 0.558642 +0.211585 0.201401 0.626832 +0.142178 0.186135 0.883965 +0.163579 0.183126 0.555946 +0.150371 0.166678 0.484492 +0.081037 0.278486 0.422167 +0.066577 0.307937 0.492467 +0.142178 0.304003 0.815244 +0.059394 0.299648 0.618393 +0.122821 0.38684 0.576439 +0.142178 0.375809 0.657831 +0.104979 0.322309 0.508655 +0.000275 0.379041 0.796509 +0.000275 0.311854 0.919291 +0.173937 0.31409 0.696378 +0.000275 0.136119 0.372388 +0.000275 0.143917 0.481773 +0.000275 0.167108 0.483776 +0.000275 0.261321 0.432639 +0.000275 0.284884 0.499 +0.000275 0.277451 0.513663 +0.000275 0.366538 0.617451 +0.000275 0.350528 0.670773 +0.000275 0.095849 0.378315 +0.000275 0.072846 0.57359 +0.000275 0.034071 0.541989 +0.10309 0.104148 0.390924 +0.120645 0.102333 0.577004 +0.072131 0.118384 0.36011 +0.000275 0.112584 0.351298 +0.000275 0.135976 0.347155 +0.072131 0.138333 0.355301 +0.000275 0.232781 0.316557 +0.000233 0.149716 0.328666 +0.093209 0.241617 0.354921 +0.127584 0.154417 0.35333 +0.207241 0.002652 0.741306 +0.207189 0.186488 0.702892 +0.164668 0.097034 0.775676 +0.115828 0.074389 0.869471 +0.098171 0.184503 0.430265 +0.103334 0.161719 0.3566 +0.000233 0.154951 0.325086 +0.10309 0.13073 0.387484 +0.072131 0.125983 0.357705 +0.000275 0.130814 0.349226 +0.000275 0.378511 0.604623 +0.000275 0.28408 0.508555 +0.104979 0.334283 0.495826 +0.122821 0.398813 0.56361 +0.287527 -0.281578 0.720755 +1e-06 -0.338286 -0.279596 +0.000277 -0.339815 0.735155 +0.000422 -0.336173 0.288056 +1e-06 -0.299291 0.874236 +1e-06 -0.376478 -0.072891 +1e-06 -0.205834 -0.27109 +0.025762 -0.150206 -0.593339 +1e-06 -0.354588 -0.471279 +0.025762 -0.26212 -0.585599 +-0.030913 -0.386348 -0.749768 +-0.030913 -0.315702 -0.786113 +1e-06 -0.36387 -0.956724 +1e-06 -0.398813 -0.956724 +1.4e-05 -0.011787 0.345373 +0.000409 -0.083313 0.152939 +0.000211 -0.066642 0.036873 +0.000571 0.027808 0.944825 +1e-06 -0.148963 0.956724 +1e-06 -0.221836 0.908731 +-0.287526 -0.281578 0.720755 +-0.122821 0.398813 0.56361 +-0.104978 0.334283 0.495826 +-0.07213 0.125983 0.357705 +-0.103089 0.13073 0.387484 +-0.103333 0.161719 0.3566 +-0.09817 0.184503 0.430265 +-0.115827 0.074389 0.869471 +-0.164667 0.097034 0.775676 +-0.207188 0.186488 0.702892 +-0.20724 0.002652 0.741306 +-0.127584 0.154417 0.353331 +-0.093208 0.241617 0.354921 +-0.07213 0.138333 0.355301 +-0.07213 0.118384 0.36011 +-0.120644 0.102333 0.577003 +-0.103089 0.104148 0.390924 +-0.173937 0.31409 0.696378 +-0.104978 0.322309 0.508655 +-0.142177 0.375809 0.657831 +-0.122821 0.38684 0.576439 +-0.059393 0.299648 0.618393 +-0.142177 0.304003 0.815244 +-0.066576 0.307937 0.492467 +-0.081036 0.278486 0.422167 +-0.15037 0.166678 0.484492 +-0.163578 0.183126 0.555946 +-0.142177 0.186135 0.883965 +-0.211585 0.201401 0.626832 +-0.092469 0.162567 0.558642 +-0.092469 0.145995 0.487037 +-0.103089 0.139494 0.384043 +-0.120644 0.149807 0.578861 +-0.22095 0.146086 0.631128 +-0.020346 -0.398813 -0.956724 +-0.020346 -0.36387 -0.956724 +-0.257504 -0.312319 0.733018 +-0.197317 -0.271795 0.872099 +-0.165288 -0.221836 0.908731 +-0.063094 -0.315702 -0.786113 +-0.063094 -0.386348 -0.749768 +-0.013772 -0.26212 -0.585599 +-0.013772 -0.150206 -0.593339 +-0.025807 -0.205834 -0.27109 +-0.062239 -0.354588 -0.471279 +-0.139431 -0.308402 -0.279596 +-0.096227 -0.011787 0.345373 +-0.18458 -0.148963 0.956724 +-0.149182 0.027808 0.944825 +-0.214035 0.037847 0.645929 +-0.220347 -0.213139 0.90181 +-0.200065 -0.344243 -0.099349 +-0.287526 -0.243079 0.746497 +-0.221143 -0.061762 0.598612 +-0.240434 -0.23498 -0.126242 +-0.201568 -0.165942 -0.239866 +-0.06334 -0.168542 -0.208966 +-0.04485 -0.246809 -0.108638 +-0.240434 -0.030496 -0.126242 +-0.201568 -4.1e-05 -0.245855 +-0.06334 -0.002641 -0.214955 +-0.04485 -0.030496 -0.095232 +-0.028214 -0.066642 0.036873 +-0.254061 -0.089717 -0.022223 +-0.023721 -0.335093 0.035411 +-0.254061 -0.335094 -0.022223 +-0.290965 -0.307414 0.256562 +-0.262152 -0.278839 0.274379 +-0.290965 -0.327154 0.175892 +-0.098325 -0.083313 0.152939 +-0.062276 -0.212915 -0.416417 +-0.143221 -0.212915 -0.416417 +-0.062276 -0.290428 -0.342526 +-0.143221 -0.290428 -0.342526 +-0.143254 -0.335082 -0.407391 +-0.062243 -0.335082 -0.407391 +-0.173848 -0.187759 -0.448265 +-0.031648 -0.187759 -0.448264 +-0.031648 -0.198808 -0.489618 +-0.173848 -0.198808 -0.489618 +-0.062243 -0.346131 -0.448745 +-0.143254 -0.346131 -0.448745 +-0.173848 -0.176854 -0.495484 +-0.031648 -0.176854 -0.495484 +-0.031648 -0.165805 -0.45413 +-0.173848 -0.165805 -0.45413 +-0.102748 -0.176854 -0.495484 +-0.102748 -0.165805 -0.45413 +-0.067198 -0.165805 -0.45413 +-0.067198 -0.176854 -0.495484 +-0.138298 -0.165805 -0.45413 +-0.138298 -0.176854 -0.495484 +-0.138298 -0.17319 -0.496463 +-0.138298 -0.162141 -0.455109 +-0.067198 -0.17319 -0.496463 +-0.067198 -0.162141 -0.455109 +-0.102748 -0.075723 -0.478198 +-0.102748 -0.086772 -0.519552 +-0.173848 -0.075723 -0.478198 +-0.031648 -0.075723 -0.478198 +-0.031648 -0.086772 -0.519552 +-0.173848 -0.086772 -0.519552 +numsurf 262 +SURF 0x10 +mat 3 +refs 4 +47 0.0 0.0 +44 0.0 0.0 +45 0.0 0.0 +46 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +43 0.0 0.0 +42 0.0 0.0 +41 0.0 0.0 +40 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +47 0.0 0.0 +46 0.0 0.0 +42 0.0 0.0 +43 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +45 0.0 0.0 +44 0.0 0.0 +40 0.0 0.0 +41 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +43 0.0 0.0 +38 0.0 0.0 +36 0.0 0.0 +47 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +40 0.0 0.0 +39 0.0 0.0 +38 0.0 0.0 +43 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +39 0.0 0.0 +32 0.0 0.0 +33 0.0 0.0 +38 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +38 0.0 0.0 +33 0.0 0.0 +35 0.0 0.0 +36 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +41 0.0 0.0 +31 0.0 0.0 +29 0.0 0.0 +45 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +46 0.0 0.0 +28 0.0 0.0 +30 0.0 0.0 +42 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +42 0.0 0.0 +30 0.0 0.0 +31 0.0 0.0 +41 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +45 0.0 0.0 +29 0.0 0.0 +28 0.0 0.0 +46 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +29 0.0 0.0 +26 0.0 0.0 +27 0.0 0.0 +28 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +30 0.0 0.0 +25 0.0 0.0 +24 0.0 0.0 +31 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +28 0.0 0.0 +27 0.0 0.0 +25 0.0 0.0 +30 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +31 0.0 0.0 +24 0.0 0.0 +26 0.0 0.0 +29 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +24 0.0 0.0 +23 0.0 0.0 +21 0.0 0.0 +26 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +27 0.0 0.0 +20 0.0 0.0 +22 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +26 0.0 0.0 +21 0.0 0.0 +20 0.0 0.0 +27 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +20 0.0 0.0 +21 0.0 0.0 +23 0.0 0.0 +22 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +22 0.0 0.0 +10 0.0 0.0 +19 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +22 0.0 0.0 +19 0.0 0.0 +16 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +24 0.0 0.0 +17 0.0 0.0 +18 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +24 0.0 0.0 +13 0.0 0.0 +17 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +12 0.0 0.0 +23 0.0 0.0 +18 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +11 0.0 0.0 +25 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +13 0.0 0.0 +24 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +10 0.0 0.0 +22 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +0 0.0 0.0 +19 0.0 0.0 +10 0.0 0.0 +9 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +15 0.0 0.0 +4 0.0 0.0 +9 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +14 0.0 0.0 +5 0.0 0.0 +6 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +13 0.0 0.0 +6 0.0 0.0 +2 0.0 0.0 +17 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +11 0.0 0.0 +8 0.0 0.0 +5 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +16 0.0 0.0 +3 0.0 0.0 +8 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +12 0.0 0.0 +7 0.0 0.0 +4 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +18 0.0 0.0 +1 0.0 0.0 +7 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +17 0.0 0.0 +2 0.0 0.0 +1 0.0 0.0 +18 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +19 0.0 0.0 +0 0.0 0.0 +3 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +3 0.0 0.0 +0 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +5 0.0 0.0 +4 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +6 0.0 0.0 +7 0.0 0.0 +1 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +8 0.0 0.0 +9 0.0 0.0 +4 0.0 0.0 +5 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +53 0.0 0.0 +141 0.0 0.0 +142 0.0 0.0 +54 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +53 0.0 0.0 +110 0.0 0.0 +112 0.0 0.0 +113 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +48 0.0 0.0 +33 0.0 0.0 +32 0.0 0.0 +55 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +57 0.0 0.0 +132 0.0 0.0 +133 0.0 0.0 +60 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +58 0.0 0.0 +57 0.0 0.0 +60 0.0 0.0 +59 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +59 0.0 0.0 +60 0.0 0.0 +61 0.0 0.0 +62 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +60 0.0 0.0 +133 0.0 0.0 +134 0.0 0.0 +61 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +54 0.0 0.0 +142 0.0 0.0 +143 0.0 0.0 +64 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +51 0.0 0.0 +54 0.0 0.0 +64 0.0 0.0 +65 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +49 0.0 0.0 +51 0.0 0.0 +65 0.0 0.0 +66 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +66 0.0 0.0 +126 0.0 0.0 +127 0.0 0.0 +34 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +35 0.0 0.0 +49 0.0 0.0 +66 0.0 0.0 +34 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +32 0.0 0.0 +39 0.0 0.0 +140 0.0 0.0 +139 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +61 0.0 0.0 +134 0.0 0.0 +137 0.0 0.0 +68 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +62 0.0 0.0 +61 0.0 0.0 +68 0.0 0.0 +67 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +68 0.0 0.0 +137 0.0 0.0 +136 0.0 0.0 +67 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +72 0.0 0.0 +73 0.0 0.0 +74 0.0 0.0 +71 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +71 0.0 0.0 +74 0.0 0.0 +75 0.0 0.0 +70 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +74 0.0 0.0 +77 0.0 0.0 +75 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +73 0.0 0.0 +78 0.0 0.0 +77 0.0 0.0 +74 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +77 0.0 0.0 +80 0.0 0.0 +82 0.0 0.0 +75 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +80 0.0 0.0 +93 0.0 0.0 +94 0.0 0.0 +85 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +80 0.0 0.0 +85 0.0 0.0 +83 0.0 0.0 +82 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +84 0.0 0.0 +96 0.0 0.0 +86 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +81 0.0 0.0 +84 0.0 0.0 +86 0.0 0.0 +87 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +76 0.0 0.0 +81 0.0 0.0 +87 0.0 0.0 +69 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +96 0.0 0.0 +84 0.0 0.0 +83 0.0 0.0 +95 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +93 0.0 0.0 +80 0.0 0.0 +79 0.0 0.0 +92 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +91 0.0 0.0 +78 0.0 0.0 +73 0.0 0.0 +90 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +90 0.0 0.0 +73 0.0 0.0 +72 0.0 0.0 +89 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +71 0.0 0.0 +70 0.0 0.0 +52 0.0 0.0 +101 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +97 0.0 0.0 +100 0.0 0.0 +101 0.0 0.0 +98 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +98 0.0 0.0 +101 0.0 0.0 +52 0.0 0.0 +99 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +52 0.0 0.0 +48 0.0 0.0 +99 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +100 0.0 0.0 +97 0.0 0.0 +103 0.0 0.0 +102 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +72 0.0 0.0 +117 0.0 0.0 +118 0.0 0.0 +105 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +89 0.0 0.0 +72 0.0 0.0 +105 0.0 0.0 +104 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +104 0.0 0.0 +105 0.0 0.0 +118 0.0 0.0 +119 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +78 0.0 0.0 +91 0.0 0.0 +107 0.0 0.0 +109 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +92 0.0 0.0 +79 0.0 0.0 +108 0.0 0.0 +106 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +79 0.0 0.0 +114 0.0 0.0 +115 0.0 0.0 +108 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +106 0.0 0.0 +108 0.0 0.0 +115 0.0 0.0 +116 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +84 0.0 0.0 +81 0.0 0.0 +76 0.0 0.0 +88 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +82 0.0 0.0 +83 0.0 0.0 +84 0.0 0.0 +88 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +88 0.0 0.0 +76 0.0 0.0 +111 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +110 0.0 0.0 +53 0.0 0.0 +54 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +52 0.0 0.0 +110 0.0 0.0 +54 0.0 0.0 +51 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +82 0.0 0.0 +88 0.0 0.0 +111 0.0 0.0 +75 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +112 0.0 0.0 +111 0.0 0.0 +76 0.0 0.0 +113 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +115 0.0 0.0 +109 0.0 0.0 +107 0.0 0.0 +116 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +114 0.0 0.0 +78 0.0 0.0 +109 0.0 0.0 +115 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +114 0.0 0.0 +79 0.0 0.0 +80 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +118 0.0 0.0 +102 0.0 0.0 +103 0.0 0.0 +119 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +117 0.0 0.0 +100 0.0 0.0 +102 0.0 0.0 +118 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +117 0.0 0.0 +72 0.0 0.0 +71 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +95 0.0 0.0 +83 0.0 0.0 +123 0.0 0.0 +120 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +83 0.0 0.0 +85 0.0 0.0 +122 0.0 0.0 +123 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +85 0.0 0.0 +94 0.0 0.0 +121 0.0 0.0 +122 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +120 0.0 0.0 +123 0.0 0.0 +122 0.0 0.0 +121 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +124 0.0 0.0 +48 0.0 0.0 +52 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +124 0.0 0.0 +49 0.0 0.0 +35 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +129 0.0 0.0 +50 0.0 0.0 +34 0.0 0.0 +127 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +126 0.0 0.0 +66 0.0 0.0 +65 0.0 0.0 +128 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +36 0.0 0.0 +50 0.0 0.0 +56 0.0 0.0 +47 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +47 0.0 0.0 +56 0.0 0.0 +57 0.0 0.0 +58 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +44 0.0 0.0 +47 0.0 0.0 +58 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +11 0.0 0.0 +14 0.0 0.0 +24 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +12 0.0 0.0 +15 0.0 0.0 +22 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +48 0.0 0.0 +124 0.0 0.0 +35 0.0 0.0 +33 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +49 0.0 0.0 +124 0.0 0.0 +52 0.0 0.0 +51 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +34 0.0 0.0 +50 0.0 0.0 +36 0.0 0.0 +35 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +78 0.0 0.0 +114 0.0 0.0 +80 0.0 0.0 +77 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +100 0.0 0.0 +117 0.0 0.0 +71 0.0 0.0 +101 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +75 0.0 0.0 +111 0.0 0.0 +112 0.0 0.0 +70 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +110 0.0 0.0 +52 0.0 0.0 +70 0.0 0.0 +112 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +37 0.0 0.0 +39 0.0 0.0 +40 0.0 0.0 +44 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +37 0.0 0.0 +58 0.0 0.0 +39 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +132 0.0 0.0 +57 0.0 0.0 +125 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +135 0.0 0.0 +62 0.0 0.0 +67 0.0 0.0 +136 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +131 0.0 0.0 +59 0.0 0.0 +62 0.0 0.0 +135 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +130 0.0 0.0 +58 0.0 0.0 +59 0.0 0.0 +131 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +138 0.0 0.0 +55 0.0 0.0 +32 0.0 0.0 +139 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +141 0.0 0.0 +53 0.0 0.0 +113 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +198 0.0 0.0 +199 0.0 0.0 +200 0.0 0.0 +201 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +202 0.0 0.0 +205 0.0 0.0 +204 0.0 0.0 +203 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +198 0.0 0.0 +202 0.0 0.0 +203 0.0 0.0 +199 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +200 0.0 0.0 +204 0.0 0.0 +205 0.0 0.0 +201 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +202 0.0 0.0 +198 0.0 0.0 +209 0.0 0.0 +207 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +205 0.0 0.0 +202 0.0 0.0 +207 0.0 0.0 +206 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +206 0.0 0.0 +207 0.0 0.0 +212 0.0 0.0 +213 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +207 0.0 0.0 +209 0.0 0.0 +210 0.0 0.0 +212 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +204 0.0 0.0 +200 0.0 0.0 +216 0.0 0.0 +214 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +199 0.0 0.0 +203 0.0 0.0 +215 0.0 0.0 +217 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +203 0.0 0.0 +204 0.0 0.0 +214 0.0 0.0 +215 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +200 0.0 0.0 +199 0.0 0.0 +217 0.0 0.0 +216 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +216 0.0 0.0 +217 0.0 0.0 +218 0.0 0.0 +219 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +215 0.0 0.0 +214 0.0 0.0 +221 0.0 0.0 +220 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +217 0.0 0.0 +215 0.0 0.0 +220 0.0 0.0 +218 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +214 0.0 0.0 +216 0.0 0.0 +219 0.0 0.0 +221 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +221 0.0 0.0 +219 0.0 0.0 +224 0.0 0.0 +222 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +218 0.0 0.0 +220 0.0 0.0 +223 0.0 0.0 +225 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +219 0.0 0.0 +218 0.0 0.0 +225 0.0 0.0 +224 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +225 0.0 0.0 +223 0.0 0.0 +222 0.0 0.0 +224 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +223 0.0 0.0 +226 0.0 0.0 +235 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +223 0.0 0.0 +220 0.0 0.0 +229 0.0 0.0 +226 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +221 0.0 0.0 +222 0.0 0.0 +227 0.0 0.0 +228 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +221 0.0 0.0 +228 0.0 0.0 +232 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +233 0.0 0.0 +227 0.0 0.0 +222 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +234 0.0 0.0 +229 0.0 0.0 +220 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +232 0.0 0.0 +231 0.0 0.0 +221 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +235 0.0 0.0 +230 0.0 0.0 +223 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +245 0.0 0.0 +236 0.0 0.0 +235 0.0 0.0 +226 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +230 0.0 0.0 +235 0.0 0.0 +236 0.0 0.0 +241 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +231 0.0 0.0 +232 0.0 0.0 +239 0.0 0.0 +240 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +232 0.0 0.0 +228 0.0 0.0 +243 0.0 0.0 +239 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +234 0.0 0.0 +231 0.0 0.0 +240 0.0 0.0 +237 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +229 0.0 0.0 +234 0.0 0.0 +237 0.0 0.0 +242 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +233 0.0 0.0 +230 0.0 0.0 +241 0.0 0.0 +238 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +227 0.0 0.0 +233 0.0 0.0 +238 0.0 0.0 +244 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +228 0.0 0.0 +227 0.0 0.0 +244 0.0 0.0 +243 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +226 0.0 0.0 +229 0.0 0.0 +242 0.0 0.0 +245 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +242 0.0 0.0 +237 0.0 0.0 +236 0.0 0.0 +245 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +240 0.0 0.0 +239 0.0 0.0 +238 0.0 0.0 +241 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +239 0.0 0.0 +243 0.0 0.0 +244 0.0 0.0 +238 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +237 0.0 0.0 +240 0.0 0.0 +241 0.0 0.0 +236 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +192 0.0 0.0 +191 0.0 0.0 +142 0.0 0.0 +141 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +192 0.0 0.0 +151 0.0 0.0 +152 0.0 0.0 +154 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +197 0.0 0.0 +190 0.0 0.0 +213 0.0 0.0 +212 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +188 0.0 0.0 +185 0.0 0.0 +133 0.0 0.0 +132 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +187 0.0 0.0 +186 0.0 0.0 +185 0.0 0.0 +188 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +186 0.0 0.0 +183 0.0 0.0 +184 0.0 0.0 +185 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +185 0.0 0.0 +184 0.0 0.0 +134 0.0 0.0 +133 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +191 0.0 0.0 +182 0.0 0.0 +143 0.0 0.0 +142 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +194 0.0 0.0 +181 0.0 0.0 +182 0.0 0.0 +191 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +196 0.0 0.0 +180 0.0 0.0 +181 0.0 0.0 +194 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +180 0.0 0.0 +211 0.0 0.0 +127 0.0 0.0 +126 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +195 0.0 0.0 +63 0.0 0.0 +129 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +210 0.0 0.0 +211 0.0 0.0 +180 0.0 0.0 +196 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +213 0.0 0.0 +139 0.0 0.0 +140 0.0 0.0 +206 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +184 0.0 0.0 +178 0.0 0.0 +137 0.0 0.0 +134 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +183 0.0 0.0 +179 0.0 0.0 +178 0.0 0.0 +184 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +178 0.0 0.0 +179 0.0 0.0 +136 0.0 0.0 +137 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +175 0.0 0.0 +176 0.0 0.0 +173 0.0 0.0 +174 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +176 0.0 0.0 +177 0.0 0.0 +172 0.0 0.0 +173 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +173 0.0 0.0 +172 0.0 0.0 +170 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +174 0.0 0.0 +173 0.0 0.0 +170 0.0 0.0 +169 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +170 0.0 0.0 +172 0.0 0.0 +165 0.0 0.0 +167 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +167 0.0 0.0 +162 0.0 0.0 +94 0.0 0.0 +93 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +167 0.0 0.0 +165 0.0 0.0 +164 0.0 0.0 +162 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +163 0.0 0.0 +86 0.0 0.0 +96 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +166 0.0 0.0 +87 0.0 0.0 +86 0.0 0.0 +163 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +171 0.0 0.0 +69 0.0 0.0 +87 0.0 0.0 +166 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +96 0.0 0.0 +95 0.0 0.0 +164 0.0 0.0 +163 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +93 0.0 0.0 +92 0.0 0.0 +168 0.0 0.0 +167 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +91 0.0 0.0 +90 0.0 0.0 +174 0.0 0.0 +169 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +90 0.0 0.0 +89 0.0 0.0 +175 0.0 0.0 +174 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +176 0.0 0.0 +159 0.0 0.0 +193 0.0 0.0 +177 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +97 0.0 0.0 +98 0.0 0.0 +159 0.0 0.0 +160 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +98 0.0 0.0 +99 0.0 0.0 +193 0.0 0.0 +159 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +193 0.0 0.0 +99 0.0 0.0 +197 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +160 0.0 0.0 +158 0.0 0.0 +103 0.0 0.0 +97 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +175 0.0 0.0 +157 0.0 0.0 +147 0.0 0.0 +148 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +89 0.0 0.0 +104 0.0 0.0 +157 0.0 0.0 +175 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +104 0.0 0.0 +119 0.0 0.0 +147 0.0 0.0 +157 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +169 0.0 0.0 +155 0.0 0.0 +107 0.0 0.0 +91 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +92 0.0 0.0 +106 0.0 0.0 +156 0.0 0.0 +168 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +168 0.0 0.0 +156 0.0 0.0 +149 0.0 0.0 +150 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +106 0.0 0.0 +116 0.0 0.0 +149 0.0 0.0 +156 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +163 0.0 0.0 +161 0.0 0.0 +171 0.0 0.0 +166 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +165 0.0 0.0 +161 0.0 0.0 +163 0.0 0.0 +164 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +161 0.0 0.0 +153 0.0 0.0 +171 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +154 0.0 0.0 +191 0.0 0.0 +192 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +193 0.0 0.0 +194 0.0 0.0 +191 0.0 0.0 +154 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +165 0.0 0.0 +172 0.0 0.0 +153 0.0 0.0 +161 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +152 0.0 0.0 +151 0.0 0.0 +171 0.0 0.0 +153 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +149 0.0 0.0 +116 0.0 0.0 +107 0.0 0.0 +155 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +150 0.0 0.0 +149 0.0 0.0 +155 0.0 0.0 +169 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +150 0.0 0.0 +167 0.0 0.0 +168 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +147 0.0 0.0 +119 0.0 0.0 +103 0.0 0.0 +158 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +148 0.0 0.0 +147 0.0 0.0 +158 0.0 0.0 +160 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +148 0.0 0.0 +176 0.0 0.0 +175 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +95 0.0 0.0 +120 0.0 0.0 +145 0.0 0.0 +164 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +164 0.0 0.0 +145 0.0 0.0 +146 0.0 0.0 +162 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +162 0.0 0.0 +146 0.0 0.0 +121 0.0 0.0 +94 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +120 0.0 0.0 +121 0.0 0.0 +146 0.0 0.0 +145 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +144 0.0 0.0 +193 0.0 0.0 +197 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +144 0.0 0.0 +210 0.0 0.0 +196 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +129 0.0 0.0 +127 0.0 0.0 +211 0.0 0.0 +195 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +126 0.0 0.0 +128 0.0 0.0 +181 0.0 0.0 +180 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +209 0.0 0.0 +198 0.0 0.0 +189 0.0 0.0 +195 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +198 0.0 0.0 +187 0.0 0.0 +188 0.0 0.0 +189 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +201 0.0 0.0 +187 0.0 0.0 +198 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +234 0.0 0.0 +220 0.0 0.0 +221 0.0 0.0 +231 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +233 0.0 0.0 +222 0.0 0.0 +223 0.0 0.0 +230 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +197 0.0 0.0 +212 0.0 0.0 +210 0.0 0.0 +144 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +196 0.0 0.0 +194 0.0 0.0 +193 0.0 0.0 +144 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +211 0.0 0.0 +210 0.0 0.0 +209 0.0 0.0 +195 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +169 0.0 0.0 +170 0.0 0.0 +167 0.0 0.0 +150 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +160 0.0 0.0 +159 0.0 0.0 +176 0.0 0.0 +148 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +172 0.0 0.0 +177 0.0 0.0 +152 0.0 0.0 +153 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +154 0.0 0.0 +152 0.0 0.0 +177 0.0 0.0 +193 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +208 0.0 0.0 +201 0.0 0.0 +205 0.0 0.0 +206 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +208 0.0 0.0 +206 0.0 0.0 +187 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +135 0.0 0.0 +136 0.0 0.0 +179 0.0 0.0 +183 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +131 0.0 0.0 +135 0.0 0.0 +183 0.0 0.0 +186 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +130 0.0 0.0 +131 0.0 0.0 +186 0.0 0.0 +187 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +138 0.0 0.0 +139 0.0 0.0 +213 0.0 0.0 +190 0.0 0.0 +SURF 0x10 +mat 3 +refs 3 +141 0.0 0.0 +151 0.0 0.0 +192 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +69 0.0 0.0 +141 0.0 0.0 +113 0.0 0.0 +76 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +69 0.0 0.0 +171 0.0 0.0 +151 0.0 0.0 +141 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +57 0.0 0.0 +56 0.0 0.0 +63 0.0 0.0 +125 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +58 0.0 0.0 +130 0.0 0.0 +140 0.0 0.0 +39 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +56 0.0 0.0 +50 0.0 0.0 +129 0.0 0.0 +63 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +65 0.0 0.0 +64 0.0 0.0 +143 0.0 0.0 +128 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +189 0.0 0.0 +188 0.0 0.0 +132 0.0 0.0 +125 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +187 0.0 0.0 +206 0.0 0.0 +140 0.0 0.0 +130 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +195 0.0 0.0 +189 0.0 0.0 +125 0.0 0.0 +63 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +181 0.0 0.0 +128 0.0 0.0 +143 0.0 0.0 +182 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +99 0.0 0.0 +138 0.0 0.0 +190 0.0 0.0 +197 0.0 0.0 +SURF 0x10 +mat 3 +refs 4 +48 0.0 0.0 +55 0.0 0.0 +138 0.0 0.0 +99 0.0 0.0 +kids 0 +OBJECT poly +name "WheelFront.R" +data 9 +Mesh.1617 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.237866 0.114071 -0.380136 +numvert 18 +0.070939 -1e-06 1e-06 +-0.070939 -1e-06 1e-06 +0.070939 0.110597 -0.04541 +0.070939 0.110313 0.046097 +0.070939 0.04541 0.110599 +0.070939 -0.046095 0.110316 +0.070939 -0.110598 0.04541 +0.070939 -0.110315 -0.046095 +0.070939 -0.04541 -0.110599 +0.070939 0.046095 -0.110314 +-0.070939 0.110598 -0.04541 +-0.070939 0.110313 0.046097 +-0.070939 0.04541 0.110599 +-0.070939 -0.046095 0.110316 +-0.070939 -0.110598 0.04541 +-0.070939 -0.110315 -0.046095 +-0.070939 -0.04541 -0.110599 +-0.070939 0.046095 -0.110314 +numsurf 24 +SURF 0x10 +mat 2 +refs 4 +9 0.0 0.0 +17 0.0 0.0 +10 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +11 0.0 0.0 +3 0.0 0.0 +2 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +12 0.0 0.0 +4 0.0 0.0 +3 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +13 0.0 0.0 +5 0.0 0.0 +4 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +14 0.0 0.0 +6 0.0 0.0 +5 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +15 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +16 0.0 0.0 +8 0.0 0.0 +7 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 2 +refs 4 +17 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +9 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +10 0.0 0.0 +17 0.0 0.0 +1 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +2 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +11 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +3 0.0 0.0 +4 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +12 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +4 0.0 0.0 +5 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +13 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +5 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +14 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +15 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +7 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +16 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +0 0.0 0.0 +8 0.0 0.0 +9 0.0 0.0 +SURF 0x10 +mat 2 +refs 3 +1 0.0 0.0 +17 0.0 0.0 +16 0.0 0.0 +kids 0 +OBJECT poly +name "Cube.011" +data 9 +Mesh.1618 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.014709 0.170996 -0.107889 +numvert 36 +-0.426094 -0.134345 -0.024934 +-0.252377 -0.134345 -0.145936 +-0.251394 -0.134661 -0.145674 +-0.278875 -0.134661 -0.024942 +-0.426094 0.059031 -0.024934 +-0.252377 0.029214 -0.145936 +-0.251394 0.029529 -0.145674 +-0.278875 0.059346 -0.024942 +-0.277919 -0.134661 0.03692 +-0.277919 0.134661 0.03692 +-0.426094 -0.134345 0.03693 +-0.426094 0.134345 0.03693 +-0.374619 -0.134345 0.145936 +-0.308707 -0.121885 0.144142 +-0.374619 0.134345 0.145936 +-0.308707 0.121885 0.144142 +-0.366494 -0.134345 -0.100824 +-0.366494 0.059031 -0.100824 +0.366495 0.059031 -0.100824 +0.366495 -0.134345 -0.100824 +0.308707 0.121885 0.144143 +0.37462 0.134345 0.145936 +0.308707 -0.121885 0.144143 +0.37462 -0.134345 0.145936 +0.426094 0.134345 0.03693 +0.426094 -0.134345 0.03693 +0.277919 0.134661 0.03692 +0.277919 -0.134661 0.03692 +0.278875 0.059346 -0.024942 +0.251394 0.029529 -0.145674 +0.252377 0.029214 -0.145936 +0.426094 0.059031 -0.024934 +0.278875 -0.134661 -0.024942 +0.251394 -0.134661 -0.145674 +0.252377 -0.134345 -0.145936 +0.426094 -0.134345 -0.024934 +numsurf 38 +SURF 0x10 +mat 4 +refs 3 +0 0.0 0.0 +16 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +6 0.0 0.0 +5 0.0 0.0 +17 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +1 0.0 0.0 +5 0.0 0.0 +6 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +0 0.0 0.0 +4 0.0 0.0 +17 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +2 0.0 0.0 +6 0.0 0.0 +7 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +3 0.0 0.0 +7 0.0 0.0 +9 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +4 0.0 0.0 +0 0.0 0.0 +10 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +7 0.0 0.0 +4 0.0 0.0 +11 0.0 0.0 +9 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +0 0.0 0.0 +3 0.0 0.0 +8 0.0 0.0 +10 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +10 0.0 0.0 +8 0.0 0.0 +13 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +9 0.0 0.0 +11 0.0 0.0 +14 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +11 0.0 0.0 +10 0.0 0.0 +12 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +8 0.0 0.0 +9 0.0 0.0 +15 0.0 0.0 +13 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +14 0.0 0.0 +12 0.0 0.0 +13 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +17 0.0 0.0 +5 0.0 0.0 +1 0.0 0.0 +16 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +17 0.0 0.0 +4 0.0 0.0 +7 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +17 0.0 0.0 +7 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +16 0.0 0.0 +1 0.0 0.0 +2 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +16 0.0 0.0 +2 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +35 0.0 0.0 +32 0.0 0.0 +19 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +29 0.0 0.0 +18 0.0 0.0 +30 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +34 0.0 0.0 +33 0.0 0.0 +29 0.0 0.0 +30 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +35 0.0 0.0 +19 0.0 0.0 +18 0.0 0.0 +31 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +33 0.0 0.0 +32 0.0 0.0 +28 0.0 0.0 +29 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +32 0.0 0.0 +27 0.0 0.0 +26 0.0 0.0 +28 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +25 0.0 0.0 +35 0.0 0.0 +31 0.0 0.0 +24 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +28 0.0 0.0 +26 0.0 0.0 +24 0.0 0.0 +31 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +35 0.0 0.0 +25 0.0 0.0 +27 0.0 0.0 +32 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +25 0.0 0.0 +23 0.0 0.0 +22 0.0 0.0 +27 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +26 0.0 0.0 +20 0.0 0.0 +21 0.0 0.0 +24 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +24 0.0 0.0 +21 0.0 0.0 +23 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +27 0.0 0.0 +22 0.0 0.0 +20 0.0 0.0 +26 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +21 0.0 0.0 +20 0.0 0.0 +22 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 4 +refs 4 +18 0.0 0.0 +19 0.0 0.0 +34 0.0 0.0 +30 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +18 0.0 0.0 +28 0.0 0.0 +31 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +18 0.0 0.0 +29 0.0 0.0 +28 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +19 0.0 0.0 +33 0.0 0.0 +34 0.0 0.0 +SURF 0x10 +mat 4 +refs 3 +19 0.0 0.0 +32 0.0 0.0 +33 0.0 0.0 +kids 0 +OBJECT poly +name "Cube.002" +data 9 +Mesh.1619 +crease 30 +rot 1 0 0 0 1 0 0 0 1 +loc 0.014573 0.279661 0.093805 +numvert 129 +1.2e-05 -0.219478 0.161689 +0 -0.219478 -0.252251 +-0.116108 -0.262982 0.191153 +-0.144258 -0.203817 -0.336726 +-0.144258 -0.247322 -0.336726 +0.000469 -0.219478 -0.336726 +-0.18368 -0.188157 0.176421 +-0.162913 -0.231662 0.191153 +-0.176601 -0.188157 -0.252251 +-0.176601 -0.262581 -0.252251 +-0.191247 -0.262581 0.132224 +-0.252474 -0.262581 0.187091 +-0.238843 -0.262581 -0.252251 +-0.190279 -0.231662 0.191153 +-0.205858 -0.188157 -0.336726 +-0.205858 -0.231661 -0.336726 +-0.205858 -0.129719 -0.284622 +-0.176595 -0.105227 0.190882 +-0.292927 -0.109341 -0.176129 +-0.292927 -0.062162 0.128866 +-0.221891 -0.062162 0.128866 +-0.221891 -0.109341 -0.176129 +-0.152211 -0.129719 -0.284622 +-0.376317 -0.143991 0.116607 +-0.376317 -0.142971 -0.153911 +-0.324348 -0.141994 0.156823 +-0.324348 -0.175203 0.162391 +-0.324348 -0.205617 0.162391 +-0.376317 -0.175203 -0.195723 +-0.376317 -0.227232 -0.195723 +-0.376317 -0.227232 0.116335 +-0.376317 -0.175203 0.116335 +-0.183902 -0.13214 0.590742 +-0.183902 -0.175645 0.590742 +-0.15036 -0.218711 0.590742 +-0.15036 -0.175207 0.590742 +2.8e-05 -0.206528 0.590742 +0.000468 -0.250032 0.590742 +-0.080114 -0.250032 0.590742 +2.8e-05 -0.124544 0.764291 +2.8e-05 -0.104306 0.72578 +-0.150359 -0.089736 0.698054 +-0.150359 -0.109974 0.736565 +-0.183902 -0.089941 0.698442 +-0.183902 -0.069703 0.659931 +-0.14916 0.169563 0.715785 +-0.14916 0.176002 0.743578 +-0.121745 0.182376 0.771093 +-0.121745 0.175937 0.743299 +2.8e-05 0.180573 0.763308 +2.8e-05 0.187012 0.791101 +0.000469 -0.215861 -0.598095 +-0.136304 -0.262982 -0.598095 +-0.136304 -0.219478 -0.598095 +-0.270859 -0.219478 -0.598095 +-0.270859 -0.262982 -0.598095 +-0.270859 -0.262982 -0.692058 +-0.270859 -0.219478 -0.692058 +-0.136304 -0.262982 -0.692058 +0.000469 -0.215861 -0.692058 +-0.136304 -0.164666 -0.692058 +-0.205013 -0.164666 -0.692058 +-0.205013 -0.164666 -0.598095 +-0.136304 -0.164666 -0.598095 +-0.110083 -0.187678 -0.757682 +0.000469 -0.215861 -0.790676 +0.000469 -0.250521 -0.791101 +-0.127549 -0.242524 -0.76474 +0.127557 -0.242524 -0.76474 +0.110091 -0.187678 -0.757682 +0.136313 -0.164666 -0.598095 +0.205022 -0.164666 -0.598095 +0.205022 -0.164666 -0.692058 +0.136313 -0.164666 -0.692058 +0.136313 -0.262982 -0.692058 +0.270868 -0.219478 -0.692058 +0.270868 -0.262982 -0.692058 +0.270868 -0.262982 -0.598096 +0.270868 -0.219478 -0.598095 +0.136313 -0.219478 -0.598095 +0.136313 -0.262982 -0.598095 +0.121801 0.175937 0.743299 +0.121801 0.182376 0.771093 +0.149216 0.176002 0.743578 +0.149216 0.169563 0.715785 +0.183958 -0.069703 0.659931 +0.183958 -0.089941 0.698442 +0.150415 -0.109974 0.736565 +0.150415 -0.089736 0.698054 +0.080169 -0.250032 0.590742 +0.150415 -0.175207 0.590742 +0.150415 -0.218711 0.590742 +0.183958 -0.175645 0.590742 +0.183958 -0.13214 0.590742 +0.376317 -0.175203 0.116335 +0.376317 -0.227232 0.116335 +0.376317 -0.227232 -0.195723 +0.376317 -0.175203 -0.195723 +0.324357 -0.205617 0.162391 +0.324357 -0.175203 0.162391 +0.324357 -0.141994 0.156823 +0.376317 -0.142971 -0.153911 +0.376317 -0.143991 0.116607 +0.15222 -0.129719 -0.284622 +0.176619 -0.105227 0.190882 +0.221892 -0.109341 -0.176129 +0.221892 -0.062162 0.128866 +0.292927 -0.062162 0.128866 +0.292927 -0.109341 -0.176129 +0.205866 -0.129719 -0.284622 +0.205866 -0.231661 -0.336726 +0.205866 -0.188157 -0.336726 +0.1837 -0.188157 0.176421 +0.190303 -0.231662 0.191153 +0.238843 -0.262581 -0.252251 +0.252482 -0.262581 0.187091 +0.191255 -0.262581 0.132224 +0.176601 -0.262581 -0.252251 +0.176601 -0.188157 -0.252251 +0.162936 -0.231661 0.191153 +0.144267 -0.203817 -0.336726 +0.144267 -0.247322 -0.336726 +0.116131 -0.262982 0.191153 +0.086214 0.253909 0.738238 +0.086214 0.258005 0.755919 +2.8e-05 0.258885 0.759719 +2.8e-05 0.262982 0.7774 +-0.086158 0.253909 0.738238 +-0.086158 0.258005 0.755919 +numsurf 134 +SURF 0x10 +mat 5 +refs 3 +1 0.0 0.0 +5 0.0 0.0 +3 0.0 0.0 +SURF 0x10 +mat 5 +refs 3 +1 0.0 0.0 +3 0.0 0.0 +8 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +0 0.0 0.0 +1 0.0 0.0 +8 0.0 0.0 +6 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +9 0.0 0.0 +10 0.0 0.0 +11 0.0 0.0 +12 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +10 0.0 0.0 +7 0.0 0.0 +13 0.0 0.0 +11 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +4 0.0 0.0 +9 0.0 0.0 +12 0.0 0.0 +15 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +3 0.0 0.0 +4 0.0 0.0 +15 0.0 0.0 +14 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +3 0.0 0.0 +14 0.0 0.0 +16 0.0 0.0 +22 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +6 0.0 0.0 +8 0.0 0.0 +21 0.0 0.0 +20 0.0 0.0 +SURF 0x10 +mat 5 +refs 3 +6 0.0 0.0 +20 0.0 0.0 +17 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +8 0.0 0.0 +3 0.0 0.0 +22 0.0 0.0 +21 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +20 0.0 0.0 +21 0.0 0.0 +18 0.0 0.0 +19 0.0 0.0 +SURF 0x10 +mat 5 +refs 3 +17 0.0 0.0 +20 0.0 0.0 +19 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +21 0.0 0.0 +22 0.0 0.0 +16 0.0 0.0 +18 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +19 0.0 0.0 +18 0.0 0.0 +24 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +17 0.0 0.0 +19 0.0 0.0 +23 0.0 0.0 +25 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +6 0.0 0.0 +17 0.0 0.0 +25 0.0 0.0 +26 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +13 0.0 0.0 +6 0.0 0.0 +26 0.0 0.0 +27 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +11 0.0 0.0 +13 0.0 0.0 +27 0.0 0.0 +30 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +12 0.0 0.0 +11 0.0 0.0 +30 0.0 0.0 +29 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +31 0.0 0.0 +28 0.0 0.0 +29 0.0 0.0 +30 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +31 0.0 0.0 +30 0.0 0.0 +27 0.0 0.0 +26 0.0 0.0 +SURF 0x10 +mat 5 +refs 4 +31 0.0 0.0 +26 0.0 0.0 +25 0.0 0.0 +23 0.0 0.0 +SURF 0x10 +mat 5 +... [truncated message content] |
From: <hik...@us...> - 2008-03-05 03:55:59
|
Revision: 1631 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1631&view=rev Author: hikerstk Date: 2008-03-04 19:55:58 -0800 (Tue, 04 Mar 2008) Log Message: ----------- Updated READMEs, added missing files to Makefile.ams (seer1630 on 0.4rc1). Modified Paths: -------------- trunk/supertuxkart/Makefile.am trunk/supertuxkart/README.macosx trunk/supertuxkart/README.windows trunk/supertuxkart/doc/players_manual/Makefile.am Removed Paths: ------------- trunk/supertuxkart/README.bullet Modified: trunk/supertuxkart/Makefile.am =================================================================== --- trunk/supertuxkart/Makefile.am 2008-03-05 03:54:33 UTC (rev 1630) +++ trunk/supertuxkart/Makefile.am 2008-03-05 03:55:58 UTC (rev 1631) @@ -2,5 +2,5 @@ SUBDIRS = @BULLETTREE@ src wavs models oggs doc data fonts -EXTRA_DIST = README ChangeLog COPYING missing +EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing Deleted: trunk/supertuxkart/README.bullet =================================================================== --- trunk/supertuxkart/README.bullet 2008-03-05 03:54:33 UTC (rev 1630) +++ trunk/supertuxkart/README.bullet 2008-03-05 03:55:58 UTC (rev 1631) @@ -1,28 +0,0 @@ -Beginning with revision r1325 bullet physics is being used -in SuperTuxKart. A copy of bullet is included in -the sources and the STK build environment, so it's -not necessary to install your own version. - -Even though we officiall switched to bullet physics, -not all 'old' features of STK are fully supported yet. -For now mainly the race track works as expected, all tracks -can be played. Most important bugs: -- not all collectable work - (zippers don't do much at the moment, rockets and sparks mostly - work, but are sometimes too high) -- karts are not automatically rescued when touching - water or lava -- no proper friction handling, so no skidding - (though skidding potentially works - if the friction is - set correctly). -- physics parameters have been improved, but might need - additional tuning -- rescuing an upside-down kart will return the kart to the middle - of the track (waypoints) - the kart should be returned to where - it ended, just with a proper orientation. -- tuxtrack is using real rigid bodies for the roadcone and roadblock, - so they are pushed around when hit by a kart. Currently, the - start orientation is not used, so the heading of the objects - is currently wrong. - Furthermore, the cones currently don't stop rolling around. - Modified: trunk/supertuxkart/README.macosx =================================================================== --- trunk/supertuxkart/README.macosx 2008-03-05 03:54:33 UTC (rev 1630) +++ trunk/supertuxkart/README.macosx 2008-03-05 03:55:58 UTC (rev 1631) @@ -1,3 +1,12 @@ +The latest information about compilation on Mac are on our wiki: +http://supertuxkart.sourceforge.net/Building_and_packaging_on_OSX + +The older instructions should still work, and are quite detailed. +Note that we supply a modified version of plib (on our download page +at http://sourceforge.net/project/showfiles.php?group_id=202302) +which fixes a few compilation problems on Macs. We strongly recommend +to use this version (unless a newer plib version is released). + System requirements Mac: PowerPC- or Intel-Mac with 800 MHz or more, 1 GHz recommended 3D-graphics card with 32 MB or more. Modified: trunk/supertuxkart/README.windows =================================================================== --- trunk/supertuxkart/README.windows 2008-03-05 03:54:33 UTC (rev 1630) +++ trunk/supertuxkart/README.windows 2008-03-05 03:55:58 UTC (rev 1631) @@ -1,3 +1,17 @@ +NOTE +==== +If you have downloaded the 0.4 version and it does not start, please +install the Microsoft Visual C++ redistributable package ('vcredist_x86.exe') +included in this directory. + +If you don't hear any sound, you have to install OpenAL (see http://ww.openal.org). +Simply install the OpenAL redistributable ('oalinst.exe'). + +The release comes with a full installer, which includes these redistributables. + + +If you are downloading a source version and want to compile it yourself: + There are two documented ways to compile an executable for windows: using cygwin, and using visual c++ (tested with the free Express version). @@ -42,6 +56,8 @@ You still have to install all dependencies, and: 1) Modify plib: + Best choice would be to use the plib version from our download page, + since it contains all bugfixes that are necessary. Otherwise: In src/ssg/ssgLoadAC.cxx replace: loader_fd = fopen ( filename, "ra" ) ; with Modified: trunk/supertuxkart/doc/players_manual/Makefile.am =================================================================== --- trunk/supertuxkart/doc/players_manual/Makefile.am 2008-03-05 03:54:33 UTC (rev 1630) +++ trunk/supertuxkart/doc/players_manual/Makefile.am 2008-03-05 03:55:58 UTC (rev 1631) @@ -2,6 +2,6 @@ pkgdatadir = $(datadir)/games/@PACKAGE@/doc/players_manual -pkgdata_DATA = manual.html $(wildcard *.png) +pkgdata_DATA = manual.html $(wildcard *.png) $(wildcard *.jpg) EXTRA_DIST = $(pkgdata_DATA) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-03-05 13:22:04
|
Revision: 1636 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1636&view=rev Author: hikerstk Date: 2008-03-05 05:22:00 -0800 (Wed, 05 Mar 2008) Log Message: ----------- 1) Zipper now get an immediate speed boost when they are activated (instead of only a higher acceleration). 2) Code cleanup (removed unused functions and config parameters). Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties.hpp trunk/supertuxkart/src/robots/default_robot.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/data/stk_config.data 2008-03-05 13:22:00 UTC (rev 1636) @@ -20,8 +20,9 @@ (bomb-time 30.0 ) ;; time till a bomb explodes (bomb-time-increase -5.0 ) ;; time added to timer when bomb is passed on (anvil-time 2.0 ) ;; time an anvil is active - (zipper-time 5.0 ) ;; time a zipper is active - (zipper-force 800.0 ) ;; additional zipper force + (zipper-time 3.0 ) ;; time a zipper is active + (zipper-force 800.0 ) ;; additional zipper force + (zipper-speed-gain 10.0 ) ;; one time additional speed boost given by zippers (shortcut-skipped-segments 5 ) ;; skipping more than this number of segments ;; is considered to be a shortcut (explosion-impulse 10000.0 ) ;; explosion impulse on not directly hit karts @@ -32,9 +33,6 @@ ;; ------------------------- (jump-impulse 5400.0 ) ;; percentage of gravity! - (reduce-air-resistance-racer 0.6) ;; reduce air-resistance for hard - (reduce-air-resistance-driver 0.8) ;; and medium skill level - ;; The following files are the defaults for karts ;; ---------------------------------------------- (kart-defaults @@ -44,9 +42,6 @@ (brake-factor 2.75) (brake-force 2.5 ) (mass 125 ) - (air-resistance 1.8 ) - (roll-resistance 1.05) - (tire-grip 0.9 ) (max-steer-angle 55 ) (time-full-steer 0.3 ) (corn-f 4 ) Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/kart.cpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -699,9 +699,16 @@ } // update //----------------------------------------------------------------------------- +// Set zipper time, and apply one time additional speed boost void Kart::handleZipper() { - m_zipper_time_left = stk_config->m_zipper_time; + m_zipper_time_left = stk_config->m_zipper_time; + const btVector3& v = m_body->getLinearVelocity(); + float current_speed = v.length(); + float speed = std::min(current_speed+stk_config->m_zipper_speed_gain, + getMaxSpeed()); + + m_body->setLinearVelocity(v/current_speed*speed); } // handleZipper //----------------------------------------------------------------------------- #define sgn(x) ((x<0)?-1.0f:((x>0)?1.0f:0.0f)) @@ -875,21 +882,6 @@ m_speed = 0; } // updatePhysics -//----------------------------------------------------------------------------- -// PHORS recommends: f=B*alpha/(1+fabs(A*alpha)^p), where A, B, and p -// are appropriately chosen constants. -float Kart::NormalizedLateralForce(float alpha, float corner) const -{ - float const MAX_ALPHA=3.14f/4.0f; - if(fabsf(alpha)<MAX_ALPHA) - { - return corner*alpha; - } - else - { - return alpha>0.0f ? corner*MAX_ALPHA : -corner*MAX_ALPHA; - } -} // NormalizedLateralForce //----------------------------------------------------------------------------- void Kart::forceRescue(bool is_shortcut) @@ -935,15 +927,6 @@ } // endRescue //----------------------------------------------------------------------------- -float Kart::getAirResistance() const -{ - return (m_kart_properties->getAirResistance() + - m_attachment.AirResistanceAdjust() ) - * stk_config->m_air_res_reduce[world->m_race_setup.m_difficulty]; - -} - -//----------------------------------------------------------------------------- void Kart::processSkidMarks() { return; Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/kart.hpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -169,7 +169,6 @@ void processSkidMarks (); void getClosestKart (float *cdist, int *closest); void updatePhysics (float dt); - float NormalizedLateralForce(float alpha, float corner) const; // Functions to access the current kart properties (which might get changed, // e.g. mass increase or air_friction increase depending on attachment etc.) @@ -180,14 +179,11 @@ return m_kart_properties->getMass() + m_attachment.WeightAdjust(); } - float getRollResistance() const {return m_kart_properties->getRollResistance();} float getMaxPower () const {return m_kart_properties->getMaxPower();} float getTimeFullSteer () const {return m_kart_properties->getTimeFullSteer();} float getBrakeFactor () const {return m_kart_properties->getBrakeFactor();} - float getBrakeForce () const {return m_kart_properties->getBrakeForce();} float getWheelBase () const {return m_kart_properties->getWheelBase();} float getHeightCOG () const {return m_kart_properties->getHeightCOG();} - float getTireGrip () const {return m_kart_properties->getTireGrip();} float getFrictionSlip () const {return m_kart_properties->getFrictionSlip();} float getMaxSteerAngle () const {return m_kart_properties->getMaxSteerAngle();} float getCornerStiffF () const {return m_kart_properties->getCornerStiffF();} @@ -207,7 +203,6 @@ {return m_kart_properties->getWheelieSpeedBoost(); } float getSteerAngle () const {return m_controls.lr*m_kart_properties->getMaxSteerAngle(); } - float getAirResistance () const; float getSteerPercent () const {return m_controls.lr; } float getMaxSpeed () const {return m_max_speed; } void setTimeAtLap (float t){m_time_at_last_lap=t; } Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -137,10 +137,7 @@ lisp->get("bullet-engine-power", m_engine_power); lisp->get("time-full-steer", m_time_full_steer); lisp->get("brake-factor", m_brake_factor); - lisp->get("brake-force", m_brake_force); - lisp->get("roll-resistance", m_roll_resistance); lisp->get("bullet-mass", m_mass); - lisp->get("air-resistance", m_air_resistance); lisp->get("tire-grip", m_tire_grip); lisp->get("bullet-max-steer-angle", m_max_steer_angle); lisp->get("corn-f", m_corn_f); @@ -200,10 +197,7 @@ m_engine_power = stk_config->m_engine_power; m_time_full_steer = stk_config->m_time_full_steer; m_brake_factor = stk_config->m_brake_factor; - m_brake_force = stk_config->m_brake_force; - m_roll_resistance = stk_config->m_roll_resistance; m_mass = stk_config->m_mass; - m_air_resistance = stk_config->m_air_resistance; m_tire_grip = stk_config->m_tire_grip; m_max_steer_angle = stk_config->m_max_steer_angle; m_corn_f = stk_config->m_corn_f; Modified: trunk/supertuxkart/src/kart_properties.hpp =================================================================== --- trunk/supertuxkart/src/kart_properties.hpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/kart_properties.hpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -53,13 +53,10 @@ float m_kart_width; // width of kart float m_kart_length; // length of kart float m_mass; // weight of kart - float m_air_resistance; // air resistance - float m_roll_resistance; // rolling resistance etc float m_wheel_base; // distance between front and read wheels float m_height_cog; // height of center of gravity float m_engine_power; // maximum force from engine float m_brake_factor; // braking factor * engine_power = braking force - float m_brake_force; // braking force float m_tire_grip; // grip of tires in longitudinal direction float m_max_steer_angle; // maximum steering angle float m_time_full_steer; // time for player karts to reach full steer angle @@ -119,15 +116,11 @@ const char* getIconFile () const {return m_icon_file.c_str(); } const sgVec3* getColor () const {return &m_color; } float getMass () const {return m_mass; } - float getAirResistance () const {return m_air_resistance; } - float getRollResistance () const {return m_roll_resistance; } float getMaxPower () const {return m_engine_power; } float getTimeFullSteer () const {return m_time_full_steer; } float getBrakeFactor () const {return m_brake_factor; } - float getBrakeForce () const {return m_brake_force; } float getWheelBase () const {return m_wheel_base; } float getHeightCOG () const {return m_height_cog; } - float getTireGrip () const {return m_tire_grip; } float getMaxSteerAngle () const {return m_max_steer_angle; } float getCornerStiffF () const {return m_corn_f; } float getCornerStiffR () const {return m_corn_r; } Modified: trunk/supertuxkart/src/robots/default_robot.cpp =================================================================== --- trunk/supertuxkart/src/robots/default_robot.cpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/robots/default_robot.cpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -906,5 +906,8 @@ m_curve_angle = normalize_angle(world->m_track->m_angle[i] - world->m_track->m_angle[m_track_sector]); m_inner_curve = m_curve_angle > 0.0 ? -1 : 1; - m_curve_target_speed = sgSqrt(get_approx_radius(m_track_sector, i) * world->getGravity() * getTireGrip()); + // FIXME: 0.9 is the tire grip - but this was never used. For now this + // 0.9 is left in place to reproduce the same results and AI behaviour, + // but this function should be updated to bullet physics + m_curve_target_speed = sgSqrt(get_approx_radius(m_track_sector, i) * world->getGravity() * 0.9f); } Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/stk_config.cpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -64,20 +64,13 @@ CHECK_NEG(m_mass, "mass" ); CHECK_NEG(m_inertia, "m_inertia" ); - CHECK_NEG(m_tire_grip, "tire-grip" ); CHECK_NEG(m_height_cog, "heightCOG" ); CHECK_NEG(m_wheel_base, "wheel-base" ); CHECK_NEG(m_engine_power, "engine-power" ); - CHECK_NEG(m_air_resistance, "air-resistance" ); CHECK_NEG(m_max_steer_angle, "max-steer-angle" ); - CHECK_NEG(m_roll_resistance, "roll-resistance" ); CHECK_NEG(m_brake_factor, "brake-factor" ); - CHECK_NEG(m_brake_force, "brake-force" ); CHECK_NEG(m_jump_impulse, "jump-impulse" ); - CHECK_NEG(m_air_res_reduce[1], "reduce-air-resistance-driver" ); - CHECK_NEG(m_air_res_reduce[2], "reduce-air-resistance-racer" ); - CHECK_NEG(m_wheelie_max_speed_ratio, "wheelie-max-speed-ratio" ); CHECK_NEG(m_wheelie_max_pitch, "wheelie-max-pitch" ); CHECK_NEG(m_wheelie_pitch_rate, "wheelie-pitch-rate" ); @@ -111,6 +104,7 @@ CHECK_NEG(m_anvil_time, "anvil-time" ); CHECK_NEG(m_zipper_time, "zipper-time" ); CHECK_NEG(m_zipper_force, "zipper-force" ); + CHECK_NEG(m_zipper_speed_gain, "zipper-speed-gain" ); CHECK_NEG(m_shortcut_segments, "shortcut-skipped-segments" ); CHECK_NEG(m_suspension_rest, "suspension-rest" ); CHECK_NEG(m_jump_velocity, "jump-velocity" ); @@ -126,27 +120,27 @@ */ void STKConfig::init_defaults() { - m_wheel_base = m_height_cog = m_roll_resistance = m_mass = - m_corn_r = m_air_resistance = m_tire_grip = m_max_steer_angle = - m_corn_f = m_inertia = m_anvil_weight = m_parachute_friction = - m_engine_power = m_jump_impulse = m_brake_factor = + m_wheel_base = m_height_cog = m_mass = + m_corn_r = m_max_steer_angle = + m_corn_f = m_inertia = m_anvil_weight = m_parachute_friction = + m_engine_power = m_jump_impulse = m_brake_factor = m_anvil_speed_factor = m_time_full_steer = m_wheelie_max_pitch = m_wheelie_max_speed_ratio = m_wheelie_pitch_rate = m_wheelie_restore_rate = - m_wheelie_speed_boost = m_air_res_reduce[2] = m_air_res_reduce[1] = + m_wheelie_speed_boost = m_parachute_time = m_bomb_time = m_bomb_time_increase= m_anvil_time = - m_zipper_time = m_zipper_force = m_parachute_time_other = m_shortcut_segments = + m_zipper_time = m_zipper_force = m_zipper_speed_gain = + m_parachute_time_other = m_shortcut_segments = //bullet physics data m_suspension_stiffness = m_wheel_damping_relaxation = m_wheel_damping_compression = m_friction_slip = m_roll_influence = m_wheel_radius = m_wheel_width = m_wheelie_lean_recovery = m_wheelie_step = m_wheelie_balance_recovery = m_wheelie_power_boost = m_chassis_linear_damping = m_chassis_angular_damping = - m_maximum_speed = m_brake_force = m_gravity_center_shift = m_suspension_rest = + m_maximum_speed = m_gravity_center_shift = m_suspension_rest = m_max_speed_reverse_ratio = m_explosion_impulse = m_jump_velocity = m_explosion_impulse_objects = -99.9f; m_max_karts = -100; m_grid_order = -100; - m_air_res_reduce[0] = 1.0f; m_title_music = ""; } // init_defaults @@ -161,8 +155,6 @@ lisp->get("anvil-speed-factor", m_anvil_speed_factor ); lisp->get("parachute-friction", m_parachute_friction ); lisp->get("jump-impulse", m_jump_impulse ); - lisp->get("reduce-air-resistance-racer", m_air_res_reduce[2] ); - lisp->get("reduce-air-resistance-driver", m_air_res_reduce[1] ); lisp->get("parachute-time", m_parachute_time ); lisp->get("parachute-time-other", m_parachute_time_other); lisp->get("bomb-time", m_bomb_time ); @@ -170,6 +162,7 @@ lisp->get("anvil-time", m_anvil_time ); lisp->get("zipper-time", m_zipper_time ); lisp->get("zipper-force", m_zipper_force ); + lisp->get("zipper-speed-gain", m_zipper_speed_gain ); lisp->get("explosion-impulse", m_explosion_impulse ); lisp->get("explosion-impulse-objects", m_explosion_impulse_objects); lisp->get("max-karts", m_max_karts ); Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-03-05 04:53:10 UTC (rev 1635) +++ trunk/supertuxkart/src/stk_config.hpp 2008-03-05 13:22:00 UTC (rev 1636) @@ -30,7 +30,6 @@ float m_anvil_speed_factor; // To decrease speed once when attached float m_parachute_friction; // Increased air friction when parachute float m_jump_impulse; // percentage of gravity when jumping - float m_air_res_reduce[3]; // air resistance reduction for the three levels float m_parachute_time; // time a parachute is active float m_parachute_time_other; // time a parachute attached to other karts is active float m_bomb_time; // time before a bomb explodes @@ -38,6 +37,7 @@ float m_anvil_time; // time an anvil is active float m_zipper_time; // duration a zipper is active float m_zipper_force; // additional force added to the acceleration + float m_zipper_speed_gain; // initial one time speed gain float m_shortcut_segments; // skipping more than this number of segments is // considered to be a shortcut float m_explosion_impulse; // impulse affecting each non-hit kart This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-03-06 13:32:53
|
Revision: 1641 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1641&view=rev Author: hikerstk Date: 2008-03-06 05:32:51 -0800 (Thu, 06 Mar 2008) Log Message: ----------- 1) Cleanup of unused data in stk_config/kart_properties 2) Removed 'magic' constant 0.0044 from steering computation; replaced by DEGREE_TO_RAD, which means that steering values in stk_config.data and .kart files have to be divided by about 3.9 3) Added early cancellation of parachute when a slow down of 30% is reached (defined in stk_config.data). This allows karts to brake and get rid of the parachute earlier. Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/attachment.cpp trunk/supertuxkart/src/attachment.hpp trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/kart_properties.cpp trunk/supertuxkart/src/kart_properties.hpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/data/stk_config.data 2008-03-06 13:32:51 UTC (rev 1641) @@ -17,11 +17,12 @@ (parachute-friction 2.0 ) ;; friction increase when a parachute is sttached (parachute-time 4.0 ) ;; time an attached parachute is active (parachute-time-other 8.0 ) ;; time a parachute attached from other kart is active + (parachute-done-fraction 0.7 ) ;; fraction of speed when lost will detach parachute (bomb-time 30.0 ) ;; time till a bomb explodes (bomb-time-increase -5.0 ) ;; time added to timer when bomb is passed on (anvil-time 2.0 ) ;; time an anvil is active (zipper-time 3.0 ) ;; time a zipper is active - (zipper-force 800.0 ) ;; additional zipper force + (zipper-force 800.0 ) ;; additional zipper force (zipper-speed-gain 10.0 ) ;; one time additional speed boost given by zippers (shortcut-skipped-segments 5 ) ;; skipping more than this number of segments ;; is considered to be a shortcut @@ -38,11 +39,6 @@ (kart-defaults (wheel-base 1.2 ) (heightCOG 0.2 ) - (engine-power 400 ) - (brake-factor 2.75) - (brake-force 2.5 ) - (mass 125 ) - (max-steer-angle 55 ) (time-full-steer 0.3 ) (corn-f 4 ) (corn-r 4 ) @@ -61,9 +57,10 @@ (inertia 5.0 ) ;; Bullet physics attributes - (bullet-engine-power 400 ) - (bullet-mass 225 ) - (bullet-max-steer-angle 25 ) + (brake-factor 2.75 ) + (max-steer-angle 6.4 ) + (engine-power 400 ) + (mass 225 ) (suspension-stiffness 8.0 ) (wheel-damping-relaxation 2.3 ) (wheel-damping-compression 4.4 ) Modified: trunk/supertuxkart/src/attachment.cpp =================================================================== --- trunk/supertuxkart/src/attachment.cpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/attachment.cpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -91,10 +91,11 @@ break; default: random_attachment = rand()%3; } // switch - + switch (random_attachment) { case 0: set( ATTACH_PARACHUTE, stk_config->m_parachute_time+leftover_time); + m_initial_speed = m_kart->getSpeed(); // if ( m_kart == m_kart[0] ) // sound -> playSfx ( SOUND_SHOOMF ) ; break ; @@ -130,8 +131,16 @@ switch (m_type) { - case ATTACH_PARACHUTE: // handled in Kart::updatePhysics - case ATTACH_ANVIL: // handled in Kart::updatePhysics + case ATTACH_PARACHUTE: // Partly handled in Kart::updatePhysics + // Otherwise: disable if a certain percantage of + // initial speed was lost + if(m_kart->getSpeed()<= + m_initial_speed*stk_config->m_parachute_done_fraction) + { + m_time_left = -1; + } + break; + case ATTACH_ANVIL: // handled in Kart::updatePhysics case ATTACH_NOTHING: // Nothing to do, but complete all cases for switch case ATTACH_MAX: break; case ATTACH_BOMB: if(m_time_left<=0.0) Modified: trunk/supertuxkart/src/attachment.hpp =================================================================== --- trunk/supertuxkart/src/attachment.hpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/attachment.hpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -38,6 +38,7 @@ attachmentType m_type; // attachment type Kart *m_kart; // kart the attachment is attached to float m_time_left; // time left till attachment expires + float m_initial_speed; // for parachutes only ssgSelector *m_holder; // where the attachment is put on the kart Kart *m_previous_owner; // used by bombs so that it's not passed // back to previous owner Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/kart.cpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -846,7 +846,7 @@ getBody()->setLinearVelocity( velocity ); } - const float steering = getMaxSteerAngle() * m_controls.lr * 0.00444f; + const float steering = DEGREE_TO_RAD(getMaxSteerAngle()) * m_controls.lr; m_vehicle->setSteeringValue(steering, 0); m_vehicle->setSteeringValue(steering, 1); @@ -1136,7 +1136,7 @@ sgMat4 wheel_rot; sgMakeRotMat4( wheel_rot, 0, RAD_TO_DEGREE(-m_wheel_rotation), 0); - sgMakeRotMat4( wheel_steer, getSteerAngle()/getMaxSteerAngle() * 30.0f , 0, 0); + sgMakeRotMat4( wheel_steer, m_controls.lr * 30.0f , 0, 0); sgMultMat4(wheel_front, wheel_steer, wheel_rot); Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/kart.hpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -186,9 +186,6 @@ float getHeightCOG () const {return m_kart_properties->getHeightCOG();} float getFrictionSlip () const {return m_kart_properties->getFrictionSlip();} float getMaxSteerAngle () const {return m_kart_properties->getMaxSteerAngle();} - float getCornerStiffF () const {return m_kart_properties->getCornerStiffF();} - float getCornerStiffR () const {return m_kart_properties->getCornerStiffR();} - float getInertia () const {return m_kart_properties->getInertia(); } float getGravityCenterShift () const {return m_kart_properties->getGravityCenterShift(); } float getWheelieMaxSpeedRatio () const Modified: trunk/supertuxkart/src/kart_properties.cpp =================================================================== --- trunk/supertuxkart/src/kart_properties.cpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/kart_properties.cpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -134,15 +134,11 @@ lisp->get("wheel-base", m_wheel_base); lisp->get("heightCOG", m_height_cog); - lisp->get("bullet-engine-power", m_engine_power); + lisp->get("engine-power", m_engine_power); lisp->get("time-full-steer", m_time_full_steer); lisp->get("brake-factor", m_brake_factor); - lisp->get("bullet-mass", m_mass); - lisp->get("tire-grip", m_tire_grip); - lisp->get("bullet-max-steer-angle", m_max_steer_angle); - lisp->get("corn-f", m_corn_f); - lisp->get("corn-r", m_corn_r); - lisp->get("inertia", m_inertia); + lisp->get("mass", m_mass); + lisp->get("max-steer-angle", m_max_steer_angle); lisp->get("wheelie-max-speed-ratio", m_wheelie_max_speed_ratio ); lisp->get("wheelie-max-pitch", m_wheelie_max_pitch ); lisp->get("wheelie-pitch-rate", m_wheelie_pitch_rate ); @@ -198,11 +194,7 @@ m_time_full_steer = stk_config->m_time_full_steer; m_brake_factor = stk_config->m_brake_factor; m_mass = stk_config->m_mass; - m_tire_grip = stk_config->m_tire_grip; m_max_steer_angle = stk_config->m_max_steer_angle; - m_corn_f = stk_config->m_corn_f; - m_corn_r = stk_config->m_corn_r; - m_inertia = stk_config->m_inertia; m_wheelie_max_speed_ratio = stk_config->m_wheelie_max_speed_ratio; m_wheelie_max_pitch = stk_config->m_wheelie_max_pitch; m_wheelie_pitch_rate = stk_config->m_wheelie_pitch_rate; Modified: trunk/supertuxkart/src/kart_properties.hpp =================================================================== --- trunk/supertuxkart/src/kart_properties.hpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/kart_properties.hpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -57,12 +57,8 @@ float m_height_cog; // height of center of gravity float m_engine_power; // maximum force from engine float m_brake_factor; // braking factor * engine_power = braking force - float m_tire_grip; // grip of tires in longitudinal direction float m_max_steer_angle; // maximum steering angle float m_time_full_steer; // time for player karts to reach full steer angle - float m_corn_f; - float m_corn_r; - float m_inertia; float m_wheelie_max_speed_ratio; // percentage of maximum speed for wheelies float m_wheelie_max_pitch; // maximum pitch for wheelies float m_wheelie_pitch_rate; // rate/sec with which kart goes up @@ -122,9 +118,6 @@ float getWheelBase () const {return m_wheel_base; } float getHeightCOG () const {return m_height_cog; } float getMaxSteerAngle () const {return m_max_steer_angle; } - float getCornerStiffF () const {return m_corn_f; } - float getCornerStiffR () const {return m_corn_r; } - float getInertia () const {return m_inertia; } float getMaxSpeedReverseRatio() const {return m_max_speed_reverse_ratio;} float getWheelieMaxSpeedRatio() const {return m_wheelie_max_speed_ratio;} float getWheelieMaxPitch () const {return m_wheelie_max_pitch; } Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/stk_config.cpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -59,11 +59,7 @@ CHECK_NEG(m_max_karts, "max-karts" ); CHECK_NEG(m_grid_order, "grid-order" ); - CHECK_NEG(m_corn_r, "m_corn_r" ); - CHECK_NEG(m_corn_f, "m_corn_f" ); - CHECK_NEG(m_mass, "mass" ); - CHECK_NEG(m_inertia, "m_inertia" ); CHECK_NEG(m_height_cog, "heightCOG" ); CHECK_NEG(m_wheel_base, "wheel-base" ); CHECK_NEG(m_engine_power, "engine-power" ); @@ -81,9 +77,13 @@ CHECK_NEG(m_wheelie_step, "wheelie-step" ); CHECK_NEG(m_wheelie_power_boost, "wheelie-power-boost" ); - CHECK_NEG(m_parachute_friction, "parachute-friction" ); - CHECK_NEG(m_time_full_steer, "time-full-steer" ); + CHECK_NEG(m_parachute_friction, "parachute-friction" ); + CHECK_NEG(m_parachute_done_fraction, "parachute-done-fraction" ); + CHECK_NEG(m_parachute_time, "parachute-time" ); + CHECK_NEG(m_parachute_time_other, "parachute-time-other" ); + CHECK_NEG(m_time_full_steer, "time-full-steer" ); + //bullet physics data CHECK_NEG(m_suspension_stiffness, "suspension-stiffness" ); CHECK_NEG(m_wheel_damping_relaxation, "wheel-damping-relaxation" ); @@ -97,8 +97,6 @@ CHECK_NEG(m_maximum_speed, "maximum-speed" ); CHECK_NEG(m_max_speed_reverse_ratio, "max-speed-reverse-ratio" ); CHECK_NEG(m_gravity_center_shift, "gravity-center-shift" ); - CHECK_NEG(m_parachute_time, "parachute-time" ); - CHECK_NEG(m_parachute_time_other, "parachute-time-other" ); CHECK_NEG(m_bomb_time, "bomb-time" ); CHECK_NEG(m_bomb_time_increase, "bomb-time-increase" ); CHECK_NEG(m_anvil_time, "anvil-time" ); @@ -120,16 +118,16 @@ */ void STKConfig::init_defaults() { - m_wheel_base = m_height_cog = m_mass = - m_corn_r = m_max_steer_angle = - m_corn_f = m_inertia = m_anvil_weight = m_parachute_friction = + m_wheel_base = m_height_cog = m_mass = m_max_steer_angle = + m_anvil_weight = m_parachute_friction = + m_parachute_time = m_parachute_done_fraction = m_parachute_time_other = m_engine_power = m_jump_impulse = m_brake_factor = m_anvil_speed_factor = m_time_full_steer = m_wheelie_max_pitch = m_wheelie_max_speed_ratio = m_wheelie_pitch_rate = m_wheelie_restore_rate = m_wheelie_speed_boost = - m_parachute_time = m_bomb_time = m_bomb_time_increase= m_anvil_time = + m_bomb_time = m_bomb_time_increase= m_anvil_time = m_zipper_time = m_zipper_force = m_zipper_speed_gain = - m_parachute_time_other = m_shortcut_segments = + m_shortcut_segments = //bullet physics data m_suspension_stiffness = m_wheel_damping_relaxation = m_wheel_damping_compression = m_friction_slip = m_roll_influence = m_wheel_radius = m_wheel_width = @@ -150,24 +148,25 @@ // Get the values which are not part of the default KartProperties // --------------------------------------------------------------- - lisp->get("anvil-weight", m_anvil_weight ); - lisp->get("shortcut-skipped-segments", m_shortcut_segments ); - lisp->get("anvil-speed-factor", m_anvil_speed_factor ); - lisp->get("parachute-friction", m_parachute_friction ); - lisp->get("jump-impulse", m_jump_impulse ); - lisp->get("parachute-time", m_parachute_time ); - lisp->get("parachute-time-other", m_parachute_time_other); - lisp->get("bomb-time", m_bomb_time ); - lisp->get("bomb-time-increase", m_bomb_time_increase ); - lisp->get("anvil-time", m_anvil_time ); - lisp->get("zipper-time", m_zipper_time ); - lisp->get("zipper-force", m_zipper_force ); - lisp->get("zipper-speed-gain", m_zipper_speed_gain ); - lisp->get("explosion-impulse", m_explosion_impulse ); + lisp->get("anvil-weight", m_anvil_weight ); + lisp->get("shortcut-skipped-segments", m_shortcut_segments ); + lisp->get("anvil-speed-factor", m_anvil_speed_factor ); + lisp->get("parachute-friction", m_parachute_friction ); + lisp->get("parachute-time", m_parachute_time ); + lisp->get("parachute-time-other", m_parachute_time_other ); + lisp->get("parachute-done-fraction", m_parachute_done_fraction ); + lisp->get("jump-impulse", m_jump_impulse ); + lisp->get("bomb-time", m_bomb_time ); + lisp->get("bomb-time-increase", m_bomb_time_increase ); + lisp->get("anvil-time", m_anvil_time ); + lisp->get("zipper-time", m_zipper_time ); + lisp->get("zipper-force", m_zipper_force ); + lisp->get("zipper-speed-gain", m_zipper_speed_gain ); + lisp->get("explosion-impulse", m_explosion_impulse ); lisp->get("explosion-impulse-objects", m_explosion_impulse_objects); - lisp->get("max-karts", m_max_karts ); - lisp->get("grid-order", m_grid_order ); - lisp->get("title-music", m_title_music ); + lisp->get("max-karts", m_max_karts ); + lisp->get("grid-order", m_grid_order ); + lisp->get("title-music", m_title_music ); // Get the default KartProperties // ------------------------------ Modified: trunk/supertuxkart/src/stk_config.hpp =================================================================== --- trunk/supertuxkart/src/stk_config.hpp 2008-03-06 00:59:54 UTC (rev 1640) +++ trunk/supertuxkart/src/stk_config.hpp 2008-03-06 13:32:51 UTC (rev 1641) @@ -29,9 +29,10 @@ float m_anvil_weight; // Additional kart weight if anvil is attached float m_anvil_speed_factor; // To decrease speed once when attached float m_parachute_friction; // Increased air friction when parachute - float m_jump_impulse; // percentage of gravity when jumping + float m_parachute_done_fraction; // fraction of speed when lost will detach parachute float m_parachute_time; // time a parachute is active float m_parachute_time_other; // time a parachute attached to other karts is active + float m_jump_impulse; // percentage of gravity when jumping float m_bomb_time; // time before a bomb explodes float m_bomb_time_increase; // time added to bomb timer when it's passed on float m_anvil_time; // time an anvil is active This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cos...@us...> - 2008-03-14 06:38:05
|
Revision: 1649 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1649&view=rev Author: cosmosninja Date: 2008-03-13 23:38:01 -0700 (Thu, 13 Mar 2008) Log Message: ----------- Moved the ./po directory to ./data/po Modified Paths: -------------- trunk/supertuxkart/src/translation.cpp Added Paths: ----------- trunk/supertuxkart/data/po/ Removed Paths: ------------- trunk/supertuxkart/po/ Copied: trunk/supertuxkart/data/po (from rev 1647, trunk/supertuxkart/po) Modified: trunk/supertuxkart/src/translation.cpp =================================================================== --- trunk/supertuxkart/src/translation.cpp 2008-03-14 06:37:26 UTC (rev 1648) +++ trunk/supertuxkart/src/translation.cpp 2008-03-14 06:38:01 UTC (rev 1649) @@ -7,7 +7,7 @@ // used in driveline files. setlocale (LC_CTYPE, ""); // setlocale (LC_MESSAGES, ""); - bindtextdomain (PACKAGE, "./po"); + bindtextdomain (PACKAGE, "./data/po"); //bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cos...@us...> - 2008-03-14 06:55:12
|
Revision: 1651 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1651&view=rev Author: cosmosninja Date: 2008-03-13 23:55:10 -0700 (Thu, 13 Mar 2008) Log Message: ----------- Moved wav directory to sfx Modified Paths: -------------- trunk/supertuxkart/Makefile.am trunk/supertuxkart/sfx/Makefile.am trunk/supertuxkart/src/file_manager.cpp Added Paths: ----------- trunk/supertuxkart/sfx/ Removed Paths: ------------- trunk/supertuxkart/wavs/ Modified: trunk/supertuxkart/Makefile.am =================================================================== --- trunk/supertuxkart/Makefile.am 2008-03-14 06:48:09 UTC (rev 1650) +++ trunk/supertuxkart/Makefile.am 2008-03-14 06:55:10 UTC (rev 1651) @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = @BULLETTREE@ src wavs models oggs doc data fonts +SUBDIRS = @BULLETTREE@ src sfx models oggs doc data fonts EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing Copied: trunk/supertuxkart/sfx (from rev 1647, trunk/supertuxkart/wavs) Modified: trunk/supertuxkart/sfx/Makefile.am =================================================================== --- trunk/supertuxkart/wavs/Makefile.am 2008-03-12 02:57:25 UTC (rev 1647) +++ trunk/supertuxkart/sfx/Makefile.am 2008-03-14 06:55:10 UTC (rev 1651) @@ -1,9 +1,9 @@ # wavs/ -pkgdatadir = $(datadir)/games/@PACKAGE@/wavs +pkgdatadir = $(datadir)/games/@PACKAGE@/sfx pkgdata_DATA = $(wildcard *.wav) SUBDIRS = radio tintagel -EXTRA_DIST = $(pkgdata_DATA) \ No newline at end of file +EXTRA_DIST = $(pkgdata_DATA) Modified: trunk/supertuxkart/src/file_manager.cpp =================================================================== --- trunk/supertuxkart/src/file_manager.cpp 2008-03-14 06:48:09 UTC (rev 1650) +++ trunk/supertuxkart/src/file_manager.cpp 2008-03-14 06:55:10 UTC (rev 1651) @@ -230,7 +230,7 @@ //----------------------------------------------------------------------------- std::string FileManager::getSFXFile(const std::string& fname) const { - return m_root_dir+"/wavs/"+fname; + return m_root_dir+"/sfx/"+fname; } // getSFXFile //----------------------------------------------------------------------------- std::string FileManager::getFontFile(const std::string& fname) const @@ -295,4 +295,4 @@ ulCloseDir(mydir); } // listFiles -//----------------------------------------------------------------------------- \ No newline at end of file +//----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cos...@us...> - 2008-03-14 23:44:27
|
Revision: 1654 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1654&view=rev Author: cosmosninja Date: 2008-03-14 16:44:25 -0700 (Fri, 14 Mar 2008) Log Message: ----------- Removed redundant STK/sfx directory. Modified Paths: -------------- trunk/supertuxkart/Makefile.am Removed Paths: ------------- trunk/supertuxkart/sfx/ Modified: trunk/supertuxkart/Makefile.am =================================================================== --- trunk/supertuxkart/Makefile.am 2008-03-14 10:49:23 UTC (rev 1653) +++ trunk/supertuxkart/Makefile.am 2008-03-14 23:44:25 UTC (rev 1654) @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = @BULLETTREE@ src sfx models oggs doc data fonts +SUBDIRS = @BULLETTREE@ src models oggs doc data fonts EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cos...@us...> - 2008-03-15 00:21:26
|
Revision: 1655 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1655&view=rev Author: cosmosninja Date: 2008-03-14 17:21:16 -0700 (Fri, 14 Mar 2008) Log Message: ----------- Fixed makefile & directory problems, which prevented building. Modified Paths: -------------- trunk/supertuxkart/Makefile.am trunk/supertuxkart/configure.ac Removed Paths: ------------- trunk/supertuxkart/models/ Modified: trunk/supertuxkart/Makefile.am =================================================================== --- trunk/supertuxkart/Makefile.am 2008-03-14 23:44:25 UTC (rev 1654) +++ trunk/supertuxkart/Makefile.am 2008-03-15 00:21:16 UTC (rev 1655) @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = @BULLETTREE@ src models oggs doc data fonts +SUBDIRS = @BULLETTREE@ src doc data EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-03-14 23:44:25 UTC (rev 1654) +++ trunk/supertuxkart/configure.ac 2008-03-15 00:21:16 UTC (rev 1655) @@ -405,18 +405,11 @@ data/Makefile \ doc/Makefile \ doc/players_manual/Makefile \ - fonts/Makefile \ - models/Makefile \ - oggs/Makefile \ src/Makefile \ src/robots/Makefile \ src/bullet/Makefile \ src/bullet/src/Makefile \ src/bullet/Demos/OpenGL/Makefile \ - wavs/Makefile \ - wavs/radio/Makefile \ - wavs/tintagel/Makefile \ - models/herrings/Makefile ]) AC_OUTPUT echo -e $SUMMARY This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: E. A. H. M. <coz...@gm...> - 2008-03-15 16:39:01
|
Revision: 1652 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1652&view=rev Author: hikerstk Date: 2008-03-14 02:49:17 -0700 (Fri, 14 Mar 2008) Log Message: ----------- 1) Improved sound_manager to support separate sound packages, and using "*.music" information files for additional information music. 2) Removed old/unused plib sound support. 3) Moved all .ogg files to either data/music, or to the tracks where they belong. 4) Moved fonts to data/fonts; wav to data/sfx, po to data/po, herring to data/herrings, models to data/models. Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/data/tracks/beach/beach.track trunk/supertuxkart/data/tracks/bsodcastle/bsodcastle.track trunk/supertuxkart/data/tracks/gownsbow/gownsbow.track trunk/supertuxkart/data/tracks/islandtrack/islandtrack.ac trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track trunk/supertuxkart/data/tracks/lighthouse/lighthouse.track trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track trunk/supertuxkart/data/tracks/olivermath/olivermath.track trunk/supertuxkart/data/tracks/race/race.track trunk/supertuxkart/data/tracks/sandtrack/sandtrack.track trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.track trunk/supertuxkart/data/tracks/startrack/startrack.track trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track trunk/supertuxkart/data/tracks/volcano/volcano.track trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/file_manager.cpp trunk/supertuxkart/src/file_manager.hpp trunk/supertuxkart/src/gui/config_sound.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/herring_manager.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/kart_properties_manager.cpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/music_ogg.cpp trunk/supertuxkart/src/music_ogg.hpp trunk/supertuxkart/src/sound_manager.cpp trunk/supertuxkart/src/sound_manager.hpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp trunk/supertuxkart/src/string_utils.cpp trunk/supertuxkart/src/string_utils.hpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track.hpp trunk/supertuxkart/src/track_manager.cpp trunk/supertuxkart/src/world.cpp Added Paths: ----------- trunk/supertuxkart/data/fonts/ trunk/supertuxkart/data/fonts/AvantGarde-Demi.txf trunk/supertuxkart/data/fonts/DomesticManners.txf trunk/supertuxkart/data/fonts/DomesticMannersLatin1.txf trunk/supertuxkart/data/fonts/Makefile.am trunk/supertuxkart/data/herrings/ trunk/supertuxkart/data/herrings/banana.ac trunk/supertuxkart/data/herrings/bonusblock.ac trunk/supertuxkart/data/herrings/goldcoin.ac trunk/supertuxkart/data/herrings/silvercoin.ac trunk/supertuxkart/data/models/ trunk/supertuxkart/data/models/Makefile.am trunk/supertuxkart/data/models/anvil.ac trunk/supertuxkart/data/models/bomb.ac trunk/supertuxkart/data/models/bookstack.ac trunk/supertuxkart/data/models/car9.ac trunk/supertuxkart/data/models/explode.ac trunk/supertuxkart/data/models/homingmissile.ac trunk/supertuxkart/data/models/kart.ac trunk/supertuxkart/data/models/magnet.ac trunk/supertuxkart/data/models/magnetbzzt.ac trunk/supertuxkart/data/models/missile.ac trunk/supertuxkart/data/models/parachute.ac trunk/supertuxkart/data/models/spark.ac trunk/supertuxkart/data/models/tinytux_magnet.ac trunk/supertuxkart/data/models/track.ac trunk/supertuxkart/data/models/zipper.ac trunk/supertuxkart/data/music/ trunk/supertuxkart/data/music/Boom_boom_boom.music trunk/supertuxkart/data/music/Boom_boom_boom.ogg trunk/supertuxkart/data/music/CaribbeanMusic.music trunk/supertuxkart/data/music/CaribbeanMusic.ogg trunk/supertuxkart/data/music/kart_grand_prix.music trunk/supertuxkart/data/music/kart_grand_prix.ogg trunk/supertuxkart/data/music/main_theme.music trunk/supertuxkart/data/music/main_theme.ogg trunk/supertuxkart/data/music/tk2.music trunk/supertuxkart/data/music/tk2.ogg trunk/supertuxkart/data/music/tk5a.music trunk/supertuxkart/data/music/tk5a.ogg trunk/supertuxkart/data/sfx/ trunk/supertuxkart/data/tracks/bsodcastle/Lava_Lagoon_2.music trunk/supertuxkart/data/tracks/bsodcastle/Lava_Lagoon_2.ogg trunk/supertuxkart/data/tracks/gownsbow/another_caribbean_beat.music trunk/supertuxkart/data/tracks/gownsbow/another_caribbean_beat.ogg trunk/supertuxkart/data/tracks/littlevolcano/KingArthursCastle.music trunk/supertuxkart/data/tracks/littlevolcano/KingArthursCastle.ogg trunk/supertuxkart/data/tracks/sandtrack/desert_dunes.music trunk/supertuxkart/data/tracks/sandtrack/desert_dunes.ogg trunk/supertuxkart/data/tracks/sandtrack/tk7.music trunk/supertuxkart/data/tracks/sandtrack/tk7.ogg trunk/supertuxkart/data/tracks/startrack/Ethereal_Spectrum_(ver_loop).music trunk/supertuxkart/data/tracks/startrack/Ethereal_Spectrum_(ver_loop).ogg trunk/supertuxkart/data/tracks/subseatrack/tuxr.music trunk/supertuxkart/data/tracks/subseatrack/tuxr.ogg trunk/supertuxkart/data/tracks/tuxtrack/g4m-fan-track.music trunk/supertuxkart/data/tracks/tuxtrack/g4m-fan-track.ogg trunk/supertuxkart/src/music_information.cpp trunk/supertuxkart/src/music_information.hpp Removed Paths: ------------- trunk/supertuxkart/fonts/ trunk/supertuxkart/models/Makefile.am trunk/supertuxkart/models/anvil.ac trunk/supertuxkart/models/bomb.ac trunk/supertuxkart/models/bookstack.ac trunk/supertuxkart/models/car9.ac trunk/supertuxkart/models/explode.ac trunk/supertuxkart/models/herrings/ trunk/supertuxkart/models/homingmissile.ac trunk/supertuxkart/models/kart.ac trunk/supertuxkart/models/magnet.ac trunk/supertuxkart/models/magnetbzzt.ac trunk/supertuxkart/models/missile.ac trunk/supertuxkart/models/parachute.ac trunk/supertuxkart/models/spark.ac trunk/supertuxkart/models/tinytux_magnet.ac trunk/supertuxkart/models/track.ac trunk/supertuxkart/models/zipper.ac trunk/supertuxkart/oggs/ [Details removed to lower message size] |
From: <hik...@us...> - 2008-03-17 05:18:27
|
Revision: 1657 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1657&view=rev Author: hikerstk Date: 2008-03-16 22:18:26 -0700 (Sun, 16 Mar 2008) Log Message: ----------- Added support for 2 music 'styles' in one .music file: the normal music, and a special 'faster' music which will be played during the last track. Modified Paths: -------------- trunk/supertuxkart/data/music/tk2.music trunk/supertuxkart/data/tracks/race/race.track trunk/supertuxkart/src/game_manager.cpp trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/music.hpp trunk/supertuxkart/src/music_information.cpp trunk/supertuxkart/src/music_information.hpp trunk/supertuxkart/src/music_ogg.cpp trunk/supertuxkart/src/music_ogg.hpp trunk/supertuxkart/src/sound_manager.cpp trunk/supertuxkart/src/sound_manager.hpp Modified: trunk/supertuxkart/data/music/tk2.music =================================================================== --- trunk/supertuxkart/data/music/tk2.music 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/data/music/tk2.music 2008-03-17 05:18:26 UTC (rev 1657) @@ -1,6 +1,8 @@ (music-information (title "Tuxkart 2") (composer "Matt Thomas") - (music "tk2.ogg") + (music "tk5a.ogg") + (fast-music "tk2.ogg") + (fade-time 2) (loop 10) ) Modified: trunk/supertuxkart/data/tracks/race/race.track =================================================================== --- trunk/supertuxkart/data/tracks/race/race.track 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/data/tracks/race/race.track 2008-03-17 05:18:26 UTC (rev 1657) @@ -3,7 +3,7 @@ (tuxkart-track (name "Race Track") (description "Created by Ingo Ruhnke") - (music "tk5a.music" "tk2.music") + (music "tk2.music") (screenshot "sshot-race.rgb") (topview "topview-race.rgb") (AI-curve-speed-adjust 1.3) Modified: trunk/supertuxkart/src/game_manager.cpp =================================================================== --- trunk/supertuxkart/src/game_manager.cpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/game_manager.cpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -70,7 +70,8 @@ m_prev_time = m_curr_time; m_curr_time = SDL_GetTicks(); - + float dt = (m_curr_time - m_prev_time ) * 0.001f; + if (!music_on && !race_manager->raceIsActive()) { sound_manager->playMusic(stk_config->m_title_music); @@ -80,8 +81,7 @@ if (race_manager->raceIsActive()) { music_on = false; - float dt = (m_curr_time - m_prev_time ) * 0.001f; - if(user_config->m_profile) dt=1.0f/60.0f; + if(user_config->m_profile) dt=1.0f/60.0f; // In the first call dt might be large (includes loading time), // which can cause the camera to significantly tilt scene->draw(world->getPhase()==World::SETUP_PHASE ? 0.0f : dt); @@ -145,7 +145,7 @@ } menu_manager->update(); - sound_manager->update(); + sound_manager->update(dt); glFlush(); SDL_GL_SwapBuffers(); Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/kart.cpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -439,7 +439,11 @@ setTimeAtLap(world->getTime()); m_race_lap++ ; } - + // Sound manager makes sure that only the first call switches the music + if(m_race_lap==world->m_race_setup.m_num_laps-1) // last lap started + { + sound_manager->switchToFastMusic(); + } // Only do timings if original time was set properly. Driving backwards // over the start line will cause the lap start time to be set to -1. if(m_lap_start_time>=0.0) Modified: trunk/supertuxkart/src/music.hpp =================================================================== --- trunk/supertuxkart/src/music.hpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/music.hpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -25,16 +25,15 @@ class Music { public: - virtual bool load(const std::string& filename)= 0; + virtual bool load (const std::string& filename) = 0; + virtual bool playMusic () = 0; + virtual bool stopMusic () = 0; + virtual bool pauseMusic () = 0; + virtual bool resumeMusic () = 0; + virtual void updateFading(float percent) = 0; + virtual void update () = 0; - virtual bool playMusic()= 0; - virtual bool stopMusic()= 0; - virtual bool pauseMusic()= 0; - virtual bool resumeMusic()= 0; - - virtual void update()= 0; - - virtual ~Music(){}; + virtual ~Music () {}; }; #endif // HEADER_MUSIC_H Modified: trunk/supertuxkart/src/music_information.cpp =================================================================== --- trunk/supertuxkart/src/music_information.cpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/music_information.cpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -34,16 +34,18 @@ MusicInformation::MusicInformation(const std::string& filename) { - m_title = ""; - m_composer = ""; - m_numLoops = LOOP_FOREVER; - + m_title = ""; + m_composer = ""; + m_numLoops = LOOP_FOREVER; + m_normal_filename = ""; + m_fast_filename = ""; + m_fade_time = 1.0f; if(StringUtils::extension(filename)!="music") { // Create information just from ogg file // ------------------------------------- - m_title = StringUtils::without_extension(StringUtils::basename(filename)); - m_ogg_filename = filename; + m_title = StringUtils::without_extension(StringUtils::basename(filename)); + m_normal_filename = filename; return; } @@ -63,16 +65,24 @@ filename.c_str()); throw std::runtime_error(msg); } - LISP->get ("title", m_title ); - LISP->get ("composer", m_composer ); - LISP->get ("loop", m_numLoops ); - LISP->get ("music", m_ogg_filename); - LISP->getVector("tracks", m_all_tracks); + LISP->get ("title", m_title ); + LISP->get ("composer", m_composer ); + LISP->get ("loop", m_numLoops ); + LISP->get ("music", m_normal_filename); + LISP->get ("fast-music", m_fast_filename ); + LISP->get ("fade-time", m_fade_time ); + LISP->getVector("tracks", m_all_tracks ); // Get the path from the filename and add it to the ogg filename std::string path=StringUtils::path(filename); - m_ogg_filename=path+"/"+m_ogg_filename; + m_normal_filename=path+"/"+m_normal_filename; + // Get the path from the filename and add it to the ogg filename + if(m_fast_filename!="") + { + m_fast_filename=path+"/"+m_fast_filename; + } + delete ROOT; } // MusicInformation Modified: trunk/supertuxkart/src/music_information.hpp =================================================================== --- trunk/supertuxkart/src/music_information.hpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/music_information.hpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -28,16 +28,20 @@ private: std::string m_composer; std::string m_title; - std::string m_ogg_filename; + std::string m_normal_filename; + std::string m_fast_filename; std::vector<std::string> m_all_tracks; int m_numLoops; + float m_fade_time; static const int LOOP_FOREVER=-1; public: - MusicInformation(const std::string& filename); - const std::string& getComposer () const {return m_composer; } - const std::string& getTitle () const {return m_title; } - const std::string& getFilename () const {return m_ogg_filename; } - int getNumLoops () const {return m_numLoops; } - void addMusicToTracks() const; + MusicInformation (const std::string& filename); + const std::string& getComposer () const {return m_composer; } + const std::string& getTitle () const {return m_title; } + const std::string& getNormalFilename() const {return m_normal_filename; } + const std::string& getFastFilename () const {return m_fast_filename; } + int getNumLoops () const {return m_numLoops; } + float getFadeTime () const {return m_fade_time; } + void addMusicToTracks () const; }; // MusicInformation #endif Modified: trunk/supertuxkart/src/music_ogg.cpp =================================================================== --- trunk/supertuxkart/src/music_ogg.cpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/music_ogg.cpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -215,6 +215,13 @@ } //----------------------------------------------------------------------------- +void MusicOggStream::updateFading(float percent) +{ + alSourcef(m_soundSource,AL_GAIN,percent); + update(); +} // updateFading + +//----------------------------------------------------------------------------- void MusicOggStream::update() { @@ -252,7 +259,7 @@ alGetSourcei(m_soundSource, AL_SOURCE_STATE, &state); if (state != AL_PLAYING) { - fprintf(stderr,"WARNING: Alsa source state: %d\n", state); + fprintf(stderr,"WARNING: Alsa source state: %d\n", state); alGetSourcei(m_soundSource, AL_BUFFERS_PROCESSED, &processed); alSourcePlay(m_soundSource); } @@ -260,7 +267,7 @@ else { // no more data. Seek to beginning -> loop - ov_time_seek(&m_oggStream, 0); + ov_time_seek(&m_oggStream, 0); } } Modified: trunk/supertuxkart/src/music_ogg.hpp =================================================================== --- trunk/supertuxkart/src/music_ogg.hpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/music_ogg.hpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -40,6 +40,7 @@ virtual ~MusicOggStream(); virtual void update(); + virtual void updateFading(float percent); virtual bool load(const std::string& filename); Modified: trunk/supertuxkart/src/sound_manager.cpp =================================================================== --- trunk/supertuxkart/src/sound_manager.cpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/sound_manager.cpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -45,7 +45,8 @@ SoundManager::SoundManager() : m_sfxs(NUM_SOUNDS) { - m_current_music = NULL; + m_normal_music = NULL; + m_fast_music = NULL; if(alutInit(0, NULL) == AL_TRUE) // init OpenAL sound system m_initialized = true; @@ -93,11 +94,16 @@ } m_sfxs.empty(); - if (m_current_music != NULL) + if (m_normal_music != NULL) { - delete m_current_music; - m_current_music = NULL; + delete m_normal_music; + m_normal_music = NULL; } + if (m_fast_music != NULL) + { + delete m_fast_music; + m_fast_music = NULL; + } if(m_initialized) { @@ -147,8 +153,8 @@ { return NULL; } - const std::string basename=StringUtils::basename(filename); - const MusicInformation* mi=m_allMusic[basename]; + const std::string basename = StringUtils::basename(filename); + const MusicInformation* mi = m_allMusic[basename]; if(!mi) { mi = new MusicInformation(filename); @@ -173,76 +179,144 @@ void SoundManager::playMusic(const MusicInformation* mi) { m_music_information = mi; + m_time_since_fade = 0.0f; + m_mode = SOUND_NORMAL; if(!user_config->doMusic() || !m_initialized) return; - - if (m_current_music != NULL) + + if (m_normal_music != NULL) { - delete m_current_music; - m_current_music = NULL; + delete m_normal_music; + m_normal_music = NULL; } - if (mi->getFilename()== "") + if (mi->getNormalFilename()== "") // nothing to play { - // nothing to play return; } - const std::string& filename=mi->getFilename(); - if (!strcasecmp(".ogg", filename.c_str()+filename.size()-4)) - m_current_music= new MusicOggStream(); - if(m_current_music == NULL) // no support for file + // First load the 'normal' music + // ----------------------------- + const std::string& filename_normal=mi->getNormalFilename(); + if(StringUtils::extension(filename_normal)!="ogg") { - fprintf(stderr, "WARNING: music file %s format not recognized.\n", filename.c_str()); + fprintf(stderr, "WARNING: music file %s format not recognized.\n", + filename_normal.c_str()); return; } + m_normal_music= new MusicOggStream(); - if((m_current_music->load(filename)) == false) + if((m_normal_music->load(filename_normal)) == false) { - delete m_current_music; - m_current_music=0; + delete m_normal_music; + m_normal_music=0; fprintf(stderr, "WARNING: Unabled to load music %s, not supported or not found.\n", - filename.c_str()); + filename_normal.c_str()); return; } + m_normal_music->playMusic(); - m_current_music->playMusic(); + // Then (if available) load the music for the last track + // ----------------------------------------------------- + const std::string& filename_fast=mi->getFastFilename(); + if(StringUtils::extension(filename_fast)!="ogg") + { + fprintf(stderr, + "WARNING: music file %s format not recognized, fast music is ignored\n", + filename_fast.c_str()); + return; + } + m_fast_music= new MusicOggStream(); + + if((m_fast_music->load(filename_fast)) == false) + { + delete m_fast_music; + m_fast_music=0; + fprintf(stderr, "WARNING: Unabled to load fast music %s, not supported or not found.\n", + filename_fast.c_str()); + return; + } + } // playMusic //----------------------------------------------------------------------------- void SoundManager::stopMusic() { - if (m_current_music != NULL) + if (m_normal_music != NULL) { - m_current_music->stopMusic(); + m_normal_music->stopMusic(); } + if (m_fast_music != NULL) + { + m_fast_music->stopMusic(); + } m_music_information = NULL; } // stopMusic //----------------------------------------------------------------------------- void SoundManager::pauseMusic() { - if (m_current_music != NULL) + if (m_normal_music != NULL) { - m_current_music->pauseMusic(); + m_normal_music->pauseMusic(); } + if (m_fast_music != NULL) + { + m_fast_music->pauseMusic(); + } } // pauseMusic //----------------------------------------------------------------------------- +/*** If available select the faster music (usually for the last track). +*/ +void SoundManager::switchToFastMusic() +{ + if(m_fast_music && m_mode==SOUND_NORMAL) + { + m_mode = SOUND_FADING; + m_time_since_fade = 0.0f; + m_fast_music->playMusic(); + } +} // switchToFastMusic +//----------------------------------------------------------------------------- + void SoundManager::resumeMusic() { - if (m_current_music != NULL) + if (m_normal_music != NULL) { - m_current_music->resumeMusic(); + m_normal_music->resumeMusic(); } + if (m_fast_music != NULL) + { + m_fast_music->resumeMusic(); + } } // resumeMusic //----------------------------------------------------------------------------- -void SoundManager::update() +void SoundManager::update(float dt) { - if (m_current_music != NULL) - { - m_current_music->update(); - } + switch(m_mode) + { + case SOUND_FADING: { + m_time_since_fade +=dt; + if(m_time_since_fade>=m_music_information->getFadeTime()) + { + m_mode=SOUND_FAST; + m_normal_music->stopMusic(); + m_fast_music->update(); + return; + } + float fraction=m_time_since_fade/m_music_information->getFadeTime(); + m_normal_music->updateFading(1-fraction); + m_fast_music->updateFading(fraction); + break; + } + case SOUND_NORMAL: + m_normal_music->update(); + break; + case SOUND_FAST: + m_fast_music->update(); + break; + } // switch } // update Modified: trunk/supertuxkart/src/sound_manager.hpp =================================================================== --- trunk/supertuxkart/src/sound_manager.hpp 2008-03-17 04:43:01 UTC (rev 1656) +++ trunk/supertuxkart/src/sound_manager.hpp 2008-03-17 05:18:26 UTC (rev 1657) @@ -40,34 +40,40 @@ class SoundManager { private: + + typedef std::vector<SFX*> SFXsType; + + SFXsType m_sfxs; + Music *m_normal_music, + *m_fast_music; + MusicInformation const *m_music_information; + + bool m_initialized; //If the sound could not be initialized, e.g. + //if the player doesn't has a sound card, we want + //to avoid anything sound related so we crash the game. + std::map<std::string, const MusicInformation*> + m_allMusic; void loadMusicInformation(); - std::map<std::string, const MusicInformation*> m_allMusic; + enum {SOUND_NORMAL, SOUND_FADING, + SOUND_FAST} m_mode; + float m_time_since_fade; + public: SoundManager(); virtual ~SoundManager(); - void update(); + void update(float dt); void playSfx(unsigned int id); void playMusic(const MusicInformation* mi); void stopMusic(); void pauseMusic(); void resumeMusic(); + void switchToFastMusic(); const MusicInformation* getCurrentMusic() {return m_music_information; } const MusicInformation* getMusicInformation(const std::string& filename); void loadMusicFromOneDir(const std::string& dir); void addMusicToTracks() const; -private: - typedef std::vector<SFX*> SFXsType; - - SFXsType m_sfxs; - Music* m_current_music; - MusicInformation const* m_music_information; - - bool m_initialized; //If the sound could not be initialized, for example, - //if the player doesn't has a sound card, we want - //to avoid anything sound related so we crash the game. - }; extern SoundManager* sound_manager; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-03-27 02:38:17
|
Revision: 1674 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1674&view=rev Author: hikerstk Date: 2008-03-26 19:38:10 -0700 (Wed, 26 Mar 2008) Log Message: ----------- 1) Added unlocking (Grand Prix mode, snowtuxpeak and jungle track are locked now) 2) Fixed gettext handling for windows, added initial (and by now somewhat outdated) German translation. Modified Paths: -------------- trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/file_manager.cpp trunk/supertuxkart/src/file_manager.hpp trunk/supertuxkart/src/gui/char_sel.cpp trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/grand_prix_ending.cpp trunk/supertuxkart/src/gui/grand_prix_select.cpp trunk/supertuxkart/src/gui/main_menu.cpp trunk/supertuxkart/src/gui/menu_manager.cpp trunk/supertuxkart/src/gui/menu_manager.hpp trunk/supertuxkart/src/gui/race_results_gui.cpp trunk/supertuxkart/src/gui/track_sel.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/race_manager.cpp trunk/supertuxkart/src/translation.cpp trunk/supertuxkart/src/translation.hpp trunk/supertuxkart/src/user_config.cpp trunk/supertuxkart/src/world.cpp Added Paths: ----------- trunk/supertuxkart/data/po/de/ trunk/supertuxkart/data/po/de/LC_MESSAGES/ trunk/supertuxkart/data/po/de/LC_MESSAGES/supertuxkart.mo trunk/supertuxkart/data/po/de.po trunk/supertuxkart/src/challenges/ trunk/supertuxkart/src/challenges/all_tracks.cpp trunk/supertuxkart/src/challenges/all_tracks.hpp trunk/supertuxkart/src/challenges/challenge.cpp trunk/supertuxkart/src/challenges/challenge.hpp trunk/supertuxkart/src/challenges/energy_math_class.cpp trunk/supertuxkart/src/challenges/energy_math_class.hpp trunk/supertuxkart/src/challenges/win_gotm_cup.cpp trunk/supertuxkart/src/challenges/win_gotm_cup.hpp trunk/supertuxkart/src/gui/challenges_menu.cpp trunk/supertuxkart/src/gui/challenges_menu.hpp trunk/supertuxkart/src/gui/feature_unlocked.cpp trunk/supertuxkart/src/gui/feature_unlocked.hpp trunk/supertuxkart/src/unlock_manager.cpp trunk/supertuxkart/src/unlock_manager.hpp Added: trunk/supertuxkart/data/po/de/LC_MESSAGES/supertuxkart.mo =================================================================== (Binary files differ) Property changes on: trunk/supertuxkart/data/po/de/LC_MESSAGES/supertuxkart.mo ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/supertuxkart/data/po/de.po =================================================================== --- trunk/supertuxkart/data/po/de.po (rev 0) +++ trunk/supertuxkart/data/po/de.po 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,714 @@ +# +# Stefan von Halenbach 2007 +# This translation is licensed under BSD-licens +# +msgid "" +msgstr "" +"Project-Id-Version: Supertuxkart 0.3\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2007-05-16 01:00+0100\n" +"Last-Translator: Stefan von Halenbach <vonHalenbach at users dot sf .net>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: German\n" +"X-Poedit-Country: GERMANY\n" +"X-Poedit-SourceCharset: utf-8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: herring_manager.cpp:245 +#, c-format +msgid "" +"The herring style '%s' in your configuration file does not exist.\n" +"It is ignored.\n" +msgstr "" +"Die Erscheinungsform '%s' gibt es nicht in Deiner Konfiguration.\n" +"Es wird ignoriert.\n" + +#: herring_manager.cpp:256 +#, c-format +msgid "" +"The herring style '%s' specified on the command line does not exist.\n" +"It is ignored.\n" +msgstr "" +"Die Erscheinungsform '%s' gibt es nicht in Deiner Konfiguration.\n" +"Die Eingabe auf der Kommandozeile wird ignoriert.\n" + +#: herring_manager.cpp:342 +#, c-format +msgid "Couldn't load map '%s': no herring node." +msgstr "" + +#: kart_properties_manager.cpp:92 +#, c-format +msgid "KartPropertiesManager: Couldn't find kart: '%s'" +msgstr "Kart-Eigenschaftenmanager: Kann Kart nicht finden in: '%s'" + +#: loader.cpp:70 +#, c-format +msgid "Data files will be fetched from: '%s'\n" +msgstr "Spieldaten werden von '%s' heruntergeladen.\n" + +#: loader.cpp:178 +#, c-format +msgid "Couldn't find file '%s'." +msgstr "Kann Datei '%s' nicht öffnen." + +#: main.cpp:63 +#, c-format +msgid "" +"Usage: %s [OPTIONS]\n" +"\n" +"Run SuperTuxKart, a racing game with go-kart that features the Tux and friends.\n" +"\n" +"Options:\n" +" -N, --no-start-screen Quick race\n" +" -l, --list-tracks Show available tracks\n" +" -k, --numkarts NUM Number of karts on the racetrack\n" +" --kart NAME Use kart number NAME\n" +" --list-karts Show available karts\n" +" --laps N Define number of laps to N\n" +" --herring STYLE Use STYLE as your herring style\n" +" -f, --fullscreen Fullscreen display\n" +" -w, --windowed Windowed display (default)\n" +" -s, --screensize WxH Set the screen size (e.g. 320x200)\n" +" -v, --version Show version\n" +" -h, --help Show this help\n" +"\n" +"You can visit SuperTuxKart's homepage at http://supertuxkart.berlios.de\n" +"\n" +msgstr "" +"Eingabeformat: %s [OPTIONEN]\n" +"\n" +"Starte supertuxkart. Ein Spiel in dem es um ein Go-Kart-Wettrennen von Tux \n" +"und seinen Freunden geht.\n" +"\n" +"Optionen:\n" +" -N, --no-start-screen Schneller Spielstart\n" +" -l, --list-tracks Zeige vorhandere Strecken\n" +" -k, --numkarts NUM Anzahl der Karts auf der Rennstrecke\n" +" --kart NAME Benutze das Kart NAME\n" +" --list-karts Zeige vorhandene Karts\n" +" --laps N Setze Anzahl der zu fahrenden Runden mit N fest.\n" +" --herring STYLE Benutze STYLE als Dein Erscheinungsbild des Herings.\n" +" -f, --fullscreen Darstellung im Vollbildformat\n" +" -w, --windowed Darstellung im Fenster (Voreinstellung)\n" +" -s, --screensize WxH Setze die Bildschirmauflösung fest (z.B. 320x200)\n" +" -v, --version Zeige Programmversion\n" +" -h, --help Zeige diese Hilfe\n" +"\n" +"Du kannst SuperTuxKart's Internetseite auf http://supertuxkart.berlios.de besuchen.\n" +"\n" + +#: main.cpp:105 +msgid "--help" +msgstr "" + +#: main.cpp:106 +msgid "-help" +msgstr "" + +#: main.cpp:120 +#, c-format +msgid "You choose to start in track: %s.\n" +msgstr "Du beginnst auf Rennstrecke: %s.\n" + +#: main.cpp:126 +#, c-format +msgid "You choose to have %s karts.\n" +msgstr "Du hast %s Karts zur Verfügung.\n" + +#: main.cpp:131 +#, c-format +msgid " Available tracks:\n" +msgstr "Verfügbare Strecken:\n" + +#: main.cpp:137 +#, c-format +msgid "" +"Use --track N to choose track.\n" +"\n" +msgstr "" +"Benutze --track N um die Runde vorzuwählen.\n" +"\n" + +#: main.cpp:147 +#, c-format +msgid " Available karts:\n" +msgstr "Verfügbare Karts:\n" + +#: main.cpp:168 +#, c-format +msgid "Enabling mirror mode.\n" +msgstr "Geteilter Bildschirmmodus.\n" + +#: main.cpp:177 +#, c-format +msgid "You choose to have %d laps.\n" +msgstr "Du fährst %d Runden.\n" + +#: main.cpp:207 +#, c-format +msgid "You choose to be in %dx%d.\n" +msgstr "Du bist in %dx%d.\n" + +#: main.cpp:211 +#, c-format +msgid "Error: --screensize argument must be given as WIDTHxHEIGHT\n" +msgstr "Fehler: --screensize muss als Argument BREITExHÖHE bekommen\n" + +#: main.cpp:240 +#, c-format +msgid "" +"Invalid parameter: %s.\n" +"\n" +msgstr "" +"Ungültiger Parameter: %s.\n" +"\n" + +#: main.cpp:372 +#, c-format +msgid "" +"\n" +"Aborting SuperTuxKart\n" +msgstr "" +"\n" +"Beende SuperTuxKart\n" + +#: moving_texture.cpp:77 +#, c-format +msgid "Unrecognised @autodcs string: '%s'\n" +msgstr "" + +#: sound_manager.cpp:50 +#, c-format +msgid "WARNING: Could not initialize the PLIB based sound.\n" +msgstr "" + +#: sound_manager.cpp:62 +#, c-format +msgid "WARNING: Could not initialize the ALUT based sound.\n" +msgstr "" + +#: user_config.cpp:127 +#: gui/config_controls.cpp:36 +#, c-format +msgid "Player %d" +msgstr "Spieler %d" + +#: user_config.cpp:209 +#, c-format +msgid "Couldn't create '%s', config files will not be saved.\n" +msgstr "Kann Datei '%s' nicht erzeugen. Konfiguration kann nicht gespeichert werden.\n" + +#: user_config.cpp:215 +#, c-format +msgid "Config directory '%s' successfully created.\n" +msgstr "Unterverzeichnis '%s' für Konfigurationsdaten erfolgreich erstellt.\n" + +#: user_config.cpp:240 +#, c-format +msgid "Config file '%s' does not exist, it will be created.\n" +msgstr "Konfigurationsdatei '%s' kann nicht gefunden werden. Wird erstellt.\n" + +#: user_config.cpp:252 +#, c-format +msgid "No tuxkart-config node" +msgstr "" + +#: user_config.cpp:261 +#, c-format +msgid "" +"\n" +"Config file version '%d' is too old.\n" +"The following changes have been applied in the current SuperTuxKart version:\n" +msgstr "" +"\n" +"Version der Konfigurationsdatei '%d' ist viel zu alt.\n" +"Die folgenden Änderungen wurden in der aktuellen Version von SuperTuxKart hinzugefügt:\n" + +#: user_config.cpp:267 +#, c-format +msgid "- Single window menu, old status display,new keyboard style settings were removed\n" +msgstr "" + +#: user_config.cpp:269 +#, c-format +msgid "- Key bindings were changed, please check the settings. All existing values were discarded.\n" +msgstr "" + +#: user_config.cpp:272 +#, c-format +msgid "Config file version '%d' is too old. Discarding your configuration. Sorry. :(\n" +msgstr "Die Version '%d' der Konfigurationsdatei ist zu alt. Die Konfiguration kann leider nicht verwendet werden. \n" + +#: user_config.cpp:280 +#, c-format +msgid "This warning can be ignored.\n" +msgstr "Diese Warnung kann auch ignoriert werden.\n" + +#: user_config.cpp:313 +#, c-format +msgid "No '%s' node" +msgstr "" + +#: user_config.cpp:338 +#, c-format +msgid "Error while parsing config '%s':\n" +msgstr "Fehler beim Parsen der Konfigurationsdatei '%s':\n" + +#: user_config.cpp:490 +#, c-format +msgid "Couldn't write config: " +msgstr "Kann Konfigurationsdatei nicht auf Festplatte schreiben:" + +#: user_config.cpp:549 +#, c-format +msgid "%s" +msgstr "%s" + +#: user_config.cpp:552 +#, c-format +msgid "joy %d axis %d %c" +msgstr "Joystick %d Achsen %d %c" + +#: user_config.cpp:556 +#, c-format +msgid "joy %d btn %d" +msgstr "Joystick %d Knopf %d" + +#: user_config.cpp:559 +#, c-format +msgid "joy %d hat %d" +msgstr "Joystick %d Richtungstasten %d" + +#: user_config.cpp:562 +#, c-format +msgid "mouse btn %d" +msgstr "Maus Schalter %d" + +#: user_config.cpp:565 +#, c-format +msgid "mouse axis %d %c" +msgstr "Maus Achsen %d %c" + +#: user_config.cpp:569 +#, c-format +msgid "Invalid" +msgstr "Ungültig" + +#: gui/char_sel.cpp:52 +#, c-format +msgid "Player %d, choose a driver" +msgstr "Wähle einen Fahrer, Spieler %d" + +#: gui/char_sel.cpp:76 +msgid "No driver choosed" +msgstr "Kein Fahrer ausgewählt" + +#: gui/config_controls.cpp:28 +msgid "Edit controls for which player?" +msgstr "Steuerung für welchen Spieler einstellen?" + +#: gui/config_controls.cpp:41 +#: gui/config_display.cpp:49 +#: gui/config_sound.cpp:56 +#: gui/difficulty.cpp:46 +#: gui/game_mode.cpp:48 +#: gui/grand_prix_select.cpp:58 +#: gui/num_laps.cpp:43 +#: gui/num_players.cpp:41 +#: gui/options.cpp:50 +#: gui/player_controls.cpp:54 +#: gui/scrolled_text.cpp:74 +msgid "Press <ESC> to go back" +msgstr "Taste <ESC> für verlassen, ohne zu ändern" + +#: gui/config_display.cpp:40 +msgid "Display Settings" +msgstr "Grafikeinstellungen" + +#: gui/config_display.cpp:43 +#: gui/config_display.cpp:88 +msgid "Fullscreen mode" +msgstr "Vollbildmodus" + +#: gui/config_display.cpp:47 +#: gui/config_display.cpp:86 +msgid "Window mode" +msgstr "Fenstermodus" + +#: gui/config_sound.cpp:35 +msgid "Sound Settings" +msgstr "Musikeinstellungen" + +#: gui/config_sound.cpp:42 +msgid " Turn off music " +msgstr "Musik ausschalten" + +#: gui/config_sound.cpp:45 +msgid " Turn on music " +msgstr "Musik einschalten" + +#: gui/config_sound.cpp:49 +msgid " Turn off sound effects " +msgstr "Geräuscheffekte ausschalten" + +#: gui/config_sound.cpp:52 +msgid " Turn on sound effects " +msgstr "Geräuscheffekte einschalten" + +#: gui/config_sound.cpp:88 +msgid "Turn on music" +msgstr "Musik einschalten" + +#: gui/config_sound.cpp:93 +msgid "Turn off music" +msgstr "Musik ausschalten" + +#: gui/config_sound.cpp:101 +msgid "Turn on sound effects" +msgstr "Geräuscheffekte einschalten" + +#: gui/config_sound.cpp:106 +msgid "Turn off sound effects" +msgstr "Geräuscheffekte ausschalten" + +#: gui/credits_menu.cpp:44 +#, c-format +msgid "Couldn't load '%s'\n" +msgstr "Kann Datei '%s' nicht öffnen.\n" + +#: gui/credits_menu.cpp:45 +msgid "CREDIT file was not installed properly!!" +msgstr "Die Datei mit der Liste der Beteiligten wurde nicht richtig installiert!!" + +#: gui/credits_menu.cpp:46 +msgid "Please check 'data/CREDIT'!!" +msgstr "Bitte Datei \"data/CREDIT\" überprüfen!!" + +#: gui/difficulty.cpp:37 +msgid "Choose your skill level" +msgstr "Schwierigkeitsgrad wählen" + +#: gui/difficulty.cpp:42 +msgid "Racer" +msgstr "Rennfahrer" + +#: gui/difficulty.cpp:43 +msgid "Driver" +msgstr "Pistenschreck" + +#: gui/difficulty.cpp:44 +msgid "Novice" +msgstr "Fahranfänger" + +#: gui/game_mode.cpp:37 +msgid "Choose a Race Mode" +msgstr "Wähle die Strecke" + +#: gui/game_mode.cpp:41 +msgid "Grand Prix" +msgstr "Grand Prix" + +#: gui/game_mode.cpp:42 +msgid "Quick Race" +msgstr "Schnelle Runde" + +#: gui/game_mode.cpp:45 +msgid "Time Trial" +msgstr "Gegen die Zeit" + +#: gui/grand_prix_ending.cpp:61 +#, c-format +msgid "The winner is %s!" +msgstr "Gewonnen hat %s!" + +#: gui/grand_prix_ending.cpp:65 +#: gui/race_results_gui.cpp:87 +msgid "Back to the main menu" +msgstr "Zurück zum Hauptmenü" + +#: gui/grand_prix_select.cpp:34 +msgid "Choose a Grand Prix" +msgstr "Wähle einen Kurs" + +#: gui/help_menu.cpp:132 +msgid "Force your rivals bite *your* dust!" +msgstr "Lass Deine Gegner *Deinen* Staub schlucken!" + +#: gui/help_menu.cpp:136 +msgid "Avoid bananas" +msgstr "Halte dich von Bananen fern" + +#: gui/help_menu.cpp:137 +msgid "Grab blue boxes and coins" +msgstr "Sammle blaue Kisten und Münzen" + +#: gui/help_menu.cpp:177 +msgid "" +"At high speeds wheelies drive you faster, but you can't steer. If you\n" +"get stuck or fall too far, use the rescue button to get back on track." +msgstr "" +"Bei hohen Geschwindigkeiten hilft der Kickstart beim schnelleren \n" +"Vorankommen auf der Strecke. Allerdings kann dann nicht \n" +"gelenkt werden. Wenn du stecken bleibst, oder über die Fahrbahn hinausschießt, benutze einfach den \n" +"Rettungsknopf um wieder auf die Fahrbahn zu kommen." + +#: gui/help_menu.cpp:184 +msgid "Check the current keys bindings for the first player:" +msgstr "Überprüfe die Tastenbelegung für den ersten Spieler:" + +#: gui/help_menu.cpp:205 +msgid "Next screen" +msgstr "Nächster Bildschirm" + +#: gui/help_menu.cpp:206 +#: gui/help_menu.cpp:263 +msgid "Go back to the main menu" +msgstr "Zurück zum Hauptmenü" + +#: gui/help_menu.cpp:223 +msgid "To help you win, there are certain collectables you can grab:" +msgstr "Um dich beim Gewinnen ein wenig zu unterstützen, gibt es kleine Hilfen zum Aufsammeln:" + +#: gui/help_menu.cpp:234 +#: gui/help_menu.cpp:259 +msgid "Missile - fast stopper in a straight line" +msgstr "Rakete - Vollbremsung in einer geraden Linie" + +#: gui/help_menu.cpp:238 +msgid "Homing missile - follows rivals, but is slower than the missile" +msgstr "Lenkrakete - Folgt Gegnern. Ist aber etwas langsamer als die andere Rakete" + +#: gui/help_menu.cpp:242 +msgid "Fuzzy blob/Spark - very slow, but bounces from walls" +msgstr "Haariger Blubber/Blitz - sehr langsam, aber prallt von Wänden ab" + +#: gui/help_menu.cpp:246 +msgid "Zipper - speed boost" +msgstr "Reißverschluss - Geschwindigkeitssteigerung" + +#: gui/help_menu.cpp:250 +msgid "Parachute - slows down all karts in a better position!" +msgstr "Fallschirm - Bremst alle vorrausfahrenden Karts ab!" + +#: gui/help_menu.cpp:254 +msgid "Anvil - slows down greatly the kart in the first position" +msgstr "Amboss - Bremst das Kart an erster Position sehr stark" + +#: gui/help_menu.cpp:262 +msgid "Previous screen" +msgstr "Voriger Bildschirm" + +#: gui/main_menu.cpp:43 +msgid "Single Player" +msgstr "Einzelspieler" + +#: gui/main_menu.cpp:44 +msgid "Multiplayer" +msgstr "Mehrspieler" + +#: gui/main_menu.cpp:45 +#: gui/options.cpp:38 +#: gui/race_menu.cpp:47 +msgid "Options" +msgstr "Einstellungen" + +#: gui/main_menu.cpp:46 +msgid "Quit" +msgstr "Beenden" + +#: gui/main_menu.cpp:48 +#: gui/race_menu.cpp:48 +msgid "Help" +msgstr "Hilfe" + +#: gui/main_menu.cpp:49 +msgid "Credits" +msgstr "Mitwirkende" + +#: gui/num_laps.cpp:34 +msgid "Choose number of laps" +msgstr "Wähle die Anzahl der Runden" + +#: gui/num_laps.cpp:36 +msgid "One" +msgstr "Eine" + +#: gui/num_laps.cpp:37 +msgid "Two" +msgstr "Zwei" + +#: gui/num_laps.cpp:38 +msgid "Four" +msgstr "Vier" + +#: gui/num_laps.cpp:39 +msgid "Five" +msgstr "Fünf" + +#: gui/num_laps.cpp:40 +msgid "Six" +msgstr "Sechs" + +#: gui/num_laps.cpp:41 +msgid "Eight" +msgstr "Acht" + +#: gui/num_players.cpp:37 +msgid "Two Players" +msgstr "Zwei Spieler" + +#: gui/num_players.cpp:38 +msgid "Three Players" +msgstr "Drei Spieler" + +#: gui/num_players.cpp:39 +msgid "Four Players" +msgstr "Vier Spieler" + +#: gui/options.cpp:39 +msgid "Controls" +msgstr "Steuerung" + +#: gui/options.cpp:46 +msgid "Display" +msgstr "Anzeigeoptionen" + +#: gui/options.cpp:48 +msgid "Sound" +msgstr "Lautstärke" + +#: gui/player_controls.cpp:30 +msgid "Left" +msgstr "Links" + +#: gui/player_controls.cpp:30 +msgid "Right" +msgstr "Rechts" + +#: gui/player_controls.cpp:30 +msgid "Accelerate" +msgstr "Beschleunigen" + +#: gui/player_controls.cpp:31 +msgid "Brake" +msgstr "Bremsen" + +#: gui/player_controls.cpp:31 +msgid "Wheelie" +msgstr "Kickstart" + +#: gui/player_controls.cpp:31 +msgid "Jump" +msgstr "Sprung" + +#: gui/player_controls.cpp:32 +msgid "Rescue" +msgstr "Retten" + +#: gui/player_controls.cpp:32 +msgid "Fire" +msgstr "Schießen" + +#: gui/player_controls.cpp:39 +#, c-format +msgid "Choose your controls, %s" +msgstr "Wähle die Steuerungsart, %s" + +#: gui/player_controls.cpp:79 +msgid "Press key" +msgstr "Taste drücken" + +#: gui/race_gui.cpp:335 +#, c-format +msgid "YOU FINISHED %s" +msgstr "%s hat es ins Ziel geschafft" + +#: gui/race_gui.cpp:340 +msgid "CONGRATULATIONS" +msgstr "Herzlichen Glückwunsch!" + +#: gui/race_gui.cpp:341 +msgid "YOU WON THE RACE!" +msgstr "Du hast das Rennen gewonnen!" + +#: gui/race_gui.cpp:489 +#: gui/race_gui.cpp:503 +msgid "WRONG WAY!" +msgstr "Falsche Richtung!" + +#: gui/race_gui.cpp:770 +msgid "REV" +msgstr "Rückwärts" + +#: gui/race_gui.cpp:817 +#, c-format +msgid "Finished" +msgstr "Beendet" + +#: gui/race_gui.cpp:822 +msgid "Lap" +msgstr "Runde" + +#: gui/race_gui.cpp:856 +msgid "Ready!" +msgstr "Achtung!" + +#: gui/race_gui.cpp:859 +msgid "Set!" +msgstr "Fertig?" + +#: gui/race_gui.cpp:862 +msgid "Go!" +msgstr "Los!" + +#: gui/race_gui.cpp:879 +msgid "Penalty time!!" +msgstr "Strafzeit!!" + +#: gui/race_menu.cpp:43 +msgid "Paused" +msgstr "Pause" + +#: gui/race_menu.cpp:46 +msgid "Return To Race" +msgstr "Zurück zum Rennen" + +#: gui/race_menu.cpp:49 +msgid "Restart Race" +msgstr "Rennen neu starten" + +#: gui/race_menu.cpp:53 +#: gui/race_results_gui.cpp:91 +msgid "Setup New Race" +msgstr "Neues Rennen konfigurieren" + +#: gui/race_menu.cpp:56 +msgid "Exit Race" +msgstr "Rennen beenden" + +#: gui/race_results_gui.cpp:41 +msgid "Race results" +msgstr "Rennergebnisse" + +#: gui/race_results_gui.cpp:88 +msgid "Race in this track again" +msgstr "Diese Runde nochmal fahren" + +#: gui/track_sel.cpp:42 +msgid "Choose a Track" +msgstr "Wähle eine Strecke aus" + +#: lisp/parser.cpp:52 +#, c-format +msgid "Couldn't open file '%s'." +msgstr "Kann Datei '%s' nicht öffnen." + +#: lisp/writer.cpp:40 +#, c-format +msgid "LispWriter Error: Couldn't open file '%s'." +msgstr "" + Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-03-26 05:51:11 UTC (rev 1673) +++ trunk/supertuxkart/src/Makefile.am 2008-03-27 02:38:10 UTC (rev 1674) @@ -52,6 +52,7 @@ stk_config.cpp stk_config.hpp \ highscores.cpp highscores.hpp \ highscore_manager.cpp highscore_manager.hpp \ + unlock_manager.cpp unlock_manager.hpp \ file_manager.cpp file_manager.hpp \ loader.cpp loadre.hpp \ race_manager.cpp race_manager.hpp \ @@ -91,6 +92,10 @@ translation.cpp translation.hpp \ traffic.cpp \ player.hpp \ + challenges/challenge.hpp challenges/challenge.cpp \ + challenges/all_tracks.cpp challenges/all_tracks.hpp \ + challenges/energy_math_class.cpp challenges/energy_math_class.hpp\ + challenges/win_gotm_cup.cpp challenges/win_gotm_cup.hpp \ lisp/lisp.cpp lisp/lisp.hpp \ lisp/lexer.cpp lisp/lexer.hpp \ lisp/parser.cpp lisp/parser.hpp \ @@ -119,6 +124,8 @@ gui/help_page_two.cpp gui/help_page_two.hpp \ gui/credits_menu.cpp gui/credits_menu.hpp \ gui/grand_prix_select.cpp gui/grand_prix_select.hpp \ + gui/challenges_menu.cpp gui/challenges_menu.hpp \ + gui/feature_unlocked.cpp gui/feature_unlocked.hpp \ gui/font.hpp gui/font.cpp \ robots/default_robot.cpp robots/default_robot.hpp \ replay_buffer_tpl.hpp \ Added: trunk/supertuxkart/src/challenges/all_tracks.cpp =================================================================== --- trunk/supertuxkart/src/challenges/all_tracks.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/all_tracks.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,58 @@ +// $Id: all_tracks.cpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <algorithm> +#include "challenges/all_tracks.hpp" +#include "world.hpp" +#include "unlock_manager.hpp" + +AllTracks::AllTracks() : Challenge("alltracks", "All Tracks") +{ + setChallengeDescription("Finish one race\nin each track"); + setFeatureDescription("New track: SnowTuxPeak\nnow available"); + setFeature("snowtuxpeak"); +} // AllTracks + +//----------------------------------------------------------------------------- +void AllTracks::loadState(const lisp::Lisp* config) +{ + config->getVector("solved-tracks", m_raced_tracks); +} // loadState + +//----------------------------------------------------------------------------- +void AllTracks::saveState(lisp::Writer* writer) +{ + writer->write("solved-tracks\t", m_raced_tracks); +} // saveState + +//----------------------------------------------------------------------------- +bool AllTracks::raceFinished() +{ + // If the current track is not yet in the list of raced tracks, add it: + std::string track_name = world->getTrack()->getIdent(); + if(std::find(m_raced_tracks.begin(), m_raced_tracks.end(), track_name) + ==m_raced_tracks.end()) + { + m_raced_tracks.push_back(track_name); + } + + // Check if all tracks are finished. If so, unlock feature + return (m_raced_tracks.size()==13); +} // raceFinished +//----------------------------------------------------------------------------- Property changes on: trunk/supertuxkart/src/challenges/all_tracks.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/all_tracks.hpp =================================================================== --- trunk/supertuxkart/src/challenges/all_tracks.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/all_tracks.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,40 @@ +// $Id: all_tracks.hpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_ALL_TRACKS_H +#define HEADER_ALL_TRACKS_H + +#include <string> +#include <vector> + +#include "challenges/challenge.hpp" + +class AllTracks : public Challenge +{ +private: + std::vector<std::string> m_raced_tracks; +public: + AllTracks(); + virtual void loadState(const lisp::Lisp* config); + virtual void saveState(lisp::Writer* writer); + virtual bool raceFinished(); + +}; // AllTracks + +#endif Property changes on: trunk/supertuxkart/src/challenges/all_tracks.hpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/challenge.cpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/challenge.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,54 @@ +// $Id: challenge.cpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "challenges/challenge.hpp" +#include "unlock_manager.hpp" + +Challenge::Challenge(std::string id, std::string name) : + m_state(CH_INACTIVE), m_Id(id), m_Name(name) +{ +} // Challenge + +//----------------------------------------------------------------------------- +/** Loads the state for a challenge object (esp. m_state), and calls the + * virtual function loadState for additional information + */ +void Challenge::load(const lisp::Lisp* config) +{ + const lisp::Lisp* subnode= config->getLisp(getId()); + if(!subnode) return; + + // See if the challenge is solved (it's activated later from the + // unlock_manager). + bool finished=false; + subnode->get("solved", finished); + m_state = finished ? CH_SOLVED : CH_INACTIVE; + if(!finished) loadState(subnode); +} // load + +//----------------------------------------------------------------------------- +void Challenge::save(lisp::Writer* writer) +{ + writer->beginList(getId()); + writer->write("solved", isSolved()); + if(!isSolved()) saveState(writer); + writer->endList(getId()); +} // save + +//----------------------------------------------------------------------------- Property changes on: trunk/supertuxkart/src/challenges/challenge.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/challenge.hpp =================================================================== --- trunk/supertuxkart/src/challenges/challenge.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/challenge.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,79 @@ +// $Id: challenge.hpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CHALLENGE_H +#define HEADER_CHALLENGE_H + +#include <string> +#include <vector> + +#include "lisp/lisp.hpp" +#include "lisp/parser.hpp" +#include "lisp/writer.hpp" + + +// A base class for all challenges +class Challenge +{ + enum {CH_INACTIVE, // challenge not yet possible + CH_ACTIVE, // challenge possible, but not yet solved + CH_SOLVED} m_state; // challenge was solved + std::string m_Id; // short, internal name for this challenge + std::string m_Name; // name used in menu for this challenge + std::string m_Description; // description + std::string m_feature_description; // Description of feature to unlock + std::string m_feature; // Feature to unlock + std::vector<std::string> m_prerequisites; +public: + Challenge(std::string id, std::string name); + virtual ~Challenge() {}; + const std::string& getId() const {return m_Id; } + const std::string& getName() const {return m_Name; } + void setFeatureDescription(const std::string& f) + {m_feature_description=f; } + const std::string& + getFeatureDescription() const {return m_feature_description; } + void setFeature(const std::string& s) {m_feature=s; } + const std::string& getFeature() const {return m_feature; } + void setChallengeDescription(const std::string& d) + {m_Description=d; } + const std::string& + getChallengeDescription() const {return m_Description; } + void addDependency(const std::string id) {m_prerequisites.push_back(id);} + bool isSolved() const {return m_state==CH_SOLVED; } + bool isActive() const {return m_state==CH_ACTIVE; } + void setSolved() {m_state = CH_SOLVED; } + void setActive() {m_state = CH_ACTIVE; } + const std::vector<std::string>& + getPrerequisites() const {return m_prerequisites; } + void load(const lisp::Lisp* config); + void save(lisp::Writer* writer); + + // These functions are meant for customisation, e.g. load/save + // additional state information specific to the challenge + virtual void loadState(const lisp::Lisp* config) {}; + virtual void saveState(lisp::Writer* writer) {}; + + // These functions are called when a race/gp is finished. It allows + // the challenge to unlock features (when returning true), otherwise + // the feature remains locked. + virtual bool raceFinished() {return false;} // end of a race + virtual bool grandPrixFinished() {return false;} // end of a GP +}; +#endif Property changes on: trunk/supertuxkart/src/challenges/challenge.hpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/energy_math_class.cpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_math_class.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/energy_math_class.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,43 @@ +// $Id: energy_math_class.cpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <algorithm> +#include "challenges/energy_math_class.hpp" +#include "world.hpp" +#include "unlock_manager.hpp" + +EnergyMathClass::EnergyMathClass() : Challenge("energymathclass", "Collect Coins in Race track") +{ + setChallengeDescription("Collect at least 6 coins\non three laps of\nOliver's Math Class\nin under 1 minute."); + setFeatureDescription("New game mode\n'Grand Prix'\nnow available"); + setFeature("grandprix"); +} // EnergyMathClass + +//----------------------------------------------------------------------------- +bool EnergyMathClass::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="olivermath") return false; // wrong track + Kart* kart=world->getPlayerKart(0); + if(kart->getFinishTime()>60) return false; // too slow + if(kart->getLap()!=3 ) return false; // wrong number of laps + if(kart->getNumHerring()<6 ) return false; // not enough herrings + return true; +} // raceFinished +//----------------------------------------------------------------------------- Property changes on: trunk/supertuxkart/src/challenges/energy_math_class.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/energy_math_class.hpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_math_class.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/energy_math_class.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,35 @@ +// $Id: energy_math_class.hpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_ENERGY_MATH_CLASS_H +#define HEADER_ENERGY_MATH_CLASS_H + +#include <string> +#include <vector> + +#include "challenges/challenge.hpp" + +class EnergyMathClass : public Challenge +{ +public: + EnergyMathClass(); + virtual bool raceFinished(); +}; // EnergyMathClass + +#endif Property changes on: trunk/supertuxkart/src/challenges/energy_math_class.hpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/win_gotm_cup.cpp =================================================================== --- trunk/supertuxkart/src/challenges/win_gotm_cup.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/win_gotm_cup.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,52 @@ +// $Id: win_gotm_cup.cpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <algorithm> +#include "challenges/win_gotm_cup.hpp" +#include "world.hpp" +#include "unlock_manager.hpp" +#include "race_setup.hpp" +#include "race_manager.hpp" + +WinGOTMCup::WinGOTMCup() : Challenge("wingotmcup", "Win GOTM Cup") +{ + setChallengeDescription("Win the GOTM Cup\non level 'racer'\nwith at least\nthree computer opponents."); + setFeatureDescription("New track\n'Amazonian Journey'\navailable"); + // The energymathclass challenge must be done, otherwise GP can't be selected + addDependency("energymathclass"); + setFeature("jungle"); +} // WinGOTMCup + +//----------------------------------------------------------------------------- +bool WinGOTMCup::grandPrixFinished() +{ + const RaceSetup* race=&world->m_race_setup; + if (race->m_mode != RaceSetup::RM_GRAND_PRIX || + race->m_difficulty != RD_HARD || + race->getNumKarts() < 4 || + race->getNumPlayers() > 1) return false; + // Check if the player was number one: + for(int i=0; i<(int)world->getNumKarts(); i++) + { + const Kart* k=world->getKart(i); + if(k->isPlayerKart()) return k->getPosition()==1; + } + return false; +} // raceFinished +//----------------------------------------------------------------------------- Property changes on: trunk/supertuxkart/src/challenges/win_gotm_cup.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/win_gotm_cup.hpp =================================================================== --- trunk/supertuxkart/src/challenges/win_gotm_cup.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/win_gotm_cup.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,35 @@ +// $Id: win_gotm_cup.hpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_WIN_GOTM_CUP_H +#define HEADER_WIN_GOTM_CUP_H + +#include <string> +#include <vector> + +#include "challenges/challenge.hpp" + +class WinGOTMCup: public Challenge +{ +public: + WinGOTMCup(); + virtual bool grandPrixFinished(); +}; // WinGOTMCup + +#endif Property changes on: trunk/supertuxkart/src/challenges/win_gotm_cup.hpp ___________________________________________________________________ Name: svn:executable + * Modified: trunk/supertuxkart/src/file_manager.cpp =================================================================== --- trunk/supertuxkart/src/file_manager.cpp 2008-03-26 05:51:11 UTC (rev 1673) +++ trunk/supertuxkart/src/file_manager.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -101,7 +101,9 @@ #else m_root_dir = "/usr/local/share/games/supertuxkart" ; #endif - fprintf(stderr, _("Data files will be fetched from: '%s'\n"), + // We can't use _() here, since translations will only be initalised + // after the filemanager (to get the path to the tranlsations from it) + fprintf(stderr, "Data files will be fetched from: '%s'\n", m_root_dir.c_str() ); pushTextureSearchPath(m_root_dir+"/data/textures"); @@ -207,6 +209,11 @@ { return m_root_dir+"/data/herrings"; } // getHerringDir +//----------------------------------------------------------------------------- +std::string FileManager::getTranslationDir() const +{ + return m_root_dir+"/data/po"; +} // getTranslationDir //----------------------------------------------------------------------------- std::vector<std::string> FileManager::getMusicDirs() const Modified: trunk/supertuxkart/src/file_manager.hpp =================================================================== --- trunk/supertuxkart/src/file_manager.hpp 2008-03-26 05:51:11 UTC (rev 1673) +++ trunk/supertuxkart/src/file_manager.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -40,26 +40,27 @@ FileManager(); ~FileManager(); - std::string getHomeDir () const; - std::string getTrackDir () const; - std::string getKartDir () const; - std::string getHerringDir () const; + std::string getHomeDir () const; + std::string getTrackDir () const; + std::string getKartDir () const; + std::string getHerringDir () const; + std::string getTranslationDir() const; std::vector<std::string>getMusicDirs() const; - std::string getTextureFile (const std::string& fname) const; - std::string getKartFile (const std::string& fname, - const std::string& kart="") const; - std::string getTrackFile (const std::string& fname, - const std::string& track="") const; - std::string getConfigFile (const std::string& fname) const; - std::string getHighscoreFile(const std::string& fname) const; - std::string getLogFile (const std::string& fname) const; - std::string getHerringFile (const std::string& fname) const; - std::string getMusicFile (const std::string& fname) const; - std::string getSFXFile (const std::string& fname) const; - std::string getFontFile (const std::string& fname) const; - std::string getModelFile (const std::string& fname) const; + std::string getTextureFile (const std::string& fname) const; + std::string getKartFile (const std::string& fname, + const std::string& kart="") const; + std::string getTrackFile (const std::string& fname, + const std::string& track="") const; + std::string getConfigFile (const std::string& fname) const; + std::string getHighscoreFile (const std::string& fname) const; + std::string getLogFile (const std::string& fname) const; + std::string getHerringFile (const std::string& fname) const; + std::string getMusicFile (const std::string& fname) const; + std::string getSFXFile (const std::string& fname) const; + std::string getFontFile (const std::string& fname) const; + std::string getModelFile (const std::string& fname) const; #ifdef HAVE_GHOST_REPLAY - std::string getReplayFile(const std::string& fname) const; + std::string getReplayFile (const std::string& fname) const; #endif void listFiles(std::set<std::string>& result, const std::string& dir, Added: trunk/supertuxkart/src/gui/challenges_menu.cpp =================================================================== --- trunk/supertuxkart/src/gui/challenges_menu.cpp (rev 0) +++ trunk/supertuxkart/src/gui/challenges_menu.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,93 @@ +// $Id: challenges_menu.cpp 1305 2007-11-26 14:28:15Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui/challenges_menu.hpp" +#include "widget_manager.hpp" +#include "menu_manager.hpp" +#include "unlock_manager.hpp" +#include "translation.hpp" + +enum WidgetTokens +{ + WTOK_TITLE, + WTOK_BACK, + WTOK_DESCRIPTION, + WTOK_CHALLENGES +}; + +ChallengesMenu::ChallengesMenu() +{ + const bool SHOW_RECT = true; + const bool SHOW_TEXT = true; + widget_manager->setInitialActivationState(false); + widget_manager->setInitialRectState(SHOW_RECT, WGT_AREA_ALL, WGT_TRANS_BLACK); + widget_manager->setInitialTextState(SHOW_TEXT, "", WGT_FNT_MED, WGT_FONT_GUI ); + + widget_manager->addWgt( WTOK_TITLE, 60, 10); + widget_manager->showWgtRect( WTOK_TITLE ); + widget_manager->setWgtText( WTOK_TITLE, _("Active Challenges")); + widget_manager->setWgtTextSize( WTOK_TITLE, WGT_FNT_LRG); + widget_manager->showWgtText( WTOK_TITLE ); + widget_manager->breakLine(); + + m_all_challenges=unlock_manager->getActiveChallenges(); + for(int i=0; i<(int)m_all_challenges.size(); i++) + { + widget_manager->addWgt(WTOK_CHALLENGES+i, 60, 10); + widget_manager->setWgtText( WTOK_CHALLENGES+i, _(m_all_challenges[i]->getName().c_str()) ); + widget_manager->activateWgt(WTOK_CHALLENGES+i); + widget_manager->breakLine(); + } + + widget_manager->addWgt( WTOK_DESCRIPTION, 60, 30); + widget_manager->showWgtRect( WTOK_DESCRIPTION ); + widget_manager->setWgtText( WTOK_DESCRIPTION, ""); + widget_manager->showWgtText( WTOK_DESCRIPTION ); + widget_manager->breakLine(); + + widget_manager->addWgt(WTOK_BACK, 50, 7); + widget_manager->showWgtRect(WTOK_BACK); + widget_manager->showWgtText(WTOK_BACK); + widget_manager->setWgtText(WTOK_BACK, _("Go back to the main menu")); + widget_manager->activateWgt(WTOK_BACK); + + widget_manager->layout(WGT_AREA_ALL); +} // ChallengesMenu +//----------------------------------------------------------------------------- +ChallengesMenu::~ChallengesMenu() +{ + widget_manager->reset(); +} // ~ChallengesMenu + +//----------------------------------------------------------------------------- + +void ChallengesMenu::select() +{ + if(widget_manager->getSelectedWgt()==WTOK_BACK) + { + menu_manager->popMenu(); + return; + } + int n=widget_manager->getSelectedWgt()-WTOK_CHALLENGES; + if(n>=0 && n<(int)m_all_challenges.size()) + { + widget_manager->setWgtText(WTOK_DESCRIPTION, + m_all_challenges[n]->getChallengeDescription()); + } +} // select Property changes on: trunk/supertuxkart/src/gui/challenges_menu.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/gui/challenges_menu.hpp =================================================================== --- trunk/supertuxkart/src/gui/challenges_menu.hpp (rev 0) +++ trunk/supertuxkart/src/gui/challenges_menu.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,38 @@ +// $Id: challenges.hpp 1305 2007-11-26 14:28:15Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_CHALLENGES_H +#define HEADER_CHALLENGES_H + +#include <vector> +#include "challenges/challenge.hpp" +#include "base_gui.hpp" + +class ChallengesMenu: public BaseGUI +{ +private: + std::vector<const Challenge*> m_all_challenges; + +public: + ChallengesMenu(); + ~ChallengesMenu(); + void select (); +}; // ChallengesMenu + +#endif Property changes on: trunk/supertuxkart/src/gui/challenges_menu.hpp ___________________________________________________________________ Name: svn:executable + * Modified: trunk/supertuxkart/src/gui/char_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/char_sel.cpp 2008-03-26 05:51:11 UTC (rev 1673) +++ trunk/supertuxkart/src/gui/char_sel.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -29,6 +29,7 @@ #include "kart_properties.hpp" #include "material_manager.hpp" #include "material.hpp" +#include "unlock_manager.hpp" #include "translation.hpp" #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf @@ -83,6 +84,7 @@ if (kartAvailable(i)) { const KartProperties* kp= kart_properties_manager->getKartById(i); + if(unlock_manager->isLocked(kp->getIdent())) continue; Material *m = material_manager->getMaterial(kp->getIconFile()); widget_manager->addWgt( WTOK_RACER0 + i, 8, 11); widget_manager->showWgtRect( WTOK_RACER0 + i); Added: trunk/supertuxkart/src/gui/feature_unlocked.cpp =================================================================== --- trunk/supertuxkart/src/gui/feature_unlocked.cpp (rev 0) +++ trunk/supertuxkart/src/gui/feature_unlocked.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,87 @@ +// $Id: feature_unlocked.cpp 1305 2007-11-26 14:28:15Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "gui/feature_unlocked.hpp" +#include "widget_manager.hpp" +#include "menu_manager.hpp" +#include "unlock_manager.hpp" +#include "translation.hpp" + +enum WidgetTokens +{ + WTOK_TITLE, + WTOK_CONTINUE, + WTOK_DESCRIPTION +}; + +FeatureUnlocked::FeatureUnlocked() +{ + const bool SHOW_RECT = true; + const bool SHOW_TEXT = true; + widget_manager->setInitialActivationState(false); + widget_manager->setInitialRectState(SHOW_RECT, WGT_AREA_ALL, WGT_TRANS_BLACK); + widget_manager->setInitialTextState(SHOW_TEXT, "", WGT_FNT_MED, WGT_FONT_GUI ); + + widget_manager->addWgt( WTOK_TITLE, 60, 10); + widget_manager->showWgtRect( WTOK_TITLE ); + widget_manager->setWgtText( WTOK_TITLE, _("New Feature Unlocked")); + widget_manager->setWgtTextSize( WTOK_TITLE, WGT_FNT_LRG); + widget_manager->showWgtText( WTOK_TITLE ); + widget_manager->breakLine(); + + m_new_features=unlock_manager->getUnlockedFeatures(); + assert(m_new_features.size()>0); + unlock_manager->clearUnlocked(); + + widget_manager->addWgt( WTOK_DESCRIPTION, 60, 30); + widget_manager->showWgtRect( WTOK_DESCRIPTION ); + widget_manager->setWgtText( WTOK_DESCRIPTION, m_new_features[0]->getFeatureDescription()); + widget_manager->showWgtText( WTOK_DESCRIPTION ); + widget_manager->breakLine(); + + widget_manager->addWgt(WTOK_CONTINUE, 50, 7); + widget_manager->showWgtRect(WTOK_CONTINUE); + widget_manager->showWgtText(WTOK_CONTINUE); + widget_manager->setWgtText(WTOK_CONTINUE, _("Continue")); + widget_manager->activateWgt(WTOK_CONTINUE); + + widget_manager->layout(WGT_AREA_ALL); +} // FeatureUnlocked + +//----------------------------------------------------------------------------- +FeatureUnlocked::~FeatureUnlocked() +{ + widget_manager->reset(); +} // ~FeatureUnlocked + +//----------------------------------------------------------------------------- + +void FeatureUnlocked::select() +{ + assert(widget_manager->getSelectedWgt()==WTOK_CONTINUE); + m_new_features.erase(m_new_features.begin()); + if(m_new_features.size()>0) + { + widget_manager->setWgtText( WTOK_DESCRIPTION, m_new_features[0]->getFeature()); + } + else + { + menu_manager->popMenu(); + } +} // select Property changes on: trunk/supertuxkart/src/gui/feature_unlocked.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/gui/feature_unlocked.hpp =================================================================== --- trunk/supertuxkart/src/gui/feature_unlocked.hpp (rev 0) +++ trunk/supertuxkart/src/gui/feature_unlocked.hpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -0,0 +1,38 @@ +// $Id: feature_unlocked.hpp 1305 2007-11-26 14:28:15Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_FEATURE_UNLOCKED_H +#define HEADER_FEATURE_UNLOCKED_H + +#include <vector> +#include "challenges/challenge.hpp" +#include "base_gui.hpp" + +class FeatureUnlocked: public BaseGUI +{ +private: + std::vector<const Challenge*> m_new_features; + +public: + FeatureUnlocked(); + ~FeatureUnlocked(); + void select (); +}; // FeatureUnlocked + +#endif Property changes on: trunk/supertuxkart/src/gui/feature_unlocked.hpp ___________________________________________________________________ Name: svn:executable + * Modified: trunk/supertuxkart/src/gui/game_mode.cpp =================================================================== --- trunk/supertuxkart/src/gui/game_mode.cpp 2008-03-26 05:51:11 UTC (rev 1673) +++ trunk/supertuxkart/src/gui/game_mode.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -23,6 +23,7 @@ #include "menu_manager.hpp" #include "translation.hpp" #include "user_config.hpp" +#include "unlock_manager.hpp" enum WidgetTokens { @@ -49,7 +50,15 @@ widget_manager->setInitialActivationState(true); widget_manager->addWgt(WTOK_GP, 50, 7); - widget_manager->setWgtText( WTOK_GP, _("Grand Prix")); + if(unlock_manager->isLocked("grandprix")) + { + widget_manager->setWgtText( WTOK_GP, "???"); + widget_manager->deactivateWgt(WTOK_GP); + } + else + { + widget_manager->setWgtText( WTOK_GP, _("Grand Prix")); + } widget_manager->addWgt(WTOK_QUICKRACE, 50, 7); widget_manager->setWgtText( WTOK_QUICKRACE, _("Quick Race")); Modified: trunk/supertuxkart/src/gui/grand_prix_ending.cpp =================================================================== --- trunk/supertuxkart/src/gui/grand_prix_ending.cpp 2008-03-26 05:51:11 UTC (rev 1673) +++ trunk/supertuxkart/src/gui/grand_prix_ending.cpp 2008-03-27 02:38:10 UTC (rev 1674) @@ -26,6 +26,7 @@ #include "sound_manager.hpp" #include "grand_prix_ending.hpp" #include "kart_properties_manager.hpp" +#include "unlock_manager.hpp" #include "widget_manager.hpp" #include "race_manager.hpp" #include "game_manager.hpp" @@ -142,7 +143,14 @@ widget_manager->activateWgt(WTOK_QUIT); widget_manager->showWgtRect(WTOK_QUIT); widget_manager->showWgtText(WTOK_QUIT); - widget_manager->setWgtText(WTOK_QUIT, _("Back to the main menu")); + if(unlock_manager->getUnlockedFeatures().size()>0) + { + widget_manager->setWgtText(WTOK_QUIT, _("Continue")); + } + else + { + widget_manager->setWgtText(WTOK_QUIT, _("Back to the main menu")); + } widget_manager->layout(WGT_AREA_TOP); @@ -218,5 +226,17 @@ //----------------------------------------------------------------------------- void GrandPrixEnd::select() { + // If a new feature was unlocked, display the new feature first + // before returning to the main menu + if(unlock_manager->getUnlockedFeatures().size()>0) + { + // This removes this menu from the stack, and adds the main menu. + // Then we push the new feature menu on top, so that it will be + // displayed next, and on return the main menu is shown. + menu_manager->switchToMainMenu(); + menu_manage... [truncated message content] |
From: <hik...@us...> - 2008-04-09 13:52:56
|
Revision: 1681 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1681&view=rev Author: hikerstk Date: 2008-04-09 06:52:48 -0700 (Wed, 09 Apr 2008) Log Message: ----------- 1) Removed race_setup and race_mode data structures. All this information is now only managed by the race_manager, no more in-between objects to transfer information along. 2) The scores for grand prix are now defined in the stk_config.dat file (10, 8, 6, 5, 4, .., 1, 0, 0) points 3) Bugfix: unlock information wasn't saved anymore. Added specific saving after unlocking, plus re-inserted the 'generic' save at the end of STK again. 4) bugfix/work around: Visual Studio complains about incompatible iterators in sdldrv - apparently caused by using erase, and then keep on using the iterator. 5) Fixed bug when running a race in a GP again (scores/times were added each time). Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/auto_kart.hpp trunk/supertuxkart/src/camera.cpp trunk/supertuxkart/src/camera.hpp trunk/supertuxkart/src/challenges/win_gotm_cup.cpp trunk/supertuxkart/src/collectable.cpp trunk/supertuxkart/src/cup_data.hpp trunk/supertuxkart/src/file_manager.hpp trunk/supertuxkart/src/gui/char_sel.cpp trunk/supertuxkart/src/gui/difficulty.cpp trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/grand_prix_ending.cpp trunk/supertuxkart/src/gui/num_karts.cpp trunk/supertuxkart/src/gui/num_laps.cpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/gui/race_gui.hpp trunk/supertuxkart/src/gui/race_menu.cpp trunk/supertuxkart/src/gui/race_results_gui.cpp trunk/supertuxkart/src/gui/track_sel.cpp trunk/supertuxkart/src/highscore_manager.cpp trunk/supertuxkart/src/highscore_manager.hpp trunk/supertuxkart/src/highscores.cpp trunk/supertuxkart/src/highscores.hpp trunk/supertuxkart/src/history.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/main.cpp trunk/supertuxkart/src/player_kart.cpp trunk/supertuxkart/src/player_kart.hpp trunk/supertuxkart/src/race_manager.cpp trunk/supertuxkart/src/race_manager.hpp trunk/supertuxkart/src/robots/default_robot.cpp trunk/supertuxkart/src/robots/default_robot.hpp trunk/supertuxkart/src/sdldrv.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/unlock_manager.cpp trunk/supertuxkart/src/unlock_manager.hpp trunk/supertuxkart/src/user_config.cpp trunk/supertuxkart/src/world.cpp trunk/supertuxkart/src/world.hpp Removed Paths: ------------- trunk/supertuxkart/src/race_setup.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/data/stk_config.data 2008-04-09 13:52:48 UTC (rev 1681) @@ -5,6 +5,7 @@ ;; STK parameters ;; -------------- (max-karts 10 ) ;; maximum number of karts + (scores 10 8 6 5 4 3 2 1 0 0 ) (grid-order 1 ) ;; order for grand prix, 1 is most ;; points 1st, 0 is least points ;; 1st Modified: trunk/supertuxkart/src/auto_kart.hpp =================================================================== --- trunk/supertuxkart/src/auto_kart.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/auto_kart.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -27,9 +27,9 @@ class AutoKart : public Kart { public: - AutoKart(const KartProperties *kart_properties, int position, + AutoKart(const std::string& kart_name, int position, sgCoord init_pos) : - Kart(kart_properties, position, init_pos) { Kart::reset(); } + Kart(kart_name, position, init_pos) { Kart::reset(); } int isPlayerKart() const {return 0;} }; Modified: trunk/supertuxkart/src/camera.cpp =================================================================== --- trunk/supertuxkart/src/camera.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/camera.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -80,15 +80,15 @@ } // setScreenPosition //----------------------------------------------------------------------------- -Camera::Camera ( int numPlayers, int which_ ) +Camera::Camera(int numPlayers, int which) : m_reverse(false) { - m_which_kart = which_ ; // Just for now + m_which_kart = which; // Just for now m_mode = CM_NORMAL; m_context = new ssgContext ; // FIXME: clipping should be configurable for slower machines - const Track* track = track_manager->getTrack(world->m_race_setup.m_track); + const Track* track = world->getTrack(); if (track->useFog()) m_context -> setNearFar ( 0.05f, track->getFogEnd() ) ; else @@ -99,9 +99,9 @@ } // Camera //----------------------------------------------------------------------------- -void Camera::setMode(Mode mode_) +void Camera::setMode(Mode mode) { - m_mode = mode_; + m_mode = mode; } // setMode //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/camera.hpp =================================================================== --- trunk/supertuxkart/src/camera.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/camera.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -9,6 +9,7 @@ // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // + // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -29,6 +30,7 @@ enum Mode { CM_NORMAL, CM_CLOSEUP, + CM_LEADER_MODE, // for deleted player karts in follow the leader //FIXME: NO_FAKE_DRIFT is broken CM_NO_FAKE_DRIFT, CM_SIMPLE_REPLAY Modified: trunk/supertuxkart/src/challenges/win_gotm_cup.cpp =================================================================== --- trunk/supertuxkart/src/challenges/win_gotm_cup.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/challenges/win_gotm_cup.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -20,7 +20,6 @@ #include <algorithm> #include "challenges/win_gotm_cup.hpp" #include "world.hpp" -#include "race_setup.hpp" #include "race_manager.hpp" WinGOTMCup::WinGOTMCup() : Challenge("wingotmcup", "Win GOTM Cup") @@ -35,11 +34,10 @@ //----------------------------------------------------------------------------- bool WinGOTMCup::grandPrixFinished() { - const RaceSetup* race=&world->m_race_setup; - if (race->m_mode != RaceSetup::RM_GRAND_PRIX || - race->m_difficulty != RD_HARD || - race->getNumKarts() < 4 || - race->getNumPlayers() > 1) return false; + if (race_manager->getRaceMode() != RaceManager::RM_GRAND_PRIX || + race_manager->getDifficulty()!= RaceManager::RD_HARD || + race_manager->getNumKarts() < 4 || + race_manager->getNumPlayers() > 1) return false; // Check if the player was number one: for(int i=0; i<(int)world->getNumKarts(); i++) { Modified: trunk/supertuxkart/src/collectable.cpp =================================================================== --- trunk/supertuxkart/src/collectable.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/collectable.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -19,6 +19,7 @@ #include "collectable.hpp" #include "user_config.hpp" +#include "race_manager.hpp" #include "projectile_manager.hpp" #include "kart.hpp" #include "sound_manager.hpp" @@ -170,7 +171,7 @@ // A zipper should not be used during time trial, since it // brings too much randomness. So ignore the top 3 elements // in time trail, but only the top 2 in any other mode - int nIgnore = (world->m_race_setup.m_mode == RaceSetup::RM_TIME_TRIAL) + int nIgnore = (race_manager->getRaceMode()== RaceManager::RM_TIME_TRIAL) ? 3 : 2; newC = (CollectableType)(rand()%(COLLECT_MAX - 1 - nIgnore) + 1); } Modified: trunk/supertuxkart/src/cup_data.hpp =================================================================== --- trunk/supertuxkart/src/cup_data.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/cup_data.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -48,13 +48,17 @@ /** Load the CupData from the given filename */ CupData (const std::string filename); CupData () {}; // empty for initialising - const std::string& getName () const { return m_name; } - const std::string& getDescription () const { return m_description; } - const std::string& getHerringStyle() const { return m_herring_style;} - const std::string& getFilename () const { return m_filename; } - const std::string& getTrack(size_t track_index) const { assert(track_index < m_tracks.size()); return m_tracks[track_index]; } - size_t getTrackCount() const { return m_tracks.size(); } - const int& getLaps(size_t lap_index) const { assert(lap_index < m_tracks.size()); return m_laps[lap_index]; } + const std::string& getName () const { return m_name; } + const std::string& getDescription () const { return m_description; } + const std::string& getHerringStyle() const { return m_herring_style; } + const std::string& getFilename () const { return m_filename; } + const std::string& getTrack(size_t track_index) const { assert(track_index < m_tracks.size()); + return m_tracks[track_index]; } + const std::vector<std::string>& getTracks() const {return m_tracks; } + const std::vector<int>& getLaps() const {return m_laps; } + size_t getTrackCount() const {return m_tracks.size(); } + const int& getLaps(size_t lap_index) const {assert(lap_index < m_tracks.size()); + return m_laps[lap_index]; } } ; // CupData Modified: trunk/supertuxkart/src/file_manager.hpp =================================================================== --- trunk/supertuxkart/src/file_manager.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/file_manager.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -25,7 +25,7 @@ #include <set> #include "callback_manager.hpp" -class FileManager : public ssgLoaderOptions +class FileManager { private: bool m_is_full_path; Modified: trunk/supertuxkart/src/gui/char_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/char_sel.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/char_sel.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -236,7 +236,7 @@ } } - if (race_manager->getRaceMode() == RaceSetup::RM_GRAND_PRIX) + if (race_manager->getRaceMode() == RaceManager::RM_GRAND_PRIX) menu_manager->pushMenu(MENUID_NUMKARTS); else menu_manager->pushMenu(MENUID_TRACKSEL); Modified: trunk/supertuxkart/src/gui/difficulty.cpp =================================================================== --- trunk/supertuxkart/src/gui/difficulty.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/difficulty.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -77,15 +77,15 @@ switch ( widget_manager->getSelectedWgt()) { case WTOK_EASY: - race_manager->setDifficulty(RD_EASY); + race_manager->setDifficulty(RaceManager::RD_EASY); menu_manager->pushMenu(MENUID_CHARSEL_P1); break; case WTOK_MEDIUM: - race_manager->setDifficulty(RD_MEDIUM); + race_manager->setDifficulty(RaceManager::RD_MEDIUM); menu_manager->pushMenu(MENUID_CHARSEL_P1); break; case WTOK_HARD: - race_manager->setDifficulty(RD_HARD); + race_manager->setDifficulty(RaceManager::RD_HARD); menu_manager->pushMenu(MENUID_CHARSEL_P1); break; case WTOK_QUIT: Modified: trunk/supertuxkart/src/gui/game_mode.cpp =================================================================== --- trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -94,15 +94,15 @@ switch ( widget_manager->getSelectedWgt() ) { case WTOK_GP: - race_manager->setRaceMode(RaceSetup::RM_GRAND_PRIX); + race_manager->setRaceMode(RaceManager::RM_GRAND_PRIX); menu_manager->pushMenu(MENUID_GRANDPRIXSELECT); break; case WTOK_QUICKRACE: - race_manager->setRaceMode(RaceSetup::RM_QUICK_RACE); + race_manager->setRaceMode(RaceManager::RM_QUICK_RACE); menu_manager->pushMenu(MENUID_DIFFICULTY); break; case WTOK_TIMETRIAL: - race_manager->setRaceMode(RaceSetup::RM_TIME_TRIAL); + race_manager->setRaceMode(RaceManager::RM_TIME_TRIAL); menu_manager->pushMenu(MENUID_CHARSEL_P1); //difficulty makes no sense here break; case WTOK_BACK: Modified: trunk/supertuxkart/src/gui/grand_prix_ending.cpp =================================================================== --- trunk/supertuxkart/src/gui/grand_prix_ending.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/grand_prix_ending.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -22,7 +22,7 @@ #include <SDL/SDL.h> -#include "file_manager.hpp" +#include "loader.hpp" #include "sound_manager.hpp" #include "grand_prix_ending.hpp" #include "kart_properties_manager.hpp" @@ -60,16 +60,16 @@ oldContext->makeCurrent(); const unsigned int MAX_STR_LEN = 60; - const unsigned int NUM_KARTS = world->getNumKarts(); + const unsigned int NUM_KARTS = race_manager->getNumKarts(); int *scores = new int[NUM_KARTS]; int *position = new int[NUM_KARTS]; double *race_time = new double[NUM_KARTS]; - for( unsigned int i = 0; i < NUM_KARTS; ++i ) + for( unsigned int kart_id = 0; kart_id < NUM_KARTS; ++kart_id ) { - position[i] = i; - scores[i] = race_manager->getKartScore(i); - race_time[i] = race_manager->getKartOverallTime(i); + position[kart_id] = kart_id; + scores[kart_id] = race_manager->getKartScore(kart_id); + race_time[kart_id] = race_manager->getOverallTime(kart_id); } //Bubblesort @@ -102,12 +102,9 @@ } } while(!sorted); - Kart *kart; - kart = world->getKart(position[0]); - static char output[MAX_MESSAGE_LENGTH]; snprintf(output, sizeof(output), - _("The winner is %s!"),kart->getName().c_str()); + _("The winner is %s!"),race_manager->getKartName(position[0]).c_str()); widget_manager->addWgt( WTOK_TITLE, 60, 10); widget_manager->showWgtRect(WTOK_TITLE); widget_manager->showWgtText(WTOK_TITLE); @@ -121,9 +118,8 @@ { char sTime[20]; TimeToString(race_time[i], sTime); - kart = world->getKart(position[i]); sprintf((char*)(m_score + MAX_STR_LEN * i), "%d. %s %d %s", - i + 1, kart->getName().c_str(), scores[i], sTime ); + i + 1, race_manager->getKartName(position[i]).c_str(), scores[i], sTime ); widget_manager->addWgt(WTOK_FIRSTKART + i, 40, 5); widget_manager->showWgtRect(WTOK_FIRSTKART + i); @@ -185,7 +181,7 @@ //going white after finishing the grandprix // FIXME: I think this is not necessary anymore after the // texture bug fix (r733) - but I can't currently test this. - file_manager->shared_textures.removeAll(); + loader->shared_textures.removeAll(); } //----------------------------------------------------------------------------- Modified: trunk/supertuxkart/src/gui/num_karts.cpp =================================================================== --- trunk/supertuxkart/src/gui/num_karts.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/num_karts.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -53,6 +53,11 @@ widget_manager->showWgtRect(WTOK_NUMLAPS); widget_manager->showWgtText(WTOK_NUMLAPS); m_num_karts = race_manager->getNumKarts(); + // Follow the leader needs at least three karts + if(race_manager->getRaceMode() == RaceManager::RM_FOLLOW_LEADER) + { + m_num_karts = std::max(3,m_num_karts); + } snprintf(m_kart_label, MAX_MESSAGE_LENGTH, _("Karts: %d"), m_num_karts); widget_manager->setWgtText(WTOK_NUMLAPS, m_kart_label); widget_manager->breakLine(); @@ -80,7 +85,8 @@ widget_manager->addWgt(WTOK_CONTINUE, 30, 7); widget_manager->showWgtRect(WTOK_CONTINUE); widget_manager->showWgtText(WTOK_CONTINUE); - if (race_manager->getRaceMode() == RaceSetup::RM_GRAND_PRIX) + if (race_manager->getRaceMode() == RaceManager::RM_GRAND_PRIX || + race_manager->getRaceMode() == RaceManager::RM_FOLLOW_LEADER ) widget_manager->setWgtText(WTOK_CONTINUE, _("Start race")); else widget_manager->setWgtText(WTOK_CONTINUE, _("Continue")); @@ -112,7 +118,15 @@ switch (WGT) { case WTOK_LESS: - m_num_karts = std::max(race_manager->getNumPlayers(), m_num_karts-1); + // Follow the leader needs at least three karts + if(race_manager->getRaceMode() == RaceManager::RM_FOLLOW_LEADER) + { + m_num_karts = std::max(3,m_num_karts-1); + } + else + { + m_num_karts = std::max((int)race_manager->getNumPlayers(), m_num_karts-1); + } snprintf(m_kart_label, MAX_MESSAGE_LENGTH, "Karts: %d", m_num_karts); widget_manager->setWgtText(WTOK_NUMLAPS, m_kart_label); break; @@ -123,8 +137,9 @@ break; case WTOK_CONTINUE: race_manager->setNumKarts(m_num_karts); - if (race_manager->getRaceMode() == RaceSetup::RM_GRAND_PRIX) - race_manager->start(); + if (race_manager->getRaceMode() == RaceManager::RM_GRAND_PRIX || + race_manager->getRaceMode() == RaceManager::RM_FOLLOW_LEADER ) + race_manager->startNew(); else menu_manager->pushMenu(MENUID_NUMLAPS); break; Modified: trunk/supertuxkart/src/gui/num_laps.cpp =================================================================== --- trunk/supertuxkart/src/gui/num_laps.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/num_laps.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -117,7 +117,7 @@ break; case WTOK_START: race_manager->setNumLaps(laps); - race_manager->start(); + race_manager->startNew(); break; case WTOK_QUIT: menu_manager->popMenu(); Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -167,21 +167,21 @@ switch (ga) { case GA_DEBUG_ADD_SPARK: - if (world->m_race_setup.getNumPlayers() ==1 ) + if (world->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); kart->setCollectable(COLLECT_SPARK, 10000); } break; case GA_DEBUG_ADD_MISSILE: - if (world->m_race_setup.getNumPlayers() ==1 ) + if (world->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); kart->setCollectable(COLLECT_MISSILE, 10000); } break; case GA_DEBUG_ADD_HOMING: - if (world->m_race_setup.getNumPlayers() ==1 ) + if (world->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); kart->setCollectable(COLLECT_HOMING, 10000); @@ -232,7 +232,7 @@ void RaceGUI::update(float dt) { assert(world != NULL); - drawStatusText(world->m_race_setup, dt); + drawStatusText(dt); cleanupMessages(); BaseGUI::update( dt ); @@ -365,7 +365,7 @@ // draw text int red=255, green=255, blue=255; - int numLaps = world->m_race_setup.m_num_laps; + int numLaps = race_manager->getNumLaps(); if(lap>=numLaps) { // kart is finished, display in green red=0; blue=0; @@ -745,13 +745,15 @@ void RaceGUI::drawLap(Kart* kart, int offset_x, int offset_y, float ratio_x, float ratio_y ) { + // Don't display laps in follow the leader mode + if(race_manager->getRaceMode()==RaceManager::RM_FOLLOW_LEADER) return; float maxRatio = std::max(ratio_x, ratio_y); char str[256]; offset_x += (int)(120*ratio_x); offset_y += (int)(70*maxRatio); - if ( kart->getLap() >= world->m_race_setup.m_num_laps ) + if ( kart->getLap() >= race_manager->getNumLaps()) { sprintf(str, _("Finished")); font_race->PrintShadow(str, (int)(48*maxRatio), offset_x, offset_y); @@ -763,7 +765,7 @@ offset_y -= (int)(50*ratio_y); sprintf(str, "%d/%d", kart->getLap()<0?0:kart->getLap()+1, - world->m_race_setup.m_num_laps); + race_manager->getNumLaps()); font_race->PrintShadow(str, (int)(48*maxRatio), offset_x, offset_y); } } // drawLap @@ -856,7 +858,7 @@ } // drawMusicDescription //----------------------------------------------------------------------------- -void RaceGUI::drawStatusText (const RaceSetup& raceSetup, const float dt) +void RaceGUI::drawStatusText(const float dt) { assert(world != NULL); @@ -907,7 +909,7 @@ } if(world->isStartPhase()) { - for(int i=0; i<raceSetup.getNumPlayers(); i++) + for(unsigned int i=0; i<world->getNumPlayers(); i++) { if(world->getPlayerKart(i)->earlyStartPenalty()) { @@ -920,14 +922,14 @@ float split_screen_ratio_x, split_screen_ratio_y; split_screen_ratio_x = split_screen_ratio_y = 1.0; - if(raceSetup.getNumPlayers() >= 2) + if(world->getNumPlayers() >= 2) split_screen_ratio_y = 0.5; - if(raceSetup.getNumPlayers() >= 3) + if(world->getNumPlayers() >= 3) split_screen_ratio_x = 0.5; if ( world->isRacePhase() ) { - const int numPlayers = raceSetup.getNumPlayers(); + const int numPlayers = world->getNumPlayers(); for(int pla = 0; pla < numPlayers; pla++) { Modified: trunk/supertuxkart/src/gui/race_gui.hpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/race_gui.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -30,6 +30,7 @@ #include "player_kart.hpp" #include "player.hpp" #include "world.hpp" +#include "race_manager.hpp" class InputMap; class RaceSetup; @@ -55,10 +56,18 @@ m_message = message; m_font_size = size; m_kart = kart; - m_end_time = time>=0.0f ? world->getTime()+time : -1.0f; + m_end_time = time>=0.0f + ? (race_manager->getRaceMode()==RaceManager::RM_FOLLOW_LEADER + ?world->getTime()-time + :world->getTime()+time ) + : -1.0f; m_red=red; m_blue=blue; m_green=green; } - bool done() const {return m_end_time<0 || world->getTime()>m_end_time;} + // in follow leader the clock counts backwards + bool done() const {return m_end_time<0 || + (race_manager->getRaceMode()==RaceManager::RM_FOLLOW_LEADER + ? world->getTime()<m_end_time + : world->getTime()>m_end_time);} }; public: @@ -83,7 +92,7 @@ AllMessageType m_messages; /* Display informat on screen */ - void drawStatusText (const RaceSetup& raceSetup, const float dt); + void drawStatusText (const float dt); void drawEnergyMeter (Kart *player_kart, int offset_x, int offset_y, float ratio_x, float ratio_y ); Modified: trunk/supertuxkart/src/gui/race_menu.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_menu.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/race_menu.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -69,7 +69,7 @@ widget_manager->setWgtText(WTOK_RESTART_RACE, _("Restart Race")); widget_manager->breakLine(); - if(world->m_race_setup.m_mode==RaceSetup::RM_QUICK_RACE) + if(race_manager->getRaceMode()==RaceManager::RM_QUICK_RACE) { widget_manager->addWgt(WTOK_SETUP_NEW_RACE, 30, 7); widget_manager->setWgtText(WTOK_SETUP_NEW_RACE, _("Setup New Race")); Modified: trunk/supertuxkart/src/gui/race_results_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_results_gui.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/race_results_gui.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -98,7 +98,7 @@ TimeToString(T, sTime); //This shows position + driver name + time + points earned + total points - if(world->m_race_setup.m_mode==RaceSetup::RM_GRAND_PRIX) + if(race_manager->getRaceMode()==RaceManager::RM_GRAND_PRIX) { sprintf((char*)(m_score + MAX_STR_LEN * i), "%d. %s %s +%d %d", KART->getPosition(), KART_NAME.c_str(), sTime, @@ -159,7 +159,7 @@ widget_manager->setWgtText( WTOK_CONTINUE, _("Continue")); } else { - if(world->m_race_setup.m_mode==RaceSetup::RM_GRAND_PRIX) + if(race_manager->getRaceMode()==RaceManager::RM_GRAND_PRIX) { widget_manager->setWgtText( WTOK_CONTINUE, _("Continue Grand Prix")); } @@ -173,7 +173,7 @@ widget_manager->setWgtText( WTOK_RESTART_RACE, _("Race in this track again")); widget_manager->breakLine(); - if(world->m_race_setup.m_mode==RaceSetup::RM_QUICK_RACE) + if(race_manager->getRaceMode()==RaceManager::RM_QUICK_RACE) { widget_manager->addWgt( WTOK_SETUP_NEW_RACE, 60, 7); widget_manager->setWgtText( WTOK_SETUP_NEW_RACE, _("Setup New Race")); @@ -204,15 +204,17 @@ switch( widget_manager->getSelectedWgt() ) { case WTOK_CONTINUE: + // Gets called when: + // 1) something was unlocked + // 2) a Grand Prix is run + // 3) "back to the main menu" otherwise world->unpause(); race_manager->next(); break; case WTOK_RESTART_RACE: world->unpause(); menu_manager->popMenu(); - // TODO: Maybe let this go through the race_manager for - // more flexibility. - world->restartRace(); + race_manager->restartRace(); break; case WTOK_SETUP_NEW_RACE: world->unpause(); Modified: trunk/supertuxkart/src/gui/track_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/track_sel.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/gui/track_sel.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -269,7 +269,7 @@ } const Track* TRACK = track_manager->getTrack(CLICKED_TOKEN - WTOK_TRACK0); race_manager->setTrack(TRACK->getIdent()); - if(race_manager->getRaceMode()==RaceSetup::RM_TIME_TRIAL) + if(race_manager->getRaceMode()==RaceManager::RM_TIME_TRIAL) { menu_manager->pushMenu(MENUID_NUMLAPS); } Modified: trunk/supertuxkart/src/highscore_manager.cpp =================================================================== --- trunk/supertuxkart/src/highscore_manager.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/highscore_manager.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -19,12 +19,12 @@ #include <stdexcept> #include "highscore_manager.hpp" +#include "race_manager.hpp" #include "lisp/parser.hpp" #include "lisp/writer.hpp" #include "translation.hpp" #include "string_utils.hpp" #include "file_manager.hpp" -#include "race_setup.hpp" #include "user_config.hpp" #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf @@ -171,11 +171,7 @@ } // Save // ----------------------------------------------------------------------------- -Highscores* HighscoreManager::getHighscores(const Highscores::HighscoreType highscore_type, - const int num_karts, - const RaceDifficulty difficulty, - const std::string track, - const int number_of_laps) +Highscores* HighscoreManager::getHighscores(const Highscores::HighscoreType highscore_type) { Highscores *highscores = 0; @@ -184,8 +180,9 @@ for(type_all_scores::iterator i = m_allScores.begin(); i != m_allScores.end(); i++) { - if((*i)->matches(highscore_type, num_karts, difficulty, track, - number_of_laps)) + if((*i)->matches(highscore_type, race_manager->getNumKarts(), + race_manager->getDifficulty(), race_manager->getTrackName(), + race_manager->getNumLaps())) { return (*i); } @@ -201,19 +198,13 @@ // If it's one of the fastest HIGHSCORE_LEN results, it is put into the // list and the new position (1 ... HIGHSCORE_LEN) is returned, otherwise 0. Highscores * HighscoreManager::addResult(const Highscores::HighscoreType highscore_type, - const int num_karts, - const RaceDifficulty difficulty, - const std::string track, const std::string kart_name, const std::string name, - const float time, - const int number_of_laps) + const float time) { - Highscores *highscores = getHighscores(highscore_type, num_karts, - difficulty, track, number_of_laps); + Highscores *highscores = getHighscores(highscore_type); - if(highscores->addData(highscore_type, num_karts, difficulty, - track, kart_name, name, time, number_of_laps) >0) + if(highscores->addData(highscore_type, kart_name, name, time) >0) { Save(); } Modified: trunk/supertuxkart/src/highscore_manager.hpp =================================================================== --- trunk/supertuxkart/src/highscore_manager.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/highscore_manager.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -26,7 +26,6 @@ #include "highscores.hpp" #include "lisp/lisp.hpp" -#include "race_setup.hpp" class HighscoreManager { public: @@ -44,14 +43,10 @@ HighscoreManager(); ~HighscoreManager(); void Save(); - Highscores *getHighscores(const Highscores::HighscoreType highscore_type, - const int num_karts, const RaceDifficulty difficulty, - const std::string track, const int number_of_laps); + Highscores *getHighscores(const Highscores::HighscoreType highscore_type); Highscores *addResult (const Highscores::HighscoreType highscore_type, - const int num_karts, const RaceDifficulty difficulty, - const std::string track, const std::string kart_name, - const std::string name, const float time, - const int number_of_laps); + const std::string kart_name, + const std::string name, const float time); }; // HighscoreManager extern HighscoreManager* highscore_manager; Modified: trunk/supertuxkart/src/highscores.cpp =================================================================== --- trunk/supertuxkart/src/highscores.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/highscores.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -19,6 +19,8 @@ #include <stdexcept> #include "highscores.hpp" +#include "race_manager.hpp" + #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf #endif @@ -81,7 +83,7 @@ // ----------------------------------------------------------------------------- int Highscores::matches(HighscoreType highscore_type, - int num_karts, RaceDifficulty difficulty, + int num_karts, RaceManager::Difficulty difficulty, const std::string &track, const int number_of_laps) { return (m_highscore_type == highscore_type && @@ -96,10 +98,8 @@ * be in the highscore list, the new position (1-HIGHSCORE_LEN) is returned, * otherwise a 0. */ -int Highscores::addData(const HighscoreType highscore_type, const int num_karts, - const RaceDifficulty difficulty, const std::string track, - const std::string kart_name, const std::string name, - const float time, const int number_of_laps) +int Highscores::addData(const HighscoreType highscore_type, const std::string kart_name, + const std::string name, const float time) { int position=-1; for(int i=0; i<HIGHSCORE_LEN; i++) @@ -127,11 +127,11 @@ if(position>=0) { - m_track = track; + m_track = race_manager->getTrackName(); m_highscore_type = highscore_type; - m_number_of_karts = num_karts; - m_difficulty = difficulty; - m_number_of_laps = number_of_laps; + m_number_of_karts = race_manager->getNumKarts(); + m_difficulty = race_manager->getDifficulty(); + m_number_of_laps = race_manager->getNumLaps(); m_name[position] = name; m_time[position] = time; m_kart_name[position] = kart_name; Modified: trunk/supertuxkart/src/highscores.hpp =================================================================== --- trunk/supertuxkart/src/highscores.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/highscores.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -25,7 +25,7 @@ #include "lisp/lisp.hpp" #include "lisp/writer.hpp" -#include "race_setup.hpp" +#include "race_manager.hpp" class Highscores { @@ -50,12 +50,10 @@ void Read (const lisp::Lisp* const node); void Write (lisp::Writer* writer); int matches (HighscoreType highscore_type, int num_karts, - const RaceDifficulty difficulty, const std::string &track, - const int number_of_laps); - int addData (const HighscoreType highscore_type, const int num_karts, - const RaceDifficulty difficulty, const std::string track, - const std::string kart_name, const std::string name, - const float time, const int number_of_laps); + const RaceManager::Difficulty difficulty, + const std::string &track, const int number_of_laps); + int addData (const HighscoreType highscore_type, const std::string kart_name, + const std::string name, const float time); int getNumberEntries() const; void getEntry (int number, std::string &kart_name, std::string &name, float *const time) const; Modified: trunk/supertuxkart/src/history.cpp =================================================================== --- trunk/supertuxkart/src/history.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/history.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -61,14 +61,14 @@ void History::Save() { FILE *fd = fopen("history.dat","w"); - int nKarts = world->getNumKarts(); + int nKarts = race_manager->getNumKarts(); #ifdef VERSION fprintf(fd, "Version: %s\n", VERSION); #endif fprintf(fd, "numkarts: %d\n", nKarts); - fprintf(fd, "numplayers: %d\n", world->m_race_setup.getNumPlayers()); - fprintf(fd, "difficulty: %d\n", world->m_race_setup.getDifficulty()); - fprintf(fd, "track: %s\n", world->m_track->getIdent().c_str()); + fprintf(fd, "numplayers: %d\n", race_manager->getNumPlayers()); + fprintf(fd, "difficulty: %d\n", race_manager->getDifficulty()); + fprintf(fd, "track: %s\n", world->getTrack()->getIdent().c_str()); int k; for(k=0; k<nKarts; k++) @@ -142,7 +142,7 @@ fprintf(stderr,"WARNING: No difficulty found in history file.\n"); exit(-2); } - race_manager->setDifficulty((RaceDifficulty)n); + race_manager->setDifficulty((RaceManager::Difficulty)n); fgets(s, 1023, m_fd); if(sscanf(s, "track: %s",s1)!=1) Modified: trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-04-09 13:52:48 UTC (rev 1681) @@ -1272,10 +1272,6 @@ > </File> <File - RelativePath="../../../src\race_setup.hpp" - > - </File> - <File RelativePath="../../../src\replay_base.hpp" > </File> Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/kart.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -21,6 +21,7 @@ #include <iostream> #include <plib/ssg.h> +#include "loader.hpp" #include "herring_manager.hpp" #include "sound_manager.hpp" #include "file_manager.hpp" @@ -33,6 +34,7 @@ #include "kart.hpp" #include "ssg_help.hpp" #include "physics.hpp" +#include "kart_properties_manager.hpp" #include "gui/menu_manager.hpp" #include "gui/race_gui.hpp" #include "translation.hpp" @@ -117,7 +119,7 @@ {} // particle_delete //============================================================================= -Kart::Kart (const KartProperties* kartProperties_, int position_ , +Kart::Kart (const std::string& kart_name, int position_ , sgCoord init_pos) : TerrainInfo(1), #if defined(WIN32) && !defined(__CYGWIN__) @@ -129,7 +131,7 @@ # pragma warning(1:4355) #endif { - m_kart_properties = kartProperties_; + m_kart_properties = kart_properties_manager->getKart(kart_name); m_grid_position = position_ ; m_num_herrings_gobbled = 0; m_finished_race = false; @@ -434,13 +436,13 @@ // Only increase the lap counter and set the new time if the // kart hasn't already finished the race (otherwise the race_gui // will begin another countdown). - if(m_race_lap+1<=world->m_race_setup.m_num_laps) + if(m_race_lap+1<=race_manager->getNumLaps()) { setTimeAtLap(world->getTime()); m_race_lap++ ; } // Sound manager makes sure that only the first call switches the music - if(m_race_lap==world->m_race_setup.m_num_laps-1) // last lap started + if(m_race_lap==race_manager->getNumLaps()-1) // last lap started { sound_manager->switchToFastMusic(); } @@ -1083,7 +1085,7 @@ float r [ 2 ] = { -10.0f, 100.0f } ; m_smokepuff = new ssgSimpleState (); - m_smokepuff -> setTexture (file_manager->createTexture ("smoke.rgb", true, true, true)) ; + m_smokepuff -> setTexture (loader->createTexture("smoke.rgb", true, true, true)) ; m_smokepuff -> setTranslucent () ; m_smokepuff -> enable ( GL_TEXTURE_2D ) ; m_smokepuff -> setShadeModel ( GL_SMOOTH ) ; @@ -1198,7 +1200,7 @@ // Finish time is the time needed for the whole race with // the average speed computed above. - return world->m_race_setup.m_num_laps*world->m_track->getTrackLength() + return race_manager->getNumLaps()*world->getTrack()->getTrackLength() / average_speed; } // estimateFinishTime Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/kart.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -134,7 +134,7 @@ void load_wheels (ssgBranch* obj); public: - Kart(const KartProperties* kartProperties_, int position_, + Kart(const std::string& kart_name, int position_, sgCoord init_pos); virtual ~Kart(); void loadData(); @@ -237,9 +237,9 @@ class TrafficDriver : public Kart { public: - TrafficDriver (const KartProperties* kartProperties_, sgVec3 _pos, + TrafficDriver (const std::string& kart_name, sgVec3 _pos, sgCoord init_pos) - : Kart (kartProperties_, 0, init_pos ) + : Kart (kart_name, 0, init_pos ) { sgCopyVec3 ( m_reset_pos.xyz, _pos ) ; reset () ; Modified: trunk/supertuxkart/src/main.cpp =================================================================== --- trunk/supertuxkart/src/main.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/main.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -164,13 +164,13 @@ switch (atoi(argv[i+1])) { case 1: - race_manager->setDifficulty(RD_EASY); + race_manager->setDifficulty(RaceManager::RD_EASY); break; case 2: - race_manager->setDifficulty(RD_MEDIUM); + race_manager->setDifficulty(RaceManager::RD_MEDIUM); break; case 3: - race_manager->setDifficulty(RD_HARD); + race_manager->setDifficulty(RaceManager::RD_HARD); break; } } @@ -389,19 +389,20 @@ kart_properties_manager = new KartPropertiesManager(); projectile_manager = new ProjectileManager (); collectable_manager = new CollectableManager (); - race_manager = new RaceManager (); callback_manager = new CallbackManager (); herring_manager = new HerringManager (); attachment_manager = new AttachmentManager (); highscore_manager = new HighscoreManager (); track_manager->loadTrackList(); sound_manager->addMusicToTracks(); + + stk_config->load(file_manager->getConfigFile("stk_config.data")); + race_manager = new RaceManager (); // default settings for Quickstart race_manager->setNumPlayers(1); race_manager->setNumLaps (3); - race_manager->setRaceMode (RaceSetup::RM_QUICK_RACE); - race_manager->setDifficulty(RD_MEDIUM); - stk_config->load(file_manager->getConfigFile("stk_config.data")); + race_manager->setRaceMode (RaceManager::RM_QUICK_RACE); + race_manager->setDifficulty(RaceManager::RD_MEDIUM); } //============================================================================= @@ -465,7 +466,7 @@ { // This will setup the race manager etc. history->Load(); - race_manager->start(); + race_manager->startNew(); game_manager->run(); // well, actually run() will never return, since // it exits after replaying history (see history::GetNextDT()). @@ -491,7 +492,7 @@ //race_manager->setTrack ("tuxtrack"); //race_manager->setTrack ("sandtrack"); //race_manager->setTrack ("race"); - race_manager->start(); + race_manager->startNew(); } } else // profile @@ -501,9 +502,9 @@ // ========= race_manager->setNumPlayers(1); race_manager->setPlayerKart(0, kart_properties_manager->getKart("tuxkart")->getIdent()); - race_manager->setRaceMode (RaceSetup::RM_QUICK_RACE); - race_manager->setDifficulty(RD_HARD); - race_manager->start(); + race_manager->setRaceMode (RaceManager::RM_QUICK_RACE); + race_manager->setDifficulty(RaceManager::RD_HARD); + race_manager->startNew(); } game_manager->run(); @@ -516,6 +517,7 @@ /* Program closing...*/ + user_config->saveConfig(); delete inputDriver; if (user_config->m_log_errors) //close logfiles Modified: trunk/supertuxkart/src/player_kart.cpp =================================================================== --- trunk/supertuxkart/src/player_kart.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/player_kart.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -238,7 +238,7 @@ // 1) check if the player is going in the wrong direction // ------------------------------------------------------ - if(world->m_race_setup.m_difficulty==RD_EASY) + if(race_manager->getDifficulty()==RaceManager::RD_EASY) { float angle_diff = getCoord()->hpr[0] - world->m_track->m_angle[getSector()]; if(angle_diff > 180.0f) angle_diff -= 360.0f; Modified: trunk/supertuxkart/src/player_kart.hpp =================================================================== --- trunk/supertuxkart/src/player_kart.hpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/player_kart.hpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -42,10 +42,10 @@ void steer(float, int); public: - PlayerKart(const KartProperties *kart_properties, + PlayerKart(const std::string& kart_name, int position, Player *_player, sgCoord init_pos, Camera *cam) : - Kart(kart_properties, position, init_pos), m_player(_player), + Kart(kart_name, position, init_pos), m_player(_player), m_penalty_time(0.0), m_camera(cam) {reset(); } int earlyStartPenalty () {return m_penalty_time>0; } @@ -59,6 +59,7 @@ virtual void setPosition (int p); int isPlayerKart () const {return 1;} + Camera* getCamera () {return m_camera;} void reset(); }; Modified: trunk/supertuxkart/src/race_manager.cpp =================================================================== --- trunk/supertuxkart/src/race_manager.cpp 2008-04-06 02:34:59 UTC (rev 1680) +++ trunk/supertuxkart/src/race_manager.cpp 2008-04-09 13:52:48 UTC (rev 1681) @@ -20,7 +20,6 @@ #include <iostream> #include "track_manager.hpp" -#include "race_setup.hpp" #include "game_manager.hpp" #include "kart_properties_manager.hpp" #include "race_manager.hpp" @@ -31,322 +30,195 @@ #include "user_config.hpp" #include "stk_config.hpp" + RaceManager* race_manager= NULL; - -void -RaceMode::next() +RaceManager::RaceManager() { - exit_race(); -} + m_num_karts = user_config->m_karts; + m_difficulty = RD_MEDIUM; + m_race_mode = RM_QUICK_RACE; + m_track_number = 0; + m_active_race = false; + m_score_for_position = stk_config->m_scores; + setTrack("race"); + setPlayerKart(0, "tuxkart"); +} // RaceManager //----------------------------------------------------------------------------- -void -RaceMode::exit_race() +RaceManager::~RaceManager() { - menu_manager->switchToMainMenu(); +} // ~RaceManager - scene->clear(); - - delete world; - world = 0; - - race_manager->m_active_race = false; - -} - -//============================================================================= -GrandPrixMode::GrandPrixMode(const std::vector<std::string>& players_, - const CupData& cup_, - RaceDifficulty difficulty_, - int numKarts_) -: m_difficulty(difficulty_), m_num_karts(numKarts_), m_players(players_), - m_cup(cup_), m_track(0) +//----------------------------------------------------------------------------- +void RaceManager::reset() { - const int NUM_PLAYERS = (int)m_players.size(); + m_num_finished_karts = 0; + m_num_finished_players = 0; +} // reset - std::vector<std::string> kart_names; - - if(m_num_karts < 0 ) m_num_karts = stk_config->m_max_karts; - if((size_t)m_num_karts < m_players.size()) m_num_karts = (int)m_players.size(); - - kart_names.resize(m_num_karts); - - for(int i = 0; i < NUM_PLAYERS; ++i) +//----------------------------------------------------------------------------- +void RaceManager::setPlayerKart(unsigned int player, const std::string& kart) +{ + if (player >= 0 && player < 4) { - /*Players position is behind the AI in the first race*/ - kart_names[m_num_karts-1 - i] = m_players[NUM_PLAYERS - 1 - i]; + if (player >= getNumPlayers()) + setNumPlayers(player+1); + m_player_karts[player] = kart; } + else + { + fprintf(stderr, "Warning: player '%d' does not exists.\n", player); + } +} // setPlayerKart - kart_properties_manager->fillWithRandomKarts(kart_names); - - const int NUM_AI_KARTS = m_num_karts - NUM_PLAYERS; - //Add the AI karts - for(int i = 0; i < NUM_AI_KARTS; ++i) - m_karts.push_back(KartStatus(kart_names[i], 0, 0.0f, i, NUM_PLAYERS)); - //Add the player karts - for(int i = 0; i < NUM_PLAYERS; ++i) - m_karts.push_back(KartStatus(kart_names[i+NUM_AI_KARTS], 0, 0.0f, i+NUM_AI_KARTS, i)); -} - //----------------------------------------------------------------------------- -void -GrandPrixMode::start_race(int n) +void RaceManager::setNumPlayers(int num) { - RaceSetup raceSetup; - raceSetup.m_mode = RaceSetup::RM_GRAND_PRIX; - raceSetup.m_difficulty = m_difficulty; - raceSetup.m_num_laps = m_cup.getLaps(n); - raceSetup.m_track = m_cup.getTrack(n); - raceSetup.m_karts.resize(m_karts.size()); - raceSetup.m_players.resize(m_players.size()); - raceSetup.setHerringStyle(m_cup.getHerringStyle()); - - if (n == 0) //The first race, Players start at the back - { - for(int i = 0; i < int(m_karts.size()); ++i) - { - raceSetup.m_karts[m_karts[i].prev_finish_pos] = m_karts[i].ident; - if (m_karts[i].player < int(m_players.size())) - { - raceSetup.m_players[m_karts[i].player] = m_karts[i].prev_finish_pos; - } - } - } - else //subsequent races where order of grid is determined by score + m_player_karts.resize(num); + for(PlayerKarts::iterator i = m_player_karts.begin(); i != m_player_karts.end(); ++i) { - std::sort(m_karts.begin(), m_karts.end());//sort karts by increasing score - - //reverse kart order if flagged in stk_config - if (stk_config->m_grid_order) + if (i->empty()) { - std::reverse(m_karts.begin(), m_karts.end()); - } - - for(int i = 0;i < int(m_karts.size()); ++i) - { - raceSetup.m_karts[i] = m_karts[i].ident; - if (m_karts[i].player < int(m_players.size())) - { - raceSetup.m_players[m_karts[i].player] = i; - } + *i = "tuxkart"; } } - - // the constructor assigns this object to the global - // variable world. Admittedly a bit ugly, but simplifies - // handling of objects which get created in the constructor - // and need world to be defined. - new World(raceSetup); -} +} // setNumPlayers //----------------------------------------------------------------------------- -void -GrandPrixMode::start() +void RaceManager::setTrack(const std::string& track) { - start_race(m_track); -} + m_tracks.clear(); + m_tracks.push_back(track); +} // setTrack //----------------------------------------------------------------------------- -void -GrandPrixMode::next() +void RaceManager::startNew() { - m_track += 1; - if (m_track < int(m_cup.getTrackCount())) + if(m_race_mode==RM_GRAND_PRIX) // GP: get tracks and laps from cup object { - scene->clear(); - start_race(m_track); + m_tracks = m_cup.getTracks(); + m_num_laps = m_cup.getLaps(); } - else - { - exit_race(); - } -} + assert(m_player_karts.size() > 0); -//----------------------------------------------------------------------------- -void -GrandPrixMode::exit_race() -{ - if (m_track < int(m_cup.getTrackCount())) - { - RaceMode::exit_race(); - } - else - { - unlock_manager->grandPrixFinished(); - menu_manager->switchToGrandPrixEnding(); - } -} - - -//============================================================================= -QuickRaceMode::QuickRaceMode(const std::string& track_, - const std::vector<std::string>& players_, - RaceDifficulty difficulty_, - int numKarts_, int numLaps_) - : m_track(track_), m_players(players_), m_difficulty(difficulty_), - m_num_karts(numKarts_), m_num_laps(numLaps_) -{ + // command line parameters: negative numbers=all karts if(m_num_karts < 0 ) m_num_karts = stk_config->m_max_karts; - if((size_t)m_num_karts < m_players.size()) m_num_karts = (int)m_players.size(); -} + if((size_t)m_num_karts < m_player_karts.size()) + m_num_karts = (int)m_player_karts.size(); -//----------------------------------------------------------------------------- -void -QuickRaceMode::start() -{ - RaceSetup raceSetup; - - raceSetup.m_mode = RaceSetup::RM_QUICK_RACE; - raceSetup.m_difficulty = m_difficulty; - raceSetup.m_track = m_track; - raceSetup.m_num_laps = m_num_laps; - raceSetup.m_karts.resize(m_num_karts); - - const int FIRST_PLAYER = m_num_karts - (int)m_players.size(); - for(int i = 0; i < int(m_players.size()); ++i) + // Create the list of all kart names to use + // ======================================== + std::vector<std::string> kart_names; + kart_names.resize(m_num_karts); + for(unsigned int i = 0; i < m_player_karts.size(); i++) { - raceSetup.m_karts[FIRST_PLAYER + i] = m_players[i]; // Players starts last in the race - raceSetup.m_players.push_back(FIRST_PLAYER + i); + /*Players position is behind the AI in the first race*/ + kart_names[m_num_karts-1 - i] = m_player_karts[m_player_karts.size() - 1 - i]; } + kart_properties_manager->fillWithRandomKarts(kart_names); - kart_properties_manager->fillWithRandomKarts(raceSetup.m_karts); + // Create the kart status data structure to keep track of scores, times, ... + // ========================================================================== + const int num_ai_karts = m_num_karts - (int)m_player_karts.size(); + m_kart_status.clear(); + for(int i=0; i<m_num_karts; i++) + { + // AI karts have -1 as player + bool is_player = i>=num_ai_karts; // players start at the back + m_kart_status.push_back(KartStatus(kart_names[i], i, + is_player ? i-num_ai_karts : -1 ) ); + } // for i<m_num_karts - // the constructor assigns this object to the global - // variable world. Admittedly a bit ugly, but simplifies - // handling of objects which get created in the constructor - // and need world to be defined. - new World(raceSetup); -} + // Then start the race with the first track + // ======================================== + m_track_number = 0; + startNextRace(); +} // startNew -//============================================================================= -TimeTrialMode::TimeTrialMode(const std::string& track_, const std::string& kart_, - const int& numLaps_) - : m_track(track_), m_kart(kart_), m_num_laps(numLaps_) -{} - //----------------------------------------------------------------------------- -void -TimeTrialMode::start() +void RaceManager::startNextRace() { - RaceSetup raceSetup; - raceSetup.m_mode = RaceSetup::RM_TIME_TRIAL; - raceSetup.m_track = m_track; - raceSetup.m_num_laps = m_num_laps; - raceSetup.m_difficulty = RD_HARD; + m_num_finished_karts = 0; + m_num_finished_players = 0; - raceSetup.m_karts.push_back(m_kart); - raceSetup.m_players.push_back(0); + // if subsequent race, sort kart status structure + // ============================================== + if (m_track_number > 0) + { + std::sort(m_kart_status.begin(), m_kart_status.end());//sort karts by increasing scor + //reverse kart order if flagged in stk_config + if (stk_config->m_grid_order) + { + std::reverse(m_kart_status.begin(), m_kart_status.end()); + } + } // not first race // the constructor assigns this object to the global // variable world. Admittedly a bit ugly, but simplifies // handling of objects which get created in the constructor // and need world to be defined. - new World(raceSetup); -} + new World(); -//============================================================================= -RaceManager::RaceManager() -{ - m_mode = 0; - m_num_karts = user_config->m_karts; - m_difficulty = RD_MEDIUM; - m_race_mode = RaceSetup::RM_QUICK_RACE; - m_track = "race"; - m_active_race = false; + m_active_race = true; +} // startNextRace - m_players.push_back("tuxkart"); -} - //----------------------------------------------------------------------------- -RaceManager::~RaceManager() +void RaceManager::next() { - delete m_mode; -} - -//----------------------------------------------------------------------------- -void RaceManager::reset() -{ m_num_finished_karts = 0; m_num_finished_players = 0; -} // reset - -//----------------------------------------------------------------------------- -void -RaceManager::setPlayerKart(int player, const std::string& kart) -{ - if (player >= 0 && player < 4) + m_track_number++; + if(m_track_number<(int)m_tracks.size()) { - if (player >= getNumPlayers()) - setNumPlayers(player+1); - - m_players[player] = kart; + scene->clear(); + startNextRace(); } else { - fprintf(stderr, "Warning: player '%d' does not exists.\n", player); + exit_race(); } -} +} // next //----------------------------------------------------------------------------- -void -RaceManager::setNumPlayers(int num) +void RaceManager::exit_race() { - m_players.resize(num); - for(Players::iterator i = m_players.begin(); i != m_players.end(); ++i) + // Only display the grand prix result screen if all tracks + // were finished, and not when a race is aborted. + if(m_race_mode==RM_GRAND_PRIX && m_track_number==m_tracks.size()) { - if (i->empty()) - { - *i = "tuxkart"; - } + unlock_manager->grandPrixFinished(); + menu_manager->switchToGrandPrixEnding(); } -} - -//----------------------------------------------------------------------------- -void -RaceManager::start() -{ - m_num_finished_karts = 0; - m_num_finished_players = 0; - delete m_mode; - - assert(m_players.size() > 0); - switch(m_race_mode) + else { - case RaceSetup::RM_GRAND_PRIX: - m_mode = new GrandPrix... [truncated message content] |
From: <hik...@us...> - 2008-04-15 13:57:26
|
Revision: 1683 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1683&view=rev Author: hikerstk Date: 2008-04-15 06:57:18 -0700 (Tue, 15 Apr 2008) Log Message: ----------- Added first beta version of 'follow the leader' mode. Modified Paths: -------------- trunk/supertuxkart/data/stk_config.data trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/camera.cpp trunk/supertuxkart/src/camera.hpp trunk/supertuxkart/src/challenges/win_gotm_cup.cpp trunk/supertuxkart/src/collectable.cpp trunk/supertuxkart/src/flyable.cpp trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/menu_manager.cpp trunk/supertuxkart/src/gui/menu_manager.hpp trunk/supertuxkart/src/gui/race_gui.cpp trunk/supertuxkart/src/gui/race_results_gui.cpp trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj trunk/supertuxkart/src/kart.cpp trunk/supertuxkart/src/kart.hpp trunk/supertuxkart/src/player_kart.cpp trunk/supertuxkart/src/race_manager.cpp trunk/supertuxkart/src/race_manager.hpp trunk/supertuxkart/src/robots/default_robot.cpp trunk/supertuxkart/src/scene.cpp trunk/supertuxkart/src/stk_config.cpp trunk/supertuxkart/src/stk_config.hpp trunk/supertuxkart/src/unlock_manager.cpp trunk/supertuxkart/src/world.cpp trunk/supertuxkart/src/world.hpp Added Paths: ----------- trunk/supertuxkart/src/challenges/race_track_time.cpp trunk/supertuxkart/src/challenges/race_track_time.hpp trunk/supertuxkart/src/gui/leader_result.cpp trunk/supertuxkart/src/gui/leader_result.hpp trunk/supertuxkart/src/smoke.cpp trunk/supertuxkart/src/smoke.hpp Modified: trunk/supertuxkart/data/stk_config.data =================================================================== --- trunk/supertuxkart/data/stk_config.data 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/data/stk_config.data 2008-04-15 13:57:18 UTC (rev 1683) @@ -21,6 +21,7 @@ (parachute-done-fraction 0.7 ) ;; fraction of speed when lost will detach parachute (bomb-time 30.0 ) ;; time till a bomb explodes (bomb-time-increase -5.0 ) ;; time added to timer when bomb is passed on + (leader-intervals 30 20 10) ;; Time till a kart is removed in follow leader mode (anvil-time 2.0 ) ;; time an anvil is active (zipper-time 3.0 ) ;; time a zipper is active (zipper-force 800.0 ) ;; additional zipper force Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/Makefile.am 2008-04-15 13:57:18 UTC (rev 1683) @@ -38,6 +38,7 @@ music_ogg.cpp music_ogg.hpp \ music_information.cpp music_information.hpp \ sfx_openal.cpp sfx_openal.hpp \ + smoke.cpp smoke.hpp \ input.hpp \ isect.cpp isect.hpp \ track.cpp track.hpp \ @@ -95,6 +96,7 @@ challenges/all_tracks.cpp challenges/all_tracks.hpp \ challenges/energy_math_class.cpp challenges/energy_math_class.hpp\ challenges/win_gotm_cup.cpp challenges/win_gotm_cup.hpp \ + challenges/race_track_time.cpp challenges/race_track_time.hpp\ lisp/lisp.cpp lisp/lisp.hpp \ lisp/lexer.cpp lisp/lexer.hpp \ lisp/parser.cpp lisp/parser.hpp \ @@ -118,6 +120,7 @@ gui/game_mode.cpp gui/game_mode.hpp \ gui/difficulty.cpp gui/difficulty.hpp \ gui/char_sel.cpp gui/char_sel.hpp \ + gui/leader_result.cpp gui/leader_result.hpp \ gui/main_menu.cpp gui/main_menu.hpp \ gui/help_page_one.cpp gui/help_page_one.hpp \ gui/help_page_two.cpp gui/help_page_two.hpp \ Modified: trunk/supertuxkart/src/camera.cpp =================================================================== --- trunk/supertuxkart/src/camera.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/camera.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -83,9 +83,11 @@ Camera::Camera(int numPlayers, int which) : m_reverse(false) { - m_which_kart = which; // Just for now - m_mode = CM_NORMAL; - m_context = new ssgContext ; + m_mode = CM_NORMAL; + m_context = new ssgContext ; + m_which_kart = which; + if(m_which_kart >= int(race_manager->getNumKarts()) || m_which_kart < 0 ) + m_which_kart =0; // FIXME: clipping should be configurable for slower machines const Track* track = world->getTrack(); @@ -101,7 +103,10 @@ //----------------------------------------------------------------------------- void Camera::setMode(Mode mode) { - m_mode = mode; + m_mode = mode; + m_LastPitch = 0.0f; + if(m_mode==CM_LEADER_MODE) + setReverseHeading(true); } // setMode //----------------------------------------------------------------------------- @@ -122,33 +127,45 @@ //----------------------------------------------------------------------------- void Camera::update (float dt) { + sgCoord kartcoord; + const Kart *kart; // Update the camera - if ( m_which_kart >= int(world->getNumKarts()) || m_which_kart < 0 ) m_which_kart = 0 ; - - sgCoord kartcoord; - const Kart *kart=world->getPlayerKart(m_which_kart); - sgCopyCoord(&kartcoord, world->getPlayerKart(m_which_kart)->getCoord()); - - // Use the terrain pitch to avoid the camera following a wheelie the kart is doing - kartcoord.hpr[1]=RAD_TO_DEGREE( kart->getTerrainPitch(DEGREE_TO_RAD(kartcoord.hpr[0])) ); - kartcoord.hpr[2] = 0; - // Only adjust the pitch if it's not the first frame (which is indicated by having - // dt=0). Otherwise the camera will change pitch during ready-set-go. - if(dt>0) + if(m_mode==CM_LEADER_MODE) { - // If the terrain pitch is 'significantly' different from the camera angle, - // start adjusting the camera. This helps with steep declines, where - // otherwise the track is not visible anymore. - if(fabsf(kartcoord.hpr[1]-m_LastPitch)>1.0f) { - kartcoord.hpr[1] = m_LastPitch + (kartcoord.hpr[1]-m_LastPitch)*2.0f*dt; - } - else - { - kartcoord.hpr[1]=m_LastPitch; - } + kart=world->getKart(0); + sgCopyCoord(&kartcoord, kart->getCoord()); + // This gives a camera slightly above the kart, facing downwards + // But this works only when the karts are within a certain distance + // otherwise only the track is seen :( + // kartcoord.xyz[2]+=3.0f; // raise camera + kartcoord.hpr[1]+=17; // face downwards } - m_LastPitch = kartcoord.hpr[1]; + else + { + kart=world->getPlayerKart(m_which_kart); + sgCopyCoord(&kartcoord, kart->getCoord()); + // Use the terrain pitch to avoid the camera following a wheelie the kart is doing + kartcoord.hpr[1]=RAD_TO_DEGREE( kart->getTerrainPitch(DEGREE_TO_RAD(kartcoord.hpr[0])) ); + kartcoord.hpr[2] = 0; + // Only adjust the pitch if it's not the first frame (which is indicated by having + // dt=0). Otherwise the camera will change pitch during ready-set-go. + if(dt>0) + { + // If the terrain pitch is 'significantly' different from the camera angle, + // start adjusting the camera. This helps with steep declines, where + // otherwise the track is not visible anymore. + if(fabsf(kartcoord.hpr[1]-m_LastPitch)>1.0f) { + kartcoord.hpr[1] = m_LastPitch + (kartcoord.hpr[1]-m_LastPitch)*2.0f*dt; + } + else + { + kartcoord.hpr[1]=m_LastPitch; + } + } // dt>0.0 + m_LastPitch = kartcoord.hpr[1]; + } // m_mode!=CM_LEADER_MODE + if (m_mode == CM_SIMPLE_REPLAY) kartcoord.hpr[0] = 0; @@ -180,7 +197,7 @@ } else if (m_mode == CM_NO_FAKE_DRIFT) { - const float STEER_OFFSET = world->getPlayerKart(m_which_kart)->getSteerAngle()*-10.0f; + const float STEER_OFFSET = kart->getSteerAngle()*-10.0f; sgMat4 cam_rot; sgMat4 tmp; Modified: trunk/supertuxkart/src/camera.hpp =================================================================== --- trunk/supertuxkart/src/camera.hpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/camera.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -36,9 +36,9 @@ CM_SIMPLE_REPLAY }; protected: - ssgContext *m_context ; + ssgContext *m_context ; - int m_which_kart ; + int m_which_kart; Mode m_mode; float m_last_steer_offset; float m_x, m_y, m_w, m_h ; Added: trunk/supertuxkart/src/challenges/race_track_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/race_track_time.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/race_track_time.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -0,0 +1,41 @@ +// $Id: race_track_time.cpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <algorithm> +#include "challenges/race_track_time.hpp" +#include "world.hpp" + +RaceTrackTime::RaceTrackTime() : Challenge("racetracktime", "Finish Race track in 1:15") +{ + setChallengeDescription("Finish 3 laps in the Race track\nwith 3 AI karts\nin under 1:15 minutes."); + setFeatureDescription("New game mode\n'Follow Leader'\nnow available"); + setFeature("followleader"); +} // RaceTrackTime + +//----------------------------------------------------------------------------- +bool RaceTrackTime::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="race" ) return false; // wrong track + Kart* kart=world->getPlayerKart(0); + if(kart->getFinishTime()>75) return false; // too slow + if(kart->getLap()!=3 ) return false; // wrong number of laps + return true; +} // raceFinished +//----------------------------------------------------------------------------- Property changes on: trunk/supertuxkart/src/challenges/race_track_time.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/challenges/race_track_time.hpp =================================================================== --- trunk/supertuxkart/src/challenges/race_track_time.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/race_track_time.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -0,0 +1,35 @@ +// $Id: race_track_time.hpp 1259 2007-09-24 12:28:19Z hiker $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_RACE_TRACK_TIME_H +#define HEADER_RACE_TRACK_TIME_H + +#include <string> +#include <vector> + +#include "challenges/challenge.hpp" + +class RaceTrackTime : public Challenge +{ +public: + RaceTrackTime(); + virtual bool raceFinished(); +}; // RaceTrackTime + +#endif Property changes on: trunk/supertuxkart/src/challenges/race_track_time.hpp ___________________________________________________________________ Name: svn:executable + * Modified: trunk/supertuxkart/src/challenges/win_gotm_cup.cpp =================================================================== --- trunk/supertuxkart/src/challenges/win_gotm_cup.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/challenges/win_gotm_cup.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -39,10 +39,10 @@ race_manager->getNumKarts() < 4 || race_manager->getNumPlayers() > 1) return false; // Check if the player was number one: - for(int i=0; i<(int)world->getNumKarts(); i++) + for(int i=0; i<(int)race_manager->getNumKarts(); i++) { const Kart* k=world->getKart(i); - if(k->isPlayerKart()) return k->getPosition()==1; + if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()==1; } return false; } // raceFinished Modified: trunk/supertuxkart/src/collectable.cpp =================================================================== --- trunk/supertuxkart/src/collectable.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/collectable.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -74,17 +74,17 @@ case COLLECT_ANVIL: //Attach an anvil(twice as good as the one given //by the bananas) to the kart in the 1st position. - for(unsigned int i = 0 ; i < world->getNumKarts(); ++i) + for(unsigned int i = 0 ; i < race_manager->getNumKarts(); ++i) { - if(world->getKart(i) == m_owner) continue; - if(world->getKart(i)->getPosition() == 1) + Kart *kart=world->getKart(i); + if(kart->isEliminated()) continue; + if(kart == m_owner) continue; + if(kart->getPosition() == 1) { - world->getKart(i)-> - attach(ATTACH_ANVIL, stk_config->m_anvil_time); - - world->getKart(i)->adjustSpeedWeight(stk_config->m_anvil_speed_factor*0.5f); + kart->attach(ATTACH_ANVIL, stk_config->m_anvil_time); + kart->adjustSpeedWeight(stk_config->m_anvil_speed_factor*0.5f); - if(world->getKart(i)->isPlayerKart()) + if(kart->isPlayerKart()) sound_manager->playSfx(SOUND_USE_ANVIL); break; } @@ -98,16 +98,15 @@ //Attach a parachutte(that last as twice as the //one from the bananas) to all the karts that //are in front of this one. - for(unsigned int i = 0 ; i < world->getNumKarts(); ++i) + for(unsigned int i = 0 ; i < race_manager->getNumKarts(); ++i) { - if(world->getKart(i) == m_owner) continue; - if(m_owner->getPosition() > world-> - getKart(i)->getPosition()) + Kart *kart=world->getKart(i); + if(kart->isEliminated() || kart== m_owner) continue; + if(m_owner->getPosition() > kart->getPosition()) { - world->getKart(i)->attach( - ATTACH_PARACHUTE, stk_config->m_parachute_time_other); + kart->attach(ATTACH_PARACHUTE, stk_config->m_parachute_time_other); - if(world->getKart(i)->isPlayerKart()) + if(kart->isPlayerKart()) player_affected = true; } @@ -137,18 +136,18 @@ if(m_owner->getPosition() != 1 && m_type == COLLECT_NOTHING) { - const int SPECIAL_PROB = (int)(15.0 / ((float)world->getNumKarts() / + const int SPECIAL_PROB = (int)(15.0 / ((float)world->getCurrentNumKarts() / (float)m_owner->getPosition())); const int RAND_NUM = rand()%100; if(RAND_NUM <= SPECIAL_PROB) { //If the driver in the first position has finished, give the driver //the parachute. - for(unsigned int i=0; i < world->getNumKarts(); ++i) + for(unsigned int i=0; i < race_manager->getNumKarts(); ++i) { - if(world->getKart(i) == m_owner) continue; - if(world->getKart(i)->getPosition() == 1 && world->getKart(i)-> - raceIsFinished()) + Kart *kart = world->getKart(i); + if(kart->isEliminated() || kart == m_owner) continue; + if(kart->getPosition() == 1 && kart->raceIsFinished()) { m_type = COLLECT_PARACHUTE; m_number = 1; Modified: trunk/supertuxkart/src/flyable.cpp =================================================================== --- trunk/supertuxkart/src/flyable.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/flyable.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -150,10 +150,10 @@ { btTransform tProjectile=getTrans(); *minDist = 99999.9f; - for(unsigned int i=0 ; i<world->getNumKarts(); i++ ) + for(unsigned int i=0 ; i<race_manager->getNumKarts(); i++ ) { Kart *kart = world -> getKart(i); - if(kart == m_owner) continue; + if(kart->isEliminated() || kart == m_owner) continue; btTransform t=kart->getTrans(); btVector3 delta = t.getOrigin()-tProjectile.getOrigin(); @@ -224,9 +224,9 @@ world->getPhysics()->removeBody(getBody()); m_exploded=true; - for ( unsigned int i = 0 ; i < world->getNumKarts() ; i++ ) + for ( unsigned int i = 0 ; i < race_manager->getNumKarts() ; i++ ) { - Kart *kart = world -> getKart(i); + Kart *kart = world->getKart(i); // handle the actual explosion. Set a flag it if was a direct hit. kart->handleExplosion(m_curr_pos.xyz, kart==kart_hit); } Modified: trunk/supertuxkart/src/gui/game_mode.cpp =================================================================== --- trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -31,6 +31,7 @@ WTOK_GP, WTOK_QUICKRACE, WTOK_TIMETRIAL, + WTOK_FOLLOW_LEADER, WTOK_EMPTY, WTOK_BACK }; @@ -68,7 +69,16 @@ widget_manager->addWgt(WTOK_TIMETRIAL, 50, 7); widget_manager->setWgtText( WTOK_TIMETRIAL, _("Time Trial")); } - + widget_manager->addWgt(WTOK_FOLLOW_LEADER, 50, 7); + if(unlock_manager->isLocked("followleader")) + { + widget_manager->setWgtText( WTOK_FOLLOW_LEADER, "???"); + widget_manager->deactivateWgt(WTOK_FOLLOW_LEADER); + } + else + { + widget_manager->setWgtText( WTOK_FOLLOW_LEADER, _("Follow the Leader")); + } widget_manager->addWgt(WTOK_EMPTY, 50, 7); widget_manager->hideWgtRect( WTOK_EMPTY ); widget_manager->hideWgtText( WTOK_EMPTY ); @@ -101,6 +111,10 @@ race_manager->setRaceMode(RaceManager::RM_QUICK_RACE); menu_manager->pushMenu(MENUID_DIFFICULTY); break; + case WTOK_FOLLOW_LEADER: + race_manager->setRaceMode(RaceManager::RM_FOLLOW_LEADER); + menu_manager->pushMenu(MENUID_DIFFICULTY); + break; case WTOK_TIMETRIAL: race_manager->setRaceMode(RaceManager::RM_TIME_TRIAL); menu_manager->pushMenu(MENUID_CHARSEL_P1); //difficulty makes no sense here Added: trunk/supertuxkart/src/gui/leader_result.cpp =================================================================== --- trunk/supertuxkart/src/gui/leader_result.cpp (rev 0) +++ trunk/supertuxkart/src/gui/leader_result.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -0,0 +1,240 @@ +// $Id: grand_prix_ending.cpp 1681 2008-04-09 13:52:48Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include <sstream> +#include <string> + +#include <SDL/SDL.h> + +#include "leader_result.hpp" +#include "loader.hpp" +#include "sound_manager.hpp" +#include "kart_properties_manager.hpp" +#include "unlock_manager.hpp" +#include "widget_manager.hpp" +#include "race_manager.hpp" +#include "game_manager.hpp" +#include "user_config.hpp" +#include "menu_manager.hpp" +#include "kart_properties.hpp" +#include "translation.hpp" +#include "kart.hpp" +#include "world.hpp" +#include "scene.hpp" +#if defined(WIN32) && !defined(__CYGWIN__) +# define snprintf _snprintf +#endif + +enum WidgetTokens +{ + WTOK_TITLE, + WTOK_QUIT, + + WTOK_FIRSTKART +}; + + +LeaderResult::LeaderResult() + : m_kart(0) +{ + // for some strange reasons plib calls makeCurrent() in ssgContext + // constructor, so we have to save the old one here and restore it + ssgContext* oldContext = ssgGetCurrentContext(); + m_context = new ssgContext; + oldContext->makeCurrent(); + + const unsigned int MAX_STR_LEN = 60; + const unsigned int NUM_KARTS = race_manager->getNumKarts(); + + int *scores = new int[NUM_KARTS]; + int *position = new int[NUM_KARTS]; + double *race_time = new double[NUM_KARTS]; + + // Ignore kart 0, since it was the leader + for( unsigned int kart_id = 1; kart_id < NUM_KARTS; ++kart_id ) + { + position[kart_id] = kart_id; + scores[kart_id] = race_manager->getKartScore(kart_id); + race_time[kart_id] = race_manager->getOverallTime(kart_id); + } + + //Bubblesort + bool sorted; + do + { + sorted = true; + for( unsigned int i = 1; i < NUM_KARTS - 1; ++i ) + { + if( scores[i] < scores[i+1] || (scores[i] == scores[i+1] + && race_time[i] > race_time[i+1])) + { + int tmp_score[2]; + double tmp_time; + + tmp_score[0] = position[i]; + tmp_score[1] = scores[i]; + tmp_time = race_time[i]; + + position[i] = position[i+1]; + scores[i] = scores[i+1]; + race_time[i] = race_time[i+1]; + + position[i+1] = tmp_score[0]; + scores[i+1] = tmp_score[1]; + race_time[i+1] = tmp_time; + + sorted = false; + } + } + } while(!sorted); + + static char output[MAX_MESSAGE_LENGTH]; + snprintf(output, sizeof(output), + _("The winner is %s!"),race_manager->getKartName(position[1]).c_str()); + widget_manager->addWgt( WTOK_TITLE, 60, 10); + widget_manager->showWgtRect(WTOK_TITLE); + widget_manager->showWgtText(WTOK_TITLE); + widget_manager->setWgtText(WTOK_TITLE, output); + widget_manager->setWgtTextSize(WTOK_TITLE, WGT_FNT_LRG); + widget_manager->breakLine(); + + m_score = new char[MAX_STR_LEN*NUM_KARTS]; + + for(unsigned int i=1; i < NUM_KARTS; ++i) + { + char sTime[20]; + TimeToString(race_time[i], sTime); + sprintf((char*)(m_score + MAX_STR_LEN * i), "%d. %s %d %s", + i + 1, race_manager->getKartName(position[i]).c_str(), scores[i], sTime ); + + widget_manager->addWgt(WTOK_FIRSTKART + i, 40, 5); + widget_manager->showWgtRect(WTOK_FIRSTKART + i); + widget_manager->showWgtText(WTOK_FIRSTKART + i); + widget_manager->setWgtText(WTOK_FIRSTKART + i, + (char*)(m_score + MAX_STR_LEN * i)); + widget_manager->setWgtTextSize(WTOK_FIRSTKART + i, WGT_FNT_SML); + widget_manager->breakLine(); + } + const std::string KART_NAME = race_manager->getKartName(position[1]); + const KartProperties* WINNING_KART = kart_properties_manager->getKart(KART_NAME); + delete []scores; + delete []position; + delete []race_time; + + widget_manager->addWgt(WTOK_QUIT, 50, 7); + widget_manager->activateWgt(WTOK_QUIT); + widget_manager->showWgtRect(WTOK_QUIT); + widget_manager->showWgtText(WTOK_QUIT); + if(unlock_manager->getUnlockedFeatures().size()>0) + { + widget_manager->setWgtText(WTOK_QUIT, _("Continue")); + } + else + { + widget_manager->setWgtText(WTOK_QUIT, _("Back to the main menu")); + } + + widget_manager->layout(WGT_AREA_TOP); + + m_kart = new ssgTransform; + m_kart->ref(); + ssgEntity* kartentity = WINNING_KART->getModel(); + m_kart->addKid(kartentity); + + sound_manager->playSfx(SOUND_WINNER); + + m_clock = 0; + + //FIXME: this is taken from RaceMode::exit_race, + //this should be organized better. + scene->clear(); + delete world; + world = 0; + race_manager->m_active_race = false; + +} + +//----------------------------------------------------------------------------- +LeaderResult::~LeaderResult() +{ + widget_manager->reset(); + ssgDeRefDelete(m_kart); + + delete m_context; + delete[] m_score; + + //The next line prevents textures like the background of the main menu from + //going white after finishing the grandprix + // FIXME: I think this is not necessary anymore after the + // texture bug fix (r733) - but I can't currently test this. + loader->shared_textures.removeAll(); +} + +//----------------------------------------------------------------------------- + +void LeaderResult::update(float dt) +{ + m_clock += dt * 40.0f; + + glClearColor (0.1f, 0.1f, 0.1f, 1.0f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + ssgContext* oldContext = ssgGetCurrentContext(); + m_context -> makeCurrent(); + + // FIXME: A bit hackish... + glViewport ( 0, 0, 800, 320); + + m_context -> setFOV ( 45.0f, 45.0f * 320.0f/800.0f ) ; + m_context -> setNearFar ( 0.05f, 1000.0f ) ; + + sgCoord cam_pos; + sgSetCoord(&cam_pos, 0, 0, 0, 0, 0, 0); + m_context -> setCamera ( &cam_pos ) ; + + glEnable (GL_DEPTH_TEST); + sgCoord trans; + sgSetCoord(&trans, 0, 3, -.4f, m_clock, 0, 0); + m_kart->setTransform (&trans) ; + //glShadeModel(GL_SMOOTH); + ssgCullAndDraw ( m_kart ) ; + glViewport ( 0, 0, user_config->m_width, user_config->m_height ) ; + + glDisable (GL_DEPTH_TEST); + oldContext->makeCurrent(); + BaseGUI::update(dt); +} + +//----------------------------------------------------------------------------- +void LeaderResult::select() +{ + // If a new feature was unlocked, display the new feature first + // before returning to the main menu + if(unlock_manager->getUnlockedFeatures().size()>0) + { + // This removes this menu from the stack, and adds the main menu. + // Then we push the new feature menu on top, so that it will be + // displayed next, and on return the main menu is shown. + menu_manager->switchToMainMenu(); + menu_manager->pushMenu(MENUID_UNLOCKED_FEATURE); + return; + } + + menu_manager->switchToMainMenu(); +} Added: trunk/supertuxkart/src/gui/leader_result.hpp =================================================================== --- trunk/supertuxkart/src/gui/leader_result.hpp (rev 0) +++ trunk/supertuxkart/src/gui/leader_result.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -0,0 +1,47 @@ +// $Id: grand_prix_ending.hpp 1023 2007-04-29 22:23:46Z coz $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_LEADER_RESULT_H +#define HEADER_LEADER_RESULT_H + +#include "base_gui.hpp" + +class ssgBranch; +class ssgTransform; +class ssgContext; + +class LeaderResult: public BaseGUI +{ +private: + ssgContext* m_context; + ssgTransform* m_kart; + int m_current_kart; + int m_kart_name_label; + char* m_score; + float m_clock; + +public: + LeaderResult(); + ~LeaderResult(); + + void update(float dt); + void select(); +}; + +#endif Property changes on: trunk/supertuxkart/src/gui/leader_result.hpp ___________________________________________________________________ Name: svn:executable + * Modified: trunk/supertuxkart/src/gui/menu_manager.cpp =================================================================== --- trunk/supertuxkart/src/gui/menu_manager.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/gui/menu_manager.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -54,6 +54,7 @@ #include "widget_manager.hpp" #include "challenges_menu.hpp" #include "feature_unlocked.hpp" +#include "leader_result.hpp" using namespace std; @@ -187,6 +188,9 @@ case MENUID_RACERESULT: m_current_menu= new RaceResultsGUI(); break; + case MENUID_LEADERRESULT: + m_current_menu= new LeaderResult(); + break; case MENUID_GRANDPRIXEND: m_current_menu= new GrandPrixEnd(); break; Modified: trunk/supertuxkart/src/gui/menu_manager.hpp =================================================================== --- trunk/supertuxkart/src/gui/menu_manager.hpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/gui/menu_manager.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -36,6 +36,7 @@ MENUID_DIFFICULTY, MENUID_GAMEMODE, MENUID_RACERESULT, + MENUID_LEADERRESULT, MENUID_GRANDPRIXEND, MENUID_RACEMENU, MENUID_TRACKSEL, Modified: trunk/supertuxkart/src/gui/race_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_gui.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/gui/race_gui.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -167,21 +167,21 @@ switch (ga) { case GA_DEBUG_ADD_SPARK: - if (world->getNumPlayers() ==1 ) + if (race_manager->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); kart->setCollectable(COLLECT_SPARK, 10000); } break; case GA_DEBUG_ADD_MISSILE: - if (world->getNumPlayers() ==1 ) + if (race_manager->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); kart->setCollectable(COLLECT_MISSILE, 10000); } break; case GA_DEBUG_ADD_HOMING: - if (world->getNumPlayers() ==1 ) + if (race_manager->getNumPlayers() ==1 ) { Kart* kart = world->getPlayerKart(0); kart->setCollectable(COLLECT_HOMING, 10000); @@ -289,11 +289,12 @@ glBegin ( GL_QUADS ) ; - for ( unsigned int i = 0 ; i < world->getNumKarts() ; i++ ) + for ( unsigned int i = 0 ; i < race_manager->getNumKarts() ; i++ ) { sgCoord *c ; Kart* kart = world->getKart(i); + if(kart->isEliminated()) continue; // don't draw eliminated kart glColor3fv ( *kart->getColor()); c = kart->getCoord () ; @@ -336,9 +337,10 @@ // Find the best time for the lap. We can't simply use // the time of the kart at position 1, since the kart // might have been overtaken by now - for(unsigned int i = 0; i < world->getNumKarts() ; i++) + for(unsigned int i = 0; i < race_manager->getNumKarts() ; i++) { Kart* kart = world->getKart(i); + if(kart->isEliminated()) continue; float lap_time = kart->getTimeAtLap(); int laps = kart->getLap(); @@ -355,9 +357,10 @@ } // for i<getNumKarts int bFirst = 1; - for(unsigned int i = 0; i < world->getNumKarts() ; i++) + for(unsigned int i = 0; i < race_manager->getNumKarts() ; i++) { Kart* kart = world->getKart(i); + if(kart->isEliminated()) continue; int position = kart->getPosition(); int lap = kart->getLap(); @@ -395,8 +398,9 @@ str[0]='+'; str[1]=0; TimeToString(timeBehind, str+1); } - font_race->PrintShadow(str, 30, ICON_PLAYER_WIDHT+x, y+5, - red, green, blue); + if(race_manager->raceHasLaps()) + font_race->PrintShadow(str, 30, ICON_PLAYER_WIDHT+x, y+5, + red, green, blue); } glEnable(GL_CULL_FACE); @@ -746,7 +750,7 @@ float ratio_x, float ratio_y ) { // Don't display laps in follow the leader mode - if(race_manager->getRaceMode()==RaceManager::RM_FOLLOW_LEADER) return; + if(!race_manager->raceHasLaps()) return; float maxRatio = std::max(ratio_x, ratio_y); char str[256]; @@ -909,7 +913,7 @@ } if(world->isStartPhase()) { - for(unsigned int i=0; i<world->getNumPlayers(); i++) + for(unsigned int i=0; i<race_manager->getNumPlayers(); i++) { if(world->getPlayerKart(i)->earlyStartPenalty()) { @@ -922,14 +926,14 @@ float split_screen_ratio_x, split_screen_ratio_y; split_screen_ratio_x = split_screen_ratio_y = 1.0; - if(world->getNumPlayers() >= 2) + if(race_manager->getNumPlayers() >= 2) split_screen_ratio_y = 0.5; - if(world->getNumPlayers() >= 3) + if(race_manager->getNumPlayers() >= 3) split_screen_ratio_x = 0.5; if ( world->isRacePhase() ) { - const int numPlayers = world->getNumPlayers(); + const int numPlayers = race_manager->getNumPlayers(); for(int pla = 0; pla < numPlayers; pla++) { Modified: trunk/supertuxkart/src/gui/race_results_gui.cpp =================================================================== --- trunk/supertuxkart/src/gui/race_results_gui.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/gui/race_results_gui.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -74,7 +74,7 @@ const unsigned int MAX_STR_LEN = 60; - const unsigned int NUM_KARTS = world->getNumKarts(); + const unsigned int NUM_KARTS = race_manager->getNumKarts(); int* order = new int [NUM_KARTS]; m_score = new char[NUM_KARTS * MAX_STR_LEN]; @@ -82,7 +82,7 @@ for(unsigned int i=0; i < NUM_KARTS; i++) { - Kart *k = world->getKart(i); + Kart *k = world->getKart(i); // Display even for eliminated karts! order[k->getPosition()-1] = i; const std::string& s = k->getName(); unsigned int l = (unsigned int)s.size(); Modified: trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj =================================================================== --- trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/ide/vc8/supertuxkart.vcproj 2008-04-15 13:57:18 UTC (rev 1683) @@ -854,6 +854,10 @@ > </File> <File + RelativePath="..\..\smoke.cpp" + > + </File> + <File RelativePath="../../../src\sound_manager.cpp" > </File> @@ -993,6 +997,10 @@ > </File> <File + RelativePath="..\..\gui\leader_result.cpp" + > + </File> + <File RelativePath="../../../src\gui\main_menu.cpp" > </File> @@ -1081,6 +1089,10 @@ > </File> <File + RelativePath="..\..\challenges\race_track_time.cpp" + > + </File> + <File RelativePath="..\..\challenges\win_gotm_cup.cpp" > </File> @@ -1316,6 +1328,10 @@ > </File> <File + RelativePath="..\..\smoke.hpp" + > + </File> + <File RelativePath="../../../src\sound_manager.hpp" > </File> @@ -1455,6 +1471,10 @@ > </File> <File + RelativePath="..\..\gui\leader_result.hpp" + > + </File> + <File RelativePath="../../../src\gui\main_menu.hpp" > </File> @@ -1543,6 +1563,10 @@ > </File> <File + RelativePath="..\..\challenges\race_track_time.hpp" + > + </File> + <File RelativePath="..\..\challenges\win_gotm_cup.hpp" > </File> Modified: trunk/supertuxkart/src/kart.cpp =================================================================== --- trunk/supertuxkart/src/kart.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/kart.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -20,6 +20,7 @@ #include <math.h> #include <iostream> #include <plib/ssg.h> +#include "bullet/Demos/OpenGL/GL_ShapeDrawer.h" #include "loader.hpp" #include "herring_manager.hpp" @@ -38,87 +39,12 @@ #include "gui/menu_manager.hpp" #include "gui/race_gui.hpp" #include "translation.hpp" -#include "bullet/Demos/OpenGL/GL_ShapeDrawer.h" +#include "smoke.hpp" #if defined(WIN32) && !defined(__CYGWIN__) # define snprintf _snprintf #endif -KartParticleSystem::KartParticleSystem(Kart* kart_, - int num, float _create_rate, int _ttf, - float sz, float bsphere_size) - : ParticleSystem (num, _create_rate, _ttf, sz, bsphere_size), - m_kart(kart_) -{ - getBSphere () -> setCenter ( 0, 0, 0 ) ; - getBSphere () -> setRadius ( 1000.0f ) ; - dirtyBSphere(); -} // KartParticleSystem -//----------------------------------------------------------------------------- -void KartParticleSystem::update ( float t ) -{ -#if 0 - std::cout << "BSphere: r:" << getBSphere()->radius - << " (" << getBSphere()->center[0] - << ", " << getBSphere()->center[1] - << ", " << getBSphere()->center[2] - << ")" - << std::endl; -#endif - getBSphere () -> setRadius ( 1000.0f ) ; - ParticleSystem::update(t); -} // update - -//----------------------------------------------------------------------------- -void KartParticleSystem::particle_create(int, Particle *p) -{ - sgSetVec4 ( p -> m_col, 1, 1, 1, 1 ) ; /* initially white */ - sgSetVec3 ( p -> m_pos, 0, 0, 0 ) ; /* start off on the ground */ - sgSetVec3 ( p -> m_vel, 0, 0, 0 ) ; - sgSetVec3 ( p -> m_acc, 0, 0, 2.0f ) ; /* Gravity */ - p -> m_size = .5f; - p -> m_time_to_live = 0.5 ; /* Droplets evaporate after 5 seconds */ - - const sgCoord* POS = m_kart->getCoord(); - const btVector3 VEL = m_kart->getVelocity(); - - const float X_DIRECTION = sgCos (POS->hpr[0] - 90.0f); // Point at the rear - const float Y_DIRECTION = sgSin (POS->hpr[0] - 90.0f); // Point at the rear - - sgCopyVec3 (p->m_pos, POS->xyz); - - p->m_pos[0] += X_DIRECTION * 0.7f; - p->m_pos[1] += Y_DIRECTION * 0.7f; - - const float ABS_VEL = sqrt((VEL.getX() * VEL.getX()) + (VEL.getY() * VEL.getY())); - - p->m_vel[0] = X_DIRECTION * -ABS_VEL/2; - p->m_vel[1] = Y_DIRECTION * -ABS_VEL/2; - - p->m_vel[0] += sgCos ((float)(rand()%180)); - p->m_vel[1] += sgSin ((float)(rand()%180)); - p->m_vel[2] += sgSin ((float)(rand()%100)); - - getBSphere () -> setCenter ( POS->xyz[0], POS->xyz[1], POS->xyz[2] ) ; -} // particle_create - -//----------------------------------------------------------------------------- -void KartParticleSystem::particle_update (float delta, int, - Particle * particle) -{ - particle->m_size += delta*2.0f; - particle->m_col[3] -= delta * 2.0f; - - particle->m_pos[0] += particle->m_vel[0] * delta; - particle->m_pos[1] += particle->m_vel[1] * delta; - particle->m_pos[2] += particle->m_vel[2] * delta; -} // particle_update - -//----------------------------------------------------------------------------- -void KartParticleSystem::particle_delete (int , Particle* ) -{} // particle_delete - -//============================================================================= Kart::Kart (const std::string& kart_name, int position_ , sgCoord init_pos) : TerrainInfo(1), @@ -134,6 +60,7 @@ m_kart_properties = kart_properties_manager->getKart(kart_name); m_grid_position = position_ ; m_num_herrings_gobbled = 0; + m_eliminated = false; m_finished_race = false; m_finish_time = 0.0f; m_prev_accel = 0.0f; @@ -326,6 +253,17 @@ } // ~Kart //----------------------------------------------------------------------------- +void Kart::eliminate() +{ + m_eliminated = true; + world->getPhysics()->removeKart(this); + + // make the kart invisible by placing it way under the track + sgVec3 hell; hell[0]=0.0f; hell[1]=0.0f; hell[2] = -10000.0f; + getModelTransform()->setTransform(hell); +} // eliminate + +//----------------------------------------------------------------------------- /** Returns true if the kart is 'resting' * * Returns true if the kart is 'resting', i.e. (nearly) not moving. @@ -352,6 +290,10 @@ //----------------------------------------------------------------------------- void Kart::reset() { + if(m_eliminated) + { + world->getPhysics()->addKart(this, m_vehicle); + } Moveable::reset(); m_attachment.clear(); @@ -363,6 +305,7 @@ m_shortcut_sector = Track::UNKNOWN_SECTOR; m_race_position = 9; m_finished_race = false; + m_eliminated = false; m_finish_time = 0.0f; m_zipper_time_left = 0.0f; m_num_herrings_gobbled = 0; @@ -460,7 +403,8 @@ time_per_lap=world->getTime()-m_lap_start_time; } - if(time_per_lap < world->getFastestLapTime() ) + if(time_per_lap < world->getFastestLapTime() && + race_manager->raceHasLaps()) { world->setFastestLap(this, time_per_lap); RaceGUI* m=(RaceGUI*)menu_manager->getRaceMenu(); @@ -490,6 +434,13 @@ // Prevent cheating by setting time to a negative number, indicating // that the line wasn't crossed properly. m_lap_start_time = -1.0f; + } else + { // Switch to fast music in case of follow the leader when only 3 karts are left + if(race_manager->getRaceMode()==RaceManager::RM_FOLLOW_LEADER && + world->getCurrentNumKarts()==3) + { + sound_manager->switchToFastMusic(); + } } } // doLapCounting @@ -1118,7 +1069,7 @@ // Attach Particle System //JH sgCoord pipe_pos = {{0, 0, .3}, {0, 0, 0}} ; - m_smoke_system = new KartParticleSystem(this, 50, 100.0f, true, 0.35f, 1000); + m_smoke_system = new Smoke(this, 50, 100.0f, true, 0.35f, 1000); m_smoke_system -> init(5); //JH m_smoke_system -> setState (getMaterial ("smoke.png")-> getState() ); //m_smoke_system -> setState ( m_smokepuff ) ; Modified: trunk/supertuxkart/src/kart.hpp =================================================================== --- trunk/supertuxkart/src/kart.hpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/kart.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -25,7 +25,6 @@ #include "btBulletDynamicsCommon.h" #include "moveable.hpp" -#include "particle_system.hpp" #include "kart_properties.hpp" #include "attachment.hpp" #include "collectable.hpp" @@ -46,24 +45,9 @@ }; class SkidMark; -class Kart; class Herring; +class Smoke; -class KartParticleSystem : public ParticleSystem -{ -private: - Kart* m_kart; - -public: - KartParticleSystem (Kart* kart, int num, float _create_rate, - int _turn_to_face, float sz, float bsphere_size); - virtual void update (float t ); - virtual void particle_create(int index, Particle* p ); - virtual void particle_update(float deltaTime, int index, Particle *p ); - virtual void particle_delete(int index, Particle* p ); -}; - -// ============================================================================= class Kart : public TerrainInfo, public Moveable { protected: @@ -105,7 +89,7 @@ int m_num_herrings_gobbled; ssgSimpleState* m_smokepuff; // don't delete the following 2 vars (they're kids in the hirarchy) - KartParticleSystem* m_smoke_system; + Smoke *m_smoke_system; ssgTransform* m_exhaust_pipe; float m_wheel_rotation; @@ -124,6 +108,7 @@ float m_speed; bool m_rescue; + bool m_eliminated; protected: float m_rescue_pitch, m_rescue_roll; @@ -217,6 +202,8 @@ float handleWheelie (float dt); float getActualWheelForce(); bool isOnGround () const; + bool isEliminated () const {return m_eliminated;} + void eliminate (); bool isRescue () const {return m_rescue;} void resetBrakes (); void adjustSpeedWeight(float f); Modified: trunk/supertuxkart/src/player_kart.cpp =================================================================== --- trunk/supertuxkart/src/player_kart.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/player_kart.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -219,6 +219,7 @@ m_controls.jump = false; m_penalty_time = 0; m_time_last_crash_sound = -10.0f; + m_camera->setMode(Camera::CM_NORMAL); // can be changed if camera was eliminated m_camera->setReverseHeading(false); Kart::reset(); } // reset Modified: trunk/supertuxkart/src/race_manager.cpp =================================================================== --- trunk/supertuxkart/src/race_manager.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/race_manager.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -204,11 +204,23 @@ //----------------------------------------------------------------------------- void RaceManager::addKartResult(int kart, int pos, float time) { + // In follow the leader mode, kart 0 does not get any points, + // so the position of each kart is actually one better --> decrease pos + if(m_race_mode==RM_FOLLOW_LEADER) + { + pos--; + // If the position is negative (i.e. follow leader and kart on + // position 0) set the score of this kart to the lowest possible + // score, since the kart is ahead of the leader + if(pos<=0) pos=stk_config->m_max_karts; + } + m_kart_status[kart].m_score += m_score_for_position[pos-1]; m_kart_status[kart].m_last_score = m_score_for_position[pos-1]; m_kart_status[kart].m_overall_time += time; m_kart_status[kart].m_last_time = time; } // addKartResult + //----------------------------------------------------------------------------- void RaceManager::restartRace() { Modified: trunk/supertuxkart/src/race_manager.hpp =================================================================== --- trunk/supertuxkart/src/race_manager.hpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/race_manager.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -87,6 +87,12 @@ unsigned int m_num_finished_players; void startNextRace(); // start a next race + + friend bool operator< (const KartStatus& left, const KartStatus& right) + { + return (left.m_score < right.m_score); + } + public: bool m_active_race; //True if there is a race @@ -119,10 +125,12 @@ { return m_kart_status[kart].m_ident;} const std::string& getHerringStyle() const { return m_cup.getHerringStyle(); } - int getKartScore(int kart) const { return m_kart_status[kart].m_score;} - int getPositionScore(int p) const { return m_score_for_position[p-1];} - double getOverallTime(int kart) const {return m_kart_status[kart].m_overall_time;} + int getKartScore(int krt) const { return m_kart_status[krt].m_score;} + int getPositionScore(int p) const { return m_score_for_position[p-1]; } + double getOverallTime(int kart) const { return m_kart_status[kart].m_overall_time;} bool isEliminated(int kart) const { return m_kart_status[kart].m_is_eliminated;} + bool raceHasLaps() const { return m_race_mode!=RM_FOLLOW_LEADER;} + void eliminate(int kart) { m_kart_status[kart].m_is_eliminated=true;} void addFinishedKarts(int num) { m_num_finished_karts += num; } void PlayerFinishes() { m_num_finished_players++; } int allPlayerFinished() const {return m_num_finished_players==m_player_karts.size();} @@ -136,13 +144,6 @@ void next(); // start the next race or go back to the start screen void restartRace(); // restart same race again void exit_race(); // exit a race (and don't start the next one) - - friend bool operator< (const KartStatus& left, const KartStatus& right) - { - return (left.m_score < right.m_score); - } - - }; extern RaceManager *race_manager; Modified: trunk/supertuxkart/src/robots/default_robot.cpp =================================================================== --- trunk/supertuxkart/src/robots/default_robot.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/robots/default_robot.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -556,7 +556,7 @@ m_crashes.clear(); - const size_t NUM_KARTS = world->getNumKarts(); + const size_t NUM_KARTS = race_manager->getNumKarts(); //Protection against having vel_normal with nan values const btVector3 &VEL = getVelocity(); @@ -581,7 +581,8 @@ { for( unsigned int j = 0; j < NUM_KARTS; ++j ) { - if(world->getKart(j) == this) continue; + const Kart* kart=world->getKart(j); + if(kart==this||kart->isEliminated()) continue; // ignore eliminated karts kart_distance = sgDistanceVec2( step_coord, world->getKart(j)->getCoord()->xyz ); Modified: trunk/supertuxkart/src/scene.cpp =================================================================== --- trunk/supertuxkart/src/scene.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/scene.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -135,7 +135,7 @@ for (Cameras::iterator i = m_cameras.begin(); i != m_cameras.end(); ++i) { (*i)->update(dt); - (*i) -> apply () ; + (*i)->apply (); if(!user_config->m_bullet_debug) { @@ -179,15 +179,16 @@ glFrustum(-f, f, -f, f, 1.0, 1000.0); btVector3 pos; - sgCoord *c = world->getKart(world->getNumKarts()-1)->getCoord(); + sgCoord *c = world->getKart(race_manager->getNumKarts()-1)->getCoord(); gluLookAt(c->xyz[0], c->xyz[1]-5.f, c->xyz[2]+4, c->xyz[0], c->xyz[1], c->xyz[2], 0.0f, 0.0f, 1.0f); glMatrixMode(GL_MODELVIEW); - for (World::Karts::size_type i = 0 ; i < world->getNumKarts(); ++i) + for (World::Karts::size_type i = 0 ; i < race_manager->getNumKarts(); ++i) { - world->getKart((int)i)->draw(); + Kart *kart=world->getKart((int)i); + if(!kart->isEliminated()) kart->draw(); } world->getPhysics()->draw(); } // bullet_debug Added: trunk/supertuxkart/src/smoke.cpp =================================================================== --- trunk/supertuxkart/src/smoke.cpp (rev 0) +++ trunk/supertuxkart/src/smoke.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -0,0 +1,98 @@ + +// $Id: dust_cloud.cpp 1681 2008-04-09 13:52:48Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2006 SuperTuxKart-Team +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "smoke.hpp" +#include "kart.hpp" + +Smoke::Smoke(Kart* kart_, + int num, float _create_rate, int _ttf, + float sz, float bsphere_size) + : ParticleSystem (num, _create_rate, _ttf, sz, bsphere_size), + m_kart(kart_) +{ + getBSphere () -> setCenter ( 0, 0, 0 ) ; + getBSphere () -> setRadius ( 1000.0f ) ; + dirtyBSphere(); +} // KartParticleSystem + +//----------------------------------------------------------------------------- +void Smoke::update ( float t ) +{ +#if 0 + std::cout << "BSphere: r:" << getBSphere()->radius + << " (" << getBSphere()->center[0] + << ", " << getBSphere()->center[1] + << ", " << getBSphere()->center[2] + << ")" + << std::endl; +#endif + getBSphere () -> setRadius ( 1000.0f ) ; + ParticleSystem::update(t); +} // update + +//----------------------------------------------------------------------------- +void Smoke::particle_create(int, Particle *p) +{ + sgSetVec4 ( p -> m_col, 1, 1, 1, 1 ) ; /* initially white */ + sgSetVec3 ( p -> m_pos, 0, 0, 0 ) ; /* start off on the ground */ + sgSetVec3 ( p -> m_vel, 0, 0, 0 ) ; + sgSetVec3 ( p -> m_acc, 0, 0, 2.0f ) ; /* Gravity */ + p -> m_size = .5f; + p -> m_time_to_live = 0.5 ; /* Droplets evaporate after 5 seconds */ + + const sgCoord* POS = m_kart->getCoord(); + const btVector3 VEL = m_kart->getVelocity(); + + const float X_DIRECTION = sgCos (POS->hpr[0] - 90.0f); // Point at the rear + const float Y_DIRECTION = sgSin (POS->hpr[0] - 90.0f); // Point at the rear + + sgCopyVec3 (p->m_pos, POS->xyz); + + p->m_pos[0] += X_DIRECTION * 0.7f; + p->m_pos[1] += Y_DIRECTION * 0.7f; + + const float ABS_VEL = sqrt((VEL.getX() * VEL.getX()) + (VEL.getY() * VEL.getY())); + + p->m_vel[0] = X_DIRECTION * -ABS_VEL/2; + p->m_vel[1] = Y_DIRECTION * -ABS_VEL/2; + + p->m_vel[0] += sgCos ((float)(rand()%180)); + p->m_vel[1] += sgSin ((float)(rand()%180)); + p->m_vel[2] += sgSin ((float)(rand()%100)); + + getBSphere () -> setCenter ( POS->xyz[0], POS->xyz[1], POS->xyz[2] ) ; +} // particle_create + +//----------------------------------------------------------------------------- +void Smoke::particle_update (float delta, int, + Particle * particle) +{ + particle->m_size += delta*2.0f; + particle->m_col[3] -= delta * 2.0f; + + particle->m_pos[0] += particle->m_vel[0] * delta; + particle->m_pos[1] += particle->m_vel[1] * delta; + particle->m_pos[2] += particle->m_vel[2] * delta; +} // particle_update + +//----------------------------------------------------------------------------- +void Smoke::particle_delete (int , Particle* ) +{} // particle_delete + Property changes on: trunk/supertuxkart/src/smoke.cpp ___________________________________________________________________ Name: svn:executable + * Added: trunk/supertuxkart/src/smoke.hpp =================================================================== --- trunk/supertuxkart/src/smoke.hpp (rev 0) +++ trunk/supertuxkart/src/smoke.hpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -0,0 +1,41 @@ +// $Id: dust_cloud.hpp 1681 2008-04-09 13:52:48Z hikerstk $ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2006 SuperTuxKart-Team +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef HEADER_SMOKE_H +#define HEADER_SMOKE_H + +#include <plib/sg.h> +#include "particle_system.hpp" + +class Kart; + +class Smoke : public ParticleSystem +{ +private: + Kart* m_kart; + +public: + Smoke(Kart* kart, int num, float _create_rate, + int _turn_to_face, float sz, float bsphere_size); + virtual void update (float t ); + virtual void particle_create(int index, Particle* p ); + virtual void particle_update(float deltaTime, int index, Particle *p ); + virtual void particle_delete(int index, Particle* p ); +}; +#endif \ No newline at end of file Property changes on: trunk/supertuxkart/src/smoke.hpp ___________________________________________________________________ Name: svn:executable + * Modified: trunk/supertuxkart/src/stk_config.cpp =================================================================== --- trunk/supertuxkart/src/stk_config.cpp 2008-04-10 00:38:42 UTC (rev 1682) +++ trunk/supertuxkart/src/stk_config.cpp 2008-04-15 13:57:18 UTC (rev 1683) @@ -62,6 +62,11 @@ fprintf(stderr,"Not or not enough scores defined in stk_config"); exit(-1); } + if(m_leader_intervals.size()==0) + { + fprintf(stderr,"No follow leader interval(s) defined in stk_config"); + exit(-1); + } CHECK_NEG(m_max_karts, "max-karts" ); CHECK_NEG(m_grid_order, "grid-order" ); @@ -148,6 +153,7 @@ m_grid_order = -100; m_title_music = NULL; m_scores.clear(); + m_leader_intervals.clear(); } // init_defaults //----------------------------------------------------------------------------- @@ -166,6 +172,7 @@ lisp->get("jump-impulse", m_jump_impulse ); lisp->get("bomb-time", m_bomb_time ); lisp->get("bomb-time-increase", ... [truncated message content] |
From: <hik...@us...> - 2008-04-17 05:34:48
|
Revision: 1690 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1690&view=rev Author: hikerstk Date: 2008-04-16 22:34:45 -0700 (Wed, 16 Apr 2008) Log Message: ----------- Fixed automake installation, using Robert's 'find' approach for flexibility. Modified Paths: -------------- trunk/supertuxkart/configure.ac trunk/supertuxkart/data/Makefile.am trunk/supertuxkart/data/fonts/Makefile.am trunk/supertuxkart/data/models/Makefile.am trunk/supertuxkart/data/sfx/Makefile.am trunk/supertuxkart/data/textures/Makefile.am trunk/supertuxkart/doc/players_manual/Makefile.am trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/race_manager.hpp Added Paths: ----------- trunk/supertuxkart/data/herrings/Makefile.am trunk/supertuxkart/data/karts/Makefile.am trunk/supertuxkart/data/music/Makefile.am trunk/supertuxkart/data/po/Makefile.am trunk/supertuxkart/data/tracks/Makefile.am Removed Paths: ------------- trunk/supertuxkart/data/sfx/radio/Makefile.am trunk/supertuxkart/data/sfx/tintagel/Makefile.am Property Changed: ---------------- trunk/supertuxkart/data/fonts/ trunk/supertuxkart/data/herrings/ trunk/supertuxkart/data/karts/ trunk/supertuxkart/data/models/ trunk/supertuxkart/data/music/ trunk/supertuxkart/data/po/ trunk/supertuxkart/data/textures/ trunk/supertuxkart/data/tracks/ Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/configure.ac 2008-04-17 05:34:45 UTC (rev 1690) @@ -400,16 +400,25 @@ dnl ================ dnl Create makefiles dnl ================ -AC_CONFIG_FILES([ \ - Makefile \ - data/Makefile \ - doc/Makefile \ - doc/players_manual/Makefile \ - src/Makefile \ - src/robots/Makefile \ - src/bullet/Makefile \ - src/bullet/src/Makefile \ - src/bullet/Demos/OpenGL/Makefile \ +AC_CONFIG_FILES([ \ + Makefile \ + data/Makefile \ + data/fonts/Makefile \ + data/herrings/Makefile \ + data/karts/Makefile \ + data/models/Makefile \ + data/music/Makefile \ + data/po/Makefile \ + data/sfx/Makefile \ + data/textures/Makefile \ + data/tracks/Makefile \ + doc/Makefile \ + doc/players_manual/Makefile \ + src/Makefile \ + src/robots/Makefile \ + src/bullet/Makefile \ + src/bullet/src/Makefile \ + src/bullet/Demos/OpenGL/Makefile \ ]) AC_OUTPUT echo -e $SUMMARY Modified: trunk/supertuxkart/data/Makefile.am =================================================================== --- trunk/supertuxkart/data/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,12 +1,17 @@ # data/ +SUBDIRS = fonts herrings karts models music po sfx textures tracks pkgdatadir = $(datadir)/games/@PACKAGE@/data -pkgdata_DATA = $(wildcard *.dat) $(wildcard *.data) $(wildcard *.herring) \ - $(wildcard *.loc) $(wildcard *.drv?) $(wildcard *.projectile) \ - $(wildcard *.cup) $(wildcard *.tkkf) $(wildcard *.collectable)\ - $(wildcard *.track) CREDITS licenses \ - supertuxkart_32.xpm supertuxkart_64.xpm supertuxkart.desktop +pkgdata_DATA = $(shell find $(srcdir) -name "*.data") \ + $(shell find $(srcdir) -name "*.herring") \ + $(shell find $(srcdir) -name "*.projectile") \ + $(shell find $(srcdir) -name "*.cup") \ + $(shell find $(srcdir) -name "*.collectable") \ + $(shell find $(srcdir) -name "*.projectile") \ + CREDITS licenses \ + supertuxkart_32.xpm supertuxkart_64.xpm \ + supertuxkart.desktop desktopdir = $(prefix)/share/applications desktop_DATA = supertuxkart.desktop Property changes on: trunk/supertuxkart/data/fonts ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Modified: trunk/supertuxkart/data/fonts/Makefile.am =================================================================== --- trunk/supertuxkart/data/fonts/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/fonts/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,7 +1,7 @@ -# fonts/ +# data/fonts/ -pkgdatadir = $(datadir)/games/@PACKAGE@/fonts +pkgdatadir = $(datadir)/games/@PACKAGE@/data/fonts -pkgdata_DATA = $(wildcard *.txf) +pkgdata_DATA = $(shell find $(srcdir) -name "*.txf") EXTRA_DIST = $(pkgdata_DATA) \ No newline at end of file Property changes on: trunk/supertuxkart/data/herrings ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Added: trunk/supertuxkart/data/herrings/Makefile.am =================================================================== --- trunk/supertuxkart/data/herrings/Makefile.am (rev 0) +++ trunk/supertuxkart/data/herrings/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -0,0 +1,8 @@ +# data/herrings/ + +pkgdatadir = $(datadir)/games/@PACKAGE@/data/herrings + +pkgdata_DATA = $(shell find $(srcdir) -name "*.ac") + +EXTRA_DIST = $(pkgdata_DATA) + Property changes on: trunk/supertuxkart/data/karts ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Added: trunk/supertuxkart/data/karts/Makefile.am =================================================================== --- trunk/supertuxkart/data/karts/Makefile.am (rev 0) +++ trunk/supertuxkart/data/karts/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -0,0 +1,11 @@ +# data/karts + +pkgdatadir= $(datadir)/games/@PACKAGE@/data/karts + +nobase_pkgdata_DATA = $(shell find $(srcdir) -name "materials.dat") \ + $(shell find $(srcdir) -name "*.rgb") \ + $(shell find $(srcdir) -name "*.ac") \ + $(shell find $(srcdir) -name "*.kart") + + +EXTRA_DIST = $(nobase_pkgdata_DATA) \ No newline at end of file Property changes on: trunk/supertuxkart/data/models ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Modified: trunk/supertuxkart/data/models/Makefile.am =================================================================== --- trunk/supertuxkart/data/models/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/models/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,10 +1,8 @@ -# models/ +# data/models/ -pkgdatadir = $(datadir)/games/@PACKAGE@/models +pkgdatadir = $(datadir)/games/@PACKAGE@/data/models -pkgdata_DATA = $(wildcard *.ac) +pkgdata_DATA = $(shell find $(srcdir) -name "*.ac") -SUBDIRS = herrings - EXTRA_DIST = $(pkgdata_DATA) Property changes on: trunk/supertuxkart/data/music ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Added: trunk/supertuxkart/data/music/Makefile.am =================================================================== --- trunk/supertuxkart/data/music/Makefile.am (rev 0) +++ trunk/supertuxkart/data/music/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -0,0 +1,8 @@ +# data/music + +pkgdatadir = $(datadir)/games/@PACKAGE@/data/music + +pkgdata_DATA = $(shell find $(srcdir) -name "*.ogg") \ + $(shell find $(srcdir) -name "*.music") + +EXTRA_DIST = $(pkgdata_DATA) \ No newline at end of file Property changes on: trunk/supertuxkart/data/po ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Added: trunk/supertuxkart/data/po/Makefile.am =================================================================== --- trunk/supertuxkart/data/po/Makefile.am (rev 0) +++ trunk/supertuxkart/data/po/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -0,0 +1,9 @@ +# data/po/ + +pkgdatadir = $(datadir)/games/@PACKAGE@/data/po + +nobase_pkgdata_DATA = $(shell find $(srcdir) -name "*.po") \ + $(shell find $(srcdir) -name "*.mo") \ + supertuxkart.pot + +EXTRA_DIST = $(nobase_pkgdata_DATA) \ No newline at end of file Modified: trunk/supertuxkart/data/sfx/Makefile.am =================================================================== --- trunk/supertuxkart/data/sfx/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/sfx/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,9 +1,8 @@ -# wavs/ +# sfx/ -pkgdatadir = $(datadir)/games/@PACKAGE@/wavs +pkgdatadir = $(datadir)/games/@PACKAGE@/data/sfx -pkgdata_DATA = $(wildcard *.wav) +nobase_pkgdata_DATA = $(shell find $(srcdir) -name "*.wav") \ + $(shell find $(srcdir) -name "README") -SUBDIRS = radio tintagel - -EXTRA_DIST = $(pkgdata_DATA) \ No newline at end of file +EXTRA_DIST = $(nobase_pkgdata_DATA) \ No newline at end of file Deleted: trunk/supertuxkart/data/sfx/radio/Makefile.am =================================================================== --- trunk/supertuxkart/data/sfx/radio/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/sfx/radio/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,7 +0,0 @@ -# wavs/ - -pkgdatadir = $(datadir)/games/@PACKAGE@/wavs/radio - -pkgdata_DATA = $(wildcard *.wav) README - -EXTRA_DIST = $(pkgdata_DATA) \ No newline at end of file Deleted: trunk/supertuxkart/data/sfx/tintagel/Makefile.am =================================================================== --- trunk/supertuxkart/data/sfx/tintagel/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/sfx/tintagel/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,7 +0,0 @@ -# wavs/ - -pkgdatadir = $(datadir)/games/@PACKAGE@/wavs/tintagel - -pkgdata_DATA = $(wildcard *.wav) README - -EXTRA_DIST = $(pkgdata_DATA) \ No newline at end of file Property changes on: trunk/supertuxkart/data/textures ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Modified: trunk/supertuxkart/data/textures/Makefile.am =================================================================== --- trunk/supertuxkart/data/textures/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/data/textures/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -1,165 +1,7 @@ -# images/ +# data/textures -pkgdatadir = $(datadir)/games/@PACKAGE@/images -pkgdata_DATA = \ -aarmco.rgb \ -adverts.rgb \ -anvil.rgb \ -backpack.rgb \ -banana.rgb \ -bananawrap.rgb \ -bonusblock.rgb \ -bow.rgb \ -brick.rgb \ -butterfly.rgb \ -bzzt.rgb \ -candy_stripe.rgb \ -coniferous_tree.rgb \ -chess.rgb \ -chrome2.rgb \ -chrome.rgb \ -concrete.rgb \ -dinoicon.rgb \ -dinoshadow.rgb \ -dirt.rgb \ -dirtwall.rgb \ -egypt.rgb \ -embossed_herring.rgb \ -eviltuxicon.rgb \ -explode.rgb \ -fence.rgb \ -flames.rgb \ -floor.rgb \ -fuzzy.rgb \ -fuzzy_sand.rgb \ -Gown_beak.rgb \ -Gown_body.rgb \ -grass.rgb \ -herringbones.rgb \ -herring.rgb \ -herringwall.rgb \ -hexley_eye.rgb \ -hexleyicon.rgb \ -hexley_kart_textura.rgb \ -hexleyshadow.rgb \ -homework.rgb \ -homingmissile.rgb \ -icecreamtruck.rgb \ -lava2.rgb \ -lava.rgb \ -lighthouse.rgb \ -lighthouse_sky.rgb \ -lscales.rgb \ -lunchbox2.rgb \ -lunchbox.rgb \ -magnet.rgb \ -mathclassceiling.rgb \ -mathclasseast.rgb \ -mathclassfloor.rgb \ -mathclassnorth.rgb \ -mathclasssouth.rgb \ -mathclasswest.rgb \ -metalgrid.rgb \ -missile.rgb \ -mriceblockicon.rgb \ -mriceblockshadow.rgb \ -nolokicon.rgb \ -palm.rgb \ -palmtree.rgb \ -parachute.rgb \ -pebbles.rgb \ -Penguin_orig.rgb \ -pennyicon.rgb \ -pennyshadow.rgb \ -pyramidwall.rgb \ -railing.rgb \ -rainbow3.rgb \ -rainbow.rgb \ -redwhite.rgb \ -roadway.rgb \ -rock.rgb \ -ruler.rgb \ -sandgrass.rgb \ -sand.rgb \ -sea.rgb \ -shine.rgb \ -skirpyicon.rgb \ -smoke.rgb \ -spark.rgb \ -speedback.rgb \ -speedfore.rgb \ -sshot-beach.rgb \ -sshot-bsodcastle.rgb \ -sshot-geekopeak.rgb \ -sshot-gownsbow.rgb \ -sshot-islandtrack.rgb \ -sshot-lighthouse.rgb \ -sshot-littlevolcano.rgb \ -sshot-olivermath.rgb \ -sshot-race.rgb \ -sshot-sandtrack.rgb \ -sshot-startrack.rgb \ -sshot-subseatrack.rgb \ -sshot-tuxtrack.rgb \ -sshot-volcano.rgb \ -stonegrass.rgb \ -stones.rgb \ -stonetex.rgb \ -stonewall.rgb \ -st_title_screen.rgb \ -sushiicon.rgb \ -sushishadow.rgb \ -tinytux.rgb \ -topview-beach.rgb \ -topview-bsodcastle.rgb \ -topview-geekopeak.rgb \ -topview-gownsbow.rgb \ -topview-islandtrack.rgb \ -topview-lighthouse.rgb \ -topview-littlevolcano.rgb \ -topview-olivermath.rgb \ -topview-race.rgb \ -topview-sandtrack.rgb \ -topview-startrack.rgb \ -topview-subseatrack.rgb \ -topview-tuxtrack.rgb \ -topview-volcano.rgb \ -track2.rgb \ -trackborder.rgb \ -track.rgb \ -tux_body.rgb \ -Tuxclouds.rgb \ -tuxicon.rgb \ -tuxkart.rgb \ -tuxkartshadow.rgb \ -tv.rgb \ -usaflag.rgb \ -water.rgb \ -waterfall.rgb \ -water_light.rgb \ -wheel.rgb \ -wilbericon.rgb \ -wilber.rgb \ -wilbershadow.rgb \ -window.rgb \ -wood.rgb \ -yetiicon.rgb \ -yetishadow.rgb \ -zipper_collect.rgb \ -zipper.rgb +pkgdatadir = $(datadir)/games/@PACKAGE@/data/textures +pkgdata_DATA = $(shell find $(srcdir) -name "*.rgb") materials.dat -nobase_pkgdata_DATA = \ -island/grass2.rgb \ -island/palmtree3.rgb \ -island/road_sand.rgb \ -island/road_sand_side.rgb \ -island/rock1.rgb \ -island/rock4.rgb \ -island/sand2.rgb \ -island/sky2.rgb \ -island/water2.rgb \ -island/rock4.rgb \ -island/readme.txt +EXTRA_DIST = $(pkgdata_DATA) -EXTRA_DIST = $(pkgdata_DATA) $(nobase_pkgdata_DATA) - Property changes on: trunk/supertuxkart/data/tracks ___________________________________________________________________ Name: svn:ignore + Makefile Makefile.in Added: trunk/supertuxkart/data/tracks/Makefile.am =================================================================== --- trunk/supertuxkart/data/tracks/Makefile.am (rev 0) +++ trunk/supertuxkart/data/tracks/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -0,0 +1,14 @@ +# data/tracks + +pkgdatadir= $(datadir)/games/@PACKAGE@/data/tracks +nobase_pkgdata_DATA = $(shell find $(srcdir) -name "readme.txt") \ + $(shell find $(srcdir) -name "*.track") \ + $(shell find $(srcdir) -name "*.drv?") \ + $(shell find $(srcdir) -name "*.loc") \ + $(shell find $(srcdir) -name "*.ac") \ + $(shell find $(srcdir) -name "*.rgb") \ + $(shell find $(srcdir) -name "materials.dat") \ + $(shell find $(srcdir) -name "*.music") \ + $(shell find $(srcdir) -name "*.ogg") + +EXTRA_DIST = $(nobase_pkgdata_DATA) \ No newline at end of file Modified: trunk/supertuxkart/doc/players_manual/Makefile.am =================================================================== --- trunk/supertuxkart/doc/players_manual/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/doc/players_manual/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -2,6 +2,7 @@ pkgdatadir = $(datadir)/games/@PACKAGE@/doc/players_manual -pkgdata_DATA = manual.html $(wildcard *.png) $(wildcard *.jpg) +pkgdata_DATA = manual.html $(shell find $(srcdir) -name "*.png") \ + $(shell find $(srcdir) -name "*.jpg") EXTRA_DIST = $(pkgdata_DATA) Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/src/Makefile.am 2008-04-17 05:34:45 UTC (rev 1690) @@ -55,7 +55,7 @@ highscore_manager.cpp highscore_manager.hpp \ unlock_manager.cpp unlock_manager.hpp \ file_manager.cpp file_manager.hpp \ - loader.cpp loadre.hpp \ + loader.cpp loader.hpp \ race_manager.cpp race_manager.hpp \ string_utils.cpp string_utils.hpp \ track_manager.cpp track_manager.hpp \ Modified: trunk/supertuxkart/src/race_manager.hpp =================================================================== --- trunk/supertuxkart/src/race_manager.hpp 2008-04-17 04:37:49 UTC (rev 1689) +++ trunk/supertuxkart/src/race_manager.hpp 2008-04-17 05:34:45 UTC (rev 1690) @@ -129,7 +129,7 @@ int getPositionScore(int p) const { return m_score_for_position[p-1]; } double getOverallTime(int kart) const { return m_kart_status[kart].m_overall_time;} bool isEliminated(int kart) const { return m_kart_status[kart].m_is_eliminated;} - bool raceHasLaps() const { return m_race_mode!=RM_FOLLOW_LEADER;} + bool raceHasLaps() const { return true;} void eliminate(int kart) { m_kart_status[kart].m_is_eliminated=true;} void addFinishedKarts(int num) { m_num_finished_karts += num; } void PlayerFinishes() { m_num_finished_players++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cos...@us...> - 2008-04-27 07:00:25
|
Revision: 1753 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1753&view=rev Author: cosmosninja Date: 2008-04-27 00:00:21 -0700 (Sun, 27 Apr 2008) Log Message: ----------- Added lock texture to the ??? buttons. Modified Paths: -------------- trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/track_sel.cpp Added Paths: ----------- trunk/supertuxkart/data/textures/gui_lock.rgb Added: trunk/supertuxkart/data/textures/gui_lock.rgb =================================================================== (Binary files differ) Property changes on: trunk/supertuxkart/data/textures/gui_lock.rgb ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/supertuxkart/src/gui/game_mode.cpp =================================================================== --- trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-27 05:46:39 UTC (rev 1752) +++ trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-27 07:00:21 UTC (rev 1753) @@ -20,6 +20,7 @@ #include "game_mode.hpp" #include "widget_manager.hpp" #include "race_manager.hpp" +#include "material_manager.hpp" #include "menu_manager.hpp" #include "translation.hpp" #include "user_config.hpp" @@ -55,6 +56,11 @@ { widget_manager->setWgtText( WTOK_GP, "???"); widget_manager->deactivateWgt(WTOK_GP); + + const Material *m = material_manager->getMaterial("gui_lock.rgb", false); + widget_manager->setWgtColor( WTOK_GP, WGT_WHITE); + widget_manager->setWgtTexture( WTOK_GP, m->getState()->getTextureHandle() ); + widget_manager->showWgtTexture( WTOK_GP ); } else { @@ -74,6 +80,11 @@ { widget_manager->setWgtText( WTOK_FOLLOW_LEADER, "???"); widget_manager->deactivateWgt(WTOK_FOLLOW_LEADER); + + const Material *m = material_manager->getMaterial("gui_lock.rgb", false); + widget_manager->setWgtColor( WTOK_FOLLOW_LEADER, WGT_WHITE); + widget_manager->setWgtTexture( WTOK_FOLLOW_LEADER, m->getState()->getTextureHandle() ); + widget_manager->showWgtTexture( WTOK_FOLLOW_LEADER ); } else { Modified: trunk/supertuxkart/src/gui/track_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/track_sel.cpp 2008-04-27 05:46:39 UTC (rev 1752) +++ trunk/supertuxkart/src/gui/track_sel.cpp 2008-04-27 07:00:21 UTC (rev 1753) @@ -60,6 +60,11 @@ { widget_manager->setWgtText( WTOK_TRACK0 + i, "???"); widget_manager->deactivateWgt(WTOK_TRACK0 + i); + + const Material *m = material_manager->getMaterial("gui_lock.rgb", false); + widget_manager->setWgtColor( WTOK_TRACK0 + i, WGT_WHITE); + widget_manager->setWgtTexture( WTOK_TRACK0 + i, m->getState()->getTextureHandle() ); + widget_manager->showWgtTexture( WTOK_TRACK0 + i ); } if( i%2 != 0 ) widget_manager->breakLine(); else if (i + 1 == track_manager->getTrackCount() ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cos...@us...> - 2008-04-27 19:16:57
|
Revision: 1758 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1758&view=rev Author: cosmosninja Date: 2008-04-27 12:16:50 -0700 (Sun, 27 Apr 2008) Log Message: ----------- Reworked the title screen and lock buttons. Modified Paths: -------------- trunk/supertuxkart/data/textures/gui_lock.rgb trunk/supertuxkart/data/textures/st_title_screen.rgb trunk/supertuxkart/src/gui/game_mode.cpp trunk/supertuxkart/src/gui/track_sel.cpp Modified: trunk/supertuxkart/data/textures/gui_lock.rgb =================================================================== (Binary files differ) Modified: trunk/supertuxkart/data/textures/st_title_screen.rgb =================================================================== (Binary files differ) Modified: trunk/supertuxkart/src/gui/game_mode.cpp =================================================================== --- trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-27 19:16:08 UTC (rev 1757) +++ trunk/supertuxkart/src/gui/game_mode.cpp 2008-04-27 19:16:50 UTC (rev 1758) @@ -54,7 +54,7 @@ widget_manager->addWgt(WTOK_GP, 50, 7); if(unlock_manager->isLocked("grandprix")) { - widget_manager->setWgtText( WTOK_GP, "???"); + widget_manager->hideWgtText(WTOK_GP); widget_manager->deactivateWgt(WTOK_GP); const Material *m = material_manager->getMaterial("gui_lock.rgb", false); @@ -78,7 +78,7 @@ widget_manager->addWgt(WTOK_FOLLOW_LEADER, 50, 7); if(unlock_manager->isLocked("followleader")) { - widget_manager->setWgtText( WTOK_FOLLOW_LEADER, "???"); + widget_manager->hideWgtText(WTOK_FOLLOW_LEADER); widget_manager->deactivateWgt(WTOK_FOLLOW_LEADER); const Material *m = material_manager->getMaterial("gui_lock.rgb", false); Modified: trunk/supertuxkart/src/gui/track_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/track_sel.cpp 2008-04-27 19:16:08 UTC (rev 1757) +++ trunk/supertuxkart/src/gui/track_sel.cpp 2008-04-27 19:16:50 UTC (rev 1758) @@ -58,7 +58,7 @@ widget_manager->setWgtTextSize( WTOK_TRACK0 + i, WGT_FNT_SML ); if(!isAvailable) { - widget_manager->setWgtText( WTOK_TRACK0 + i, "???"); + widget_manager->hideWgtText(WTOK_TRACK0 + i); widget_manager->deactivateWgt(WTOK_TRACK0 + i); const Material *m = material_manager->getMaterial("gui_lock.rgb", false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sc...@us...> - 2008-04-27 21:48:34
|
Revision: 1759 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1759&view=rev Author: scifly Date: 2008-04-27 14:48:32 -0700 (Sun, 27 Apr 2008) Log Message: ----------- Added new challenges that lock most of the new tracks/features. Modified Paths: -------------- trunk/supertuxkart/data/fonts/AvantGarde-Demi.txf trunk/supertuxkart/data/fonts/DomesticManners.txf trunk/supertuxkart/src/Makefile.am trunk/supertuxkart/src/challenges/race_track_time.cpp trunk/supertuxkart/src/unlock_manager.cpp trunk/supertuxkart/src/world.cpp Added Paths: ----------- trunk/supertuxkart/src/challenges/city_time.cpp trunk/supertuxkart/src/challenges/city_time.hpp trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp trunk/supertuxkart/src/challenges/island_follow.cpp trunk/supertuxkart/src/challenges/island_follow.hpp trunk/supertuxkart/src/challenges/jungle_follow.cpp trunk/supertuxkart/src/challenges/jungle_follow.hpp trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp trunk/supertuxkart/src/challenges/tollway_time.cpp trunk/supertuxkart/src/challenges/tollway_time.hpp Modified: trunk/supertuxkart/data/fonts/AvantGarde-Demi.txf =================================================================== (Binary files differ) Modified: trunk/supertuxkart/data/fonts/DomesticManners.txf =================================================================== (Binary files differ) Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-04-27 19:16:50 UTC (rev 1758) +++ trunk/supertuxkart/src/Makefile.am 2008-04-27 21:48:32 UTC (rev 1759) @@ -95,8 +95,14 @@ challenges/challenge.hpp challenges/challenge.cpp \ challenges/all_tracks.cpp challenges/all_tracks.hpp \ challenges/energy_math_class.cpp challenges/energy_math_class.hpp\ - challenges/win_gotm_cup.cpp challenges/win_gotm_cup.hpp \ + challenges/penguin_playground_gp.cpp challenges/penguin_playground_gp.hpp \ challenges/race_track_time.cpp challenges/race_track_time.hpp\ + challenges/tollway_time.cpp challenges/tollway_time.hpp \ + challenges/jungle_follow.cpp challenges/jungle_follow.hpp \ + challenges/energy_shifting_sands.cpp challenges/energy_shifting_sands.hpp \ + challenges/moon_and_back_gp.cpp challenges/moon_and_back_gp.hpp \ + challenges/city_time.cpp challenges/city_time.hpp \ + challenges/island_follow.cpp challenges/island_follow.hpp \ lisp/lisp.cpp lisp/lisp.hpp \ lisp/lexer.cpp lisp/lexer.hpp \ lisp/parser.cpp lisp/parser.hpp \ Added: trunk/supertuxkart/src/challenges/city_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/city_time.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/city_time.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,53 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#include "challenges/city_time.hpp" +#include "world.hpp" +#include "race_manager.hpp" + +CityTime::CityTime() : Challenge("citytime", "Finish the City track in 5:00") +{ + setChallengeDescription("Finish 3 laps on the City track\nwith 3 AI karts\nin under 5:00 minutes."); + setFeatureDescription("New track: SnowTux Peak\nnow available"); + setFeature("snowtuxpeak"); + addDependency("junglefollow"); +} // CityTime +//----------------------------------------------------------------------------- +void CityTime::setRace() const { + race_manager->setRaceMode(RaceManager::RM_QUICK_RACE); + race_manager->setTrack("city"); + race_manager->setDifficulty(RaceManager::RD_EASY); + race_manager->setNumLaps(3); + race_manager->setNumKarts(4); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool CityTime::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="city" ) return false; // wrong track + Kart* kart=world->getPlayerKart(0); + if(kart->getFinishTime()>300) return false; // too slow + if(kart->getLap()!=3 ) return false; // wrong number of laps + if(race_manager->getNumKarts()<4) return false; //not enough AI karts + return true; +} // raceFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/city_time.hpp =================================================================== --- trunk/supertuxkart/src/challenges/city_time.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/city_time.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,37 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef CITY_TIME_H +#define CITY_TIME_H + + +#include "challenges/challenge.hpp" + +class CityTime : public Challenge +{ +public: + CityTime(); + virtual bool raceFinished(); + virtual void setRace() const; +}; // CityTime + + + + +#endif /*CITY_TIME_H*/ Added: trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/energy_shifting_sands.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,56 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "challenges/energy_shifting_sands.hpp" +#include "race_manager.hpp" +#include "world.hpp" + +EnergyShiftingSands::EnergyShiftingSands() : Challenge("energyshiftingsands","Collect the Pharaohs Treasure") +{ + setChallengeDescription("Collect at least 9 coins\non 3 laps of Shifting Sands\nin under 2:10 minutes."); + setFeatureDescription("New Grand Prix: To the Moon and Back\nnow available"); + setFeature("To the Moon and Back"); + // The energymathclass challenge must be done, otherwise GP can't be selected + addDependency("energymathclass"); + addDependency("racetracktime"); +} + +//----------------------------------------------------------------------------- +void EnergyShiftingSands::setRace() const { + race_manager->setRaceMode(RaceManager::RM_QUICK_RACE); + race_manager->setTrack("sandtrack"); + race_manager->setDifficulty(RaceManager::RD_EASY); + race_manager->setNumLaps(3); + race_manager->setNumKarts(1); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool EnergyShiftingSands::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="sandtrack") return false; // wrong track + Kart* kart=world->getPlayerKart(0); + if(kart->getFinishTime()>140) return false; // too slow + if(kart->getLap()!=3 ) return false; // wrong number of laps + if(kart->getNumHerring()<9 ) return false; // not enough herrings + return true; + +} // raceFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp =================================================================== --- trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/energy_shifting_sands.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,36 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef ENERGY_SHIFTING_SANDS_H +#define ENERGY_SHIFTING_SANDS_H + + +#include "challenges/challenge.hpp" + +class EnergyShiftingSands : public Challenge +{ +public: + EnergyShiftingSands(); + virtual bool raceFinished(); + virtual void setRace() const; + +}; + + +#endif /*ENERGY_SHIFTING_SANDS_H*/ Added: trunk/supertuxkart/src/challenges/island_follow.cpp =================================================================== --- trunk/supertuxkart/src/challenges/island_follow.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/island_follow.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,60 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#include "challenges/island_follow.hpp" +#include "world.hpp" +#include "race_manager.hpp" + +IslandFollow::IslandFollow() : Challenge("islandfollow", "Win Follow the Leader on a Desert Island") +{ + setChallengeDescription("Win a Follow the Leader race\nwith 3 AI karts\non a Desert Island."); + setFeatureDescription("New Grand Prix: At World's End\nnow available"); + setFeature("At world's end"); + addDependency("moonandbackgp"); + addDependancy("tollwaytime"); + addDependancy("citytime"); +} // IslandFollow + +//----------------------------------------------------------------------------- +void IslandFollow::setRace() const { + race_manager->setRaceMode(RaceManager::RM_FOLLOW_LEADER); + race_manager->setTrack("islandtrack"); + race_manager->setDifficulty(RaceManager::RD_EASY); + race_manager->setNumLaps(3); + race_manager->setNumKarts(4); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool IslandFollow::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="islandtrack" ) return false; // wrong track + if(race_manager->getNumKarts()<4) return false; //not enough AI karts + //Check if player came first + for(int i=0; i<(int)race_manager->getNumKarts(); i++) + { + const Kart* k=world->getKart(i); + if(k->isPlayerKart()) return k->getPosition()==2; + } + return false; + +} // raceFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/island_follow.hpp =================================================================== --- trunk/supertuxkart/src/challenges/island_follow.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/island_follow.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,34 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef ISLAND_FOLLOW_H +#define ISLAND_FOLLOW_H + +#include "challenges/challenge.hpp" + +class IslandFollow : public Challenge +{ +public: + IslandFollow(); + virtual bool raceFinished(); + virtual void setRace() const; +}; // IslandFollow + + +#endif /*ISLAND_FOLLOW_H*/ Added: trunk/supertuxkart/src/challenges/jungle_follow.cpp =================================================================== --- trunk/supertuxkart/src/challenges/jungle_follow.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/jungle_follow.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,59 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#include "challenges/jungle_follow.hpp" +#include "world.hpp" +#include "race_manager.hpp" + +JungleFollow::JungleFollow() : Challenge("junglefollow", "Win Follow the Leader in the Jungle") +{ + setChallengeDescription("Win a Follow the Leader race\nwith 3 AI karts\nin the Amazonian Jungle."); + setFeatureDescription("New track: City\nnow available"); + setFeature("city"); + addDependency("penguinplaygroundgp"); + addDependency("racetracktime"); +} // JungleFollow + +//----------------------------------------------------------------------------- +void JungleFollow::setRace() const { + race_manager->setRaceMode(RaceManager::RM_FOLLOW_LEADER); + race_manager->setTrack("jungle"); + race_manager->setDifficulty(RaceManager::RD_EASY); + race_manager->setNumLaps(3); + race_manager->setNumKarts(4); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool JungleFollow::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="jungle" ) return false; // wrong track + if(race_manager->getNumKarts()<4) return false; //not enough AI karts + //Check if player came first + for(int i=0; i<(int)race_manager->getNumKarts(); i++) + { + const Kart* k=world->getKart(i); + if(k->isPlayerKart()) return k->getPosition()==2; + } + return false; + +} // raceFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/jungle_follow.hpp =================================================================== --- trunk/supertuxkart/src/challenges/jungle_follow.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/jungle_follow.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,33 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef JUNGLE_FOLLOW_H +#define JUNGLE_FOLLOW_H + +#include "challenges/challenge.hpp" + +class JungleFollow : public Challenge +{ +public: + JungleFollow(); + virtual bool raceFinished(); + virtual void setRace() const; +}; // JungleFollow + +#endif /*JUNGLE_FOLLOW_H*/ Added: trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp =================================================================== --- trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/moon_and_back_gp.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,63 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "challenges/moon_and_back_gp.hpp" +#include "race_manager.hpp" +#include "world.hpp" + +MoonAndBackGP::MoonAndBackGP() : Challenge("moonandbackgp","Finish To the Moon and Back Grand Prix") +{ + setChallengeDescription("Finish the To the Moon and Back\nGrand Prix with 3 'Driver' Level AI karts\nin the top 3."); + setFeatureDescription("New Grand Prix: To the Moon and Back\nnow available"); + setFeature("Snag Drive"); //gp3 + // The energyshiftingsands challenge must be done, otherwise gp2 can't be selected + // Thejunglefollow challenge must be done, to get city for gp3 + addDependency("energyshiftingsands"); + addDependency("junglefollow"); +} + +//----------------------------------------------------------------------------- +void MoonAndBackGP::setRace() const { + race_manager->setRaceMode(RaceManager::RM_GRAND_PRIX); + CupData cup("gp2.cup"); + race_manager->setGrandPrix(cup); + race_manager->setDifficulty(RaceManager::RD_HARD); + race_manager->setNumKarts(4); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool MoonAndBackGP::grandPrixFinished() +{ + //const CupData CUP = race_manager->getGrandPrix(); + if (race_manager->getRaceMode() != RaceManager::RM_GRAND_PRIX || + race_manager->getGrandPrix()->getName() != "To the Moon and Back" || + race_manager->getDifficulty()!= RaceManager::RD_HARD || + race_manager->getNumKarts() < 4 || + race_manager->getNumPlayers() > 1) return false; + // Check if the player was in top 3: + for(int i=0; i<(int)race_manager->getNumKarts(); i++) + { + const Kart* k=world->getKart(i); + if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()<4; + } + return false; + +} // grandPrixFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp =================================================================== --- trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/moon_and_back_gp.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,36 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef MOON_AND_BACK_GP_H +#define MOON_AND_BACK_GP_H + + +#include "challenges/challenge.hpp" + +class MoonAndBackGP : public Challenge +{ +public: + MoonAndBackGP(); + virtual bool grandPrixFinished(); + virtual void setRace() const; + +}; + + +#endif /*MOON_AND_BACK_GP_H*/ Added: trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp =================================================================== --- trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/penguin_playground_gp.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,60 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#include "challenges/penguin_playground_gp.hpp" +#include "race_manager.hpp" +#include "world.hpp" + +PenguinPlaygroundGP::PenguinPlaygroundGP() : Challenge("penguinplaygroundgp","Finish Penguin Playground Grand Prix") +{ + setChallengeDescription("Finish the Penguin Playground Grand\nPrix with 3 'Driver' Level AI karts\nin the top 3."); + setFeatureDescription("New game mode\n'Follow Leader'\nnow available"); + setFeature("followleader"); + // The energymathclass challenge must be done, otherwise GP can't be selected + addDependency("energymathclass"); +} + +//----------------------------------------------------------------------------- +void PenguinPlaygroundGP::setRace() const { + race_manager->setRaceMode(RaceManager::RM_GRAND_PRIX); + CupData cup("gp1.cup"); + race_manager->setGrandPrix(cup); + race_manager->setDifficulty(RaceManager::RD_HARD); + race_manager->setNumKarts(4); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool PenguinPlaygroundGP::grandPrixFinished() +{ + if (race_manager->getRaceMode() != RaceManager::RM_GRAND_PRIX || + race_manager->getGrandPrix()->getName() != "Penguin Playground" || + race_manager->getDifficulty()!= RaceManager::RD_HARD || + race_manager->getNumKarts() < 4 || + race_manager->getNumPlayers() > 1) return false; + // Check if the player was in top 3: + for(int i=0; i<(int)race_manager->getNumKarts(); i++) + { + const Kart* k=world->getKart(i); + if(k->isPlayerKart() && !k->isEliminated()) return k->getPosition()<4; + } + return false; + +} // grandPrixFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp =================================================================== --- trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/penguin_playground_gp.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,34 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef PENGUIN_PLAYGROUND_GP_H +#define PENGUIN_PLAYGROUND_GP_H + +#include "challenges/challenge.hpp" + +class PenguinPlaygroundGP : public Challenge +{ +public: + PenguinPlaygroundGP(); + virtual bool grandPrixFinished(); + virtual void setRace() const; + +}; + +#endif /*PENGUIN_PLAYGROUND_GP_H*/ Modified: trunk/supertuxkart/src/challenges/race_track_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/race_track_time.cpp 2008-04-27 19:16:50 UTC (rev 1758) +++ trunk/supertuxkart/src/challenges/race_track_time.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -25,8 +25,8 @@ RaceTrackTime::RaceTrackTime() : Challenge("racetracktime", "Finish Race track in 1:15") { setChallengeDescription("Finish 3 laps in the Race track\nwith 3 AI karts\nin under 1:15 minutes."); - setFeatureDescription("New game mode\n'Follow Leader'\nnow available"); - setFeature("followleader"); + setFeatureDescription("New track: Amazonian Jungle\nnow available"); + setFeature("jungle"); } // RaceTrackTime //----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/tollway_time.cpp =================================================================== --- trunk/supertuxkart/src/challenges/tollway_time.cpp (rev 0) +++ trunk/supertuxkart/src/challenges/tollway_time.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,53 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be ruseful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#include "challenges/tollway_time.hpp" +#include "world.hpp" +#include "race_manager.hpp" + +TollwayTime::TollwayTime() : Challenge("tollwaytime", "Finish Tux Tollway track in 3:00") +{ + setChallengeDescription("Finish 3 laps on the Tux Tollway track\nwith 3 AI karts\nin under 3:00 minutes."); + setFeatureDescription("New track: Canyon\nnow available"); + setFeature("canyon"); +} // TollwayTime + +//----------------------------------------------------------------------------- +void TollwayTime::setRace() const { + race_manager->setRaceMode(RaceManager::RM_QUICK_RACE); + race_manager->setTrack("tuxtrack"); + race_manager->setDifficulty(RaceManager::RD_EASY); + race_manager->setNumLaps(3); + race_manager->setNumKarts(4); + race_manager->setNumPlayers(1); +} // setRace + +//----------------------------------------------------------------------------- +bool TollwayTime::raceFinished() +{ + std::string track_name = world->getTrack()->getIdent(); + if(track_name!="tuxtrack" ) return false; // wrong track + Kart* kart=world->getPlayerKart(0); + if(kart->getFinishTime()>180) return false; // too slow + if(kart->getLap()!=3 ) return false; // wrong number of laps + if(race_manager->getNumKarts()<4) return false; //not enough AI karts + return true; +} // raceFinished +//----------------------------------------------------------------------------- Added: trunk/supertuxkart/src/challenges/tollway_time.hpp =================================================================== --- trunk/supertuxkart/src/challenges/tollway_time.hpp (rev 0) +++ trunk/supertuxkart/src/challenges/tollway_time.hpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -0,0 +1,36 @@ +// $Id$ +// +// SuperTuxKart - a fun racing game with go-kart +// Copyright (C) 2008 Joerg Henrichs +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +#ifndef TOLLWAY_TIME_H +#define TOLLWAY_TIME_H +#include <string> +#include <vector> + +#include "challenges/challenge.hpp" + +class TollwayTime : public Challenge +{ +public: + TollwayTime(); + virtual bool raceFinished(); + virtual void setRace() const; +}; // TollwayTime + + +#endif /*TOLLWAY_TIME_H*/ Modified: trunk/supertuxkart/src/unlock_manager.cpp =================================================================== --- trunk/supertuxkart/src/unlock_manager.cpp 2008-04-27 19:16:50 UTC (rev 1758) +++ trunk/supertuxkart/src/unlock_manager.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -19,10 +19,16 @@ #include "unlock_manager.hpp" -#include "challenges/all_tracks.hpp" +//#include "challenges/all_tracks.hpp" #include "challenges/energy_math_class.hpp" -#include "challenges/win_gotm_cup.hpp" +#include "challenges/penguin_playground_gp.hpp" #include "challenges/race_track_time.hpp" +#include "challenges/tollway_time.hpp" +#include "challenges/jungle_follow.hpp" +#include "challenges/energy_shifting_sands.hpp" +#include "challenges/moon_and_back_gp.hpp" +#include "challenges/city_time.hpp"# +#include "challenges/island_follow.hpp" #include "user_config.hpp" UnlockManager* unlock_manager=0; @@ -37,10 +43,16 @@ // Add all challenges: Challenge *c; - c=new AllTracks(); m_all_challenges[c->getId()]=c; + //c=new AllTracks(); m_all_challenges[c->getId()]=c; c=new EnergyMathClass(); m_all_challenges[c->getId()]=c; - c=new WinGOTMCup(); m_all_challenges[c->getId()]=c; + c=new PenguinPlaygroundGP(); m_all_challenges[c->getId()]=c; c=new RaceTrackTime(); m_all_challenges[c->getId()]=c; + c=new TollwayTime(); m_all_challenges[c->getId()]=c; + c=new JungleFollow(); m_all_challenges[c->getId()]=c; + c=new EnergyShiftingSands(); m_all_challenges[c->getId()]=c; + c=new MoonAndBackGP(); m_all_challenges[c->getId()]=c; + c=new CityTime(); m_all_challenges[c->getId()]=c; + c=new IslandFollow(); m_all_challenges[c->getId()]=c; computeActive(); } // UnlockManager Modified: trunk/supertuxkart/src/world.cpp =================================================================== --- trunk/supertuxkart/src/world.cpp 2008-04-27 19:16:50 UTC (rev 1758) +++ trunk/supertuxkart/src/world.cpp 2008-04-27 21:48:32 UTC (rev 1759) @@ -255,6 +255,7 @@ if(race_manager->getRaceMode()==RaceManager::RM_FOLLOW_LEADER) { menu_manager->pushMenu(MENUID_LEADERRESULT); + unlock_manager->raceFinished(); return; } // Add times to highscore list. First compute the order of karts, @@ -594,6 +595,7 @@ } // if !raceIsFinished } // for i } + if(m_phase==FINISH_PHASE) unlock_manager->raceFinished(); } // updateRaceStatus This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-05-08 01:48:59
|
Revision: 1828 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1828&view=rev Author: hikerstk Date: 2008-05-07 18:48:55 -0700 (Wed, 07 May 2008) Log Message: ----------- 1) Enabled translations by default. 2) Switched fonts so that the new DomesticMannerLatin1 font is used both for menu and race gui. In the menu the new PrintBold function is used to make the font better visible. Modified Paths: -------------- trunk/supertuxkart/configure.ac trunk/supertuxkart/src/gui/font.cpp trunk/supertuxkart/src/widget.cpp Modified: trunk/supertuxkart/configure.ac =================================================================== --- trunk/supertuxkart/configure.ac 2008-05-08 01:48:51 UTC (rev 1827) +++ trunk/supertuxkart/configure.ac 2008-05-08 01:48:55 UTC (rev 1828) @@ -20,7 +20,7 @@ dnl scripts set them to "-g -O2". dnl ===================================================== CFLAGS="$CFLAGS -Wall -Wstrict-prototypes -Wmissing-prototypes" -CXXFLAGS="$CXXFLAGS -Wall" +CXXFLAGS="$CXXFLAGS -Wall -DHAS_GETTEXT" dnl =================== dnl Check for compilers Modified: trunk/supertuxkart/src/gui/font.cpp =================================================================== --- trunk/supertuxkart/src/gui/font.cpp 2008-05-08 01:48:51 UTC (rev 1827) +++ trunk/supertuxkart/src/gui/font.cpp 2008-05-08 01:48:55 UTC (rev 1828) @@ -26,8 +26,8 @@ int init_fonts() { - font_gui = new Font("AvantGarde-Demi.txf"); - font_race = new Font("DomesticManners.txf"); + font_gui = new Font("DomesticMannersLatin1.txf"); + font_race = new Font("DomesticMannersLatin1.txf"); return ( font_gui && font_race ); } // init_fonts Modified: trunk/supertuxkart/src/widget.cpp =================================================================== --- trunk/supertuxkart/src/widget.cpp 2008-05-08 01:48:51 UTC (rev 1827) +++ trunk/supertuxkart/src/widget.cpp 2008-05-08 01:48:55 UTC (rev 1828) @@ -788,7 +788,8 @@ if( draw ) { glScalef(m_text_scale, m_text_scale, 1.0f); - m_font->Print(m_text.substr(line_start, line_end - line_start).c_str(), m_text_size, + m_font->PrintBold(m_text.substr(line_start, line_end - line_start).c_str(), + m_text_size, x_pos, y_pos - m_text_size / 2, m_text_color, 1.0f, 1.0f); glScalef(1.0f/m_text_scale, 1.0f/m_text_scale, 1.0f); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sc...@us...> - 2008-05-08 21:08:55
|
Revision: 1833 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1833&view=rev Author: scifly Date: 2008-05-08 14:08:45 -0700 (Thu, 08 May 2008) Log Message: ----------- Updated Credits and fixed some typos. Updated changelog for upcoming release. Modified Paths: -------------- trunk/supertuxkart/ChangeLog trunk/supertuxkart/data/CREDITS Modified: trunk/supertuxkart/ChangeLog =================================================================== --- trunk/supertuxkart/ChangeLog 2008-05-08 19:14:10 UTC (rev 1832) +++ trunk/supertuxkart/ChangeLog 2008-05-08 21:08:45 UTC (rev 1833) @@ -1,3 +1,18 @@ +SuperTuxKart 0.4.1 (May 2009) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Five new tracks: Fort Magma, SnowTux Peak, Amazonian Journey, City and Canyon +* Complete Challenges to unlock game modes, new tracks and a skidding preview +* New Follow the Leader game mode +* New Grand Prix +* Improved User Interface +* Improved game pad/joystick handling +* German, French and Dutch translations +* Additional music +* Many Bugfixes including: + a memory leak fix (Charlie Head) + an AI crash fix (Chris Morris) + + SuperTuxKart 0.4 (February 2008) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * New physics handling using the bullet physics engine Modified: trunk/supertuxkart/data/CREDITS =================================================================== --- trunk/supertuxkart/data/CREDITS 2008-05-08 19:14:10 UTC (rev 1832) +++ trunk/supertuxkart/data/CREDITS 2008-05-08 21:08:45 UTC (rev 1833) @@ -14,9 +14,6 @@ Programming ----------- -Charlie Head -- Bugfix: widget manager's selection memory leak - Canarix - User interface @@ -26,6 +23,9 @@ Maik Semder (Ikework) - Bug fixes +Marianne Gagnon (Auria) +- Bug fixes + Patrick Ammann - OpenAL support - Bug fixes @@ -50,9 +50,10 @@ Marianne Gagnon (Auria) - 'SnowTux peak' track -- 'Shifting sands', 'Around the Lighthouse and 'On the beach' track improvements +- 'Shifting sands', 'Around the Lighthouse' and 'On the beach' track improvements - Wilber kart -- 'Amazing journ:ey' track +- 'Amazonian Journey' track +- 'Fort Magma' track Frederico de Oliveira Linhares - Hexley the platypus kart This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-05-10 14:49:04
|
Revision: 1844 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1844&view=rev Author: hikerstk Date: 2008-05-10 07:48:57 -0700 (Sat, 10 May 2008) Log Message: ----------- 1) Enhanced lisp scanner and parser to handle translations, i.e. strings marked as _("translate me") 2) Added _() for all names and descriptions for the tracks and GPs 3) Improved update_pot.sh to create the entries for all track and GP files. 4) Updated supertuxkart.pot to include all GPs and tracks. Modified Paths: -------------- trunk/supertuxkart/data/all.cup trunk/supertuxkart/data/gp1.cup trunk/supertuxkart/data/gp2.cup trunk/supertuxkart/data/gp3.cup trunk/supertuxkart/data/gp4.cup trunk/supertuxkart/data/po/supertuxkart.pot trunk/supertuxkart/data/po/update_pot.sh trunk/supertuxkart/data/tracks/beach/beach.track trunk/supertuxkart/data/tracks/canyon/canyon.track trunk/supertuxkart/data/tracks/city/city.track trunk/supertuxkart/data/tracks/fortmagma/fortmagma.track trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track trunk/supertuxkart/data/tracks/jungle/jungle.track trunk/supertuxkart/data/tracks/lighthouse/lighthouse.track trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track trunk/supertuxkart/data/tracks/olivermath/olivermath.track trunk/supertuxkart/data/tracks/race/race.track trunk/supertuxkart/data/tracks/sandtrack/sandtrack.track trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.track trunk/supertuxkart/data/tracks/startrack/startrack.track trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track trunk/supertuxkart/data/tracks/volcano/volcano.track trunk/supertuxkart/src/lisp/lexer.cpp trunk/supertuxkart/src/lisp/lexer.hpp trunk/supertuxkart/src/lisp/parser.cpp Modified: trunk/supertuxkart/data/all.cup =================================================================== --- trunk/supertuxkart/data/all.cup 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/all.cup 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (supertuxkart-cup - (name "All tracks") - (description "All 13 tracks included in SuperTuxKart") + (name _("All tracks")) + (description _("All 13 tracks included in SuperTuxKart")) (tracks "beach" "startrack" "lighthouse" "jungle" "volcano" "islandtrack" "sandtrack" "fortmagma" "snowtuxpeak" "littlevolcano" "olivermath" "race" "city" "canyon" "subseatrack" "tuxtrack") (laps 2 3 4 3 3 2 3 3 3 2 4 5 2 2 3 2) ) Modified: trunk/supertuxkart/data/gp1.cup =================================================================== --- trunk/supertuxkart/data/gp1.cup 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/gp1.cup 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (supertuxkart-cup - (name "Penguin Playground") - (description "First grand prix, easy to get started") + (name _("Penguin Playground")) + (description _("First grand prix, easy to get started")) (tracks "tuxtrack" "race" "olivermath") (laps 3 5 4) ) Modified: trunk/supertuxkart/data/gp2.cup =================================================================== --- trunk/supertuxkart/data/gp2.cup 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/gp2.cup 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (supertuxkart-cup - (name "To the Moon and Back") - (description "Second grand prix") + (name _("To the Moon and Back")) + (description _("Second grand prix")) (tracks "beach" "startrack" "jungle" "lighthouse") (laps 2 3 2 4) ) Modified: trunk/supertuxkart/data/gp3.cup =================================================================== --- trunk/supertuxkart/data/gp3.cup 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/gp3.cup 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (supertuxkart-cup - (name "Snag Drive") - (description "Third grand prix") + (name _("Snag Drive")) + (description _("Third grand prix")) (tracks "islandtrack" "sandtrack" "city" "littlevolcano") (laps 2 3 2 2) ) Modified: trunk/supertuxkart/data/gp4.cup =================================================================== --- trunk/supertuxkart/data/gp4.cup 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/gp4.cup 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (supertuxkart-cup - (name "At world's end") - (description "Last grand prix, longer and harder") + (name _("At world's end")) + (description _("Last grand prix, longer and harder")) (tracks "fortmagma" "canyon" "subseatrack" "volcano" "snowtuxpeak") (laps 3 2 3 3 3) ) Modified: trunk/supertuxkart/data/po/supertuxkart.pot =================================================================== --- trunk/supertuxkart/data/po/supertuxkart.pot 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/po/supertuxkart.pot 2008-05-10 14:48:57 UTC (rev 1844) @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-05-08 14:44-0400\n" +"POT-Creation-Date: 2008-05-11 00:46+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" @@ -28,14 +28,10 @@ "been eliminated." msgstr "" -#: src/gui/race_options.cpp:104 -msgid "3" +#: src/main.cpp:132 +msgid "--keyboard-debug" msgstr "" -#: src/gui/race_options.cpp:86 -msgid "4" -msgstr "" - #: src/gui/player_controls.cpp:64 msgid "Accelerate" msgstr "" @@ -44,6 +40,18 @@ msgid "Active Challenges" msgstr "" +#: data/all.cup:5 +msgid "All 13 tracks included in SuperTuxKart" +msgstr "" + +#: data/all.cup:4 +msgid "All tracks" +msgstr "" + +#: data/tracks/jungle/jungle.track:4 +msgid "Amazonian Journey" +msgstr "" + #: src/gui/help_page_two.cpp:106 msgid "Anvil - slows down greatly the kart in the first position" msgstr "" @@ -57,12 +65,20 @@ msgid "Apply %dx%d" msgstr "" +#: data/tracks/lighthouse/lighthouse.track:4 +msgid "Around the Lighthouse" +msgstr "" + #: src/gui/help_page_one.cpp:112 msgid "" "At high speeds wheelies drive you faster, but you can't steer. If you\n" "get stuck or fall too far, use the rescue button to get back on track." msgstr "" +#: data/gp4.cup:4 +msgid "At world's end" +msgstr "" + #: src/gui/help_page_one.cpp:78 msgid "Avoid bananas" msgstr "" @@ -76,6 +92,10 @@ msgid "Brake" msgstr "" +#: data/tracks/canyon/canyon.track:4 +msgid "Canyon" +msgstr "" + #: src/gui/main_menu.cpp:52 msgid "Challenges" msgstr "" @@ -105,6 +125,10 @@ msgid "Choose your controls, %s" msgstr "" +#: data/tracks/city/city.track:4 +msgid "City" +msgstr "" + #: src/gui/config_display.cpp:97 msgid "Clear from Blacklist" msgstr "" @@ -152,8 +176,8 @@ msgid "Confirm Resolution Within 5 Seconds" msgstr "" -#: src/gui/feature_unlocked.cpp:47 src/gui/grand_prix_ending.cpp:144 -#: src/gui/leader_result.cpp:148 src/gui/race_results_gui.cpp:135 +#: src/gui/grand_prix_ending.cpp:144 src/gui/leader_result.cpp:148 +#: src/gui/feature_unlocked.cpp:47 src/gui/race_results_gui.cpp:135 msgid "Continue" msgstr "" @@ -161,6 +185,50 @@ msgid "Continue Grand Prix" msgstr "" +#: data/tracks/littlevolcano/littlevolcano.track:5 +#: data/tracks/race/race.track:5 data/tracks/startrack/startrack.track:6 +#: data/tracks/subseatrack/subseatrack.track:5 +#: data/tracks/volcano/volcano.track:5 +msgid "Created by Ingo Ruhnke" +msgstr "" + +#: data/tracks/beach/beach.track:5 data/tracks/lighthouse/lighthouse.track:5 +msgid "" +"Created by Ingo Ruhnke,\n" +"modified by M. Gagnon" +msgstr "" + +#: data/tracks/islandtrack/islandtrack.track:5 +msgid "Created by Johannes Sjolund" +msgstr "" + +#: data/tracks/olivermath/olivermath.track:5 +#: data/tracks/tuxtrack/tuxtrack.track:5 +msgid "Created by Oliver & Steve Baker" +msgstr "" + +#: data/tracks/fortmagma/fortmagma.track:5 +msgid "" +"Created by Oliver & Steve Baker\n" +"modified by Marianne Gagnon" +msgstr "" + +#: data/tracks/snowtuxpeak/snowtuxpeak.track:5 +msgid "" +"Created by Oliver & Steve Baker,\n" +" modified by M. Gagnon" +msgstr "" + +#: data/tracks/sandtrack/sandtrack.track:5 +msgid "" +"Created by Oliver & Steve Baker,\n" +"modified by M. Gagnon" +msgstr "" + +#: data/tracks/canyon/canyon.track:5 data/tracks/city/city.track:5 +msgid "Created by Thomas Oppl" +msgstr "" + #: src/gui/main_menu.cpp:63 msgid "Credits" msgstr "" @@ -186,7 +254,7 @@ msgid "Display Settings" msgstr "" -#: src/gui/race_options.cpp:151 src/gui/race_options.cpp:166 +#: src/gui/race_options.cpp:151 src/gui/race_options.cpp:165 msgid "Driver" msgstr "" @@ -231,7 +299,7 @@ msgid "Finish the City track in 5:20" msgstr "" -#: src/gui/race_gui.cpp:768 +#: src/gui/race_gui.cpp:784 #, c-format msgid "Finished" msgstr "" @@ -240,6 +308,10 @@ msgid "Fire" msgstr "" +#: data/gp1.cup:5 +msgid "First grand prix, easy to get started" +msgstr "" + #: src/gui/game_mode.cpp:73 msgid "Follow the Leader" msgstr "" @@ -258,6 +330,10 @@ msgid "Force your rivals bite *your* dust!" msgstr "" +#: data/tracks/fortmagma/fortmagma.track:4 +msgid "Fort Magma" +msgstr "" + #: src/gui/num_players.cpp:40 msgid "Four Players" msgstr "" @@ -271,12 +347,12 @@ msgid "Fuzzy blob/Spark - very slow, but bounces from walls" msgstr "" -#: src/gui/challenges_menu.cpp:51 src/gui/credits_menu.cpp:76 -#: src/gui/help_page_one.cpp:148 src/gui/help_page_two.cpp:116 +#: src/gui/credits_menu.cpp:76 src/gui/help_page_two.cpp:116 +#: src/gui/help_page_one.cpp:148 src/gui/challenges_menu.cpp:51 msgid "Go back to the main menu" msgstr "" -#: src/gui/race_gui.cpp:916 +#: src/gui/race_gui.cpp:932 msgid "Go!" msgstr "" @@ -317,10 +393,14 @@ msgid "Jump" msgstr "" -#: src/gui/race_gui.cpp:773 +#: src/gui/race_gui.cpp:789 msgid "Lap" msgstr "" +#: data/gp4.cup:5 +msgid "Last grand prix, longer and harder" +msgstr "" + #: src/gui/race_gui.cpp:408 msgid "Leader" msgstr "" @@ -334,6 +414,10 @@ msgid "Less" msgstr "" +#: data/tracks/littlevolcano/littlevolcano.track:4 +msgid "Little Volcano" +msgstr "" + #: src/gui/start_race_feedback.cpp:35 msgid "Loading race..." msgstr "" @@ -404,13 +488,6 @@ "now available" msgstr "" -#: src/challenges/win_gotm_cup.cpp:30 -msgid "" -"New track\n" -"'Amazonian Journey'\n" -"available" -msgstr "" - #: src/challenges/race_track_time.cpp:29 msgid "" "New track: Amazonian Journey\n" @@ -453,7 +530,7 @@ msgid "No track selected" msgstr "" -#: src/gui/race_options.cpp:171 +#: src/gui/race_options.cpp:170 msgid "Novice" msgstr "" @@ -469,7 +546,15 @@ msgid "Old config file found, check your key bindings!" msgstr "" -#: src/gui/main_menu.cpp:55 src/gui/options.cpp:40 src/gui/race_menu.cpp:50 +#: data/tracks/olivermath/olivermath.track:4 +msgid "Oliver's Math Class" +msgstr "" + +#: data/tracks/beach/beach.track:4 +msgid "On the Beach" +msgstr "" + +#: src/gui/options.cpp:40 src/gui/main_menu.cpp:55 src/gui/race_menu.cpp:50 msgid "Options" msgstr "" @@ -481,11 +566,15 @@ msgid "Paused" msgstr "" -#: src/gui/race_gui.cpp:942 +#: src/gui/race_gui.cpp:958 msgid "Penalty time!!" msgstr "" -#: src/gui/player_controls.cpp:246 +#: data/gp1.cup:4 +msgid "Penguin Playground" +msgstr "" + +#: src/gui/player_controls.cpp:251 msgid "Player " msgstr "" @@ -522,15 +611,15 @@ msgid "Press <ESC> to Cancel" msgstr "" -#: src/gui/config_controls.cpp:52 src/gui/config_display.cpp:101 -#: src/gui/config_sound.cpp:63 src/gui/game_mode.cpp:78 -#: src/gui/grand_prix_select.cpp:87 src/gui/num_players.cpp:45 -#: src/gui/options.cpp:57 src/gui/player_controls.cpp:107 -#: src/gui/race_options.cpp:121 +#: src/gui/options.cpp:57 src/gui/player_controls.cpp:112 +#: src/gui/race_options.cpp:121 src/gui/config_display.cpp:101 +#: src/gui/game_mode.cpp:78 src/gui/config_sound.cpp:63 +#: src/gui/config_controls.cpp:52 src/gui/grand_prix_select.cpp:87 +#: src/gui/num_players.cpp:45 msgid "Press <ESC> to go back" msgstr "" -#: src/gui/player_controls.cpp:151 +#: src/gui/player_controls.cpp:156 msgid "Press key" msgstr "" @@ -546,10 +635,14 @@ msgid "Quit" msgstr "" -#: src/gui/race_gui.cpp:714 +#: src/gui/race_gui.cpp:730 msgid "REV" msgstr "" +#: data/tracks/race/race.track:4 +msgid "Race Track" +msgstr "" + #: src/gui/race_results_gui.cpp:148 msgid "Race in this track again" msgstr "" @@ -559,11 +652,11 @@ msgstr "" #: src/gui/race_options.cpp:69 src/gui/race_options.cpp:146 -#: src/gui/race_options.cpp:160 +#: src/gui/race_options.cpp:159 msgid "Racer" msgstr "" -#: src/gui/race_gui.cpp:898 +#: src/gui/race_gui.cpp:914 msgid "Ready!" msgstr "" @@ -587,7 +680,11 @@ msgid "Right" msgstr "" -#: src/gui/race_gui.cpp:907 +#: data/gp2.cup:5 +msgid "Second grand prix" +msgstr "" + +#: src/gui/race_gui.cpp:923 msgid "Set!" msgstr "" @@ -595,6 +692,10 @@ msgid "Setup New Race" msgstr "" +#: data/tracks/sandtrack/sandtrack.track:4 +msgid "Shifting Sands" +msgstr "" + #: src/gui/main_menu.cpp:46 msgid "Single Player" msgstr "" @@ -603,6 +704,14 @@ msgid "Skidding Preview" msgstr "" +#: data/gp3.cup:4 +msgid "Snag Drive" +msgstr "" + +#: data/tracks/snowtuxpeak/snowtuxpeak.track:4 +msgid "SnowTux Peak" +msgstr "" + #: src/gui/options.cpp:52 msgid "Sound" msgstr "" @@ -611,15 +720,31 @@ msgid "Sound Settings" msgstr "" +#: data/tracks/startrack/startrack.track:4 +msgid "Star Track" +msgstr "" + #: src/gui/race_options.cpp:118 msgid "Start race" msgstr "" +#: data/tracks/subseatrack/subseatrack.track:4 +msgid "Sub Sea" +msgstr "" + +#: data/tracks/islandtrack/islandtrack.track:4 +msgid "The Island" +msgstr "" + #: src/gui/grand_prix_ending.cpp:107 src/gui/leader_result.cpp:109 #, c-format msgid "The winner is %s!" msgstr "" +#: data/gp3.cup:5 +msgid "Third grand prix" +msgstr "" + #: src/gui/num_players.cpp:39 msgid "Three Players" msgstr "" @@ -632,6 +757,10 @@ msgid "To help you win, there are certain collectables you can grab:" msgstr "" +#: data/gp2.cup:4 +msgid "To the Moon and Back" +msgstr "" + #: src/gui/config_sound.cpp:45 src/gui/config_sound.cpp:90 msgid "Turn off music" msgstr "" @@ -648,10 +777,18 @@ msgid "Turn on sound effects" msgstr "" +#: data/tracks/tuxtrack/tuxtrack.track:4 +msgid "Tux Tollway" +msgstr "" + #: src/gui/num_players.cpp:38 msgid "Two Players" msgstr "" +#: data/tracks/volcano/volcano.track:4 +msgid "Volcano" +msgstr "" + #: src/player_kart.cpp:264 msgid "WRONG WAY!" msgstr "" @@ -660,10 +797,6 @@ msgid "Wheelie" msgstr "" -#: src/challenges/win_gotm_cup.cpp:27 -msgid "Win GOTM Cup" -msgstr "" - #: src/challenges/penguin_playground_gp.cpp:25 msgid "" "Win Penguin Playground Grand\n" @@ -715,14 +848,6 @@ "Grand Prix" msgstr "" -#: src/challenges/win_gotm_cup.cpp:29 -msgid "" -"Win the GOTM Cup\n" -"on level 'racer'\n" -"with at least\n" -"three computer opponents." -msgstr "" - #: src/challenges/moon_and_back_gp.cpp:27 msgid "" "Win the To the Moon and Back\n" @@ -752,6 +877,10 @@ msgid "Zipper - speed boost" msgstr "" +#: data/tracks/jungle/jungle.track:5 +msgid "by M. Gagnon" +msgstr "" + #: src/user_config.cpp:836 #, c-format msgid "joy %d axis %d %c" Modified: trunk/supertuxkart/data/po/update_pot.sh =================================================================== --- trunk/supertuxkart/data/po/update_pot.sh 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/po/update_pot.sh 2008-05-10 14:48:57 UTC (rev 1844) @@ -3,14 +3,20 @@ # ./data/po/update_pot.sh CPP_FILE_LIST=`find ./src -name '*.cpp' -print` +PERL_FILE_LIST="./data/tracks/*/*.track ./data/*.cup" echo "--------------------" -echo " Files :" +echo " Source Files :" echo "--------------------" echo $CPP_FILE_LIST +echo "--------------------" +echo " Data Files :" +echo "--------------------" +echo $PERL_FILE_LIST echo "---------------------------" echo " Generating .pot file..." -xgettext -d supertuxkart -s --keyword=_ -p ./data/po -o supertuxkart.pot ./src/*.cpp ./src/*/*.cpp +xgettext -d supertuxkart -s --keyword=_ -p ./data/po -o supertuxkart.pot $CPP_FILE_LIST +xgettext -j -L perl -d supertuxkart -s --keyword=_ -p ./data/po -o supertuxkart.pot $PERL_FILE_LIST echo " Done" echo "---------------------------" \ No newline at end of file Modified: trunk/supertuxkart/data/tracks/beach/beach.track =================================================================== --- trunk/supertuxkart/data/tracks/beach/beach.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/beach/beach.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,9 +1,9 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "On the Beach") - (description "Created by Ingo Ruhnke, -modified by M. Gagnon") + (name _("On the Beach")) + (description _("Created by Ingo Ruhnke, +modified by M. Gagnon")) (music "CaribbeanMusic.music") (screenshot "sshot-beach.rgb") (topview "topview-beach.rgb") Modified: trunk/supertuxkart/data/tracks/canyon/canyon.track =================================================================== --- trunk/supertuxkart/data/tracks/canyon/canyon.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/canyon/canyon.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Canyon") - (description "Created by Thomas Oppl") + (name _("Canyon")) + (description _("Created by Thomas Oppl")) (music "kart_grand_prix.music") (screenshot "canyon_screenshot.rgb") (topview "canyon_topview.rgb") Modified: trunk/supertuxkart/data/tracks/city/city.track =================================================================== --- trunk/supertuxkart/data/tracks/city/city.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/city/city.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "City") - (description "Created by Thomas Oppl") + (name _("City")) + (description _("Created by Thomas Oppl")) (music "kart_grand_prix.music") (screenshot "city_screenshot.rgb") (topview "city_topview.rgb") Modified: trunk/supertuxkart/data/tracks/fortmagma/fortmagma.track =================================================================== --- trunk/supertuxkart/data/tracks/fortmagma/fortmagma.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/fortmagma/fortmagma.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Fort Magma") - (description "Created by Oliver & Steve Baker\nmodified by Marianne Gagnon") + (name _("Fort Magma")) + (description _("Created by Oliver & Steve Baker\nmodified by Marianne Gagnon")) (music "Lava_Lagoon_2.music") (screenshot "sshot-fortmagma.rgb") (topview "topview-fortmagma.rgb") Modified: trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track =================================================================== --- trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "The Island") - (description "Created by Johannes Sjolund") + (name _("The Island")) + (description _("Created by Johannes Sjolund")) (music "Boom_boom_boom.music") (screenshot "sshot-islandtrack.rgb") (topview "topview-islandtrack.rgb") Modified: trunk/supertuxkart/data/tracks/jungle/jungle.track =================================================================== --- trunk/supertuxkart/data/tracks/jungle/jungle.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/jungle/jungle.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Amazonian Journey") - (description "by M. Gagnon") + (name _("Amazonian Journey")) + (description _("by M. Gagnon")) (music "kart_grand_prix.music") (screenshot "sshot-jungle.rgb") (topview "topview-jungle.rgb") Modified: trunk/supertuxkart/data/tracks/lighthouse/lighthouse.track =================================================================== --- trunk/supertuxkart/data/tracks/lighthouse/lighthouse.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/lighthouse/lighthouse.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,9 +1,9 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Around the Lighthouse") - (description "Created by Ingo Ruhnke, -modified by M. Gagnon") + (name _("Around the Lighthouse")) + (description _("Created by Ingo Ruhnke, +modified by M. Gagnon")) (music "tk2.music") (screenshot "sshot-lighthouse.rgb") (topview "topview-lighthouse.rgb") Modified: trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track =================================================================== --- trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Little Volcano") - (description "Created by Ingo Ruhnke") + (name _("Little Volcano")) + (description _("Created by Ingo Ruhnke")) (use-fog #t) (sky-color 0.45 0.0 0.0 0.0) Modified: trunk/supertuxkart/data/tracks/olivermath/olivermath.track =================================================================== --- trunk/supertuxkart/data/tracks/olivermath/olivermath.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/olivermath/olivermath.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Oliver's Math Class") - (description "Created by Oliver & Steve Baker") + (name _("Oliver's Math Class")) + (description _("Created by Oliver & Steve Baker")) (music "Boom_boom_boom.music") (screenshot "sshot-olivermath.rgb") (topview "topview-olivermath.rgb") Modified: trunk/supertuxkart/data/tracks/race/race.track =================================================================== --- trunk/supertuxkart/data/tracks/race/race.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/race/race.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Race Track") - (description "Created by Ingo Ruhnke") + (name _("Race Track")) + (description _("Created by Ingo Ruhnke")) (music "tk2.music") (screenshot "sshot-race.rgb") (topview "topview-race.rgb") Modified: trunk/supertuxkart/data/tracks/sandtrack/sandtrack.track =================================================================== --- trunk/supertuxkart/data/tracks/sandtrack/sandtrack.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/sandtrack/sandtrack.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,9 +1,9 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Shifting Sands") - (description "Created by Oliver & Steve Baker, -modified by M. Gagnon") + (name _("Shifting Sands")) + (description _("Created by Oliver & Steve Baker, +modified by M. Gagnon")) (music "desert_dunes.music" "tk7.music") (screenshot "sshot-sandtrack.rgb") (topview "topview-sandtrack.rgb") Modified: trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.track =================================================================== --- trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/snowtuxpeak/snowtuxpeak.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,9 +1,9 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "SnowTux Peak") - (description "Created by Oliver & Steve Baker, - modified by M. Gagnon") + (name _("SnowTux Peak")) + (description _("Created by Oliver & Steve Baker, + modified by M. Gagnon")) (music "tk2.music" "kart_grand_prix.music") (screenshot "sshot-snowtuxpeak.rgb") (topview "topview-snowtuxpeak.rgb") Modified: trunk/supertuxkart/data/tracks/startrack/startrack.track =================================================================== --- trunk/supertuxkart/data/tracks/startrack/startrack.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/startrack/startrack.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,9 +1,9 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Star Track") + (name _("Star Track")) (sky-color 0.0 0.0 0.0 0.0) - (description "Created by Ingo Ruhnke") + (description _("Created by Ingo Ruhnke")) (music "Ethereal_Spectrum_\(ver_loop\).music") (screenshot "sshot-startrack.rgb") (topview "topview-startrack.rgb") Modified: trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track =================================================================== --- trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Sub Sea") - (description "Created by Ingo Ruhnke") + (name _("Sub Sea")) + (description _("Created by Ingo Ruhnke")) (use-fog #t) (sky-color 0.0 0.0 0.2 0.0) (fog-color 0.0 0.0 0.2 0.0) Modified: trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track =================================================================== --- trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Tux Tollway") - (description "Created by Oliver & Steve Baker") + (name _("Tux Tollway")) + (description _("Created by Oliver & Steve Baker")) (music "g4m-fan-track.music") (screenshot "sshot-tuxtrack.rgb") (topview "topview-tuxtrack.rgb") Modified: trunk/supertuxkart/data/tracks/volcano/volcano.track =================================================================== --- trunk/supertuxkart/data/tracks/volcano/volcano.track 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/data/tracks/volcano/volcano.track 2008-05-10 14:48:57 UTC (rev 1844) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name "Volcano") - (description "Created by Ingo Ruhnke") + (name _("Volcano")) + (description _("Created by Ingo Ruhnke")) (music "Boom_boom_boom.music") (screenshot "sshot-volcano.rgb") (topview "topview-volcano.rgb") Modified: trunk/supertuxkart/src/lisp/lexer.cpp =================================================================== --- trunk/supertuxkart/src/lisp/lexer.cpp 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/src/lisp/lexer.cpp 2008-05-10 14:48:57 UTC (rev 1844) @@ -196,6 +196,21 @@ throw std::runtime_error(msg); } + case '_': // can be begin translation + try + { + nextChar(); + if(*m_c == '(') + { + nextChar(); + return TOKEN_TRANSLATION; + } + m_token_string[m_token_length++] = '_'; + // Fall through to symbol handling + } + catch(EOFException& ) + { + } default: if(isdigit(*m_c) || *m_c == '-') { Modified: trunk/supertuxkart/src/lisp/lexer.hpp =================================================================== --- trunk/supertuxkart/src/lisp/lexer.hpp 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/src/lisp/lexer.hpp 2008-05-10 14:48:57 UTC (rev 1844) @@ -31,6 +31,7 @@ TOKEN_EOF, TOKEN_OPEN_PAREN, TOKEN_CLOSE_PAREN, + TOKEN_TRANSLATION, TOKEN_SYMBOL, TOKEN_STRING, TOKEN_INTEGER, Modified: trunk/supertuxkart/src/lisp/parser.cpp =================================================================== --- trunk/supertuxkart/src/lisp/parser.cpp 2008-05-10 13:30:55 UTC (rev 1843) +++ trunk/supertuxkart/src/lisp/parser.cpp 2008-05-10 14:48:57 UTC (rev 1844) @@ -102,6 +102,26 @@ m_lexer->getLineNumber()); throw std::runtime_error(msg); } + case Lexer::TOKEN_TRANSLATION: + { + result = new Lisp(Lisp::TYPE_STRING); + m_token = m_lexer->getNextToken(); + Lisp* next=read(); + if(next->getType()!=Lisp::TYPE_STRING) + { + char msg[MAX_ERROR_MESSAGE_LENGTH]; + snprintf(msg, sizeof(msg), + "Parse Error at line %d: No string inside translation.", + m_lexer->getLineNumber()); + throw std::runtime_error(msg); + } + const char* trans=_(next->m_v.m_string); + const size_t LEN = strlen(trans) + 1; + result->m_v.m_string = new char[LEN]; + memcpy(result->m_v.m_string, trans, LEN); + delete next; + break; + } case Lexer::TOKEN_OPEN_PAREN: result = new Lisp(Lisp::TYPE_CONS); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-05-11 05:12:06
|
Revision: 1850 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1850&view=rev Author: hikerstk Date: 2008-05-10 22:11:57 -0700 (Sat, 10 May 2008) Log Message: ----------- 1) Added new attribute 'designer' to track, which is displayed if no description is given (this simplified work for translators). 2) Changed the .track files to use designer instead of description (if applicable). 3) Updated .pot file 4) Minor clenaup in lisp parser. Modified Paths: -------------- trunk/supertuxkart/data/po/supertuxkart.pot trunk/supertuxkart/data/tracks/canyon/canyon.track trunk/supertuxkart/data/tracks/city/city.track trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track trunk/supertuxkart/data/tracks/jungle/jungle.track trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track trunk/supertuxkart/data/tracks/olivermath/olivermath.track trunk/supertuxkart/data/tracks/race/race.track trunk/supertuxkart/data/tracks/startrack/startrack.track trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track trunk/supertuxkart/data/tracks/volcano/volcano.track trunk/supertuxkart/src/gui/track_sel.cpp trunk/supertuxkart/src/lisp/parser.cpp trunk/supertuxkart/src/track.cpp trunk/supertuxkart/src/track.hpp Modified: trunk/supertuxkart/data/po/supertuxkart.pot =================================================================== --- trunk/supertuxkart/data/po/supertuxkart.pot 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/po/supertuxkart.pot 2008-05-11 05:11:57 UTC (rev 1850) @@ -1,916 +1,899 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-05-11 00:46+1000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL...@li...>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/gui/config_display.cpp:385 -#, c-format -msgid "%dx%d Blacklisted" -msgstr "" - -#: src/world.cpp:622 -#, c-format -msgid "" -"'%s' has\n" -"been eliminated." -msgstr "" - -#: src/main.cpp:132 -msgid "--keyboard-debug" -msgstr "" - -#: src/gui/player_controls.cpp:64 -msgid "Accelerate" -msgstr "" - -#: src/gui/challenges_menu.cpp:36 -msgid "Active Challenges" -msgstr "" - -#: data/all.cup:5 -msgid "All 13 tracks included in SuperTuxKart" -msgstr "" - -#: data/all.cup:4 -msgid "All tracks" -msgstr "" - -#: data/tracks/jungle/jungle.track:4 -msgid "Amazonian Journey" -msgstr "" - -#: src/gui/help_page_two.cpp:106 -msgid "Anvil - slows down greatly the kart in the first position" -msgstr "" - -#: src/gui/config_display.cpp:92 -msgid "Apply " -msgstr "" - -#: src/gui/config_display.cpp:351 -#, c-format -msgid "Apply %dx%d" -msgstr "" - -#: data/tracks/lighthouse/lighthouse.track:4 -msgid "Around the Lighthouse" -msgstr "" - -#: src/gui/help_page_one.cpp:112 -msgid "" -"At high speeds wheelies drive you faster, but you can't steer. If you\n" -"get stuck or fall too far, use the rescue button to get back on track." -msgstr "" - -#: data/gp4.cup:4 -msgid "At world's end" -msgstr "" - -#: src/gui/help_page_one.cpp:78 -msgid "Avoid bananas" -msgstr "" - -#: src/gui/grand_prix_ending.cpp:148 src/gui/leader_result.cpp:152 -#: src/gui/race_results_gui.cpp:144 -msgid "Back to the main menu" -msgstr "" - -#: src/gui/player_controls.cpp:65 -msgid "Brake" -msgstr "" - -#: data/tracks/canyon/canyon.track:4 -msgid "Canyon" -msgstr "" - -#: src/gui/main_menu.cpp:52 -msgid "Challenges" -msgstr "" - -#: src/gui/help_page_one.cpp:117 -msgid "Check the current key bindings for the first player" -msgstr "" - -#: src/gui/grand_prix_select.cpp:50 -msgid "Choose a Grand Prix" -msgstr "" - -#: src/gui/game_mode.cpp:44 -msgid "Choose a Race Mode" -msgstr "" - -#: src/gui/track_sel.cpp:46 -msgid "Choose a track" -msgstr "" - -#: src/gui/race_options.cpp:57 -msgid "Choose the race options" -msgstr "" - -#: src/gui/player_controls.cpp:74 -#, c-format -msgid "Choose your controls, %s" -msgstr "" - -#: data/tracks/city/city.track:4 -msgid "City" -msgstr "" - -#: src/gui/config_display.cpp:97 -msgid "Clear from Blacklist" -msgstr "" - -#: src/challenges/energy_math_class.cpp:26 -msgid "Collect Coins in Math Class" -msgstr "" - -#: src/challenges/energy_math_class.cpp:28 -msgid "" -"Collect at least 6 coins\n" -"on three laps of\n" -"Oliver's Math Class\n" -"in under 1 minute." -msgstr "" - -#: src/challenges/energy_shifting_sands.cpp:27 -msgid "" -"Collect at least 9 coins\n" -"on 3 laps of Shifting Sands\n" -"in under 2:20 minutes." -msgstr "" - -#: src/challenges/energy_shifting_sands.cpp:25 -msgid "Collect the Pharaohs Treasure" -msgstr "" - -#: src/challenges/worlds_end_gp.cpp:27 -msgid "" -"Come first in the At World's End\n" -"Grand Prix with 3 'Racer'\n" -"Level AI karts." -msgstr "" - -#: src/gui/display_res_confirm.cpp:55 -msgid "Confirm Resolution" -msgstr "" - -#: src/gui/display_res_confirm.cpp:109 -#, c-format -msgid "Confirm Resolution Within %d Seconds" -msgstr "" - -#: src/gui/display_res_confirm.cpp:51 -msgid "Confirm Resolution Within 5 Seconds" -msgstr "" - -#: src/gui/grand_prix_ending.cpp:144 src/gui/leader_result.cpp:148 -#: src/gui/feature_unlocked.cpp:47 src/gui/race_results_gui.cpp:135 -msgid "Continue" -msgstr "" - -#: src/gui/race_results_gui.cpp:140 -msgid "Continue Grand Prix" -msgstr "" - -#: data/tracks/littlevolcano/littlevolcano.track:5 -#: data/tracks/race/race.track:5 data/tracks/startrack/startrack.track:6 -#: data/tracks/subseatrack/subseatrack.track:5 -#: data/tracks/volcano/volcano.track:5 -msgid "Created by Ingo Ruhnke" -msgstr "" - -#: data/tracks/beach/beach.track:5 data/tracks/lighthouse/lighthouse.track:5 -msgid "" -"Created by Ingo Ruhnke,\n" -"modified by M. Gagnon" -msgstr "" - -#: data/tracks/islandtrack/islandtrack.track:5 -msgid "Created by Johannes Sjolund" -msgstr "" - -#: data/tracks/olivermath/olivermath.track:5 -#: data/tracks/tuxtrack/tuxtrack.track:5 -msgid "Created by Oliver & Steve Baker" -msgstr "" - -#: data/tracks/fortmagma/fortmagma.track:5 -msgid "" -"Created by Oliver & Steve Baker\n" -"modified by Marianne Gagnon" -msgstr "" - -#: data/tracks/snowtuxpeak/snowtuxpeak.track:5 -msgid "" -"Created by Oliver & Steve Baker,\n" -" modified by M. Gagnon" -msgstr "" - -#: data/tracks/sandtrack/sandtrack.track:5 -msgid "" -"Created by Oliver & Steve Baker,\n" -"modified by M. Gagnon" -msgstr "" - -#: data/tracks/canyon/canyon.track:5 data/tracks/city/city.track:5 -msgid "Created by Thomas Oppl" -msgstr "" - -#: src/gui/main_menu.cpp:63 -msgid "Credits" -msgstr "" - -#: src/gui/config_display.cpp:83 -#, c-format -msgid "Current: %dx%d" -msgstr "" - -#: src/gui/config_display.cpp:89 -msgid "Decrease Resolution" -msgstr "" - -#: src/gui/race_options.cpp:66 -msgid "Difficulty" -msgstr "" - -#: src/gui/options.cpp:49 -msgid "Display" -msgstr "" - -#: src/gui/config_display.cpp:55 -msgid "Display Settings" -msgstr "" - -#: src/gui/race_options.cpp:151 src/gui/race_options.cpp:165 -msgid "Driver" -msgstr "" - -#: src/gui/config_controls.cpp:43 -msgid "Edit controls for who?" -msgstr "" - -#: src/gui/race_menu.cpp:60 -msgid "Exit Race" -msgstr "" - -#: src/challenges/race_track_time.cpp:28 -msgid "" -"Finish 3 laps in the Race track\n" -"with 3 AI karts\n" -"in under 1:15 minutes." -msgstr "" - -#: src/challenges/city_time.cpp:27 -msgid "" -"Finish 3 laps on the City track\n" -"with 3 AI karts\n" -"in under 5:20 minutes." -msgstr "" - -#: src/challenges/tollway_time.cpp:27 -msgid "" -"Finish 3 laps on the Tux Tollway\n" -"track with 3 AI karts\n" -"in under 3:00 minutes." -msgstr "" - -#: src/challenges/race_track_time.cpp:26 -msgid "Finish Race track in 1:15" -msgstr "" - -#: src/challenges/tollway_time.cpp:25 -msgid "Finish Tux Tollway track in 3:00" -msgstr "" - -#: src/challenges/city_time.cpp:25 -msgid "Finish the City track in 5:20" -msgstr "" - -#: src/gui/race_gui.cpp:784 -#, c-format -msgid "Finished" -msgstr "" - -#: src/gui/player_controls.cpp:66 -msgid "Fire" -msgstr "" - -#: data/gp1.cup:5 -msgid "First grand prix, easy to get started" -msgstr "" - -#: src/gui/game_mode.cpp:73 -msgid "Follow the Leader" -msgstr "" - -#: src/challenges/jungle_follow.cpp:25 -msgid "Follow the Leader in the Jungle" -msgstr "" - -#: src/challenges/island_follow.cpp:25 -msgid "" -"Follow the Leader on a\n" -"Desert Island" -msgstr "" - -#: src/gui/help_page_one.cpp:73 -msgid "Force your rivals bite *your* dust!" -msgstr "" - -#: data/tracks/fortmagma/fortmagma.track:4 -msgid "Fort Magma" -msgstr "" - -#: src/gui/num_players.cpp:40 -msgid "Four Players" -msgstr "" - -#: src/gui/config_display.cpp:76 src/gui/config_display.cpp:128 -#: src/gui/config_display.cpp:183 -msgid "Fullscreen mode" -msgstr "" - -#: src/gui/help_page_two.cpp:82 -msgid "Fuzzy blob/Spark - very slow, but bounces from walls" -msgstr "" - -#: src/gui/credits_menu.cpp:76 src/gui/help_page_two.cpp:116 -#: src/gui/help_page_one.cpp:148 src/gui/challenges_menu.cpp:51 -msgid "Go back to the main menu" -msgstr "" - -#: src/gui/race_gui.cpp:932 -msgid "Go!" -msgstr "" - -#: src/gui/help_page_one.cpp:77 -msgid "Grab blue boxes and coins" -msgstr "" - -#: src/gui/game_mode.cpp:54 -msgid "Grand Prix" -msgstr "" - -#: src/gui/main_menu.cpp:60 src/gui/race_menu.cpp:51 -msgid "Help" -msgstr "" - -#: src/gui/race_results_gui.cpp:55 -msgid "Highscores" -msgstr "" - -#: src/gui/help_page_two.cpp:74 -msgid "Homing missile - follows rivals, but is slower than the missile" -msgstr "" - -#: src/gui/config_display.cpp:87 -msgid "Increase Resolution" -msgstr "" - -#: src/user_config.cpp:853 -#, c-format -msgid "Invalid" -msgstr "" - -#: src/kart.cpp:628 -msgid "Invalid short-cut!!" -msgstr "" - -#: src/gui/player_controls.cpp:65 -msgid "Jump" -msgstr "" - -#: src/gui/race_gui.cpp:789 -msgid "Lap" -msgstr "" - -#: data/gp4.cup:5 -msgid "Last grand prix, longer and harder" -msgstr "" - -#: src/gui/race_gui.cpp:408 -msgid "Leader" -msgstr "" - -#: src/gui/player_controls.cpp:64 -msgid "Left" -msgstr "" - -#: src/gui/race_options.cpp:74 src/gui/race_options.cpp:91 -#: src/gui/race_options.cpp:109 -msgid "Less" -msgstr "" - -#: data/tracks/littlevolcano/littlevolcano.track:4 -msgid "Little Volcano" -msgstr "" - -#: src/gui/start_race_feedback.cpp:35 -msgid "Loading race..." -msgstr "" - -#: src/gui/player_controls.cpp:66 -msgid "Look back" -msgstr "" - -#: src/gui/help_page_two.cpp:66 -msgid "Missile - fast stopper in a straight line" -msgstr "" - -#: src/gui/race_options.cpp:67 src/gui/race_options.cpp:84 -#: src/gui/race_options.cpp:102 -msgid "More" -msgstr "" - -#: src/gui/main_menu.cpp:47 -msgid "Multiplayer" -msgstr "" - -#: src/gui/feature_unlocked.cpp:37 -msgid "New Feature Unlocked" -msgstr "" - -#: src/challenges/energy_shifting_sands.cpp:28 -msgid "" -"New Grand Prix:\n" -"To the Moon and Back\n" -"now available" -msgstr "" - -#: src/challenges/worlds_end_gp.cpp:28 -msgid "" -"New Grand Prix: All Tracks GP\n" -"and Bonus Preview: Skidding\n" -"now available.\n" -"Select 'skidding' as difficulty." -msgstr "" - -#: src/challenges/island_follow.cpp:28 -msgid "" -"New Grand Prix: At World's End\n" -"now available" -msgstr "" - -#: src/challenges/moon_and_back_gp.cpp:28 -msgid "" -"New Grand Prix: Snag Drive\n" -"now available" -msgstr "" - -#: src/kart.cpp:400 -msgid "New fastest lap" -msgstr "" - -#: src/challenges/penguin_playground_gp.cpp:28 -msgid "" -"New game mode\n" -"'Follow Leader'\n" -"now available" -msgstr "" - -#: src/challenges/energy_math_class.cpp:29 -msgid "" -"New game mode\n" -"'Grand Prix'\n" -"now available" -msgstr "" - -#: src/challenges/race_track_time.cpp:29 -msgid "" -"New track: Amazonian Journey\n" -"now available" -msgstr "" - -#: src/challenges/tollway_time.cpp:28 -msgid "" -"New track: Canyon\n" -"now available" -msgstr "" - -#: src/challenges/jungle_follow.cpp:28 -msgid "" -"New track: City\n" -"now available" -msgstr "" - -#: src/challenges/tollway_head2head.cpp:28 -msgid "" -"New track: Fort Magma\n" -"now available" -msgstr "" - -#: src/challenges/city_time.cpp:28 -msgid "" -"New track: SnowTux Peak\n" -"now available" -msgstr "" - -#: src/gui/help_page_one.cpp:144 -msgid "Next screen" -msgstr "" - -#: src/gui/grand_prix_select.cpp:71 src/gui/grand_prix_select.cpp:76 -msgid "No Grand Prix selected" -msgstr "" - -#: src/gui/track_sel.cpp:83 -msgid "No track selected" -msgstr "" - -#: src/gui/race_options.cpp:170 -msgid "Novice" -msgstr "" - -#: src/gui/race_options.cpp:83 -msgid "Number of karts" -msgstr "" - -#: src/gui/race_options.cpp:101 -msgid "Number of laps" -msgstr "" - -#: src/user_config.cpp:484 -msgid "Old config file found, check your key bindings!" -msgstr "" - -#: data/tracks/olivermath/olivermath.track:4 -msgid "Oliver's Math Class" -msgstr "" - -#: data/tracks/beach/beach.track:4 -msgid "On the Beach" -msgstr "" - -#: src/gui/options.cpp:40 src/gui/main_menu.cpp:55 src/gui/race_menu.cpp:50 -msgid "Options" -msgstr "" - -#: src/gui/help_page_two.cpp:98 -msgid "Parachute - slows down all karts in a better position!" -msgstr "" - -#: src/gui/race_menu.cpp:47 -msgid "Paused" -msgstr "" - -#: src/gui/race_gui.cpp:958 -msgid "Penalty time!!" -msgstr "" - -#: data/gp1.cup:4 -msgid "Penguin Playground" -msgstr "" - -#: src/gui/player_controls.cpp:251 -msgid "Player " -msgstr "" - -#: src/gui/char_sel.cpp:68 -#, c-format -msgid "Player %d, choose a driver" -msgstr "" - -#: src/gui/config_controls.cpp:45 -msgid "Player 1" -msgstr "" - -#: src/gui/config_controls.cpp:46 -msgid "Player 2" -msgstr "" - -#: src/gui/config_controls.cpp:47 -msgid "Player 3" -msgstr "" - -#: src/gui/config_controls.cpp:48 -msgid "Player 4" -msgstr "" - -#: src/gui/options.cpp:41 -msgid "Player Config" -msgstr "" - -#: src/gui/player_controls.cpp:80 -msgid "Player name" -msgstr "" - -#: src/gui/display_res_confirm.cpp:59 -msgid "Press <ESC> to Cancel" -msgstr "" - -#: src/gui/options.cpp:57 src/gui/player_controls.cpp:112 -#: src/gui/race_options.cpp:121 src/gui/config_display.cpp:101 -#: src/gui/game_mode.cpp:78 src/gui/config_sound.cpp:63 -#: src/gui/config_controls.cpp:52 src/gui/grand_prix_select.cpp:87 -#: src/gui/num_players.cpp:45 -msgid "Press <ESC> to go back" -msgstr "" - -#: src/gui/player_controls.cpp:156 -msgid "Press key" -msgstr "" - -#: src/gui/help_page_two.cpp:112 -msgid "Previous screen" -msgstr "" - -#: src/gui/game_mode.cpp:57 -msgid "Quick Race" -msgstr "" - -#: src/gui/main_menu.cpp:56 -msgid "Quit" -msgstr "" - -#: src/gui/race_gui.cpp:730 -msgid "REV" -msgstr "" - -#: data/tracks/race/race.track:4 -msgid "Race Track" -msgstr "" - -#: src/gui/race_results_gui.cpp:148 -msgid "Race in this track again" -msgstr "" - -#: src/gui/race_results_gui.cpp:54 -msgid "Race results" -msgstr "" - -#: src/gui/race_options.cpp:69 src/gui/race_options.cpp:146 -#: src/gui/race_options.cpp:159 -msgid "Racer" -msgstr "" - -#: src/gui/race_gui.cpp:914 -msgid "Ready!" -msgstr "" - -#: src/gui/player_controls.cpp:66 -msgid "Rescue" -msgstr "" - -#: src/gui/race_menu.cpp:52 -msgid "Restart Race" -msgstr "" - -#: src/gui/race_results_gui.cpp:48 -msgid "Result" -msgstr "" - -#: src/gui/race_menu.cpp:49 -msgid "Return To Race" -msgstr "" - -#: src/gui/player_controls.cpp:64 -msgid "Right" -msgstr "" - -#: data/gp2.cup:5 -msgid "Second grand prix" -msgstr "" - -#: src/gui/race_gui.cpp:923 -msgid "Set!" -msgstr "" - -#: src/gui/race_menu.cpp:57 src/gui/race_results_gui.cpp:153 -msgid "Setup New Race" -msgstr "" - -#: data/tracks/sandtrack/sandtrack.track:4 -msgid "Shifting Sands" -msgstr "" - -#: src/gui/main_menu.cpp:46 -msgid "Single Player" -msgstr "" - -#: src/gui/race_options.cpp:141 -msgid "Skidding Preview" -msgstr "" - -#: data/gp3.cup:4 -msgid "Snag Drive" -msgstr "" - -#: data/tracks/snowtuxpeak/snowtuxpeak.track:4 -msgid "SnowTux Peak" -msgstr "" - -#: src/gui/options.cpp:52 -msgid "Sound" -msgstr "" - -#: src/gui/config_sound.cpp:40 -msgid "Sound Settings" -msgstr "" - -#: data/tracks/startrack/startrack.track:4 -msgid "Star Track" -msgstr "" - -#: src/gui/race_options.cpp:118 -msgid "Start race" -msgstr "" - -#: data/tracks/subseatrack/subseatrack.track:4 -msgid "Sub Sea" -msgstr "" - -#: data/tracks/islandtrack/islandtrack.track:4 -msgid "The Island" -msgstr "" - -#: src/gui/grand_prix_ending.cpp:107 src/gui/leader_result.cpp:109 -#, c-format -msgid "The winner is %s!" -msgstr "" - -#: data/gp3.cup:5 -msgid "Third grand prix" -msgstr "" - -#: src/gui/num_players.cpp:39 -msgid "Three Players" -msgstr "" - -#: src/gui/game_mode.cpp:61 -msgid "Time Trial" -msgstr "" - -#: src/gui/help_page_two.cpp:59 -msgid "To help you win, there are certain collectables you can grab:" -msgstr "" - -#: data/gp2.cup:4 -msgid "To the Moon and Back" -msgstr "" - -#: src/gui/config_sound.cpp:45 src/gui/config_sound.cpp:90 -msgid "Turn off music" -msgstr "" - -#: src/gui/config_sound.cpp:54 src/gui/config_sound.cpp:103 -msgid "Turn off sound effects" -msgstr "" - -#: src/gui/config_sound.cpp:49 src/gui/config_sound.cpp:84 -msgid "Turn on music" -msgstr "" - -#: src/gui/config_sound.cpp:58 src/gui/config_sound.cpp:98 -msgid "Turn on sound effects" -msgstr "" - -#: data/tracks/tuxtrack/tuxtrack.track:4 -msgid "Tux Tollway" -msgstr "" - -#: src/gui/num_players.cpp:38 -msgid "Two Players" -msgstr "" - -#: data/tracks/volcano/volcano.track:4 -msgid "Volcano" -msgstr "" - -#: src/player_kart.cpp:264 -msgid "WRONG WAY!" -msgstr "" - -#: src/gui/player_controls.cpp:65 -msgid "Wheelie" -msgstr "" - -#: src/challenges/penguin_playground_gp.cpp:25 -msgid "" -"Win Penguin Playground Grand\n" -"Prix" -msgstr "" - -#: src/challenges/penguin_playground_gp.cpp:27 -msgid "" -"Win Penguin Playground Grand\n" -"Prix with 3 'Racer' Level AI karts." -msgstr "" - -#: src/challenges/moon_and_back_gp.cpp:25 -msgid "" -"Win To the Moon and Back\n" -"Grand Prix" -msgstr "" - -#: src/challenges/tollway_head2head.cpp:27 -msgid "" -"Win a 1 lap Head to Head\n" -"on Tux Tollway against 1 'Driver'\n" -"level AI kart." -msgstr "" - -#: src/challenges/jungle_follow.cpp:27 -msgid "" -"Win a Follow the Leader race\n" -"with 3 AI karts\n" -"in the Amazonian Jungle." -msgstr "" - -#: src/challenges/island_follow.cpp:27 -msgid "" -"Win a Follow the Leader race\n" -"with 3 AI karts\n" -"on a Desert Island." -msgstr "" - -#: src/challenges/tollway_head2head.cpp:25 -msgid "" -"Win a Head to Head on\n" -"Tux Tollway" -msgstr "" - -#: src/challenges/worlds_end_gp.cpp:25 -msgid "" -"Win the At World's End\n" -"Grand Prix" -msgstr "" - -#: src/challenges/moon_and_back_gp.cpp:27 -msgid "" -"Win the To the Moon and Back\n" -"Grand Prix with 3 'Racer'\n" -"Level AI karts." -msgstr "" - -#: src/gui/config_display.cpp:71 -msgid "Window mode" -msgstr "" - -#: src/world.cpp:538 -msgid "You finished" -msgstr "" - -#: src/world.cpp:617 -msgid "" -"You have been\n" -"eliminated!" -msgstr "" - -#: src/world.cpp:537 -msgid "You won" -msgstr "" - -#: src/gui/help_page_two.cpp:90 -msgid "Zipper - speed boost" -msgstr "" - -#: data/tracks/jungle/jungle.track:5 -msgid "by M. Gagnon" -msgstr "" - -#: src/user_config.cpp:836 -#, c-format -msgid "joy %d axis %d %c" -msgstr "" - -#: src/user_config.cpp:840 -#, c-format -msgid "joy %d btn %d" -msgstr "" - -#: src/user_config.cpp:843 -#, c-format -msgid "joy %d hat %d" -msgstr "" - -#: src/user_config.cpp:849 -#, c-format -msgid "mouse axis %d %c" -msgstr "" - -#: src/user_config.cpp:846 -#, c-format -msgid "mouse btn %d" -msgstr "" - -#: src/user_config.cpp:830 src/user_config.cpp:875 -#, c-format -msgid "not set" -msgstr "" - -#: src/world.cpp:540 -msgid "the race!" -msgstr "" +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-05-11 14:54+1000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL...@li...>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/gui/config_display.cpp:385 +#, c-format +msgid "%dx%d Blacklisted" +msgstr "" + +#: src/modified/world.cpp:624 src/world.cpp:622 +#, c-format +msgid "" +"'%s' has\n" +"been eliminated." +msgstr "" + +#: src/gui/player_controls.cpp:64 +msgid "Accelerate" +msgstr "" + +#: src/gui/challenges_menu.cpp:36 +msgid "Active Challenges" +msgstr "" + +#: data/all.cup:5 +msgid "All 13 tracks included in SuperTuxKart" +msgstr "" + +#: data/all.cup:4 +msgid "All tracks" +msgstr "" + +#: data/tracks/jungle/jungle.track:4 +msgid "Amazonian Journey" +msgstr "" + +#: src/gui/help_page_two.cpp:108 +msgid "Anvil - slows down greatly the kart in the first position" +msgstr "" + +#: src/gui/config_display.cpp:92 +msgid "Apply " +msgstr "" + +#: src/gui/config_display.cpp:351 +#, c-format +msgid "Apply %dx%d" +msgstr "" + +#: data/tracks/lighthouse/lighthouse.track:4 +msgid "Around the Lighthouse" +msgstr "" + +#: src/gui/help_page_one.cpp:112 +msgid "" +"At high speeds wheelies drive you faster, but you can't steer. If you\n" +"get stuck or fall too far, use the rescue button to get back on track." +msgstr "" + +#: data/gp4.cup:4 +msgid "At world's end" +msgstr "" + +#: src/gui/help_page_one.cpp:78 +msgid "Avoid bananas" +msgstr "" + +#: src/gui/grand_prix_ending.cpp:148 src/gui/leader_result.cpp:152 +#: src/gui/race_results_gui.cpp:144 +msgid "Back to the main menu" +msgstr "" + +#: src/gui/help_page_two.cpp:122 +msgid "Back to the menu" +msgstr "" + +#: src/gui/player_controls.cpp:65 +msgid "Brake" +msgstr "" + +#: data/tracks/canyon/canyon.track:4 +msgid "Canyon" +msgstr "" + +#: src/gui/main_menu.cpp:52 +msgid "Challenges" +msgstr "" + +#: src/gui/help_page_one.cpp:117 +msgid "Check the current key bindings for the first player" +msgstr "" + +#: src/gui/grand_prix_select.cpp:50 +msgid "Choose a Grand Prix" +msgstr "" + +#: src/gui/game_mode.cpp:45 +msgid "Choose a Race Mode" +msgstr "" + +#: src/gui/track_sel.cpp:49 +msgid "Choose a track" +msgstr "" + +#: src/gui/race_options.cpp:57 +msgid "Choose the race options" +msgstr "" + +#: src/gui/player_controls.cpp:74 +#, c-format +msgid "Choose your controls, %s" +msgstr "" + +#: data/tracks/city/city.track:4 +msgid "City" +msgstr "" + +#: src/gui/config_display.cpp:97 +msgid "Clear from Blacklist" +msgstr "" + +#: src/challenges/energy_math_class.cpp:26 +msgid "Collect Coins in Math Class" +msgstr "" + +#: src/challenges/energy_math_class.cpp:28 +msgid "" +"Collect at least 6 coins\n" +"on three laps of\n" +"Oliver's Math Class\n" +"in under 1 minute." +msgstr "" + +#: src/challenges/energy_shifting_sands.cpp:27 +msgid "" +"Collect at least 9 coins\n" +"on 3 laps of Shifting Sands\n" +"in under 2:20 minutes." +msgstr "" + +#: src/challenges/energy_shifting_sands.cpp:25 +msgid "Collect the Pharaohs Treasure" +msgstr "" + +#: src/challenges/worlds_end_gp.cpp:27 +msgid "" +"Come first in the At World's End\n" +"Grand Prix with 3 'Racer'\n" +"Level AI karts." +msgstr "" + +#: src/gui/display_res_confirm.cpp:55 +msgid "Confirm Resolution" +msgstr "" + +#: src/gui/display_res_confirm.cpp:109 +#, c-format +msgid "Confirm Resolution Within %d Seconds" +msgstr "" + +#: src/gui/display_res_confirm.cpp:51 +msgid "Confirm Resolution Within 5 Seconds" +msgstr "" + +#: src/gui/feature_unlocked.cpp:47 src/gui/grand_prix_ending.cpp:144 +#: src/gui/leader_result.cpp:148 src/gui/race_results_gui.cpp:135 +msgid "Continue" +msgstr "" + +#: src/gui/race_results_gui.cpp:140 +msgid "Continue Grand Prix" +msgstr "" + +#: data/tracks/beach/beach.track:5 data/tracks/lighthouse/lighthouse.track:5 +msgid "" +"Created by Ingo Ruhnke,\n" +"modified by M. Gagnon" +msgstr "" + +#: data/tracks/fortmagma/fortmagma.track:5 +msgid "" +"Created by Oliver & Steve Baker\n" +"modified by Marianne Gagnon" +msgstr "" + +#: data/tracks/snowtuxpeak/snowtuxpeak.track:5 +msgid "" +"Created by Oliver & Steve Baker,\n" +" modified by M. Gagnon" +msgstr "" + +#: data/tracks/sandtrack/sandtrack.track:5 +msgid "" +"Created by Oliver & Steve Baker,\n" +"modified by M. Gagnon" +msgstr "" + +#: src/gui/main_menu.cpp:63 +msgid "Credits" +msgstr "" + +#: src/gui/config_display.cpp:83 +#, c-format +msgid "Current: %dx%d" +msgstr "" + +#: src/gui/config_display.cpp:89 +msgid "Decrease Resolution" +msgstr "" + +#: src/gui/race_options.cpp:66 +msgid "Difficulty" +msgstr "" + +#: src/gui/options.cpp:49 +msgid "Display" +msgstr "" + +#: src/gui/config_display.cpp:55 +msgid "Display Settings" +msgstr "" + +#: src/gui/race_options.cpp:151 src/gui/race_options.cpp:165 +msgid "Driver" +msgstr "" + +#: src/gui/config_controls.cpp:43 +msgid "Edit controls for who?" +msgstr "" + +#: src/gui/race_menu.cpp:60 +msgid "Exit Race" +msgstr "" + +#: src/challenges/race_track_time.cpp:28 +msgid "" +"Finish 3 laps in the Race track\n" +"with 3 AI karts\n" +"in under 1:15 minutes." +msgstr "" + +#: src/challenges/city_time.cpp:27 +msgid "" +"Finish 3 laps on the City track\n" +"with 3 AI karts\n" +"in under 5:20 minutes." +msgstr "" + +#: src/challenges/tollway_time.cpp:27 +msgid "" +"Finish 3 laps on the Tux Tollway\n" +"track with 3 AI karts\n" +"in under 3:00 minutes." +msgstr "" + +#: src/challenges/race_track_time.cpp:26 +msgid "Finish Race track in 1:15" +msgstr "" + +#: src/challenges/tollway_time.cpp:25 +msgid "Finish Tux Tollway track in 3:00" +msgstr "" + +#: src/challenges/city_time.cpp:25 +msgid "Finish the City track in 5:20" +msgstr "" + +#: src/gui/race_gui.cpp:784 +#, c-format +msgid "Finished" +msgstr "" + +#: src/gui/player_controls.cpp:66 +msgid "Fire" +msgstr "" + +#: data/gp1.cup:5 +msgid "First grand prix, easy to get started" +msgstr "" + +#: src/gui/game_mode.cpp:74 +msgid "Follow the Leader" +msgstr "" + +#: src/challenges/jungle_follow.cpp:25 +msgid "Follow the Leader in the Jungle" +msgstr "" + +#: src/challenges/island_follow.cpp:25 +msgid "" +"Follow the Leader on a\n" +"Desert Island" +msgstr "" + +#: src/gui/help_page_one.cpp:73 +msgid "Force your rivals bite *your* dust!" +msgstr "" + +#: data/tracks/fortmagma/fortmagma.track:4 +msgid "Fort Magma" +msgstr "" + +#: src/gui/num_players.cpp:40 +msgid "Four Players" +msgstr "" + +#: src/gui/config_display.cpp:76 src/gui/config_display.cpp:128 +#: src/gui/config_display.cpp:183 +msgid "Fullscreen mode" +msgstr "" + +#: src/gui/help_page_two.cpp:84 +msgid "Fuzzy blob/Spark - very slow, but bounces from walls" +msgstr "" + +#: src/gui/game_mode.cpp:79 +msgid "Game mode help" +msgstr "" + +#: src/gui/challenges_menu.cpp:51 src/gui/credits_menu.cpp:76 +msgid "Go back to the main menu" +msgstr "" + +#: src/gui/help_page_one.cpp:148 +msgid "Go back to the menu" +msgstr "" + +#: src/gui/race_gui.cpp:932 +msgid "Go!" +msgstr "" + +#: src/gui/help_page_one.cpp:77 +msgid "Grab blue boxes and coins" +msgstr "" + +#: src/gui/game_mode.cpp:55 +msgid "Grand Prix" +msgstr "" + +#: src/gui/main_menu.cpp:60 src/gui/race_menu.cpp:51 +msgid "Help" +msgstr "" + +#: src/gui/race_results_gui.cpp:55 +msgid "Highscores" +msgstr "" + +#: src/gui/help_page_two.cpp:76 +msgid "Homing missile - follows rivals, but is slower than the missile" +msgstr "" + +#: src/gui/config_display.cpp:87 +msgid "Increase Resolution" +msgstr "" + +#: src/user_config.cpp:853 +#, c-format +msgid "Invalid" +msgstr "" + +#: src/kart.cpp:628 src/modified/kart.cpp:627 +msgid "Invalid short-cut!!" +msgstr "" + +#: src/gui/player_controls.cpp:65 +msgid "Jump" +msgstr "" + +#: src/gui/race_gui.cpp:789 +msgid "Lap" +msgstr "" + +#: data/gp4.cup:5 +msgid "Last grand prix, longer and harder" +msgstr "" + +#: src/gui/race_gui.cpp:408 +msgid "Leader" +msgstr "" + +#: src/gui/player_controls.cpp:64 +msgid "Left" +msgstr "" + +#: src/gui/race_options.cpp:74 src/gui/race_options.cpp:91 +#: src/gui/race_options.cpp:109 +msgid "Less" +msgstr "" + +#: data/tracks/littlevolcano/littlevolcano.track:4 +msgid "Little Volcano" +msgstr "" + +#: src/gui/start_race_feedback.cpp:35 +msgid "Loading race..." +msgstr "" + +#: src/gui/player_controls.cpp:66 +msgid "Look back" +msgstr "" + +#: src/gui/help_page_two.cpp:68 +msgid "Missile - fast stopper in a straight line" +msgstr "" + +#: src/gui/race_options.cpp:67 src/gui/race_options.cpp:84 +#: src/gui/race_options.cpp:102 +msgid "More" +msgstr "" + +#: src/gui/main_menu.cpp:47 +msgid "Multiplayer" +msgstr "" + +#: src/gui/feature_unlocked.cpp:37 +msgid "New Feature Unlocked" +msgstr "" + +#: src/challenges/energy_shifting_sands.cpp:28 +msgid "" +"New Grand Prix:\n" +"To the Moon and Back\n" +"now available" +msgstr "" + +#: src/challenges/worlds_end_gp.cpp:28 +msgid "" +"New Grand Prix: All Tracks GP\n" +"and Bonus Preview: Skidding\n" +"now available.\n" +"Select 'skidding' as difficulty." +msgstr "" + +#: src/challenges/island_follow.cpp:28 +msgid "" +"New Grand Prix: At World's End\n" +"now available" +msgstr "" + +#: src/challenges/moon_and_back_gp.cpp:28 +msgid "" +"New Grand Prix: Snag Drive\n" +"now available" +msgstr "" + +#: src/kart.cpp:400 src/modified/kart.cpp:399 +msgid "New fastest lap" +msgstr "" + +#: src/challenges/penguin_playground_gp.cpp:28 +msgid "" +"New game mode\n" +"'Follow Leader'\n" +"now available" +msgstr "" + +#: src/challenges/energy_math_class.cpp:29 +msgid "" +"New game mode\n" +"'Grand Prix'\n" +"now available" +msgstr "" + +#: src/challenges/race_track_time.cpp:29 +msgid "" +"New track: Amazonian Journey\n" +"now available" +msgstr "" + +#: src/challenges/tollway_time.cpp:28 +msgid "" +"New track: Canyon\n" +"now available" +msgstr "" + +#: src/challenges/jungle_follow.cpp:28 +msgid "" +"New track: City\n" +"now available" +msgstr "" + +#: src/challenges/tollway_head2head.cpp:28 +msgid "" +"New track: Fort Magma\n" +"now available" +msgstr "" + +#: src/challenges/city_time.cpp:28 +msgid "" +"New track: SnowTux Peak\n" +"now available" +msgstr "" + +#: src/gui/help_page_one.cpp:144 src/gui/help_page_two.cpp:118 +msgid "Next help screen" +msgstr "" + +#: src/gui/grand_prix_select.cpp:71 src/gui/grand_prix_select.cpp:76 +msgid "No Grand Prix selected" +msgstr "" + +#: src/gui/track_sel.cpp:86 +msgid "No track selected" +msgstr "" + +#: src/gui/race_options.cpp:170 +msgid "Novice" +msgstr "" + +#: src/gui/race_options.cpp:83 +msgid "Number of karts" +msgstr "" + +#: src/gui/race_options.cpp:101 +msgid "Number of laps" +msgstr "" + +#: src/user_config.cpp:484 +msgid "Old config file found, check your key bindings!" +msgstr "" + +#: data/tracks/olivermath/olivermath.track:4 +msgid "Oliver's Math Class" +msgstr "" + +#: data/tracks/beach/beach.track:4 +msgid "On the Beach" +msgstr "" + +#: src/gui/main_menu.cpp:55 src/gui/options.cpp:40 src/gui/race_menu.cpp:50 +msgid "Options" +msgstr "" + +#: src/gui/help_page_two.cpp:100 +msgid "Parachute - slows down all karts in a better position!" +msgstr "" + +#: src/gui/race_menu.cpp:47 +msgid "Paused" +msgstr "" + +#: src/gui/race_gui.cpp:958 +msgid "Penalty time!!" +msgstr "" + +#: data/gp1.cup:4 +msgid "Penguin Playground" +msgstr "" + +#: src/gui/player_controls.cpp:251 +msgid "Player " +msgstr "" + +#: src/gui/char_sel.cpp:68 +#, c-format +msgid "Player %d, choose a driver" +msgstr "" + +#: src/gui/config_controls.cpp:45 +msgid "Player 1" +msgstr "" + +#: src/gui/config_controls.cpp:46 +msgid "Player 2" +msgstr "" + +#: src/gui/config_controls.cpp:47 +msgid "Player 3" +msgstr "" + +#: src/gui/config_controls.cpp:48 +msgid "Player 4" +msgstr "" + +#: src/gui/options.cpp:41 +msgid "Player Config" +msgstr "" + +#: src/gui/player_controls.cpp:80 +msgid "Player name" +msgstr "" + +#: src/gui/display_res_confirm.cpp:59 +msgid "Press <ESC> to Cancel" +msgstr "" + +#: src/gui/config_controls.cpp:52 src/gui/config_display.cpp:101 +#: src/gui/config_sound.cpp:63 src/gui/game_mode.cpp:84 +#: src/gui/grand_prix_select.cpp:87 src/gui/num_players.cpp:45 +#: src/gui/options.cpp:57 src/gui/player_controls.cpp:112 +#: src/gui/race_options.cpp:121 +msgid "Press <ESC> to go back" +msgstr "" + +#: src/gui/player_controls.cpp:156 +msgid "Press key" +msgstr "" + +#: src/gui/help_page_two.cpp:114 +msgid "Previous screen" +msgstr "" + +#: src/gui/game_mode.cpp:58 +msgid "Quick Race" +msgstr "" + +#: src/gui/main_menu.cpp:56 +msgid "Quit" +msgstr "" + +#: src/gui/race_gui.cpp:730 +msgid "REV" +msgstr "" + +#: data/tracks/race/race.track:4 +msgid "Race Track" +msgstr "" + +#: src/gui/race_results_gui.cpp:148 +msgid "Race in this track again" +msgstr "" + +#: src/gui/race_results_gui.cpp:54 +msgid "Race results" +msgstr "" + +#: src/gui/race_options.cpp:69 src/gui/race_options.cpp:146 +#: src/gui/race_options.cpp:159 +msgid "Racer" +msgstr "" + +#: src/gui/race_gui.cpp:914 +msgid "Ready!" +msgstr "" + +#: src/gui/player_controls.cpp:66 +msgid "Rescue" +msgstr "" + +#: src/gui/race_menu.cpp:52 +msgid "Restart Race" +msgstr "" + +#: src/gui/race_results_gui.cpp:48 +msgid "Result" +msgstr "" + +#: src/gui/race_menu.cpp:49 +msgid "Return To Race" +msgstr "" + +#: src/gui/player_controls.cpp:64 +msgid "Right" +msgstr "" + +#: data/gp2.cup:5 +msgid "Second grand prix" +msgstr "" + +#: src/gui/race_gui.cpp:923 +msgid "Set!" +msgstr "" + +#: src/gui/race_menu.cpp:57 src/gui/race_results_gui.cpp:153 +msgid "Setup New Race" +msgstr "" + +#: data/tracks/sandtrack/sandtrack.track:4 +msgid "Shifting Sands" +msgstr "" + +#: src/gui/main_menu.cpp:46 +msgid "Single Player" +msgstr "" + +#: src/gui/race_options.cpp:141 +msgid "Skidding Preview" +msgstr "" + +#: data/gp3.cup:4 +msgid "Snag Drive" +msgstr "" + +#: data/tracks/snowtuxpeak/snowtuxpeak.track:4 +msgid "SnowTux Peak" +msgstr "" + +#: src/gui/options.cpp:52 +msgid "Sound" +msgstr "" + +#: src/gui/config_sound.cpp:40 +msgid "Sound Settings" +msgstr "" + +#: data/tracks/startrack/startrack.track:4 +msgid "Star Track" +msgstr "" + +#: src/gui/race_options.cpp:118 +msgid "Start race" +msgstr "" + +#: data/tracks/subseatrack/subseatrack.track:4 +msgid "Sub Sea" +msgstr "" + +#: data/tracks/islandtrack/islandtrack.track:4 +msgid "The Island" +msgstr "" + +#: src/gui/grand_prix_ending.cpp:107 src/gui/leader_result.cpp:109 +#, c-format +msgid "The winner is %s!" +msgstr "" + +#: data/gp3.cup:5 +msgid "Third grand prix" +msgstr "" + +#: src/gui/num_players.cpp:39 +msgid "Three Players" +msgstr "" + +#: src/gui/game_mode.cpp:62 +msgid "Time Trial" +msgstr "" + +#: src/gui/help_page_two.cpp:61 +msgid "To help you win, there are certain collectables you can grab:" +msgstr "" + +#: data/gp2.cup:4 +msgid "To the Moon and Back" +msgstr "" + +#: src/gui/config_sound.cpp:45 src/gui/config_sound.cpp:90 +msgid "Turn off music" +msgstr "" + +#: src/gui/config_sound.cpp:54 src/gui/config_sound.cpp:103 +msgid "Turn off sound effects" +msgstr "" + +#: src/gui/config_sound.cpp:49 src/gui/config_sound.cpp:84 +msgid "Turn on music" +msgstr "" + +#: src/gui/config_sound.cpp:58 src/gui/config_sound.cpp:98 +msgid "Turn on sound effects" +msgstr "" + +#: data/tracks/tuxtrack/tuxtrack.track:4 +msgid "Tux Tollway" +msgstr "" + +#: src/gui/num_players.cpp:38 +msgid "Two Players" +msgstr "" + +#: data/tracks/volcano/volcano.track:4 +msgid "Volcano" +msgstr "" + +#: src/player_kart.cpp:264 +msgid "WRONG WAY!" +msgstr "" + +#: src/gui/player_controls.cpp:65 +msgid "Wheelie" +msgstr "" + +#: src/challenges/penguin_playground_gp.cpp:25 +msgid "" +"Win Penguin Playground Grand\n" +"Prix" +msgstr "" + +#: src/challenges/penguin_playground_gp.cpp:27 +msgid "" +"Win Penguin Playground Grand\n" +"Prix with 3 'Racer' Level AI karts." +msgstr "" + +#: src/challenges/moon_and_back_gp.cpp:25 +msgid "" +"Win To the Moon and Back\n" +"Grand Prix" +msgstr "" + +#: src/challenges/tollway_head2head.cpp:27 +msgid "" +"Win a 1 lap Head to Head\n" +"on Tux Tollway against 1 'Driver'\n" +"level AI kart." +msgstr "" + +#: src/challenges/jungle_follow.cpp:27 +msgid "" +"Win a Follow the Leader race\n" +"with 3 AI karts\n" +"in the Amazonian Jungle." +msgstr "" + +#: src/challenges/island_follow.cpp:27 +msgid "" +"Win a Follow the Leader race\n" +"with 3 AI karts\n" +"on a Desert Island." +msgstr "" + +#: src/challenges/tollway_head2head.cpp:25 +msgid "" +"Win a Head to Head on\n" +"Tux Tollway" +msgstr "" + +#: src/challenges/worlds_end_gp.cpp:25 +msgid "" +"Win the At World's End\n" +"Grand Prix" +msgstr "" + +#: src/challenges/moon_and_back_gp.cpp:27 +msgid "" +"Win the To the Moon and Back\n" +"Grand Prix with 3 'Racer'\n" +"Level AI karts." +msgstr "" + +#: src/gui/config_display.cpp:71 +msgid "Window mode" +msgstr "" + +#: src/modified/world.cpp:540 src/world.cpp:538 +msgid "You finished" +msgstr "" + +#: src/modified/world.cpp:619 src/world.cpp:617 +msgid "" +"You have been\n" +"eliminated!" +msgstr "" + +#: src/modified/world.cpp:539 src/world.cpp:537 +msgid "You won" +msgstr "" + +#: src/gui/help_page_two.cpp:92 +msgid "Zipper - speed boost" +msgstr "" + +#: src/user_config.cpp:836 +#, c-format +msgid "joy %d axis %d %c" +msgstr "" + +#: src/user_config.cpp:840 +#, c-format +msgid "joy %d btn %d" +msgstr "" + +#: src/user_config.cpp:843 +#, c-format +msgid "joy %d hat %d" +msgstr "" + +#: src/user_config.cpp:849 +#, c-format +msgid "mouse axis %d %c" +msgstr "" + +#: src/user_config.cpp:846 +#, c-format +msgid "mouse btn %d" +msgstr "" + +#: src/user_config.cpp:830 src/user_config.cpp:875 +#, c-format +msgid "not set" +msgstr "" + +#: src/modified/world.cpp:542 src/world.cpp:540 +msgid "the race!" +msgstr "" Modified: trunk/supertuxkart/data/tracks/canyon/canyon.track =================================================================== --- trunk/supertuxkart/data/tracks/canyon/canyon.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/canyon/canyon.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Canyon")) - (description _("Created by Thomas Oppl")) + (designer "Thomas Oppl") (music "kart_grand_prix.music") (screenshot "canyon_screenshot.rgb") (topview "canyon_topview.rgb") Modified: trunk/supertuxkart/data/tracks/city/city.track =================================================================== --- trunk/supertuxkart/data/tracks/city/city.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/city/city.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("City")) - (description _("Created by Thomas Oppl")) + (designer "Thomas Oppl") (music "kart_grand_prix.music") (screenshot "city_screenshot.rgb") (topview "city_topview.rgb") Modified: trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track =================================================================== --- trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/islandtrack/islandtrack.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("The Island")) - (description _("Created by Johannes Sjolund")) + (designer "Johannes Sjolund") (music "Boom_boom_boom.music") (screenshot "sshot-islandtrack.rgb") (topview "topview-islandtrack.rgb") Modified: trunk/supertuxkart/data/tracks/jungle/jungle.track =================================================================== --- trunk/supertuxkart/data/tracks/jungle/jungle.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/jungle/jungle.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Amazonian Journey")) - (description _("by M. Gagnon")) + (designer "M. Gagnon") (music "kart_grand_prix.music") (screenshot "sshot-jungle.rgb") (topview "topview-jungle.rgb") Modified: trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track =================================================================== --- trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/littlevolcano/littlevolcano.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -1,8 +1,8 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name _("Little Volcano")) - (description _("Created by Ingo Ruhnke")) + (name _("Little Volcano")) + (designer "Ingo Ruhnke") (use-fog #t) (sky-color 0.45 0.0 0.0 0.0) Modified: trunk/supertuxkart/data/tracks/olivermath/olivermath.track =================================================================== --- trunk/supertuxkart/data/tracks/olivermath/olivermath.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/olivermath/olivermath.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Oliver's Math Class")) - (description _("Created by Oliver & Steve Baker")) + (designer "Oliver & Steve Baker") (music "Boom_boom_boom.music") (screenshot "sshot-olivermath.rgb") (topview "topview-olivermath.rgb") Modified: trunk/supertuxkart/data/tracks/race/race.track =================================================================== --- trunk/supertuxkart/data/tracks/race/race.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/race/race.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Race Track")) - (description _("Created by Ingo Ruhnke")) + (designer "Ingo Ruhnke") (music "tk2.music") (screenshot "sshot-race.rgb") (topview "topview-race.rgb") Modified: trunk/supertuxkart/data/tracks/startrack/startrack.track =================================================================== --- trunk/supertuxkart/data/tracks/startrack/startrack.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/startrack/startrack.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -1,12 +1,12 @@ ;; -*- mode: lisp -*- (tuxkart-track - (name _("Star Track")) - (sky-color 0.0 0.0 0.0 0.0) - (description _("Created by Ingo Ruhnke")) - (music "Ethereal_Spectrum_\(ver_loop\).music") + (name _("Star Track")) + (sky-color 0.0 0.0 0.0 0.0) + (designer "Ingo Ruhnke") + (music "Ethereal_Spectrum_\(ver_loop\).music") (screenshot "sshot-startrack.rgb") - (topview "topview-startrack.rgb") + (topview "topview-startrack.rgb") (AI-curve-speed-adjust 1.7) (AI-angle-adjust 2.0) ) Modified: trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track =================================================================== --- trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/subseatrack/subseatrack.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Sub Sea")) - (description _("Created by Ingo Ruhnke")) + (designer "Ingo Ruhnke") (use-fog #t) (sky-color 0.0 0.0 0.2 0.0) (fog-color 0.0 0.0 0.2 0.0) Modified: trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track =================================================================== --- trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/tuxtrack/tuxtrack.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Tux Tollway")) - (description _("Created by Oliver & Steve Baker")) + (designer "Oliver & Steve Baker") (music "g4m-fan-track.music") (screenshot "sshot-tuxtrack.rgb") (topview "topview-tuxtrack.rgb") Modified: trunk/supertuxkart/data/tracks/volcano/volcano.track =================================================================== --- trunk/supertuxkart/data/tracks/volcano/volcano.track 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/data/tracks/volcano/volcano.track 2008-05-11 05:11:57 UTC (rev 1850) @@ -2,7 +2,7 @@ (tuxkart-track (name _("Volcano")) - (description _("Created by Ingo Ruhnke")) + (designer "Ingo Ruhnke") (music "Boom_boom_boom.music") (screenshot "sshot-volcano.rgb") (topview "topview-volcano.rgb") Modified: trunk/supertuxkart/src/gui/track_sel.cpp =================================================================== --- trunk/supertuxkart/src/gui/track_sel.cpp 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/src/gui/track_sel.cpp 2008-05-11 05:11:57 UTC (rev 1850) @@ -28,6 +28,9 @@ #include "material_manager.hpp" #include "unlock_manager.hpp" #include "translation.hpp" +#if defined(WIN32) && !defined(__CYGWIN__) +# define snprintf _snprintf +#endif enum WidgetTokens { @@ -100,9 +103,18 @@ SELECTED_TRACK < (int)track_manager->getTrackCount() ) { const Track* TRACK = track_manager->getTrack( SELECTED_TRACK ); - - widget_manager->setWgtText( WTOK_AUTHOR, TRACK->getDescription() ); - + const std::string& description = TRACK->getDescription(); + if(description!="") + { + widget_manager->setWgtText( WTOK_AUTHOR, TRACK->getDescription() ); + } + else + { + char designedby[MAX_MESSAGE_LENGTH]; + snprintf(designedby, MAX_MESSAGE_LENGTH, + "Designed by %s", TRACK->getDesigner().c_str()); + widget_manager->setWgtText( WTOK_AUTHOR, designedby ); + } const std::string& screenshot = TRACK->getScreenshotFile(); const std::string& topview = TRACK->getTopviewFile(); Modified: trunk/supertuxkart/src/lisp/parser.cpp =================================================================== --- trunk/supertuxkart/src/lisp/parser.cpp 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/src/lisp/parser.cpp 2008-05-11 05:11:57 UTC (rev 1850) @@ -104,24 +104,24 @@ } case Lexer::TOKEN_TRANSLATION: { - result = new Lisp(Lisp::TYPE_STRING); - m_token = m_lexer->getNextToken(); - Lisp* next=read(); - if(next->getType()!=Lisp::TYPE_STRING) - { - char msg[MAX_ERROR_MESSAGE_LENGTH]; - snprintf(msg, sizeof(msg), - "Parse Error at line %d: No string inside translation.", - m_lexer->getLineNumber()); - throw std::runtime_error(msg); - } - const char* trans=_(next->m_v.m_string); - const size_t LEN = strlen(trans) + 1; - result->m_v.m_string = new char[LEN]; - memcpy(result->m_v.m_string, trans, LEN); - delete next; - break; - } + result = new Lisp(Lisp::TYPE_STRING); + m_token = m_lexer->getNextToken(); + Lisp* next=read(); + if(next->getType()!=Lisp::TYPE_STRING) + { + char msg[MAX_ERROR_MESSAGE_LENGTH]; + snprintf(msg, sizeof(msg), + "Parse Error at line %d: No string inside translation.", + m_lexer->getLineNumber()); + throw std::runtime_error(msg); + } + const char* trans=_(next->m_v.m_string); + const size_t LEN = strlen(trans) + 1; + result->m_v.m_string = new char[LEN]; + memcpy(result->m_v.m_string, trans, LEN); + delete next; + break; + } case Lexer::TOKEN_OPEN_PAREN: result = new Lisp(Lisp::TYPE_CONS); Modified: trunk/supertuxkart/src/track.cpp =================================================================== --- trunk/supertuxkart/src/track.cpp 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/src/track.cpp 2008-05-11 05:11:57 UTC (rev 1850) @@ -59,6 +59,7 @@ m_track_2d_height = h; m_do_stretch = stretch; m_description = ""; + m_designer = ""; m_screenshot = ""; m_top_view = ""; @@ -816,6 +817,7 @@ LISP->get ("name", m_name); LISP->get ("description", m_description); + LISP->get ("designer", m_designer); std::vector<std::string> filenames; LISP->getVector("music", filenames); getMusicInformation(filenames, m_music); Modified: trunk/supertuxkart/src/track.hpp =================================================================== --- trunk/supertuxkart/src/track.hpp 2008-05-10 23:29:04 UTC (rev 1849) +++ trunk/supertuxkart/src/track.hpp 2008-05-11 05:11:57 UTC (rev 1850) @@ -49,6 +49,7 @@ std::vector<float> m_start_x, m_start_y, m_start_z, m_start_heading; std::string m_herring_style; std::string m_description; + std::string m_designer; std::string m_filename; ssgBranch* m_model; TriangleMesh* m_track_mesh; @@ -186,6 +187,7 @@ const float& getAICurveSpeedAdjustment() const {return m_AI_curve_speed_adjustment;} const sgVec4& getSkyColor () const {return m_sky_color; } const std::string& getDescription () const {return m_description; } + const std::string& getDesigner () const {return m_designer; } const std::string& getTopviewFile () const {return m_top_view; } const std::string& getScreenshotFile () const {return m_screenshot; } const std::vector<SGfloat>& getWidth () const {return m_path_width; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2008-05-12 14:18:07
|
Revision: 1877 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=1877&view=rev Author: hikerstk Date: 2008-05-12 07:18:01 -0700 (Mon, 12 May 2008) Log Message: ----------- Default installation location is now following FHS: 1) executable into /usr/games/ 2) documentation into /usr/share/doc/supertuxkart 3) Added AUTHORS ChangeLog COPYING README to /usr/share/doc/supertuxkart directory. Modified Paths: -------------- trunk/supertuxkart/Makefile.am trunk/supertuxkart/doc/Makefile.am trunk/supertuxkart/doc/players_manual/Makefile.am trunk/supertuxkart/src/Makefile.am Modified: trunk/supertuxkart/Makefile.am =================================================================== --- trunk/supertuxkart/Makefile.am 2008-05-12 14:15:05 UTC (rev 1876) +++ trunk/supertuxkart/Makefile.am 2008-05-12 14:18:01 UTC (rev 1877) @@ -4,3 +4,7 @@ EXTRA_DIST = README README.cygwin README.macosx README.windows ChangeLog COPYING missing +pkgdatadir=$(datadir)/doc/@PACKAGE@ +pkgdata_DATA=AUTHORS ChangeLog COPYING README +# NEWS only contains "see changelog" +# CHANGES only contains "see NEW" \ No newline at end of file Modified: trunk/supertuxkart/doc/Makefile.am =================================================================== --- trunk/supertuxkart/doc/Makefile.am 2008-05-12 14:15:05 UTC (rev 1876) +++ trunk/supertuxkart/doc/Makefile.am 2008-05-12 14:18:01 UTC (rev 1877) @@ -2,6 +2,6 @@ SUBDIRS = players_manual -pkgdatadir = $(datadir)/games/@PACKAGE@/doc +pkgdatadir = $(datadir)/doc/@PACKAGE@/ EXTRA_DIST = conventions.txt implementation.txt robots.txt Modified: trunk/supertuxkart/doc/players_manual/Makefile.am =================================================================== --- trunk/supertuxkart/doc/players_manual/Makefile.am 2008-05-12 14:15:05 UTC (rev 1876) +++ trunk/supertuxkart/doc/players_manual/Makefile.am 2008-05-12 14:18:01 UTC (rev 1877) @@ -1,6 +1,6 @@ # doc/players_manual -pkgdatadir = $(datadir)/games/@PACKAGE@/doc/players_manual +pkgdatadir = $(datadir)/doc/@PACKAGE@/players_manual pkgdata_DATA = manual.html $(shell find $(srcdir) -name "*.png") \ $(shell find $(srcdir) -name "*.jpg") Modified: trunk/supertuxkart/src/Makefile.am =================================================================== --- trunk/supertuxkart/src/Makefile.am 2008-05-12 14:15:05 UTC (rev 1876) +++ trunk/supertuxkart/src/Makefile.am 2008-05-12 14:18:01 UTC (rev 1877) @@ -1,5 +1,5 @@ # src/ - +bindir=@prefix@/games bin_PROGRAMS = supertuxkart # This is a VERY ugly work-around for a compiler bug: if static_ssg s compiled with -O2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |