Thread: [Widelands-cvs] SF.net SVN: widelands:[3308] trunk (Page 2)
Status: Beta
Brought to you by:
sirver
From: <nas...@us...> - 2008-09-10 14:33:36
|
Revision: 3308 http://widelands.svn.sourceforge.net/widelands/?rev=3308&view=rev Author: nasenbaer_peter Date: 2008-09-10 14:33:33 +0000 (Wed, 10 Sep 2008) Log Message: ----------- * introduce "global objects" that can be used in maps of any world - this should be mainly used for campaign stuff. * Add two barbarian ruins for the third barbarian campaign mission Modified Paths: -------------- trunk/src/world.cc Added Paths: ----------- trunk/global/ trunk/global/bobs/ trunk/global/bobs/bar-ruin00/ trunk/global/bobs/bar-ruin00/bar-ruin00_00.png trunk/global/bobs/bar-ruin00/conf trunk/global/bobs/bar-ruin01/ trunk/global/bobs/bar-ruin01/bar-ruin01_00.png trunk/global/bobs/bar-ruin01/conf Property changes on: trunk/global/bobs/bar-ruin00/bar-ruin00_00.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: trunk/global/bobs/bar-ruin00/conf =================================================================== --- trunk/global/bobs/bar-ruin00/conf (rev 0) +++ trunk/global/bobs/bar-ruin00/conf 2008-09-10 14:33:33 UTC (rev 3308) @@ -0,0 +1,7 @@ +[global] +type="diminishing" +stock=1 +descname =_ Ruin of a barbarian sentry +size=small + +hotspot=34 22 Property changes on: trunk/global/bobs/bar-ruin00/conf ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Property changes on: trunk/global/bobs/bar-ruin01/bar-ruin01_00.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: trunk/global/bobs/bar-ruin01/conf =================================================================== --- trunk/global/bobs/bar-ruin01/conf (rev 0) +++ trunk/global/bobs/bar-ruin01/conf 2008-09-10 14:33:33 UTC (rev 3308) @@ -0,0 +1,7 @@ +[global] +type="diminishing" +stock=1 +descname =_ Ruin of a barbarian citadel +size=big + +hotspot=64 53 Property changes on: trunk/global/bobs/bar-ruin01/conf ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/src/world.cc =================================================================== --- trunk/src/world.cc 2008-09-09 18:33:44 UTC (rev 3307) +++ trunk/src/world.cc 2008-09-10 14:33:33 UTC (rev 3308) @@ -161,6 +161,10 @@ parse_terrains(); parse_bobs(); + // General bobs mainly for scenarios + m_basedir = "global"; + parse_bobs(); + g_fs->RemoveFileSystem(&fs); } catch (std::exception const & e) { // tag with world name This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nas...@us...> - 2008-09-10 20:44:36
|
Revision: 3309 http://widelands.svn.sourceforge.net/widelands/?rev=3309&view=rev Author: nasenbaer_peter Date: 2008-09-10 20:44:02 +0000 (Wed, 10 Sep 2008) Log Message: ----------- * New atlantean building "forester's hut" by trimard * New graphics for barbarian and empire fields by Benedikt Freisen (WannaGetAGoodGame) * fix some unlogical initalisation in computer_player.cc Modified Paths: -------------- trunk/src/computer_player.cc trunk/tribes/atlantids/buildings/forester/conf trunk/tribes/atlantids/buildings/forester/forester_build.png trunk/tribes/atlantids/buildings/forester/forester_i_00.png trunk/tribes/barbarians/bobs/field0/field0m_00.png trunk/tribes/barbarians/bobs/field0s/field0s_00.png trunk/tribes/barbarians/bobs/field0t/field0t_00.png trunk/tribes/barbarians/bobs/field1/field1_00.png trunk/tribes/barbarians/bobs/field2/field2_00.png trunk/tribes/empire/bobs/field0/field0m_00.png trunk/tribes/empire/bobs/field0s/field0s_00.png trunk/tribes/empire/bobs/field0t/field0t_00.png trunk/tribes/empire/bobs/field1/field1_00.png trunk/tribes/empire/bobs/field2/field2_00.png Modified: trunk/src/computer_player.cc =================================================================== --- trunk/src/computer_player.cc 2008-09-10 14:33:33 UTC (rev 3308) +++ trunk/src/computer_player.cc 2008-09-10 20:44:02 UTC (rev 3309) @@ -86,8 +86,8 @@ } // Building hints for computer player - std::string stoneproducer = "lumberjack"; - std::string trunkproducer = "forester"; + std::string stoneproducer = "quarry"; + std::string trunkproducer = "lumberjack"; std::string forester = "forester"; std::string fisher = "fisher"; Modified: trunk/tribes/atlantids/buildings/forester/conf =================================================================== --- trunk/tribes/atlantids/buildings/forester/conf 2008-09-10 14:33:33 UTC (rev 3308) +++ trunk/tribes/atlantids/buildings/forester/conf 2008-09-10 20:44:02 UTC (rev 3309) @@ -18,8 +18,8 @@ [idle] pics=forester_i_??.png # ??? -hotspot=58 54 +hotspot=50 58 [build] pics=forester_i_??.png # ??? -hotspot=58 54 +hotspot=50 58 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-09-21 16:22:00
|
Revision: 3312 http://widelands.svn.sourceforge.net/widelands/?rev=3312&view=rev Author: bedouin Date: 2008-09-21 16:21:50 +0000 (Sun, 21 Sep 2008) Log Message: ----------- - update buildsystem to use scons >=1.0.0 - update scons-local (distributed with WL) to version 1.0.1 Modified Paths: -------------- trunk/SConstruct trunk/build-widelands.sh trunk/doc/README.compiling trunk/src/SConscript trunk/utils/SConscript Added Paths: ----------- trunk/utils/scons-local-1.0.1.tar.gz Removed Paths: ------------- trunk/utils/scons-local-0.97.tar.gz Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-09-11 17:56:58 UTC (rev 3311) +++ trunk/SConstruct 2008-09-21 16:21:50 UTC (rev 3312) @@ -11,13 +11,12 @@ # Sanity checks EnsurePythonVersion(2, 3) -EnsureSConsVersion(0, 97) +EnsureSConsVersion(1, 0, 0) # Speedup. If you have problems with inconsistent or wrong builds, look here first SetOption('max_drift', 1) SetOption('implicit_cache', 1) -SourceSignatures('MD5') -#SourceSignatures('timestamp') +Decider('MD5-timestamp') # write only *one* signature file in a place where we don't care SConsignFile('build/scons-signatures') @@ -257,6 +256,7 @@ Delete('utils/scons-README'), Delete('utils/scons-local-0.96.1'), Delete('utils/scons-local-0.97'), + Delete('utils/scons-local-1.0.1'), Delete('utils/scons-time.py'), Delete('utils/sconsign.py'), Delete('utils/buildcat.pyc'), Modified: trunk/build-widelands.sh =================================================================== --- trunk/build-widelands.sh 2008-09-11 17:56:58 UTC (rev 3311) +++ trunk/build-widelands.sh 2008-09-21 16:21:50 UTC (rev 3312) @@ -1,8 +1,8 @@ #!/bin/sh -if [ ! -e utils/scons.py -o -z "`utils/scons.py -v|grep 0.97`" ] ; then +if [ ! -e utils/scons.py -o -z "`utils/scons.py -v|grep 1.0.1`" ] ; then cd utils - tar xzf scons-local-0.97.tar.gz + tar xzf scons-local-1.0.1.tar.gz cd - fi Modified: trunk/doc/README.compiling =================================================================== --- trunk/doc/README.compiling 2008-09-11 17:56:58 UTC (rev 3311) +++ trunk/doc/README.compiling 2008-09-21 16:21:50 UTC (rev 3312) @@ -27,8 +27,8 @@ please tell us. For compiling, you will also need - - Python >= 2.4 - - scons >= 0.97 (optional but recommended, see below) + - Python >= 2.3 + - scons >= 1.0.0 (optional but recommended, see below) If you have a desparate need to use older Python versions then tell us. It'd be possible, but the inconvenience seems not to be worthwile so far. Modified: trunk/src/SConscript =================================================================== --- trunk/src/SConscript 2008-09-11 17:56:58 UTC (rev 3311) +++ trunk/src/SConscript 2008-09-21 16:21:50 UTC (rev 3312) @@ -5,7 +5,7 @@ SRC=simpleglob("*.cc") -srcenv=env.Copy() +srcenv=env.Clone() srcenv.Append(CPPPATH=['#/src']) Modified: trunk/utils/SConscript =================================================================== --- trunk/utils/SConscript 2008-09-11 17:56:58 UTC (rev 3311) +++ trunk/utils/SConscript 2008-09-21 16:21:50 UTC (rev 3312) @@ -8,6 +8,6 @@ distadd(env, 'utils/count-longlines.py') distadd(env, 'utils/detect_misused_tabs.sh') distadd(env, 'utils/replace.py') -distadd(env, 'utils/scons-local-0.97.tar.gz') +distadd(env, 'utils/scons-local-1.0.1.tar.gz') distadd(env, 'utils/tiki2widelands.py') Property changes on: trunk/utils/scons-local-1.0.1.tar.gz ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-09-22 20:47:08
|
Revision: 3313 http://widelands.svn.sourceforge.net/widelands/?rev=3313&view=rev Author: sigra Date: 2008-09-22 20:46:52 +0000 (Mon, 22 Sep 2008) Log Message: ----------- * Improve some message strings in the code (and Swedish translation). * Make some functions take std::string argument as const & instead of by value. * In s2map.cc: change some format arguments "%i" to "%u" (because Widelands::Player_Number is an unsigned integer type). * Add coding style check that detects explicit compare with boolean constants. * Fix coding style ckecker to only create timestam files for directories that actually have source code files. * Do not use the option -gnatN to build whitespace_checker because it may crash some versions of gnat. * Fix issues reported by utils/spurious_source_code/detect (for example it found some really confusing if-statements in s2map.cc). * Fix issues reported by krazy2all --check=spelling. * Change "visiblity" -> "visibility". Modified Paths: -------------- trunk/po/sv_SE/widelands.po trunk/src/campvis.cc trunk/src/campvis.h trunk/src/chat.cc trunk/src/computer_player.cc trunk/src/computer_player.h trunk/src/editor/tools/editor_info_tool.cc trunk/src/editor/ui_menus/editor_event_menu_new_event.cc trunk/src/editor/ui_menus/editor_event_menu_new_trigger.cc trunk/src/editor/ui_menus/editor_player_menu.cc trunk/src/events/event_factory.cc trunk/src/events/event_reveal_campaign.cc trunk/src/events/event_reveal_scenario.cc trunk/src/filesystem/disk_filesystem.cc trunk/src/filesystem/filesystem.cc trunk/src/game_preload_data_packet.cc trunk/src/game_tips.h trunk/src/i18n.cc trunk/src/interactive_player.cc trunk/src/languages.h trunk/src/map.cc trunk/src/mapview.cc trunk/src/netclient.cc trunk/src/nethost.cc trunk/src/objective.h trunk/src/playerdescrgroup.cc trunk/src/s2map.cc trunk/src/sound/sound_handler.cc trunk/src/terrain.h trunk/src/trigger/trigger_factory.cc trunk/src/ui/ui_basic/ui_multilineeditbox.cc trunk/src/ui/ui_basic/ui_panel.cc trunk/src/ui/ui_basic/ui_progresswindow.cc trunk/src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc trunk/src/ui/ui_fs_menus/fullscreen_menu_editor_mapselect.cc trunk/src/ui/ui_fs_menus/fullscreen_menu_launchgame.cc trunk/src/ui/ui_fs_menus/fullscreen_menu_netsetup.cc trunk/src/ui/ui_fs_menus/fullscreen_menu_options.cc trunk/src/ui/ui_fs_menus/fullscreen_menu_options.h trunk/src/warehouse.cc trunk/src/wlapplication.cc trunk/utils/spurious_source_code/Makefile trunk/utils/spurious_source_code/detect trunk/utils/spurious_source_code/regexps/contrived_dereference_and_member_selection/allowed trunk/utils/spurious_source_code/regexps/contrived_dereference_and_member_selection/forbidden trunk/utils/spurious_source_code/regexps/contrived_dereference_and_member_selection/regexps trunk/utils/spurious_source_code/whitespace_checker.adb Added Paths: ----------- trunk/utils/spurious_source_code/regexps/explicit_compare_with_boolean_constant/ trunk/utils/spurious_source_code/regexps/explicit_compare_with_boolean_constant/allowed trunk/utils/spurious_source_code/regexps/explicit_compare_with_boolean_constant/documentation trunk/utils/spurious_source_code/regexps/explicit_compare_with_boolean_constant/forbidden trunk/utils/spurious_source_code/regexps/explicit_compare_with_boolean_constant/regexps Modified: trunk/po/sv_SE/widelands.po =================================================================== --- trunk/po/sv_SE/widelands.po 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/po/sv_SE/widelands.po 2008-09-22 20:46:52 UTC (rev 3313) @@ -17,7 +17,7 @@ #: ../../src/ware_statistics_menu.cc:355 msgid "Ware Statistics" -msgstr "Varu statistik" +msgstr "Varustatistik" #: ../../src/ware_statistics_menu.cc:427 #: ../../src/general_statistics_menu.cc:197 @@ -81,7 +81,7 @@ #: ../../src/interactive_player.cc:173 #, fuzzy msgid "Statistics" -msgstr "Varu statistik" +msgstr "Statistik" #: ../../src/interactive_player.cc:175 #: ../../src/editor/editorinteractive.cc:85 @@ -359,7 +359,7 @@ #: ../../src/watchwindow.cc:108 ../../src/fieldaction.cc:447 msgid "Watch" -msgstr "Iakta" +msgstr "Iaktta" #: ../../src/watchwindow.cc:122 msgid "Follow" @@ -410,7 +410,7 @@ #: ../../src/game_objectives_menu.cc:36 #: ../../src/editor/ui_menus/editor_objectives_menu.cc:160 msgid "Objectives Menu" -msgstr "Mål" +msgstr "Uppdragsmål" #: ../../src/map.cc:394 msgid "No Name" @@ -529,7 +529,7 @@ #: ../../src/productionsite.cc:184 msgid "(not occupied)" -msgstr "(ej ockuperad)" +msgstr "(obemannad)" #: ../../src/productionsite.cc:189 #, c-format @@ -664,7 +664,7 @@ #: ../../src/game_main_menu_save_game.cc:218 msgid " already exists. Overwrite?" -msgstr " finns redan. Skriva över?" +msgstr " finns redan. Skriv över?" #: ../../src/militarysite.cc:78 ../../src/warehouse.cc:306 msgid " conquer" @@ -686,7 +686,7 @@ #: ../../src/s2map.cc:226 msgid "Bluebyte Settlers II Map. No comment defined!" -msgstr "Bluebyte Settlers II Bana. Ingen kommentar angiven!" +msgstr "Bluebyte Settlers II-bana. Ingen kommentar angiven!" #: ../../src/playerdescrgroup.cc:117 #: ../../src/ui/ui_fs_menus/fullscreen_menu_netsetup.cc:131 @@ -783,7 +783,7 @@ #: ../../src/game_debug_ui.cc:271 msgid "Debug Field" -msgstr "Debugfält" +msgstr "Avlusningsfält" #: ../../src/game_debug_ui.cc:320 #, c-format @@ -814,7 +814,7 @@ #: ../../src/building_ui.cc:631 #, c-format msgid "Enhance to %s" -msgstr "Förbättra till %s" +msgstr "Utöka till %s" #: ../../src/building_ui.cc:650 msgid "Destroy" @@ -826,11 +826,11 @@ #: ../../src/building_ui.cc:672 msgid "Debug" -msgstr "Debugfält" +msgstr "Avlusa" #: ../../src/building_ui.cc:795 msgid "Hide workarea" -msgstr "Göm arbetsfält" +msgstr "Göm arbetsområde" #: ../../src/building_ui.cc:1094 msgid "Worker Listing" @@ -956,15 +956,15 @@ #: ../../src/fieldaction.cc:241 msgid "Build small buildings" -msgstr "Bygg mindre byggnader" +msgstr "Bygg små byggnader" #: ../../src/fieldaction.cc:242 msgid "Build medium buildings" -msgstr "Bygg normalstora byggnader" +msgstr "Bygg mellanstora byggnader" #: ../../src/fieldaction.cc:243 msgid "Build large buildings" -msgstr "Bygg större byggnader" +msgstr "Bygg stora byggnader" #: ../../src/fieldaction.cc:277 msgid "Action" @@ -1004,7 +1004,7 @@ #: ../../src/fieldaction.cc:438 msgid "Debug window" -msgstr "Debugfält" +msgstr "Avlusningsfönster" #: ../../src/fieldaction.cc:443 ../../src/fieldaction.cc:593 msgid "Build roads" @@ -1101,19 +1101,19 @@ #: ../../src/events/event_factory.cc:80 msgid "Reveal campaign" -msgstr "Visa kampanj" +msgstr "Avslöja kampanj" #: ../../src/events/event_factory.cc:81 msgid "Reveal a campaign" -msgstr "Visa en kampanj" +msgstr "Avslöja en kampanj" #: ../../src/events/event_factory.cc:84 msgid "Reveal objective" -msgstr "Visa uppdragsmål" +msgstr "Avslöja uppdragsmål" #: ../../src/events/event_factory.cc:85 -msgid "Reveal (or hide) an objective" -msgstr "Visa (eller dölj) ett uppdragsmål" +msgid "Reveal an objective" +msgstr "Avslöja ett uppdragsmål" #: ../../src/events/event_factory.cc:88 msgid "Reveal scenario" @@ -1137,11 +1137,11 @@ #: ../../src/events/event_factory.cc:97 msgid "Manually set a Null Trigger to a given value" -msgstr "Sätt manuellt en Nollställa Utlösare till ett givet värde" +msgstr "Sätt en tom utlösare till ett givet värde" #: ../../src/events/event_factory.cc:100 msgid "Unhide area" -msgstr "Visa area" +msgstr "Visa område" #: ../../src/events/event_factory.cc:102 msgid "Gives vision for a specified amount of time of all locations whithin an area to the player." @@ -1172,8 +1172,8 @@ msgstr "Denna utlösare ändrar aldrig sin egen status. Den kan vara bra att använda till händelser som ändrar utlösare" #: ../../src/trigger/trigger_factory.cc:57 -msgid "Own Area Trigger" -msgstr "Egenområdesutlösare" +msgid "Ownership Trigger" +msgstr "Ägandeutlösare" #: ../../src/trigger/trigger_factory.cc:59 msgid "Triggers when the the player owns at least the specified number of locations in the specified area. Unless it is a one-time trigger, it becomes unset when this no longer holds." @@ -1253,7 +1253,7 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:100 msgid "General Options" -msgstr "Alternativ" +msgstr "Allmäna alternativ" #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:102 msgid "Fullscreen" @@ -1285,11 +1285,11 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:116 msgid "In-game Options" -msgstr "I spel, alternativ" +msgstr "Spelalternativ" #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:119 msgid "Use single Watchwindow Mode" -msgstr "Använd ett Se-fönster" +msgstr "Använd ett enda Se-fönster" #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:122 msgid "Start roadbuilding after placing flag" @@ -1297,15 +1297,15 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:125 msgid "Show buildings area preview" -msgstr "Visa effektiv area" +msgstr "Förhandsvisa byggnads arbetsområde" #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:128 msgid "Snap windows only when overlapping" -msgstr "Fäst endast fönster vid överlappning" +msgstr "Fäst fönster vid fönster endast vid överlappning" #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:131 msgid "Dock windows to edges" -msgstr "Fäst fönster på kanter" +msgstr "Fäst fönster vid kanter" #: ../../src/ui/ui_fs_menus/fullscreen_menu_options.cc:134 msgid "Save game automatically every" @@ -1353,7 +1353,7 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_singleplayer.cc:47 msgid "Campaigns" -msgstr "Kampanjer" +msgstr "Fälttåg" #: ../../src/ui/ui_fs_menus/fullscreen_menu_launchgame.cc:44 msgid "Select map" @@ -1481,11 +1481,11 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc:39 msgid "Select a campaign" -msgstr "Välj en kampanj" +msgstr "Välj ett fälttåg" #: ../../src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc:41 msgid "Campaign:" -msgstr "Kampanj:" +msgstr "Fälttåg:" #: ../../src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc:43 msgid "Difficulty:" @@ -1538,7 +1538,7 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_main.cc:57 msgid "Editor" -msgstr "Banediterare" +msgstr "Redigerare" #: ../../src/ui/ui_fs_menus/fullscreen_menu_main.cc:63 #: ../../src/editor/ui_menus/editor_main_menu.cc:73 @@ -1560,7 +1560,7 @@ #: ../../src/ui/ui_fs_menus/fullscreen_menu_editor.cc:28 #, fuzzy msgid "Editor Menu" -msgstr "Menyn Redigerare" +msgstr "Redigerarmeny" #: ../../src/ui/ui_fs_menus/fullscreen_menu_editor.cc:35 #: ../../src/editor/ui_menus/editor_main_menu_new_map.cc:50 @@ -1714,7 +1714,7 @@ #: ../../src/editor/ui_menus/trigger_null_option_menu.cc:47 msgid "Null Trigger Options" -msgstr "Nollställ Utlösare Alternativ" +msgstr "Alternativ för tom utlösare" #: ../../src/editor/ui_menus/trigger_null_option_menu.cc:69 #: ../../src/editor/ui_menus/event_move_view_option_menu.cc:179 @@ -1778,7 +1778,7 @@ #: ../../src/editor/ui_menus/editor_event_menu.cc:99 msgid "New Event Chain" -msgstr "Ny kedja" +msgstr "Ny händelsekedja" #: ../../src/editor/ui_menus/editor_event_menu.cc:108 #: ../../src/editor/ui_menus/editor_event_menu.cc:139 @@ -1867,7 +1867,7 @@ #: ../../src/editor/ui_menus/editor_tool_change_resources_options_menu.cc:44 msgid "Resources Tools Options" -msgstr "Resurs verktygs alternativ" +msgstr "Resursverktygsalternativ" #: ../../src/editor/ui_menus/editor_tool_change_resources_options_menu.cc:48 #: ../../src/editor/ui_menus/editor_tool_change_height_options_menu.cc:46 @@ -1881,7 +1881,7 @@ #: ../../src/editor/ui_menus/editor_tool_change_resources_options_menu.cc:102 msgid "Current Selection" -msgstr "Nuvarande val" +msgstr "Nuvarande urval" #: ../../src/editor/ui_menus/editor_player_menu_allowed_buildings_menu.cc:55 msgid "Allowed Buildings" @@ -1926,8 +1926,8 @@ #: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:53 #: ../../src/editor/ui_menus/editor_event_menu_edit_eventchain.cc:142 -msgid "Available Events: " -msgstr "Tillgängliga händelser: " +msgid "Available Event types: " +msgstr "Tillgängliga händelsetyper: " #: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:65 #: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:71 @@ -1952,19 +1952,19 @@ #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:100 msgid "AND" -msgstr "" +msgstr "OCH" #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:112 msgid "OR" -msgstr "" +msgstr "ELLER" #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:124 msgid "XOR" -msgstr "" +msgstr "XELLER" #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:136 msgid "NOT" -msgstr "" +msgstr "¬" #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:146 #: ../../src/editor/ui_menus/editor_event_menu_edit_eventchain.cc:106 @@ -1980,8 +1980,8 @@ #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:183 #: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:55 -msgid "Available Triggers: " -msgstr "Tillgängliga utlösare" +msgid "Available Trigger types: " +msgstr "Tillgängliga utlösartyper: " #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:281 msgid "Syntax Error" @@ -1994,7 +1994,7 @@ #: ../../src/editor/ui_menus/editor_main_menu_map_options.cc:41 #: ../../src/editor/ui_menus/editor_main_menu.cc:67 msgid "Map Options" -msgstr "Banans inställningar" +msgstr "Baninställningar" #: ../../src/editor/ui_menus/editor_main_menu_map_options.cc:62 msgid "Nr Players:" @@ -2042,11 +2042,11 @@ #: ../../src/editor/ui_menus/editor_main_menu_save_map.cc:191 msgid "unnamed" -msgstr "okänd" +msgstr "ej namngiven" #: ../../src/editor/ui_menus/editor_main_menu_save_map.cc:349 msgid " exists already. Overwrite?" -msgstr " finns redan. Skriva över?" +msgstr " finns redan. Skriv över?" #: ../../src/editor/ui_menus/editor_main_menu_save_map.cc:351 #: ../../src/editor/ui_menus/editor_main_menu_save_map.cc:371 @@ -2077,7 +2077,7 @@ #: ../../src/editor/ui_menus/editor_tool_noise_height_options_menu.cc:41 msgid "Noise Height Options" -msgstr "Höjd brus alternativ" +msgstr "Höjdbrusalternativ" #: ../../src/editor/ui_menus/editor_tool_noise_height_options_menu.cc:130 #, c-format @@ -2128,12 +2128,12 @@ msgstr "Spelare " #: ../../src/editor/ui_menus/editor_player_menu.cc:246 -msgid "Can't remove player. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this player and try again" -msgstr "Kan inte ta bort spelare. Spelaren är refererad på någon plats. Ta bort alla byggnader, bobs, utlösare och händelser som berör denna spelaren och försök igen" +msgid "Can't remove player. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this player and try again." +msgstr "Kan inte ta bort spelare. Någonting hänvisar till spelaren. Ta bort alla byggnader, bobs, utlösare och händelser som berör denna spelaren och försök igen." #: ../../src/editor/ui_menus/editor_player_menu.cc:278 -msgid "Can't change player tribe. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this tribe and try again" -msgstr "Kan inte ändra spelarens stam. Spelaren är refererad på någon plats. Ta bort alla byggnader, bobs, utlösare och händelser som berör denna spelaren och försök igen" +msgid "Can't change player tribe. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this tribe and try again." +msgstr "Kan inte ändra spelarens stam. Någonting hänvisar till spelaren. Ta bort alla byggnader, bobs, utlösare och händelser som berör denna spelaren och försök igen." #: ../../src/editor/ui_menus/editor_variables_menu.cc:61 msgid "New Variable" @@ -2189,7 +2189,7 @@ #: ../../src/editor/ui_menus/editor_tool_menu.cc:65 #, fuzzy msgid "Noise height" -msgstr "Höjd brus alternativ" +msgstr "Höjdbrusalternativ" #: ../../src/editor/ui_menus/editor_tool_menu.cc:67 msgid "Immovable" @@ -2262,7 +2262,7 @@ #: ../../src/editor/ui_menus/event_message_box_option_menu.cc:151 msgid "Select Trigger: " -msgstr "Välj utlösare" +msgstr "Välj utlösare: " #: ../../src/editor/ui_menus/event_message_box_option_menu.cc:172 msgid "Current: " @@ -2287,7 +2287,7 @@ #: ../../src/editor/ui_menus/editor_objectives_menu.cc:67 msgid "Edit Objective" -msgstr "Redigera Mål" +msgstr "Redigera uppdragsmål" #: ../../src/editor/ui_menus/editor_objectives_menu.cc:84 msgid "Visible at Begin: " @@ -2295,7 +2295,7 @@ #: ../../src/editor/ui_menus/editor_objectives_menu.cc:93 msgid "Objective text: " -msgstr "Mål: " +msgstr "Uppdragsmålstext: " #: ../../src/editor/ui_menus/editor_objectives_menu.cc:165 msgid "Visible" @@ -2307,7 +2307,7 @@ #: ../../src/editor/ui_menus/editor_objectives_menu.cc:264 msgid "Can't delete Objective, because it's trigger is in use by " -msgstr "Kan inte ta bort Mål, målets utlösare används av " +msgstr "Kan inte ta bort uppdragsmål. Dess utlösare används av " #: ../../src/editor/ui_menus/trigger_building_option_menu.cc:58 #, c-format Modified: trunk/src/campvis.cc =================================================================== --- trunk/src/campvis.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/campvis.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -28,7 +28,7 @@ /** * Get the path of campaign visibility save-file */ -std::string Campaign_visiblity_save::get_path() +std::string Campaign_visibility_save::get_path() { std::string savepath; if (char const * const buf = getenv("HOME")) { @@ -46,13 +46,15 @@ // check if campaigns visibility-save is up to date Profile ca(savepath.c_str()); - if(!ca.get_section("global")) // 1st version of campvis had no global section + + // 1st version of campvis had no global section + if (!ca.get_section("global")) update_campvis(savepath); else { Section & ca_s = ca.get_safe_section("global"); Profile cc("campaigns/cconfig"); Section & cc_s = cc.get_safe_section("global"); - if(cc_s.get_int("version")>ca_s.get_int("version")) + if (cc_s.get_int("version") > ca_s.get_int("version")) update_campvis(savepath); } @@ -63,7 +65,7 @@ /** * Create the campaign visibility save-file of the user */ -void Campaign_visiblity_save::make_campvis(std::string savepath) +void Campaign_visibility_save::make_campvis(std::string const & savepath) { // Only prepare campvis-file -> data will be written via update_campvis Profile campvis(savepath.c_str()); @@ -80,7 +82,7 @@ /** * Update the campaign visibility save-file of the user */ -void Campaign_visiblity_save::update_campvis(std::string savepath) +void Campaign_visibility_save::update_campvis(std::string const & savepath) { // Variable declaration int32_t i = 0; @@ -108,8 +110,10 @@ sprintf(cvisible, "campvisi%i", i); sprintf(csection, "campsect%i", i); while (cconf_s.get_string(csection)) { - vis->set_bool(csection, cconf_s.get_bool(cvisible) || - campv_s.get_bool(csection), false); + vis->set_bool + (csection, + cconf_s.get_bool(cvisible) || campv_s.get_bool(csection), + false); ++i; sprintf(cvisible, "campvisi%i", i); @@ -130,8 +134,10 @@ cms += number; while (Section * const s = cconfig.get_section(cms.c_str())) { - vis->set_bool(cms.c_str(), s->get_bool("visible") || - campv_s.get_bool(cms.c_str()), false); + vis->set_bool + (cms.c_str(), + s->get_bool("visible") || campv_s.get_bool(cms.c_str()), + false); ++imap; cms = mapsection; @@ -153,7 +159,8 @@ * \param entry entry to be changed * \param visible should the map be visible? */ -void Campaign_visiblity_save::set_campaign_visiblity(std::string entry, bool visible) +void Campaign_visibility_save::set_campaign_visibility + (std::string const & entry, bool visible) { std::string savepath = get_path(); Profile campvis(savepath.c_str()); @@ -172,7 +179,8 @@ * \param entry entry to be changed * \param visible should the map be visible? */ -void Campaign_visiblity_save::set_map_visiblity(std::string entry, bool visible) +void Campaign_visibility_save::set_map_visibility + (std::string const & entry, bool visible) { std::string savepath = get_path(); Profile campvis(savepath.c_str()); Modified: trunk/src/campvis.h =================================================================== --- trunk/src/campvis.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/campvis.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -25,14 +25,14 @@ #include <stdint.h> -struct Campaign_visiblity_save { +struct Campaign_visibility_save { std::string get_path(); - void set_campaign_visiblity(std::string, bool); - void set_map_visiblity(std::string, bool); + void set_campaign_visibility(std::string const &, bool); + void set_map_visibility (std::string const &, bool); private: - void make_campvis(std::string); - void update_campvis(std::string); + void make_campvis (std::string const &); + void update_campvis(std::string const &); }; Modified: trunk/src/chat.cc =================================================================== --- trunk/src/chat.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/chat.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -22,11 +22,10 @@ std::string ChatMessage::toPrintable() const { - if ((msg.size() > 3) & (msg.substr(0,3) == "/me")) { - if (sender.size()) - return "-> " + sender + msg.substr(3,msg.length()-1); - else - return "-> ***" + msg.substr(3,msg.length()-1); + if ((msg.size() > 3) & (msg.substr(0, 3) == "/me")) { + return + "-> " + (sender.size() ? sender : "***") + + msg.substr(3, msg.length() - 1); } if (sender.size()) return sender + ": " + msg; Modified: trunk/src/computer_player.cc =================================================================== --- trunk/src/computer_player.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/computer_player.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -565,8 +565,7 @@ } // don't make more than one building, if supply line is broken. - if (!check_supply(*j) && - j->get_total_count() > 0) + if (!check_supply(*j) && j->get_total_count() > 0) prio -= 12; // normalize by output count so that multipurpose @@ -603,11 +602,11 @@ } int32_t iosum=0; - for(size_t k=0;k<j->inputs.size();k++) + for (size_t k = 0; k < j->inputs.size(); ++k) if (bf->producers_nearby[j->inputs[k]]>0) ++iosum; else if (bf->consumers_nearby[j->inputs[k]]>0) --iosum; if (iosum < -2) iosum = -2; - for(size_t k=0;k<j->outputs.size();k++) + for (size_t k = 0; k < j->outputs.size(); ++k) if (bf->consumers_nearby[j->outputs[k]]>0) ++iosum; prio += 2*iosum; } @@ -621,7 +620,7 @@ int effect = bf->water_nearby - 12; prio += effect > 0 ? static_cast<int>(sqrt(effect)) : effect; // if same producers are nearby, then give some penalty - for(size_t k=0;k<j->outputs.size();k++) + for (size_t k = 0; k < j->outputs.size(); ++k) if (bf->producers_nearby[j->outputs[k]]>0) prio-=3; } @@ -1298,9 +1297,11 @@ std::queue<int32_t> queue; Map & map = game().map(); - if( economies.size() < 2 ) { - log("Computer_Player(%u): only one economy, no need for new roads\n",player_number); - return; + if (economies.size() < 2) { + log + ("Computer_Player(%u): only one economy, no need for new roads\n", + player_number); + return; } for @@ -1462,20 +1463,23 @@ bool Computer_Player::check_supply(BuildingObserver const &bo) { size_t supplied = 0; - for (size_t i=0;i<bo.inputs.size();++i) - { - for (std::list<BuildingObserver>::iterator it = buildings.begin(); - it != buildings.end(); - ++it) + for (size_t i = 0; i < bo.inputs.size(); ++i) + for + (std::list<BuildingObserver>::iterator it = buildings.begin(); + it != buildings.end(); + ++it) { - if (it->cnt_built && - std::find(it->outputs.begin(), it->outputs.end(), bo.inputs[i]) != it->outputs.end() && - check_supply(*it)) + if + (it->cnt_built && + std::find(it->outputs.begin(), it->outputs.end(), bo.inputs[i]) + != + it->outputs.end() + && + check_supply(*it)) { ++supplied; break; } } - } return supplied == bo.inputs.size(); } Modified: trunk/src/computer_player.h =================================================================== --- trunk/src/computer_player.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/computer_player.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -77,7 +77,7 @@ uint8_t tree_consumers_nearby; uint8_t stone_consumers_nearby; uint8_t water_nearby; - + int16_t military_influence; std::vector<uint8_t> consumers_nearby; std::vector<uint8_t> producers_nearby; Modified: trunk/src/editor/tools/editor_info_tool.cc =================================================================== --- trunk/src/editor/tools/editor_info_tool.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/editor/tools/editor_info_tool.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -39,12 +39,11 @@ Editor_Interactive & parent) { Widelands::World const & world = map.world(); - UI::Window * w = - new UI::Window - (&parent, 30, 30, 400, 200, _("Field Information")); + UI::Window * const w = + new UI::Window(&parent, 30, 30, 400, 200, _("Field Information")); UI::Multiline_Textarea * const multiline_textarea = new UI::Multiline_Textarea - (w, 0, 0, w->get_inner_w(), w->get_inner_h()); + (w, 0, 0, w->get_inner_w(), w->get_inner_h()); Widelands::Field & f = map[center.node]; Modified: trunk/src/editor/ui_menus/editor_event_menu_new_event.cc =================================================================== --- trunk/src/editor/ui_menus/editor_event_menu_new_event.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/editor/ui_menus/editor_event_menu_new_event.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -50,7 +50,8 @@ int32_t posy = offsy; // event List - new UI::Textarea(this, spacing, offsy, _("Available Events: "), Align_Left); + new UI::Textarea + (this, spacing, offsy, _("Available Event types: "), Align_Left); m_event_type_list=new UI::BaseListselect(this, spacing, offsy+20, (get_inner_w()/2)-2*spacing, get_inner_h()-offsy-55); m_event_type_list->selected.set (this, &Editor_Event_Menu_New_Event::selected); Modified: trunk/src/editor/ui_menus/editor_event_menu_new_trigger.cc =================================================================== --- trunk/src/editor/ui_menus/editor_event_menu_new_trigger.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/editor/ui_menus/editor_event_menu_new_trigger.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -52,7 +52,7 @@ // trigger List new UI::Textarea - (this, spacing, offsy, _("Available Triggers: "), Align_Left); + (this, spacing, offsy, _("Available Trigger types: "), Align_Left); m_trigger_type_list = new UI::BaseListselect (this, Modified: trunk/src/editor/ui_menus/editor_player_menu.cc =================================================================== --- trunk/src/editor/ui_menus/editor_player_menu.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/editor/ui_menus/editor_player_menu.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -245,7 +245,7 @@ _ ("Can't remove player. It is referenced in some place. Remove " "all buildings, bobs, triggers and events that depend on this " - "player and try again"), + "player and try again."), UI::MessageBox::OK); mmb.run(); } @@ -277,7 +277,7 @@ _ ("Can't change player tribe. It is referenced in some place. " "Remove all buildings, bobs, triggers and events that depend on " - "this tribe and try again"), + "this tribe and try again."), UI::MessageBox::OK); mmb.run(); } Modified: trunk/src/events/event_factory.cc =================================================================== --- trunk/src/events/event_factory.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/events/event_factory.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -82,7 +82,7 @@ }, { "reveal_objective", _("Reveal objective"), - _("Reveal (or hide) an objective") + _("Reveal an objective") }, { "reveal_scenario", _("Reveal scenario"), Modified: trunk/src/events/event_reveal_campaign.cc =================================================================== --- trunk/src/events/event_reveal_campaign.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/events/event_reveal_campaign.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -32,8 +32,8 @@ Event::State Event_Reveal_Campaign::run(Game *) { - Campaign_visiblity_save cvs; - cvs.set_campaign_visiblity(reveal, true); + Campaign_visibility_save cvs; + cvs.set_campaign_visibility(reveal, true); return m_state = DONE; } Modified: trunk/src/events/event_reveal_scenario.cc =================================================================== --- trunk/src/events/event_reveal_scenario.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/events/event_reveal_scenario.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -32,8 +32,8 @@ Event::State Event_Reveal_Scenario::run(Game *) { - Campaign_visiblity_save cvs; - cvs.set_map_visiblity(reveal, true); + Campaign_visibility_save cvs; + cvs.set_map_visibility(reveal, true); return m_state = DONE; } Modified: trunk/src/filesystem/disk_filesystem.cc =================================================================== --- trunk/src/filesystem/disk_filesystem.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/filesystem/disk_filesystem.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -94,7 +94,7 @@ std::string realpath = path; - if (pattern.substr(0,3) == "../") { + if (pattern.substr(0, 3) == "../") { // Workaround: If pattern is a relative we need to fix the path std::string m_root_save(m_root); // save orginal m_root m_root = path; Modified: trunk/src/filesystem/filesystem.cc =================================================================== --- trunk/src/filesystem/filesystem.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/filesystem/filesystem.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -185,7 +185,7 @@ std::string fixedpath(path); std::string temp; uint32_t path_size = path.size(); - for(uint32_t i = 0; i < path_size; ++i) { + for (uint32_t i = 0; i < path_size; ++i) { temp = fixedpath.at(i); if (temp == crosssep) fixedpath.replace(i, 1, fsep); @@ -303,7 +303,7 @@ std::string fixedpath(path); std::string temp; uint32_t path_size = path.size(); - for(uint32_t i = 0; i < path_size; ++i) { + for (uint32_t i = 0; i < path_size; ++i) { temp = fixedpath.at(i); if (temp == "/") fixedpath.replace(i, 1, "\\"); Modified: trunk/src/game_preload_data_packet.cc =================================================================== --- trunk/src/game_preload_data_packet.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/game_preload_data_packet.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -73,8 +73,8 @@ s.set_string("mapname", game->map().get_name()); // Name of map s.set_int ("player_nr", game->get_ipl()->get_player_number()); // player that saved the game. - std::string bg( game->map().get_background()); - if(bg.empty()) + std::string bg (game->map().get_background()); + if (bg.empty()) bg = game->map().get_world_name(); s.set_string("background", bg); Modified: trunk/src/game_tips.h =================================================================== --- trunk/src/game_tips.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/game_tips.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -28,8 +28,9 @@ /// Displays game tips in progress window struct GameTips : public UI::IProgressVisualization { - GameTips(UI::ProgressWindow & progressWindow, - std::string filename = "txts/gametips"); + GameTips + (UI::ProgressWindow & progressWindow, + std::string filename = "txts/gametips"); virtual ~GameTips(); virtual void update(bool repaint); Modified: trunk/src/i18n.cc =================================================================== --- trunk/src/i18n.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/i18n.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -118,7 +118,7 @@ lang = getenv("LANG"); /* Than set the variables */ setenv ("LANG", lang.c_str(), 1); - setenv ("LANGUAGE", (lang + ":" + lang.substr(0,2)).c_str(), 1); + setenv ("LANGUAGE", (lang + ":" + lang.substr(0, 2)).c_str(), 1); /* Finally make changes known. */ ++_nl_msg_cat_cntr; #endif Modified: trunk/src/interactive_player.cc =================================================================== --- trunk/src/interactive_player.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/interactive_player.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -202,13 +202,13 @@ // TODO : instead of making unneeded buttons invisible after generation, // they should not at all be generated. -> implement more dynamic toolbar UI - if(multiplayer == true) { + if (multiplayer) { m->chatDisplay = new ChatDisplay(this, 10, 25, get_w()-10, get_h()-25); m_toggle_chat.set_visible(false); m_toggle_chat.set_enabled(false); } else m_toggle_chat.set_visible(false); - if(scenario == false) + if (not scenario) m_toggle_objectives.set_visible(false); m_toolbar.resize(); Modified: trunk/src/languages.h =================================================================== --- trunk/src/languages.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/languages.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -46,21 +46,21 @@ static Languages available_languages[NR_LANGUAGES] = { {"Default system language", ""}, // EXTRACT BEGIN (leaves this line untouched) - {"česky", "cs_CZ"}, - {"Dansk", "da_DK"}, - {"Deutsch", "de_DE"}, - {"English", "en_EN"}, - {"Español", "es_ES"}, - {"Français", "fr_FR"}, - {"Galego", "gl_ES"}, - {"עברית", "he_HE"}, - {"Magyar", "hu_HU"}, - {"Nederlands", "nl_NL"}, - {"Polski", "pl_PL"}, - {"Русский", "ru_RU"}, - {"Suomi", "fi_FI"}, - {"Slovensky", "sk_SK"}, - {"Svenska", "sv_SE"}, + {"česky", "cs_CZ"}, + {"Dansk", "da_DK"}, + {"Deutsch", "de_DE"}, + {"English", "en_EN"}, + {"Español", "es_ES"}, + {"Français", "fr_FR"}, + {"Galego", "gl_ES"}, + {"עברית", "he_HE"}, + {"Magyar", "hu_HU"}, + {"Nederlands", "nl_NL"}, + {"Polski", "pl_PL"}, + {"Русский", "ru_RU"}, + {"Suomi", "fi_FI"}, + {"Slovensky", "sk_SK"}, + {"Svenska", "sv_SE"}, // EXTRACT END (leave this line untouched) }; #endif Modified: trunk/src/map.cc =================================================================== --- trunk/src/map.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/map.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -1677,7 +1677,8 @@ (! strcasecmp (filename + (strlen(filename) - strlen(S2MF_SUFFIX)), S2MF_SUFFIX) - |! + | + ! strcasecmp (filename + (strlen(filename) - strlen(S2MF_SUFFIX2)), S2MF_SUFFIX2)) // It is a S2 Map file. Load it as such. Modified: trunk/src/mapview.cc =================================================================== --- trunk/src/mapview.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/mapview.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -137,15 +137,17 @@ * Right-release: disable dragging * Left-press: field action window */ -bool Map_View::handle_mousepress( Uint8 btn, int32_t x, int32_t y) { +bool Map_View::handle_mousepress + (Uint8 const btn, int32_t const x, int32_t const y) +{ #ifdef __APPLE__ - // SDL does on Mac hardcoded middle mouse button emulation (alt+left). - // This interferes with the editor, which is using alt+left click for third - // tool. So just handle middle mouse button like left one. - if (btn == SDL_BUTTON_MIDDLE) - btn = SDL_BUTTON_LEFT; + // SDL does on Mac hardcoded middle mouse button emulation (alt+left). + // This interferes with the editor, which is using alt+left click for third + // tool. So just handle middle mouse button like left one. + if (btn == SDL_BUTTON_MIDDLE) + btn = SDL_BUTTON_LEFT; #endif - if (btn == SDL_BUTTON_LEFT) { + if (btn == SDL_BUTTON_LEFT) { track_sel(Point(x, y)); fieldclicked.call(); Modified: trunk/src/netclient.cc =================================================================== --- trunk/src/netclient.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/netclient.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -143,7 +143,7 @@ (game, d->playernum+1, false, true); game.set_iabase(ipl); ipl->set_chat_provider(this); - if(!d->settings.savegame) // new map + if (!d->settings.savegame) // new map game.init_newgame(loaderUI, d->settings); else // savegame game.init_savegame(loaderUI, d->settings); @@ -152,7 +152,7 @@ d->lasttimestamp_realtime = WLApplication::get()->get_time(); d->modal = game.get_iabase(); - if(!d->settings.savegame) // new map + if (!d->settings.savegame) // new map game.run(loaderUI); else // savegame game.run(loaderUI, true); Modified: trunk/src/nethost.cc =================================================================== --- trunk/src/nethost.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/nethost.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -304,7 +304,7 @@ Interactive_Player* ipl = new Interactive_Player(game, 1, false, true); ipl->set_chat_provider(&d->chat); game.set_iabase(ipl); - if(!d->settings.savegame) // new game + if (!d->settings.savegame) // new game game.init_newgame(loaderUI, d->settings); else // savegame game.init_savegame(loaderUI, d->settings); @@ -322,7 +322,7 @@ // wait mode when there are no clients checkHungClients(); initComputerPlayers(); - if(!d->settings.savegame) // new game + if (!d->settings.savegame) // new game game.run(loaderUI); else // savegame game.run(loaderUI, true); Modified: trunk/src/objective.h =================================================================== --- trunk/src/objective.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/objective.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -54,8 +54,8 @@ const std::string & visname() const throw () {return m_visname;} const std::string & descr() const throw () {return m_descr;} - void set_visname(const std::string & new_name){m_visname = new_name;} - void set_descr(const std::string & new_descr) {m_descr = new_descr;} + void set_visname(std::string const & new_name) {m_visname = new_name;} + void set_descr (std::string const & new_descr) {m_descr = new_descr;} bool get_is_visible() const throw () {return m_is_visible;} void set_is_visible(const bool t) throw () {m_is_visible = t;} Modified: trunk/src/playerdescrgroup.cc =================================================================== --- trunk/src/playerdescrgroup.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/playerdescrgroup.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -163,7 +163,7 @@ d->btnPlayerType ->set_visible(enable); d->btnPlayerTribe ->set_visible(enable); d->btnPlayerTribe ->set_enabled(enable); - if(!enable) + if (!enable) d->plr_name->set_text(std::string()); } Modified: trunk/src/s2map.cc =================================================================== --- trunk/src/s2map.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/s2map.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -700,13 +700,15 @@ case BOB_SKELETON3: bobname = "skeleton3"; break; case BOB_CACTUS1: - if(!strcmp(m_map.get_world_name(), "winterland")){ - bobname = "snowman"; break; } - bobname = "cactus1"; break; + bobname = + strcmp(m_map.get_world_name(), "winterland") ? + "cactus1" : "snowman"; + break; case BOB_CACTUS2: - if(!strcmp(m_map.get_world_name(), "winterland")){ - bobname = "track"; break; } - bobname = "cactus2"; break; + bobname = + strcmp(m_map.get_world_name(), "winterland") ? + "cactus2" : "track"; + break; case BOB_BUSH1: bobname = "bush1"; break; case BOB_BUSH2: bobname = "bush2"; break; @@ -736,11 +738,12 @@ char msg[128]; const Widelands::Player_Number nr_players = m_map.get_nrplayers(); - snprintf(msg, sizeof(msg), - "Checking starting position for all %i players:\n", nr_players); + snprintf + (msg, sizeof(msg), + "Checking starting position for all %u players:\n", nr_players); log(msg); for (Widelands::Player_Number p = 1; p <= nr_players; ++p) { - snprintf(msg, sizeof(msg), "-> Player %i: ", p); + snprintf(msg, sizeof(msg), "-> Player %u: ", p); log(msg); Widelands::Coords starting_pos = m_map.get_starting_pos(p); @@ -772,7 +775,7 @@ m_map.set_starting_pos(p, tl); fixed=true; } - if (!fixed & ( l.field->get_caps() == BIG)) { + if (!fixed & (l.field->get_caps() == BIG)) { m_map.set_starting_pos(p, l); fixed=true; } @@ -784,7 +787,7 @@ m_map.set_starting_pos(p, br); fixed=true; } - if (!fixed & ( r.field->get_caps() == BIG)) { + if (!fixed & (r.field->get_caps() == BIG)) { m_map.set_starting_pos(p, r); fixed=true; } @@ -793,9 +796,10 @@ fixed=true; } // check whether starting position was fixed. - if(fixed == true) { - log(" Starting position was successfully fixed " - "during 1st try!\n"); + if (fixed) { + log + (" Starting position was successfully fixed during 1st " + "try!\n"); } else { // Second try - with a circle of radius = 2 : // the three points at the top of the circle @@ -811,7 +815,7 @@ m_map.set_starting_pos(p, m_map.tr_n(tr)); fixed=true; } - // the three points at the bottom of the circle + // the three points at the bottom of the circle if (!fixed & (m_map.bl_n(bl).field->get_caps() == BIG)) { m_map.set_starting_pos(p, m_map.bl_n(bl)); fixed=true; @@ -824,36 +828,37 @@ m_map.set_starting_pos(p, m_map.br_n(br)); fixed=true; } - // the three points at the left side of the circle - if (!fixed & (m_map .l_n(tl).field->get_caps() == BIG)) { - m_map.set_starting_pos(p, m_map .l_n(tl)); + // the three points at the left side of the circle + if (!fixed & (m_map. l_n(tl).field->get_caps() == BIG)) { + m_map.set_starting_pos(p, m_map. l_n(tl)); fixed=true; } - if (!fixed & (m_map .l_n( l).field->get_caps() == BIG)) { - m_map.set_starting_pos(p, m_map .l_n( l)); + if (!fixed & (m_map. l_n (l).field->get_caps() == BIG)) { + m_map.set_starting_pos(p, m_map. l_n (l)); fixed=true; } - if (!fixed & (m_map .l_n(bl).field->get_caps() == BIG)) { - m_map.set_starting_pos(p, m_map .l_n(bl)); + if (!fixed & (m_map. l_n(bl).field->get_caps() == BIG)) { + m_map.set_starting_pos(p, m_map. l_n(bl)); fixed=true; } - // the three points at the right side of the circle - if (!fixed & (m_map .r_n(tr).field->get_caps() == BIG)) { - m_map.set_starting_pos(p, m_map .r_n(tr)); + // the three points at the right side of the circle + if (!fixed & (m_map. r_n(tr).field->get_caps() == BIG)) { + m_map.set_starting_pos(p, m_map. r_n(tr)); fixed=true; } - if (!fixed & (m_map .r_n( r).field->get_caps() == BIG)) { - m_map.set_starting_pos(p, m_map .r_n( r)); + if (!fixed & (m_map. r_n (r).field->get_caps() == BIG)) { + m_map.set_starting_pos(p, m_map. r_n (r)); fixed=true; } - if (!fixed & (m_map .r_n(br).field->get_caps() == BIG)) { - m_map.set_starting_pos(p, m_map .r_n(br)); + if (!fixed & (m_map. r_n(br).field->get_caps() == BIG)) { + m_map.set_starting_pos(p, m_map. r_n(br)); fixed=true; } // check whether starting position was fixed. - if(fixed == true) { - log(" Starting position was successfully fixed " - "during 2nd try!\n"); + if (fixed) { + log + (" Starting position was successfully fixed during 2nd " + "try!\n"); } else { // Do not throw exception, else map won't be loadable in editor // Player initialisation will keep track about wrong starting pos. Modified: trunk/src/sound/sound_handler.cc =================================================================== --- trunk/src/sound/sound_handler.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/sound/sound_handler.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -681,7 +681,7 @@ if (m_lock_audio_disabling || m_disable_music == disable) return; - if (disable==true) { + if (disable) { stop_music(); m_disable_music = true; } else { Modified: trunk/src/terrain.h =================================================================== --- trunk/src/terrain.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/terrain.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -577,7 +577,7 @@ Surface const & rt_busy = *g_gr->get_road_texture(Widelands::Road_Busy); dst.lock(); - + render_triangle<T> (dst, f_vert, br_vert, r_vert, f_r_texture); render_triangle<T> (dst, f_vert, bl_vert, br_vert, f_d_texture); Modified: trunk/src/trigger/trigger_factory.cc =================================================================== --- trunk/src/trigger/trigger_factory.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/trigger/trigger_factory.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -54,7 +54,7 @@ "changes triggers") }, { - "ownership", _("Own Area Trigger"), + "ownership", _("Ownership Trigger"), _ ("Triggers when the the player owns at least the specified number of " "locations in the specified area. Unless it is a one-time trigger, it " Modified: trunk/src/ui/ui_basic/ui_multilineeditbox.cc =================================================================== --- trunk/src/ui/ui_basic/ui_multilineeditbox.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_basic/ui_multilineeditbox.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -265,7 +265,7 @@ } /** - * Calculate the heigth position of the cursor and write it to m_textpos + * Calculate the height position of the cursor and write it to m_textpos * so the scrollbar can follow the cursor. */ void Multiline_Editbox::CalcLinePos() @@ -281,17 +281,15 @@ int32_t lbtb = 0; // linebreaks to bottom for (int32_t i = m_cur_pos; i >= 0; --i) - if(str[i] == '\n') + if (str[i] == '\n') ++lbtt; for (int32_t i = m_cur_pos + 1; i <= leng; ++i) - if(str[i] == '\n') + if (str[i] == '\n') ++lbtb; - if((lbtt == 0) & (lbtb == 0)) - m_textpos = 0; - else - // calculate as double, so it comes closer to the true value. - m_textpos = ((double)(m_textheight - get_h()))/(lbtb + lbtt) * lbtt; + m_textpos = // Calculate as double, so it comes closer to the true value. + (lbtt == 0) & (lbtb == 0) ? + 0 : (static_cast<double>(m_textheight - get_h()))/(lbtb + lbtt) * lbtt; } }; Modified: trunk/src/ui/ui_basic/ui_panel.cc =================================================================== --- trunk/src/ui/ui_basic/ui_panel.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_basic/ui_panel.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -144,13 +144,12 @@ { Section *s = g_options.pull_section("global"); int32_t maxfps = s->get_int("maxfps", 25); - if(maxfps < 5) + if (maxfps < 5) maxfps = 5; - minTime=(1000/maxfps); + minTime = 1000 / maxfps; } - while (_running) - { + while (_running) { startTime = SDL_GetTicks(); static InputCallback icb = { @@ -190,10 +189,10 @@ WLApplication::yield_double_game (); #endif #endif - // Wait until 1second/maxfps are over - diffTime = SDL_GetTicks()-startTime; - if(diffTime<minTime) - SDL_Delay(minTime-diffTime); + // Wait until 1second/maxfps are over. + diffTime = SDL_GetTicks() - startTime; + if (diffTime < minTime) + SDL_Delay(minTime - diffTime); } g_gr->update_fullscreen(); end(); Modified: trunk/src/ui/ui_basic/ui_progresswindow.cc =================================================================== --- trunk/src/ui/ui_basic/ui_progresswindow.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_basic/ui_progresswindow.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -112,7 +112,7 @@ void ProgressWindow::set_background(const std::string & file_name) { RenderTarget & rt = *g_gr->get_render_target(); if (file_name.size() > 0) { - if(g_fs->FileExists(file_name)) + if (g_fs->FileExists(file_name)) m_background = file_name; else { // Maybe we should load a background for a specific world? Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_campaign_select.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -156,7 +156,7 @@ i18n::release_textdomain(); // Read in campvis-file - Campaign_visiblity_save cvs; + Campaign_visibility_save cvs; Profile campvis(cvs.get_path().c_str()); Section & c = campvis.get_safe_section("campaigns"); @@ -336,7 +336,7 @@ i18n::release_textdomain(); // Read in campvis-file - Campaign_visiblity_save cvs; + Campaign_visibility_save cvs; Profile campvis(cvs.get_path().c_str()); Section & c = campvis.get_safe_section("campmaps"); Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_editor_mapselect.cc =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_editor_mapselect.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_editor_mapselect.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -144,7 +144,7 @@ /** * listbox got double clicked */ -void Fullscreen_Menu_Editor_MapSelect::double_clicked(uint32_t) { ok(); } +void Fullscreen_Menu_Editor_MapSelect::double_clicked(uint32_t) {ok();} /** * fill the file list @@ -211,4 +211,6 @@ } } - if (m_list.size()) m_list.select(0);} + if (m_list.size()) + m_list.select(0); +} Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_launchgame.cc =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_launchgame.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_launchgame.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -101,7 +101,7 @@ && m_settings->canChangeMap() && - (m_settings->settings().multiplayer == false)) // not in multiplayer + not m_settings->settings().multiplayer) { select_map(); @@ -140,11 +140,11 @@ void Fullscreen_Menu_LaunchGame::back_clicked() { if (! m_settings->settings().multiplayer) { - // the following behaviour might look strange at first view, but for the - // user it seems as if the launchgame-menu is a child of mapselect and not - // the other way around - just end_modal(0); will be seen as bug from - // user point of view, so we reopen the mapselect-menu. - m_settings->setMap("","",0); + // The following behaviour might look strange at first view, but for the + // user it seems as if the launchgame-menu is a child of mapselect and + // not the other way around - just end_modal(0); will be seen as bug + // from user point of view, so we reopen the mapselect-menu. + m_settings->setMap("", "", 0); select_map(); if (m_settings->settings().mapname.size() == 0) end_modal(0); @@ -159,7 +159,7 @@ */ void Fullscreen_Menu_LaunchGame::start_clicked() { - if(!g_fs->FileExists(m_filename)) + if (!g_fs->FileExists(m_filename)) throw wexception("Tried to start a game with a file you don't have."); if (m_settings->canLaunch()) { if (!m_is_savegame) @@ -192,21 +192,21 @@ m_select_save.set_enabled (m_settings->settings().multiplayer & m_settings->canChangeMap()); - if(m_settings->settings().scenario == true) + if (m_settings->settings().scenario) set_scenario_values(); // Print warnings and information between title and player desc. group if (!g_fs->FileExists(m_filename)) { m_notes.set_text (_("WARNING!!! Host selected file \"") - + m_filename - + _("\" for this game, but you don't have it.") - + _(" Please add it manually.")); + + m_filename + + _("\" for this game, but you don't have it.") + + _(" Please add it manually.")); for (uint32_t i = 0; i < MAX_PLAYERS; ++i) m_players[i]->refresh(); m_notes.set_color(UI_FONT_CLR_WARNING); } else { - if(!m_is_savegame) { + if (!m_is_savegame) { m_notes.set_text(""); // update the player description groups @@ -224,14 +224,14 @@ int8_t i = 1; // Print information about last players - for(; i <= m_nr_players; ++i) { + for (; i <= m_nr_players; ++i) { snprintf(buf, sizeof(buf), " [%i] ", i); notetext += buf; if (m_player_save_name[i-1].empty()) { notetext += "--"; - // set player description group disabled so - // noone can take this place + // set player description group disabled so that no-one can + // take this place m_players[i-1]->enable_pdg(false); continue; } @@ -258,7 +258,7 @@ /** - * select a map and send all informations to the user interface. + * Select a map and send all information to the user interface. */ void Fullscreen_Menu_LaunchGame::select_map() { @@ -287,8 +287,8 @@ /** - * select a multi player savegame and send all informations - * to the user interface. + * Select a multi player savegame and send all information to the user + * interface. */ void Fullscreen_Menu_LaunchGame::select_savegame() { @@ -331,7 +331,7 @@ ("settings()->scenario was set to true, but no map is available"); Widelands::Map map; // Map_Loader needs a place to put it's preload data Widelands::Map_Loader * const ml = - map.get_correct_loader(m_settings->settings().mapfilename.c_str()); + map.get_correct_loader(m_settings->settings().mapfilename.c_str()); map.set_filename(m_settings->settings().mapfilename.c_str()); ml->preload_map(true); uint8_t nrplayers = map.get_nrplayers(); @@ -357,7 +357,7 @@ strbuf = ""; snprintf(buf, sizeof(buf), "player_%i", i); Section & s = prof.get_safe_section(buf); - m_player_save_name [i-1] = s.get_string("name" ); + m_player_save_name [i-1] = s.get_string("name"); m_player_save_tribe[i-1] = s.get_string("tribe"); if (m_player_save_tribe[i-1].empty()) @@ -385,4 +385,4 @@ { for (uint32_t i = 0; i < MAX_PLAYERS; ++i) m_players[i]->enable_pdg(true); -} \ No newline at end of file +} Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_netsetup.cc =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_netsetup.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_netsetup.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -200,7 +200,7 @@ Section *s = g_options.get_section("global"); std::string host = s->get_string("lasthost", ""); hostname.setText(host); - if(host != "") + if (host != "") joingame.set_enabled(hostname.text().size()); opengames.select(opengames.no_selection_index()); } Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_options.cc =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_options.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_options.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -215,14 +215,14 @@ m_label_game_options.set_font(UI_FONT_BIG, UI_FONT_CLR_FG); } -void Fullscreen_Menu_Options::autosaveChange(int32_t arg) { - if(arg == plus) - m_asvalue++; - if(arg == minus) - m_asvalue--; - if(arg == plusTen) +void Fullscreen_Menu_Options::autosaveChange(int32_t const arg) { + if (arg == plus) + ++m_asvalue; + if (arg == minus) + --m_asvalue; + if (arg == plusTen) m_asvalue += 10; - if(arg == minusTen) + if (arg == minusTen) m_asvalue -= 10; update_autosave(); } @@ -237,11 +237,11 @@ m_value_autosave.set_text(text); } -void Fullscreen_Menu_Options::maxFpsChange(int32_t arg) { - if(arg == plus) - m_maxfps++; - if(arg == minus) - m_maxfps--; +void Fullscreen_Menu_Options::maxFpsChange(int32_t const arg) { + if (arg == plus) + ++m_maxfps; + if (arg == minus) + --m_maxfps; update_maxfps(); } Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_options.h =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_options.h 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_options.h 2008-09-22 20:46:52 UTC (rev 3313) @@ -82,8 +82,8 @@ private: UI::IDButton<Fullscreen_Menu_Options, int32_t> - m_cancel, m_apply, m_fps_plus, m_fps_minus, m_autosave_plus, - m_autosave_minus, m_autosave_tenplus, m_autosave_tenminus; + m_cancel, m_apply, m_fps_plus, m_fps_minus, m_autosave_plus, + m_autosave_minus, m_autosave_tenplus, m_autosave_tenminus; UI::Textarea m_title; UI::Checkbox m_fullscreen; UI::Textarea m_label_fullscreen; Modified: trunk/src/warehouse.cc =================================================================== --- trunk/src/warehouse.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/warehouse.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -710,9 +710,9 @@ } } - if (can_create_worker(game,ware)){ + if (can_create_worker(game, ware)) { // don't want to use an upgraded worker, so create new one. - create_worker(game,ware); + create_worker(game, ware); } else { ware = tribe.get_worker_descr(ware)->becomes(); } Modified: trunk/src/wlapplication.cc =================================================================== --- trunk/src/wlapplication.cc 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/src/wlapplication.cc 2008-09-22 20:46:52 UTC (rev 3313) @@ -1191,7 +1191,7 @@ throw wexception("Initialisation of Wsock2-library failed"); #endif bool inmenu = true; - while(inmenu == true) { // stay in menu until player clicks "back" button + while (inmenu) { // stay in menu until player clicks "back" button Fullscreen_Menu_NetSetup ns; // must be reinitalised, else graphics look strange. switch (ns.run()) { case Fullscreen_Menu_NetSetup::HOSTGAME: { @@ -1273,7 +1273,7 @@ s.multiplayer = false; } - virtual void setScenario(bool set) { s.scenario = set; } + virtual void setScenario(bool const set) {s.scenario = set;} virtual const GameSettings& settings() {return s;} Modified: trunk/utils/spurious_source_code/Makefile =================================================================== --- trunk/utils/spurious_source_code/Makefile 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/utils/spurious_source_code/Makefile 2008-09-22 20:46:52 UTC (rev 3313) @@ -1,6 +1,6 @@ # A newly built whitespace_checker may find new errors, so remove the cache. whitespace_checker: whitespace_checker.adb - gnatmake -gnatafnN -gnatwa -gnaty whitespace_checker + gnatmake -gnatafn -gnatwa -gnaty whitespace_checker rm -fr ../../build/stylecheck clean: Modified: trunk/utils/spurious_source_code/detect =================================================================== --- trunk/utils/spurious_source_code/detect 2008-09-21 16:21:50 UTC (rev 3312) +++ trunk/utils/spurious_source_code/detect 2008-09-22 20:46:52 UTC (rev 3313) @@ -87,37 +87,40 @@ # $1 # The name of the directory to start the search and check in. function detect { - mkdir -p $CACHE_DIR/$1 for d in $1/*; do [[ -d $d ]] && detect $d done TIMESTAMP=$CACHE_DIR/$1/timestamp PREVIOUS_FILE=$1 - for f in $(ls -tr $1/*.h $1/*.cc 2>/dev/null); do - CACHE_BASE=$CACHE_DIR/$f.stylecheck - CACHE_COLOUR=$CACHE_BASE.colourized - CACHE=$CACHE_BASE$COLOUR - if [[ $f -nt $TIMESTAMP || -s $CACHE_BASE || -s $CACHE_COLOUR ]]; then - if [ $f -nt $CACHE ]; then - echo "Checking for errors in $f ..." - check $f - if [ -s $RESULT_FILE ]; then - mv $RESULT_FILE $CACHE - [[ $f -nt $PREVIOUS_FILE && $PREVIOUS_FILE -nt $TIMESTAMP ]] && - touch --reference=$PREVIOUS_FILE $... [truncated message content] |
From: <nas...@us...> - 2008-09-25 20:09:43
|
Revision: 3314 http://widelands.svn.sourceforge.net/widelands/?rev=3314&view=rev Author: nasenbaer_peter Date: 2008-09-25 20:09:29 +0000 (Thu, 25 Sep 2008) Log Message: ----------- * Make new maps translateable * Minor update of German translation Modified Paths: -------------- trunk/maps/Crater.wmf/elemental trunk/maps/Four Mountains.wmf/elemental trunk/maps/Islands at war.wmf/elemental trunk/maps/Last Bastion.wmf/elemental trunk/maps/Mystical Maze.wmf/elemental trunk/maps/Rendez-Vous.wmf/elemental trunk/maps/Swamp Island.wmf/elemental trunk/maps/The Far North.wmf/elemental trunk/maps/The Thaw.wmf/elemental trunk/maps/The pass through the mountains.wmf/elemental trunk/maps/Three Warriors.wmf/elemental trunk/po/de_DE/maps.po trunk/po/de_DE/texts.po trunk/po/de_DE/tribes/atlantids.po trunk/po/de_DE/tribes/empire.po trunk/po/de_DE/widelands.po Modified: trunk/maps/Crater.wmf/elemental =================================================================== --- trunk/maps/Crater.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Crater.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,12 +6,6 @@ map_h="64" nr_players="2" world="greenland" -name="Crater" +name=_"Crater" author="Tarrei" -descr=""Long after a meteor " - "crashed into a couple " - "of mountains life " - "blossoms in the crater. " - "2 Tribes have a fight " - "now about the rich " - "resources."" +descr=_"Long after a meteor crashed into a couple of mountains life blossoms in the crater. Two tribes are now fighting about the rich resources." Modified: trunk/maps/Four Mountains.wmf/elemental =================================================================== --- trunk/maps/Four Mountains.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Four Mountains.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,19 +6,6 @@ map_h="112" nr_players="4" world="winterland" -name="Four Mountains" +name=_ "Four Mountains" author="Quappo" -descr=""Each tribe is " - "surrounded by four " - "mighty mounains. " - "Who will first " - "conquer them and claim " - "the resources for his " - "own tribe? " - "Hint I: Water can be " - "found along the river. " - "Hint II: Snowmen mark " - "additional " - "watersources. Hint 3: " - "Each mountain contains " - "only one resource."" +descr=_ "Each tribe is surrounded by four mighty mounains. Who will first conquer them and claim the resources for his own tribe? Hint I: Water can be found along the river. Hint II: Snowmen mark additional watersources. Hint 3: Each mountain contains only one resource." Modified: trunk/maps/Islands at war.wmf/elemental =================================================================== --- trunk/maps/Islands at war.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Islands at war.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="112" nr_players="2" world="desert" -name="Islands at war" +name=_ "Islands at war" author="Tuxlands" -descr="For centuries you lived peaceful together with the other tribe on the neighboured island. This peace seems to end now. - Your neighbour begins to expand." +descr=_ "For centuries you lived peaceful together with the other tribe on the neighboured island. This peace seems to end now. - Your neighbour begins to expand." Modified: trunk/maps/Last Bastion.wmf/elemental =================================================================== --- trunk/maps/Last Bastion.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Last Bastion.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="64" nr_players="2" world="winterland" -name="Last Bastion" +name=_ "Last Bastion" author="Another Barbarian" -descr="Whimsical Gods didn't answer our prayers. Instead the thousand fold hotter Sun heated up the Earth and melted glaciers and people plunged into the deep. But now - high in the majestic mountains, on the last scrap of land - two surviving tribes are sheltering. Even though the Gods showed mercy and the climate thus turned cooler again the water is still rising and rising. Onto the last secure place - the highest mountain range where the amount of gold and the space to live merely suffice for one tribe - only two opposite paths lead. But remember, be careful... this last living space is also a hard and small place to live. Don't forget to take care about your timber supplies, you'll need them." +descr=_ "Whimsical Gods didn't answer our prayers. Instead the thousand fold hotter Sun heated up the Earth and melted glaciers and people plunged into the deep. But now - high in the majestic mountains, on the last scrap of land - two surviving tribes are sheltering. Even though the Gods showed mercy and the climate thus turned cooler again the water is still rising and rising. Onto the last secure place - the highest mountain range where the amount of gold and the space to live merely suffice for one tribe - only two opposite paths lead. But remember, be careful... this last living space is also a hard and small place to live. Don't forget to take care about your timber supplies, you'll need them." Modified: trunk/maps/Mystical Maze.wmf/elemental =================================================================== --- trunk/maps/Mystical Maze.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Mystical Maze.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="160" nr_players="3" world="greenland" -name="Mystical Maze" +name=_ "Mystical Maze" author="Tuxlands" -descr="There are two big questions around: Who created this unbelievable big maze and what can be found inside?" +descr=_ "There are two big questions around: Who created this unbelievable big maze and what can be found inside?" Modified: trunk/maps/Rendez-Vous.wmf/elemental =================================================================== --- trunk/maps/Rendez-Vous.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Rendez-Vous.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,20 +6,6 @@ map_h="128" nr_players="4" world="desert" -name="Rendez-Vous" +name=_ "Rendez-Vous" author="Quappo" -descr=""Only a small hill in the " - "centre of the map " - "connects these four " - "competing tribes. " - "Lead your army right " - "away to this hill and " - "build a giant " - "stronghold as a sign of " - "your superiority! Hint: " - "In the centre is only " - "space for one " - "stronghold. Water can " - "be found everywhere, " - "so there is no need to " - "send out geologists."" +descr=_ "Only a small hill in the centre of the map connects these four competing tribes. Lead your army right away to this hill and build a giant stronghold as a sign of your superiority! Hint: In the centre is only space for one stronghold. Water can be found everywhere, so there is no need to send out geologists." Modified: trunk/maps/Swamp Island.wmf/elemental =================================================================== --- trunk/maps/Swamp Island.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Swamp Island.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="112" nr_players="3" world="blackland" -name="Swamp Island" +name=_ "Swamp Island" author="Nasenbaer" -descr="It smells like swamp, it looks like swamp and it is swamp. But it is the place you were born and you lived your whole life. If you don't want to loose it, defend it! " +descr=_ "It smells like swamp, it looks like swamp and it is swamp. But it is the place you were born and you lived your whole life. If you don't want to loose it, defend it! " Modified: trunk/maps/The Far North.wmf/elemental =================================================================== --- trunk/maps/The Far North.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/The Far North.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="128" nr_players="2" world="greenland" -name="The Far North" +name=_ "The Far North" author="Another Barbarian" -descr="Some say that impenetrable lands to the far north scared away even the most courageous settlers and the bravest of the brave warriors. Big and old forests, full of big and predatory game, cut across by wetlands and hills were shrouded in mystery. The ones who had managed to come back mentioned tremendous buildings, decorated with carvings and gold from majestic mountain ranges somewhere amongst the wilderness. Dozens of years after only some crumbly ruins remain of these good old times, covered with moss and trees. Their shapes give only an idea about the craftsmanship of ancient constructors. Nobody knows why they (have) disappeared. Nobody knows why. People say that now nothing is blocking the road to wealth. But many will die pulled apart by wolves, engulfed by swamp... encircled by hostile tribes." +descr=_ "Some say that impenetrable lands to the far north scared away even the most courageous settlers and the bravest of the brave warriors. Big and old forests, full of big and predatory game, cut across by wetlands and hills were shrouded in mystery. The ones who had managed to come back mentioned tremendous buildings, decorated with carvings and gold from majestic mountain ranges somewhere amongst the wilderness. Dozens of years after only some crumbly ruins remain of these good old times, covered with moss and trees. Their shapes give only an idea about the craftsmanship of ancient constructors. Nobody knows why they (have) disappeared. Nobody knows why. People say that now nothing is blocking the road to wealth. But many will die pulled apart by wolves, engulfed by swamp... encircled by hostile tribes." Modified: trunk/maps/The Thaw.wmf/elemental =================================================================== --- trunk/maps/The Thaw.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/The Thaw.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="144" nr_players="3" world="greenland" -name="The Thaw" +name=_ "The Thaw" author="Another Barbarian" -descr="Another thaw set in. Three tribes were sheltering form severe winter among majestic mountains. While solstice they listened to the oracle and went on war. Only survivor will sacrifice his enemies treasures on the ancient altar, build there a splendid castle and gain goodwill and the respect of the Gods." +descr=_ "Another thaw set in. Three tribes were sheltering form severe winter among majestic mountains. While solstice they listened to the oracle and went on war. Only survivor will sacrifice his enemies treasures on the ancient altar, build there a splendid castle and gain goodwill and the respect of the Gods." Modified: trunk/maps/The pass through the mountains.wmf/elemental =================================================================== --- trunk/maps/The pass through the mountains.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/The pass through the mountains.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,12 +6,6 @@ map_h="64" nr_players="2" world="greenland" -name="The pass through the mountains" +name=_ "The pass through the mountains" author="Quappo" -descr=""In this mountainous " - "region two princes " - "have settled. Now they " - "are expanding their " - "terretories unaware of " - "the fact that they are " - "not alone! "" +descr=_ "In this mountainous region two princes have settled. Now they are expanding their terretories unaware of the fact that they are not alone!" Modified: trunk/maps/Three Warriors.wmf/elemental =================================================================== --- trunk/maps/Three Warriors.wmf/elemental 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/maps/Three Warriors.wmf/elemental 2008-09-25 20:09:29 UTC (rev 3314) @@ -6,6 +6,6 @@ map_h="96" nr_players="3" world="greenland" -name="Three Warriors" +name=_ "Three Warriors" author="Quappo" -descr="Mighty mountains divide this land into three fertile valleys. But a path connects the valleys and thus seems a fight inescapable! Hint: Water can be found around the lakes." +descr=_ "Mighty mountains divide this land into three fertile valleys. But a path connects the valleys and thus seems a fight inescapable! Hint: Water can be found around the lakes." Modified: trunk/po/de_DE/maps.po =================================================================== --- trunk/po/de_DE/maps.po 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/po/de_DE/maps.po 2008-09-25 20:09:29 UTC (rev 3314) @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Widelands svn3287\n" +"Project-Id-Version: Widelands svn3313\n" "Report-Msgid-Bugs-To: wid...@li...\n" -"POT-Creation-Date: 2008-08-30 20:17+0000\n" -"PO-Revision-Date: 2008-08-30 21:48+0100\n" +"POT-Creation-Date: 2008-09-25 19:53+0000\n" +"PO-Revision-Date: 2008-09-25 21:54+0100\n" "Last-Translator: Peter Schwanemann <nas...@so...>\n" "Language-Team: German <wid...@li...>\n" "MIME-Version: 1.0\n" @@ -80,6 +80,14 @@ msgid "A few miles in front of Gerion Coast lies a small unnamed island. Until now, you have not seen any reason, to ship there, but yesterday a big fireball came from the sky and touched down in it's middle. Is this a sign of the Gods? You believe it is and you hope, that your tribe will find the treasure of this island, before other tribes will follow." msgstr "Ein paar Meilen vor der Gerion Küste liegt seit eh und je eine kleine, namenlose Insel. Bisher gab es für dich nie einen Grund zu ihr herüber zu fahren, doch gestern kam urplötzlich ein Feuerball vom Himmel, der in der Mitte der Insel zu Boden ging. War das ein Zeichen der Götter? Du bist dir sicher, dass es eines war und du hoffst, dass dein Stamm die Schätze dieser Insel finden kann, bevor es einer der anderen Stämme tut." +#: ../../maps/Crater.wmf/elemental:9 +msgid "Crater" +msgstr "Krater" + +#: ../../maps/Crater.wmf/elemental:11 +msgid "Long after a meteor crashed into a couple of mountains life blossoms in the crater. Two tribes are now fighting about the rich resources." +msgstr "" + #: ../../maps/Dry Riverbed.wmf/elemental:7 msgid "Dry Riverbed" msgstr "Trockenes Flussbett" @@ -128,6 +136,14 @@ msgid "Well protected in their mighty fortresses, four power-hungry warlords are completing their schemes to dominate these lands..." msgstr "Gut geschützt in ihren kraftstrotzenden Festungen sitzen vier machtgierige Anführer. Und jeder für sich schmieden Sie Pläne, wie dieser Landstrich einzunehmen sei." +#: ../../maps/Four Mountains.wmf/elemental:9 +msgid "Four Mountains" +msgstr "Vier Berge" + +#: ../../maps/Four Mountains.wmf/elemental:11 +msgid "Each tribe is surrounded by four mighty mounains. Who will first conquer them and claim the resources for his own tribe? Hint I: Water can be found along the river. Hint II: Snowmen mark additional watersources. Hint 3: Each mountain contains only one resource." +msgstr "" + #: ../../maps/Glacier Lake.wmf/elemental:7 msgid "Glacier Lake" msgstr "Gletschersee" @@ -152,6 +168,14 @@ msgid "After an impact of an asteroid and the following harsh winter, three isles are connected by ice and stone, setting an end to the peaceful coexistence of three tribes." msgstr "Nach dem Einschlag eines Asteroiden und dem darauffolgenden, harten Winter werden urplötzlich drei Inseln durch Eis und Felstrümmer verbunden. Dies ist das Ende des friedlichen Miteinander der drei Inselstämme." +#: ../../maps/Islands at war.wmf/elemental:9 +msgid "Islands at war" +msgstr "Inseln im Krieg" + +#: ../../maps/Islands at war.wmf/elemental:11 +msgid "For centuries you lived peaceful together with the other tribe on the neighboured island. This peace seems to end now. - Your neighbour begins to expand." +msgstr "" + #: ../../maps/Lake of tranquility.wmf/elemental:7 msgid "Lake of Tranquility" msgstr "See der Ruhe" @@ -160,6 +184,22 @@ msgid "This lake, deep in the most ancient forests, has long been known for its beauty and idyllic peace. Yet, its sanctity has been disturbed now, as two hostile tribes arrive at its shores..." msgstr "Dieser See, in den Tiefen der ältesten Wälder, war lange Zeit für seine Schönheit und den idyllischen Frieden bekannt. Doch seit kurzer Zeit streifen zwei gefährliche Stämme um ihn herum." +#: ../../maps/Last Bastion.wmf/elemental:9 +msgid "Last Bastion" +msgstr "Die letzte Bastion" + +#: ../../maps/Last Bastion.wmf/elemental:11 +msgid "Whimsical Gods didn't answer our prayers. Instead the thousand fold hotter Sun heated up the Earth and melted glaciers and people plunged into the deep. But now - high in the majestic mountains, on the last scrap of land - two surviving tribes are sheltering. Even though the Gods showed mercy and the climate thus turned cooler again the water is still rising and rising. Onto the last secure place - the highest mountain range where the amount of gold and the space to live merely suffice for one tribe - only two opposite paths lead. But remember, be careful... this last living space is also a hard and small place to live. Don't forget to take care about your timber supplies, you'll need them." +msgstr "" + +#: ../../maps/Mystical Maze.wmf/elemental:9 +msgid "Mystical Maze" +msgstr "Mystisches Labyrinth" + +#: ../../maps/Mystical Maze.wmf/elemental:11 +msgid "There are two big questions around: Who created this unbelievable big maze and what can be found inside?" +msgstr "" + #: ../../maps/Plateau.wmf/elemental:7 msgid "The Green Plateau" msgstr "Das grüne Plateau" @@ -168,6 +208,14 @@ msgid "You are standing on an island, crowned by mighty mountains, which keep a wonderful and mighty treasure in their middle - The Green Plateau, which is hard to get, but easy to lose, so if you want it, be aware of the other clans." msgstr "Du stehst auf einer Insel, die von einem mächtigen Berg gekrönt wird. In ihm steckt der große Schatz dieser Insel - das grüne Plateau. Es ist schwer zu bekommen und schnell wieder verloren. Wenn Du es also halten willst, beobachte jeden Schritt Deiner Gegner." +#: ../../maps/Rendez-Vous.wmf/elemental:9 +msgid "Rendez-Vous" +msgstr "Rendez-Vous" + +#: ../../maps/Rendez-Vous.wmf/elemental:11 +msgid "Only a small hill in the centre of the map connects these four competing tribes. Lead your army right away to this hill and build a giant stronghold as a sign of your superiority! Hint: In the centre is only space for one stronghold. Water can be found everywhere, so there is no need to send out geologists." +msgstr "" + #: ../../maps/Riverlands.wmf/elemental:7 msgid "Riverlands" msgstr "Land der Flüsse" @@ -176,6 +224,22 @@ msgid "A mystical land, full of different landscapes, which are all crossed by a handful of big rivers." msgstr "Ein mystisches Land, voll von verschiedenen Landschaften, die alle durch eine handvoll großer Flüsse durchflossen werden." +#: ../../maps/Swamp Island.wmf/elemental:9 +msgid "Swamp Island" +msgstr "Sumpf Insel" + +#: ../../maps/Swamp Island.wmf/elemental:11 +msgid "It smells like swamp, it looks like swamp and it is swamp. But it is the place you were born and you lived your whole life. If you don't want to loose it, defend it! " +msgstr "" + +#: ../../maps/The Far North.wmf/elemental:9 +msgid "The Far North" +msgstr "Der weite Norden" + +#: ../../maps/The Far North.wmf/elemental:11 +msgid "Some say that impenetrable lands to the far north scared away even the most courageous settlers and the bravest of the brave warriors. Big and old forests, full of big and predatory game, cut across by wetlands and hills were shrouded in mystery. The ones who had managed to come back mentioned tremendous buildings, decorated with carvings and gold from majestic mountain ranges somewhere amongst the wilderness. Dozens of years after only some crumbly ruins remain of these good old times, covered with moss and trees. Their shapes give only an idea about the craftsmanship of ancient constructors. Nobody knows why they (have) disappeared. Nobody knows why. People say that now nothing is blocking the road to wealth. But many will die pulled apart by wolves, engulfed by swamp... encircled by hostile tribes." +msgstr "" + #: ../../maps/The Oasis Triangle.wmf/elemental:7 msgid "The Oasis Triangle" msgstr "Das Oasen-Dreieck" @@ -184,6 +248,14 @@ msgid "There is something mystical, like a grey atmosphere, about this three Oasis, which noone found out, yet. Perhaps you will be the one, but be aware of the others, who are searching, too!" msgstr "Es ist etwas Mystisches, wie eine graue Atmosphäre, dass diese drei Oasen umhüllt. Und doch hat bisher niemand den Grund hierfür finden können. Vielleicht wirst Du der Erste sein, der das Geheimnis lüftet. Doch bedenke, dass Du nicht der Einzige bist, der danach sucht." +#: ../../maps/The Thaw.wmf/elemental:9 +msgid "The Thaw" +msgstr "Die Schneeschmelze" + +#: ../../maps/The Thaw.wmf/elemental:11 +msgid "Another thaw set in. Three tribes were sheltering form severe winter among majestic mountains. While solstice they listened to the oracle and went on war. Only survivor will sacrifice his enemies treasures on the ancient altar, build there a splendid castle and gain goodwill and the respect of the Gods." +msgstr "" + #: ../../maps/The big lake.wmf/elemental:7 msgid "The big lake" msgstr "Der große See" @@ -200,6 +272,22 @@ msgid "Another strange test by the Gods. To reach the other side, there seems to be no other way, than occupying the land of your enemies." msgstr "Ein anderer seltsamer Test der Götter. Um die andere Seite zu erreichen, scheint es keinen anderen Weg zu geben, als das Land deiner Gegner zu besetzen." +#: ../../maps/The pass through the mountains.wmf/elemental:9 +msgid "The pass through the mountains" +msgstr "Der Pass durch die Berge" + +#: ../../maps/The pass through the mountains.wmf/elemental:11 +msgid "In this mountainous region two princes have settled. Now they are expanding their terretories unaware of the fact that they are not alone!" +msgstr "" + +#: ../../maps/Three Warriors.wmf/elemental:9 +msgid "Three Warriors" +msgstr "Drei Krieger" + +#: ../../maps/Three Warriors.wmf/elemental:11 +msgid "Mighty mountains divide this land into three fertile valleys. But a path connects the valleys and thus seems a fight inescapable! Hint: Water can be found around the lakes." +msgstr "" + #: ../../maps/Two frontiers.wmf/elemental:7 msgid "Two Frontiers" msgstr "Zwei Grenzen" @@ -223,3 +311,4 @@ #: ../../maps/Wisent Valley.wmf/elemental:11 msgid "It seems as if this magical valley was inhabitated by wisents since the beginning of days. When your tribe came to this place, you were sure that it offers enough space for a peaceful life. But can you tribe live in peace with your neighbours?" msgstr "Es scheint, als ob dieses magische Tal schon seit dem Anbeginn der Zeit von Wisenten bewohnt und beherrscht wurde. Als dein Volk an diesen Platz kam, warst du dir noch sicher, dass es hier mehr als genug Platz für ein friedliches Leben gibt, doch kann dein Volk auch wirklich friedlich mit euren Nachbarn zusammenleben?" + Modified: trunk/po/de_DE/texts.po =================================================================== --- trunk/po/de_DE/texts.po 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/po/de_DE/texts.po 2008-09-25 20:09:29 UTC (rev 3314) @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Widelands svn3287\n" +"Project-Id-Version: Widelands svn3313\n" "Report-Msgid-Bugs-To: wid...@li...\n" -"POT-Creation-Date: 2008-08-30 20:17+0000\n" -"PO-Revision-Date: 2008-08-30 21:38+0100\n" +"POT-Creation-Date: 2008-09-25 19:53+0000\n" +"PO-Revision-Date: 2008-09-25 21:41+0100\n" "Last-Translator: Peter Schwanemann <nas...@so...>\n" "Language-Team: German <wid...@li...>\n" "MIME-Version: 1.0\n" @@ -514,7 +514,7 @@ msgstr "E Zeigt das Ereignismenü" #: ../../txts/editor_readme:27 -msgid "F Toggle Fullscreen" +msgid "F Toggles fullscreen" msgstr "F Schaltet den Vollbildmodus an/aus" #: ../../txts/editor_readme:29 @@ -534,90 +534,94 @@ msgstr "T Zeigt das Werkzeugmenü" #: ../../txts/editor_readme:37 +msgid "I Activates information tool" +msgstr "I Aktiviert das Informations Werkzeug" + +#: ../../txts/editor_readme:39 msgid "CTRL+L Load Map" msgstr "CTRL+L Karte laden" -#: ../../txts/editor_readme:39 +#: ../../txts/editor_readme:41 msgid "CTRL+S Save Map" msgstr "CTRL+S Karte speichern" -#: ../../txts/editor_readme:41 +#: ../../txts/editor_readme:43 msgid "1-0 Changes tools size" msgstr "1-0 Ändert die Werkzeuggröße" -#: ../../txts/editor_readme:43 +#: ../../txts/editor_readme:45 msgid "SHIFT (Hold) Selects first alternative tool while pressed" msgstr "SHIFT(gehalten) Wählt das erste alternative Werkzeug aus" -#: ../../txts/editor_readme:45 +#: ../../txts/editor_readme:47 msgid "ALT (Hold) Selects second alternative tool while pressed" msgstr "ALT(gehalten) Wählt das zweite alternative Werkzeug aus" -#: ../../txts/editortips:13 ../../txts/editortips~:13 +#: ../../txts/editortips:13 msgid "You can find general help for the editor as well as a short tutorial in our wiki at www.widelands.org" msgstr "Allgemeine Hilfe für den Editor, sowie ein kurzes Tutorial können in unserem Wiki auf www.widelands.org gefunden werden." -#: ../../txts/editortips:17 ../../txts/editortips~:17 +#: ../../txts/editortips:17 msgid "You can select multiple nature objects (bobs) if you hold down CTRL during selection. If you than click on the map, one of the selected objects will be randomly placed." msgstr "Du kannst mehrere Naturobjekte (Bobs) selektieren, wenn du bei der Auswahl mit der Maus STRG gedrückt hältst. Beim Setzen der Objekte wird dann zufällig eines der zuvor selektierten Objekte gewählt." -#: ../../txts/editortips:21 ../../txts/editortips~:21 +#: ../../txts/editortips:21 msgid "Like with natural objects (bobs), you can also select multiple animals or groundtextures with CTRL + Mouseclick." msgstr "Genau wie bei den Naturobjekten (Bobs) kannst du auch mehrere Tiere oder Bodentexturen mit STRG + Mausklick selektieren." -#: ../../txts/editortips:25 ../../txts/editortips~:25 +#: ../../txts/editortips:25 msgid "Holding down SHIFT switches first alternative tool on. This tool is in most cases the complete difference of the normal tool (for example deletion of an object instead of placing one)." msgstr "Wenn du UMSCHALT gedrückt hältst wird das erste alternative Werkzeug aktiviert. Dieses Werkzeug ist in den meisten Fällen das genaue Gegenteil des eigentlichen Werkzeugs (z.B. Entfernen statt Setzen)." -#: ../../txts/editortips:29 ../../txts/editortips~:29 +#: ../../txts/editortips:29 msgid "Holding down ALT switches second alternative tool on (if it exists)." msgstr "Wenn du ALT gedrückt hältst, wird das zweite alternative Werkzeug aktiviert (falls es existiert)." -#: ../../txts/editortips:33 ../../txts/editortips~:33 +#: ../../txts/editortips:33 msgid "The number keys (1 - 0) allow you to directly set the size of the selected area around your mouse." msgstr "Die Zahlentasten (1 - 0) ermöglichen dir direkte die Größe der Flächenauswahl um den Mauszeiger zu setzen." -#: ../../txts/editortips:37 ../../txts/editortips~:37 +#: ../../txts/editortips:37 msgid "SPACE key behaves like in normal game. It switches buildhelp on or off." msgstr "Die LEERTASTE verhält sich wie im normalen Spiel. Sie schaltet die Bauhilfe an oder aus." -#: ../../txts/editortips:41 ../../txts/editortips~:41 +#: ../../txts/editortips:41 msgid "The tools for events, triggers, event chains and objectives are still under heavy development. If you've got a question or found a problem, meet us in the editor forums at www.widelands.org" msgstr "Die Werkzeuge für Ereignisse, Auslöser, Ereignisketten und Aufgaben werden zu Zeit noch sehr stark weiterentwickelt. Falls du Fragen hast oder einen Fehler entdeckt hast, ist das Editorforum auf www.widelands.org ein gute Anlaufpunkt für dich." -#: ../../txts/editortips:45 ../../txts/editortips~:45 +#: ../../txts/editortips:45 msgid "You can find a reference for all triggers and events in our wiki at widelands.org." msgstr "In unserem Wiki auf www.widelands.org findest du auch eine Referenz für alle derzeit vorhandenen Auslöser und Ereignisse." -#: ../../txts/gametips:13 ../../txts/gametips~:13 +#: ../../txts/gametips:13 msgid "Some buildings, such as the vineyard, have a very small working area. If the building is surrounded with trees or roads, production will stop." msgstr "Manche Gebäude (zum Beispiel Bauern- oder Weinhöfe) haben nur einen kleinen Arbeitsbereich. Diese Gebäude können nicht produzieren, wenn sie von Straßen und/oder Bäumen eingekreist sind." -#: ../../txts/gametips:17 ../../txts/gametips~:17 +#: ../../txts/gametips:17 msgid "Keep an eye on fisherman's huts; after fish resources are exhausted in the working area, production will stop." msgstr "Beobachte die Fischerhütten. Wenn die Fischressourcen schwinden, werden die Fischer aufhören zu arbeiten." -#: ../../txts/gametips:21 ../../txts/gametips~:21 +#: ../../txts/gametips:21 msgid "The building process will only start after a road is built to the construction site." msgstr "Erst wenn eine Straße die Baustelle erreicht, wird mit dem Bau begonnen." -#: ../../txts/gametips:25 ../../txts/gametips~:25 +#: ../../txts/gametips:25 msgid "Be sure to send a geologist to survey sites before building a well or a mine." msgstr "Sende erst einen Geologen zur Bodenerkundung aus, bevor du Minen oder Brunnen baust." -#: ../../txts/gametips:29 ../../txts/gametips~:29 +#: ../../txts/gametips:29 msgid "Your territory can be expanded by building various war buildings - Sentry, Fortress, Barracks, etc." msgstr "Dein Territorium kannst du durch Errichten verschiedener Militärgebäude wie Baracken, Wachstuben oder Festungen erweitern." -#: ../../txts/gametips:33 ../../txts/gametips~:33 +#: ../../txts/gametips:33 msgid "Miners will only work if supplied with food." msgstr "Bergarbeiter arbeiten nur, wenn sie mit genügend Verpflegung versorgt werden." -#: ../../txts/gametips:37 ../../txts/gametips~:37 +#: ../../txts/gametips:37 msgid "Split your roads into shorter sections by planting some flags. This will speed up transportation of your wares." msgstr "Teile deine Straßen, durch Flaggen, in viele kleine Teile auf. Das wird den Transport deiner Waren beschleunigen." -#: ../../txts/gametips:41 ../../txts/gametips~:41 +#: ../../txts/gametips:41 msgid "Always build a forester and a ranger's hut, so you will not run out of trunks and food." msgstr "Baue immer ein paar Försterhütten auf, damit du nie ohne Holz da stehst. Ein Wildhüter erhält den Wildbestand des Waldes." @@ -625,10 +629,9 @@ msgid "Any further questions? Our FAQs, the wiki and of course our community forums can be found at www.widelands.org." msgstr "Irgendwelche Fragen? Dann triff uns auf www.widelands.org. Dort findest du unsere FAQs, das Wiki und natürlich unsere Community Foren." -#: ../../txts/gametips:49 ../../txts/gametips~:49 +#: ../../txts/gametips:49 msgid "Use priority buttons in building window to adjust delivery of a specific ware." msgstr "Benutze die Prioritätsknöpfe im Fenster der Gebäude, um die Anlieferung von speziellen Waren zu steuern." -#: ../../txts/gametips~:45 -msgid "Any further questions? Meet us at www.widelands.org. There are our FAQs, the Wiki and of course our Community Forums." -msgstr "Irgendwelche Fragen? Dann triff uns auf www.widelands.org. Dort findest du unsere FAQs, das Wiki und natürlich unsere Community Foren." +#~ msgid "Any further questions? Meet us at www.widelands.org. There are our FAQs, the Wiki and of course our Community Forums." +#~ msgstr "Irgendwelche Fragen? Dann triff uns auf www.widelands.org. Dort findest du unsere FAQs, das Wiki und natürlich unsere Community Foren." Modified: trunk/po/de_DE/tribes/atlantids.po =================================================================== --- trunk/po/de_DE/tribes/atlantids.po 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/po/de_DE/tribes/atlantids.po 2008-09-25 20:09:29 UTC (rev 3314) @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Widelands svn3287\n" +"Project-Id-Version: Widelands svn3313\n" "Report-Msgid-Bugs-To: wid...@li...\n" -"POT-Creation-Date: 2008-08-30 20:17+0000\n" -"PO-Revision-Date: 2008-08-19 16:56+0100\n" +"POT-Creation-Date: 2008-09-25 19:53+0000\n" +"PO-Revision-Date: 2008-09-25 22:00+0100\n" "Last-Translator: Peter Schwanemann <nas...@so...>\n" "Language-Team: LANGUAGE <wid...@li...>\n" "MIME-Version: 1.0\n" @@ -165,7 +165,7 @@ #: ../../../tribes/atlantids/conf:19 msgid "Atlanteans" -msgstr "Atlantaner" +msgstr "Atlanter" #: ../../../tribes/atlantids/conf:20 msgid "This tribe is known from the oldest tales. The sons and daughters of Atlantis." @@ -177,7 +177,7 @@ #: ../../../tribes/atlantids/wares/advanced_shield/conf:3 msgid "This shields are used by the best soldiers of the atlantids" -msgstr "Diese Schilde werden nur von den besten Soldaten der Atlantaner benutzt." +msgstr "Diese Schilde werden nur von den besten Soldaten der Atlanter benutzt." #: ../../../tribes/atlantids/wares/bakingtray/conf:2 msgid "Bakingtray" @@ -193,7 +193,7 @@ #: ../../../tribes/atlantids/wares/blackroot/conf:3 msgid "Blackroots are a special kind of roots. The Atlantids like their strong taste and use its flour for making bread." -msgstr "Schwarzwurzeln sind eine spezielle Wurzelart. Die Atlantaner mögen den starken Geschmack und benutzen gemahlene Schwarzwurzeln beim backen ihrer Brote." +msgstr "Schwarzwurzeln sind eine spezielle Wurzelart. Die Atlanter mögen den starken Geschmack und benutzen gemahlene Schwarzwurzeln beim backen ihrer Brote." #: ../../../tribes/atlantids/wares/blackrootflour/conf:2 msgid "Blackrootflour" @@ -233,7 +233,7 @@ #: ../../../tribes/atlantids/wares/corn/conf:3 msgid "This corn is the base of the fine cornflour, that every atlatian baker needs for a good bread." -msgstr "Mais ist die Basis für Maismehl, was wiederum von jedem atlantaner Bäcker verwandt wird um Brot zu backen." +msgstr "Mais ist die Basis für Maismehl, was wiederum von jedem atlanter Bäcker verwandt wird um Brot zu backen." #: ../../../tribes/atlantids/wares/cornflour/conf:2 msgid "Cornflour" @@ -241,7 +241,7 @@ #: ../../../tribes/atlantids/wares/cornflour/conf:3 msgid "Cornflour is produced out of corn and is one of three parts of the atlantian bread." -msgstr "Maismehl wird aus Mais hergestellt und ist eine von drei Zutaten für das atlantanische Brot." +msgstr "Maismehl wird aus Mais hergestellt und ist eine von drei Zutaten für das atlantische Brot." #: ../../../tribes/atlantids/wares/diamond/conf:2 msgid "Diamond" @@ -257,7 +257,7 @@ #: ../../../tribes/atlantids/wares/double_trident/conf:3 msgid "Already one of the best tridents of the atlantids. Only used by very good fighters." -msgstr "Bereits eine der besten und gefährlichsten Dreizack-Arten der Atlantaner. Wird nur von sehr guten Kämpfern benutzt." +msgstr "Bereits eine der besten und gefährlichsten Dreizack-Arten der Atlanter. Wird nur von sehr guten Kämpfern benutzt." #: ../../../tribes/atlantids/wares/fire_tongs/conf:2 msgid "Fire Tongs" @@ -273,7 +273,7 @@ #: ../../../tribes/atlantids/wares/fish/conf:3 msgid "Fish is one of the biggest food-resources of the atlantids." -msgstr "Fisch ist eine der größten Lebensmittelquellen der Atlantaner." +msgstr "Fisch ist eine der größten Lebensmittelquellen der Atlanter." #: ../../../tribes/atlantids/wares/fishing_net/conf:2 msgid "Fishing Net" @@ -292,14 +292,12 @@ msgstr "Gold ist eines der wertvollsten Materialen. Nur wichtige Sachen werden mit ihm geschmückt." #: ../../../tribes/atlantids/wares/golden_tabard/conf:2 -#, fuzzy msgid "Golden Tabart" -msgstr "Wappenrock" +msgstr "goldener Wappenrock" #: ../../../tribes/atlantids/wares/golden_tabard/conf:3 -#, fuzzy msgid "A special tabard for atlantian soldiers." -msgstr "Dies ist die Grundwaffe für jeden atlantaner Soldaten." +msgstr "Ein spezieller Wappenrock für atlanter Soldaten." #: ../../../tribes/atlantids/wares/goldore/conf:2 msgid "Goldore" @@ -331,7 +329,7 @@ #: ../../../tribes/atlantids/wares/heavy_double_trident/conf:3 msgid "This is the most dangerous weapon of the atlantian military. Only the best of the best soldiers may use it." -msgstr "Dies ist die absolut gefährlichste Waffe des atlantanischen Militärs. Nur die allerbesten Soldaten dürfen sie benutzen." +msgstr "Dies ist die absolut gefährlichste Waffe des atlantischen Militärs. Nur die allerbesten Soldaten dürfen sie benutzen." #: ../../../tribes/atlantids/wares/hook_pole/conf:2 msgid "Hook pole" @@ -347,7 +345,7 @@ #: ../../../tribes/atlantids/wares/hunting_bow/conf:3 msgid "This bow is used by the atlantian hunter." -msgstr "Dieser Bogen wird vom atlantanischen Jäger verwandt." +msgstr "Dieser Bogen wird vom atlantischen Jäger verwandt." #: ../../../tribes/atlantids/wares/iron/conf:2 msgid "Iron" @@ -371,7 +369,7 @@ #: ../../../tribes/atlantids/wares/light_trident/conf:3 msgid "This is the basic weapon for atlantian soldiers" -msgstr "Dies ist die Grundwaffe für jeden atlantaner Soldaten." +msgstr "Dies ist die Grundwaffe für jeden atlanter Soldaten." #: ../../../tribes/atlantids/wares/long_trident/conf:2 msgid "Long Trident" @@ -379,7 +377,7 @@ #: ../../../tribes/atlantids/wares/long_trident/conf:3 msgid "This is an advanced trident for more experienced soldiers." -msgstr "Dies ist ein verbesserter Dreizack für die etwas erfahreneren Soldaten" +msgstr "Dies ist ein verbesserter Dreizack für die etwas erfahreneren Soldaten." #: ../../../tribes/atlantids/wares/meat/conf:2 msgid "Meat" @@ -387,7 +385,7 @@ #: ../../../tribes/atlantids/wares/meat/conf:3 msgid "Meat is one food-ressource of the Atlantids." -msgstr "Fleisch ist eine Nahrungsquelle der Atlantaner." +msgstr "Fleisch ist eine Nahrungsquelle der Atlanter." #: ../../../tribes/atlantids/wares/milking_tongs/conf:2 msgid "Milking Tongs" @@ -419,7 +417,7 @@ #: ../../../tribes/atlantids/wares/planks/conf:3 msgid "Planks are an important build material of the Atlantids." -msgstr "Bretter sind ein wichtiges Baumaterial der Atlantaner" +msgstr "Bretter sind ein wichtiges Baumaterial der Atlanter" #: ../../../tribes/atlantids/wares/saw/conf:2 msgid "Saw" @@ -451,7 +449,7 @@ #: ../../../tribes/atlantids/wares/smoked_fish/conf:3 msgid "This is smoked fish - As no Atlantid likes raw fish, smoking is the most common way to make it eatable." -msgstr "Dieser Fisch ist geräuchert - da die Atlantaner kein rohen Fisch mögen, ist dies ein beliebter Weg um den Fisch genießbar zu machen." +msgstr "Dieser Fisch ist geräuchert - da die Atlanter kein rohen Fisch mögen, ist dies ein beliebter Weg um den Fisch genießbar zu machen." #: ../../../tribes/atlantids/wares/smoked_meat/conf:2 msgid "Smoked meat" @@ -459,7 +457,7 @@ #: ../../../tribes/atlantids/wares/smoked_meat/conf:3 msgid "This is smoked meat - as no Atlantian likes to eat raw meat, smoking meat is a common way to make it eatable." -msgstr "Dieses Fleisch ist geräuchert - da die Atlantaner kein rohes Fleisch mögen, ist dies ein beliebter Weg um das Fleisch genießbar zu machen." +msgstr "Dieses Fleisch ist geräuchert - da die Atlanter kein rohes Fleisch mögen, ist dies ein beliebter Weg um das Fleisch genießbar zu machen." #: ../../../tribes/atlantids/wares/spidercloth/conf:2 msgid "Spidercloth" @@ -499,7 +497,7 @@ #: ../../../tribes/atlantids/wares/stone/conf:3 msgid "Stone is one basic build ware of the Atlantids." -msgstr "Steine gehören zu den Grundbaustoffen der Atlantaner" +msgstr "Steine gehören zu den Grundbaustoffen der Atlanter." #: ../../../tribes/atlantids/wares/tabard/conf:2 msgid "Tabart" @@ -515,7 +513,7 @@ #: ../../../tribes/atlantids/wares/trunk/conf:3 msgid "Trunks are the base for planks, which are used in nearly every building of the atlantids." -msgstr "Stämme sind die Basis von Brettern, die in fast jedem Gebäude der Atlantaner verwendet werden." +msgstr "Stämme sind die Basis von Brettern, die in fast jedem Gebäude der Atlanter verwendet werden." #: ../../../tribes/atlantids/wares/water/conf:2 msgid "Water" @@ -647,6 +645,6 @@ #~ msgid "Coalearth" #~ msgstr "Kohlenerde" - #~ msgid "This earth is found in the deep coal mines. It needs to be enhanced to get proper coal" #~ msgstr "Diese Erde wird in den tiefen Kohleminen gefunden. Sie muss noch weiterverarbeitet werden um zu hochklassiger Kohle zu werden." + Modified: trunk/po/de_DE/tribes/empire.po =================================================================== --- trunk/po/de_DE/tribes/empire.po 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/po/de_DE/tribes/empire.po 2008-09-25 20:09:29 UTC (rev 3314) @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Widelands svn3287\n" +"Project-Id-Version: Widelands svn3313\n" "Report-Msgid-Bugs-To: wid...@li...\n" -"POT-Creation-Date: 2008-08-30 20:17+0000\n" -"PO-Revision-Date: 2008-08-19 16:55+0100\n" +"POT-Creation-Date: 2008-09-25 19:53+0000\n" +"PO-Revision-Date: 2008-09-25 22:01+0100\n" "Last-Translator: Peter Schwanemann <nas...@so...>\n" "Language-Team: German <wid...@li...>\n" "MIME-Version: 1.0\n" @@ -205,7 +205,7 @@ #: ../../../tribes/empire/conf:19 msgid "Empire" -msgstr "Kaiserreich" +msgstr "Imperium" #: ../../../tribes/empire/conf:20 msgid "This is the culture of the roman Empire." @@ -662,15 +662,12 @@ #~ msgid "Vintagery" #~ msgstr "Winzerei" - #~ msgid "Bakingtray" #~ msgstr "Backholz" - #~ msgid "Herdsman" #~ msgstr "Schäfer" - #~ msgid "Coalearth" #~ msgstr "Rohkohle" - #~ msgid "This earth is found in the deep coal mines. It needs to be enhanced to get proper coal" #~ msgstr "Diese Rohkohle wird tief in den Minen abgebaut und muss erst in einer Köhlerei weiterverarbeitet werden, um die volle Energie nutzbar zu machen." + Modified: trunk/po/de_DE/widelands.po =================================================================== --- trunk/po/de_DE/widelands.po 2008-09-22 20:46:52 UTC (rev 3313) +++ trunk/po/de_DE/widelands.po 2008-09-25 20:09:29 UTC (rev 3314) @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Widelands svn3295\n" +"Project-Id-Version: Widelands svn3313\n" "Report-Msgid-Bugs-To: wid...@li...\n" -"POT-Creation-Date: 2008-09-03 20:50+0200\n" -"PO-Revision-Date: 2008-09-03 20:50+0100\n" +"POT-Creation-Date: 2008-09-25 21:53+0200\n" +"PO-Revision-Date: 2008-09-25 21:40+0100\n" "Last-Translator: Peter Schwanemann <nas...@so...>\n" "Language-Team: German <wid...@li...>\n" "MIME-Version: 1.0\n" @@ -101,7 +101,7 @@ msgid "Ware help" msgstr "Waren Hilfe" -#: ../../src/wlapplication.cc:853 +#: ../../src/wlapplication.cc:854 msgid "" "\n" "Sorry, no double-instance debugging on WIN32.\n" @@ -111,11 +111,11 @@ "Entschuldigung, aber der Doppelstart läuft unter Windows nicht.\n" "\n" -#: ../../src/wlapplication.cc:856 +#: ../../src/wlapplication.cc:857 msgid "--double is disabled. This is not a debug build!" msgstr "--double ist nicht möglich, dies ist kein Debug-Build!" -#: ../../src/wlapplication.cc:947 +#: ../../src/wlapplication.cc:948 #, c-format msgid "" "This is Widelands-%s\n" @@ -124,7 +124,7 @@ "Dies ist Widelands-%s\n" "\n" -#: ../../src/wlapplication.cc:949 +#: ../../src/wlapplication.cc:950 msgid "" "Usage: widelands <option0>=<value0> ... <optionN>=<valueN>\n" "\n" @@ -132,7 +132,7 @@ "Benutzung: widelands <Option0>=<Wert0> ... <OptionN>=<WertN>\n" "\n" -#: ../../src/wlapplication.cc:950 +#: ../../src/wlapplication.cc:951 msgid "" "Options:\n" "\n" @@ -140,7 +140,7 @@ "Optionen:\n" "\n" -#: ../../src/wlapplication.cc:954 +#: ../../src/wlapplication.cc:955 msgid "" " --<config-entry-name>=value overwrites any config file setting\n" "\n" @@ -160,7 +160,7 @@ " --coredump=[yes|no] Erzeugt ein Speicherabbild bei Segmentfehlern.\n" " Schaltet den Mechanismus von SDL ab.\n" -#: ../../src/wlapplication.cc:963 +#: ../../src/wlapplication.cc:964 msgid "" " --nosound Starts the game with sound disabled.\n" " --nozip Do not save files as binary zip archives.\n" @@ -187,7 +187,7 @@ " direkt.\n" "\n" -#: ../../src/wlapplication.cc:976 +#: ../../src/wlapplication.cc:977 msgid "" " --double Start the game twice (for localhost network\n" " testing)\n" @@ -197,11 +197,11 @@ " localhost Netz)\n" "\n" -#: ../../src/wlapplication.cc:980 +#: ../../src/wlapplication.cc:981 msgid " --help Show this help\n" msgstr " --help Zeigt diese Hilfe\n" -#: ../../src/wlapplication.cc:984 +#: ../../src/wlapplication.cc:985 msgid "" "Bug reports? Suggestions? Check out the project website:\n" " http://www.sourceforge.net/projects/widelands\n" @@ -215,11 +215,11 @@ "Wir wünschen Dir viel Spaß beim Spielen!\n" "\n" -#: ../../src/wlapplication.cc:1124 +#: ../../src/wlapplication.cc:1125 msgid "Unexpected error during the game" msgstr "Unerwarteter Fehler im Spielverlauf" -#: ../../src/wlapplication.cc:1128 +#: ../../src/wlapplication.cc:1129 msgid "" "\n" "\n" @@ -229,7 +229,7 @@ "\n" "Bitte melde dieses Problem, um uns die Möglichkeit zu geben Widelands zu verbessern. Weitere Informationen findest du in der Standard-Ausgabe (stdout.txt unter Windows). Du benutzt Version " -#: ../../src/wlapplication.cc:1134 +#: ../../src/wlapplication.cc:1135 msgid "" ". Please add this information to your report.\n" "\n" @@ -239,24 +239,24 @@ "\n" "Widelands versucht eine Speicherung durchzuführen, wenn ein Fehler auftrat. Somit ist es oft - wenn auch nicht immer - möglich das Spiel wieder zu laden und fortzusetzen.\n" -#: ../../src/wlapplication.cc:1338 ../../src/nethost.cc:699 +#: ../../src/wlapplication.cc:1305 ../../src/nethost.cc:699 msgid "Player" msgstr "Spieler" -#: ../../src/wlapplication.cc:1413 ../../src/nethost.cc:300 +#: ../../src/wlapplication.cc:1380 ../../src/nethost.cc:300 #: ../../src/netclient.cc:137 msgid "Preparing game" msgstr "Bereite Spiel vor" -#: ../../src/wlapplication.cc:1475 +#: ../../src/wlapplication.cc:1513 msgid "End of replay" msgstr "Ende der Spielaufzeichnung" -#: ../../src/wlapplication.cc:1477 +#: ../../src/wlapplication.cc:1515 msgid "The end of the replay has been reached and the game has been paused. You may unpause the game and continue watching if you want to." msgstr "Das Ende der Spielaufzeichnung wurde erreicht und das Spiel wurde auf Pause gesetzt. Wenn du möchtest, kannst du die Wiedergabe fortsetzen und weitergucken." -#: ../../src/wlapplication.cc:1529 ../../src/game.cc:358 ../../src/game.cc:393 +#: ../../src/wlapplication.cc:1567 ../../src/game.cc:364 ../../src/game.cc:401 msgid "Loading..." msgstr "Laden..." @@ -430,7 +430,7 @@ msgid "Loading a map" msgstr "Lade eine Karte" -#: ../../src/game.cc:303 ../../src/game.cc:350 +#: ../../src/game.cc:303 ../../src/game.cc:350 ../../src/game.cc:382 msgid "Preloading map" msgstr "Lade Teile der Karte vor" @@ -442,7 +442,7 @@ msgid "Loading map" msgstr "Lade Karte" -#: ../../src/game.cc:448 +#: ../../src/game.cc:456 msgid "Creating player infrastructure" msgstr "Erstelle Infrastruktur eines Spielers" @@ -660,7 +660,7 @@ #: ../../src/editor/ui_menus/editor_main_menu_save_map_make_directory.cc:68 #: ../../src/editor/ui_menus/event_move_view_option_menu.cc:188 #: ../../src/editor/ui_menus/event_unhide_area_option_menu.cc:263 -#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:92 +#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:93 #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:216 #: ../../src/editor/ui_menus/editor_main_menu_save_map.cc:136 #: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:98 @@ -1150,8 +1150,8 @@ msgstr "Decke Aufgabe auf" #: ../../src/events/event_factory.cc:85 -msgid "Reveal (or hide) an objective" -msgstr "Decke eine Aufgabe auf oder verstecke sie" +msgid "Reveal an objective" +msgstr "Decke Aufgabe auf" #: ../../src/events/event_factory.cc:88 msgid "Reveal scenario" @@ -1210,7 +1210,7 @@ msgstr "Dieser Auslöser ändert seinen Status nie von selbst. Das ist sinnvoll, wenn ein Ereignis erst nach einem anderen passieren soll." #: ../../src/trigger/trigger_factory.cc:57 -msgid "Own Area Trigger" +msgid "Ownership Trigger" msgstr "Gebiets-Besitzer Auslöser" #: ../../src/trigger/trigger_factory.cc:59 @@ -1648,14 +1648,14 @@ msgstr "Karte laden" #: ../../src/ui/ui_basic/ui_messagebox.cc:92 +#: ../../src/editor/tools/editor_info_tool.cc:75 #: ../../src/editor/tools/editor_info_tool.cc:76 -#: ../../src/editor/tools/editor_info_tool.cc:77 msgid "Yes" msgstr "Ja" #: ../../src/ui/ui_basic/ui_messagebox.cc:99 +#: ../../src/editor/tools/editor_info_tool.cc:75 #: ../../src/editor/tools/editor_info_tool.cc:76 -#: ../../src/editor/tools/editor_info_tool.cc:77 msgid "No" msgstr "Nein" @@ -1663,11 +1663,11 @@ msgid "Preparing..." msgstr "Vorbereiten..." -#: ../../src/editor/tools/editor_info_tool.cc:44 +#: ../../src/editor/tools/editor_info_tool.cc:43 msgid "Field Information" msgstr "Feldinformationen" -#: ../../src/editor/tools/editor_info_tool.cc:56 +#: ../../src/editor/tools/editor_info_tool.cc:55 #, c-format msgid "" "1) Node infos\n" @@ -1680,39 +1680,39 @@ " Höhe: %u\n" " Caps: " -#: ../../src/editor/tools/editor_info_tool.cc:62 +#: ../../src/editor/tools/editor_info_tool.cc:61 msgid "small" msgstr "klein" -#: ../../src/editor/tools/editor_info_tool.cc:63 +#: ../../src/editor/tools/editor_info_tool.cc:62 msgid "medium" msgstr "mittel" -#: ../../src/editor/tools/editor_info_tool.cc:64 +#: ../../src/editor/tools/editor_info_tool.cc:63 msgid "big" msgstr "groß" -#: ../../src/editor/tools/editor_info_tool.cc:66 +#: ../../src/editor/tools/editor_info_tool.cc:65 msgid " flag" msgstr " Flagge" -#: ../../src/editor/tools/editor_info_tool.cc:67 +#: ../../src/editor/tools/editor_info_tool.cc:66 msgid " mine" msgstr " Mine" -#: ../../src/editor/tools/editor_info_tool.cc:68 +#: ../../src/editor/tools/editor_info_tool.cc:67 msgid " port" msgstr " Hafen" -#: ../../src/editor/tools/editor_info_tool.cc:69 +#: ../../src/editor/tools/editor_info_tool.cc:68 msgid " walk" msgstr " gehen" -#: ../../src/editor/tools/editor_info_tool.cc:70 +#: ../../src/editor/tools/editor_info_tool.cc:69 msgid " swim" msgstr " schwimmen" -#: ../../src/editor/tools/editor_info_tool.cc:74 +#: ../../src/editor/tools/editor_info_tool.cc:73 #, c-format msgid "" "\n" @@ -1725,7 +1725,7 @@ " Hat unbewegte Basis: %s\n" " Hat Natur: %s\n" -#: ../../src/editor/tools/editor_info_tool.cc:80 +#: ../../src/editor/tools/editor_info_tool.cc:79 msgid "" "2) Terrain Info\n" " Name: " @@ -1733,7 +1733,7 @@ "2) Gebietsinfo\n" " Name: " -#: ../../src/editor/tools/editor_info_tool.cc:88 +#: ../../src/editor/tools/editor_info_tool.cc:87 #, c-format msgid "" "\n" @@ -1742,7 +1742,7 @@ "\n" " Texturnummer %i\n" -#: ../../src/editor/tools/editor_info_tool.cc:92 +#: ../../src/editor/tools/editor_info_tool.cc:91 msgid "" "4) Map Info\n" " Name: " @@ -1750,7 +1750,7 @@ "4) Karteninfo\n" " Name: " -#: ../../src/editor/tools/editor_info_tool.cc:96 +#: ../../src/editor/tools/editor_info_tool.cc:95 #, c-format msgid "" "\n" @@ -1761,8 +1761,8 @@ " Größe: %ix%i\n" " Autor: " -#: ../../src/editor/tools/editor_info_tool.cc:99 -#: ../../src/editor/tools/editor_info_tool.cc:110 +#: ../../src/editor/tools/editor_info_tool.cc:98 +#: ../../src/editor/tools/editor_info_tool.cc:109 msgid "" "\n" " Descr: " @@ -1770,7 +1770,7 @@ "\n" " Beschr: " -#: ../../src/editor/tools/editor_info_tool.cc:103 +#: ../../src/editor/tools/editor_info_tool.cc:102 #, c-format msgid "" "\n" @@ -1779,7 +1779,7 @@ "\n" " Anzahl der Spieler: %i\n" -#: ../../src/editor/tools/editor_info_tool.cc:106 +#: ../../src/editor/tools/editor_info_tool.cc:105 msgid "" "5) World Info\n" " Name: " @@ -1787,7 +1787,7 @@ "5) Weltinfo\n" " Name: " -#: ../../src/editor/tools/editor_info_tool.cc:108 +#: ../../src/editor/tools/editor_info_tool.cc:107 msgid "" "\n" " Author: " @@ -1802,7 +1802,7 @@ #: ../../src/editor/ui_menus/trigger_null_option_menu.cc:69 #: ../../src/editor/ui_menus/event_move_view_option_menu.cc:179 #: ../../src/editor/ui_menus/event_unhide_area_option_menu.cc:254 -#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:81 +#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:82 #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:207 #: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:87 #: ../../src/editor/ui_menus/event_conquer_area_option_menu.cc:247 @@ -2007,12 +2007,11 @@ msgid "Create Map" msgstr "Karte erstellen" -#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:53 -#: ../../src/editor/ui_menus/editor_event_menu_edit_eventchain.cc:142 -msgid "Available Events: " +#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:54 +msgid "Available Event types: " msgstr "Mögliche Ereignisse:" -#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:65 +#: ../../src/editor/ui_menus/editor_event_menu_new_event.cc:66 #: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:71 msgid "Description: " msgstr "Beschreibung: " @@ -2062,7 +2061,6 @@ msgstr "Löschen" #: ../../src/editor/ui_menus/editor_event_menu_edit_trigger_conditional.cc:183 -#: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:55 msgid "Available Triggers: " msgstr "Mögliche Auslöser:" @@ -2177,6 +2175,10 @@ msgid "Set value: %u" msgstr "Wert setzen: %u" +#: ../../src/editor/ui_menus/editor_event_menu_new_trigger.cc:55 +msgid "Available Trigger types: " +msgstr "Mögliche Auslöser:" + #: ../../src/editor/ui_menus/editor_tool_change_height_options_menu.cc:41 msgid "Height Tools Options" msgstr "Optionen: Höhenwerkzeug" @@ -2210,11 +2212,11 @@ msgstr "Spieler " #: ../../src/editor/ui_menus/editor_player_menu.cc:246 -msgid "Can't remove player. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this player and try again" +msgid "Can't remove player. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this player and try again." msgstr "Kann Spieler nicht löschen, der Spieler wird verwendet. Entferne alle Gebäude, Natur, Auslöser und Ereignisse, die mit diesem Spieler verknüpft sind, und versuche es nochmal." #: ../../src/editor/ui_menus/editor_player_menu.cc:278 -msgid "Can't change player tribe. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this tribe and try again" +msgid "Can't change player tribe. It is referenced in some place. Remove all buildings, bobs, triggers and events that depend on this tribe and try again." msgstr "Kann Spieler-Stamm nicht ändern, der Stamm wird verwendet. Entferne alle Gebäude, Natur, Auslöser und Ereignisse, die mit diesem Stamm verknüpft sind, und versuche es nochmal." #: ../../src/editor/ui_menus/editor_variables_menu.cc:61 @@ -2436,10 +2438,17 @@ msgid "Up" msgstr "+" +#: ../../src/editor/ui_menus/editor_event_menu_edit_eventchain.cc:142 +msgid "Available Events: " +msgstr "Mögliche Ereignisse:" + #: ../../src/objective.h:47 msgid "no descr" msgstr "(Keine Beschreibung vorhanden.)" +#~ msgid "Reveal (or hide) an objective" +#~ msgstr "Decke eine Aufgabe auf oder verstecke sie" + #~ msgid "" #~ " --nosound Starts the game with sound disabled\n" #~ " --nozip Do not save files as binary zip archives.\n" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-10-04 15:26:33
|
Revision: 3341 http://widelands.svn.sourceforge.net/widelands/?rev=3341&view=rev Author: bedouin Date: 2008-10-04 15:26:26 +0000 (Sat, 04 Oct 2008) Log Message: ----------- Split BUILDID handling into .h/.cc so that the autogenerated .cc file can be moved from the source into the build tree. Also attempt to keep non-scnos builds working. Modified Paths: -------------- trunk/Makefile trunk/build/macos/Widelands.xcodeproj/project.pbxproj trunk/build/scons-tools/scons_configure.py trunk/build/win32/mingw/Widelands_win.h trunk/build/win32/mingw/Widelands_win.rc trunk/src/graphic.cc trunk/src/main.cc trunk/src/network_lan_promotion.cc trunk/src/profile.cc trunk/src/streamwrite.h trunk/src/ui/ui_fs_menus/fullscreen_menu_main.cc trunk/src/wlapplication.cc Added Paths: ----------- trunk/src/build_id.cc.default trunk/src/build_id.h Removed Paths: ------------- trunk/src/build_id.h.default Modified: trunk/Makefile =================================================================== --- trunk/Makefile 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/Makefile 2008-10-04 15:26:26 UTC (rev 3341) @@ -220,7 +220,7 @@ -include $(DEP) -$(OBJECT_DIR)/%.o: src/%.cc src/build_id.h src/config.h +$(OBJECT_DIR)/%.o: src/%.cc src/config.h @echo "===> CXX $<" $(Q)$(CXX) -pipe $(CXXFLAGS) -MMD -MP -MF $@.d -c -o $@ $< $(Q)sed -e 's@^\(.*\)\.o:@\1.d \1.o:@' $@.d > $(OBJECT_DIR)/$*.d @@ -235,6 +235,6 @@ src/config.h: @cp src/config.h.default $@ -src/build_id.h: - sed -e "s/UNKNOWN/$(VERSION)/" src/build_id.h.default > $@ +src/build_id.cc: + sed -e "s/UNKNOWN/$(VERSION)/" src/build_id.cc.default > $@ Modified: trunk/build/macos/Widelands.xcodeproj/project.pbxproj =================================================================== --- trunk/build/macos/Widelands.xcodeproj/project.pbxproj 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/build/macos/Widelands.xcodeproj/project.pbxproj 2008-10-04 15:26:26 UTC (rev 3341) @@ -1892,11 +1892,11 @@ ); name = "Create BUILDID"; outputPaths = ( - "$(PROJECT_DIR)/../../src/build_id.h", + "$(PROJECT_DIR)/../../src/build_id.cc", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "#!/bin/sh\n\n# This script creates a valid build_id.h file. This is recreated on every compile, not like config.h\nPATH=$PATH:/opt/local/bin:/sw/bin/:/usr/local/bin\n\n\nBUILDID=`cd .. && ../build/scons-tools/detect_revision.py` \nSRCDIR=$PROJECT_DIR/../../src/\n\nif [ ! -f $SRCDIR/build_id.h ];\nthen\ncat > $SRCDIR/build_id.h << EOF\n/*\n * Created by XCode on the fly\n */\n#ifndef BUILD_ID_H\n#define BUILD_ID_H\n\n#define BUILD_ID \"$BUILDID\"\n\n#endif\n\nEOF\nfi"; + shellScript = "#!/bin/sh\n\n# This script creates a valid build_id.cc file. This is recreated on every compile, not like config.h\nPATH=$PATH:/opt/local/bin:/sw/bin/:/usr/local/bin\n\n\nBUILDID=`cd .. && ../build/scons-tools/detect_revision.py` \nSRCDIR=$PROJECT_DIR/../../src/\n\nif [ ! -f $SRCDIR/build_id.cc ];\nthen\ncat > $SRCDIR/build_id.cc << EOF\n/*\n * Created by XCode on the fly\n */\n#include "build_id.h"\n\nstd::string build_id()\n{\nreturn \"$BUILDID\";\n}\n\nEOF\nfi"; }; BFF9FAA00AC1BB3600E1B7CB /* Create config.h */ = { isa = PBXShellScriptBuildPhase; Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/build/scons-tools/scons_configure.py 2008-10-04 15:26:26 UTC (rev 3341) @@ -62,15 +62,14 @@ if env['build_id']=='': env['build_id']=detect_revision() - build_id_file=open('src/build_id.h', "w") + build_id_file=open('src/build_id.cc', "w") - build_id_file.write(""" -#ifndef BUILD_ID_H -#define BUILD_ID_H + build_id_file.write("""#include "build_id.h" -#define BUILD_ID \""""+env['build_id']+"""\" - -#endif +std::string build_id() +{ + return \""""+env['build_id']+"""\"; +} """) build_id_file.close() Modified: trunk/build/win32/mingw/Widelands_win.h =================================================================== --- trunk/build/win32/mingw/Widelands_win.h 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/build/win32/mingw/Widelands_win.h 2008-10-04 15:26:26 UTC (rev 3341) @@ -28,7 +28,7 @@ #define VER_RELEASE 0 #define VER_BUILD 13 #define COMPANY_NAME "The Widelands Development Team" -#define FILE_VERSION BUILD_ID +#define FILE_VERSION build_id().c_str() #define FILE_DESCRIPTION "Widelands - realtime strategy game" #define INTERNAL_NAME "WL" #define LEGAL_COPYRIGHT "GPL v2" @@ -36,6 +36,6 @@ #define License "Gnu GPL v2" #define ORIGINAL_FILENAME "widelands" #define PRODUCT_NAME "Widelands" -#define PRODUCT_VERSION BUILD_ID +#define PRODUCT_VERSION build_id().c_str() #endif /*WIDELANDS_WIN_H*/ Modified: trunk/build/win32/mingw/Widelands_win.rc =================================================================== --- trunk/build/win32/mingw/Widelands_win.rc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/build/win32/mingw/Widelands_win.rc 2008-10-04 15:26:26 UTC (rev 3341) @@ -40,7 +40,7 @@ BLOCK "080904E4" { VALUE "CompanyName", "The Widelands Development Team" - VALUE "FileVersion", BUILD_ID + VALUE "FileVersion", build_id().c_str() VALUE "FileDescription", "Widelands - realtime strategy game" VALUE "InternalName", "WL" VALUE "LegalCopyright", "GPL v2" @@ -48,7 +48,7 @@ VALUE "License", "Gnu GPL v2" VALUE "OriginalFilename", "widelands" VALUE "ProductName", "Widelands - an Open-Source realtime strategy game" - VALUE "ProductVersion", BUILD_ID + VALUE "ProductVersion", build_id().c_str() } } BLOCK "VarFileInfo" Added: trunk/src/build_id.cc.default =================================================================== --- trunk/src/build_id.cc.default (rev 0) +++ trunk/src/build_id.cc.default 2008-10-04 15:26:26 UTC (rev 3341) @@ -0,0 +1,6 @@ +#include "build_id.h" + +std::string build_id() +{ + return "UNKNOWN"; +} Property changes on: trunk/src/build_id.cc.default ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/src/build_id.h =================================================================== --- trunk/src/build_id.h (rev 0) +++ trunk/src/build_id.h 2008-10-04 15:26:26 UTC (rev 3341) @@ -0,0 +1,11 @@ +#ifndef BUILD_ID_H +#define BUILD_ID_H + +#include <string> + +///\return the build id, which is either specified manually when calling scons +///or is automagically created from the checkout's revision number +std::string build_id(); + +#endif + Property changes on: trunk/src/build_id.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Deleted: trunk/src/build_id.h.default =================================================================== --- trunk/src/build_id.h.default 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/build_id.h.default 2008-10-04 15:26:26 UTC (rev 3341) @@ -1,7 +0,0 @@ -#ifndef BUILD_ID_H -#define BUILD_ID_H - -#define BUILD_ID "UNKNOWN" - -#endif - Modified: trunk/src/graphic.cc =================================================================== --- trunk/src/graphic.cc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/graphic.cc 2008-10-04 15:26:26 UTC (rev 3341) @@ -92,7 +92,7 @@ assert(sdlsurface->format->BytesPerPixel == 2 || sdlsurface->format->BytesPerPixel == 4); - SDL_WM_SetCaption("Widelands " BUILD_ID, "Widelands"); + SDL_WM_SetCaption((std::string("Widelands ")+build_id()).c_str(), "Widelands"); m_screen.set_sdl_surface(*sdlsurface); Modified: trunk/src/main.cc =================================================================== --- trunk/src/main.cc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/main.cc 2008-10-04 15:26:26 UTC (rev 3341) @@ -63,7 +63,7 @@ "') in outermost handler!"<<endl<< "The exception said: "<<e.what()<<endl<<endl<< "This should not happen. Please file a bug report "<< - "on version: "<<BUILD_ID<<"."<<endl<<endl<< + "on version: "<<build_id()<<"."<<endl<<endl<< flush; delete g_app; @@ -75,7 +75,7 @@ "') in outermost handler!"<<endl<< "The exception said: "<<e.what()<<endl<<endl<< "This should not happen. Please file a bug report "<< - "on version: "<<BUILD_ID<<"."<<endl<<endl<< + "on version: "<<build_id()<<"."<<endl<<endl<< flush; delete g_app; @@ -85,7 +85,7 @@ cerr<<endl<< "Caught unknown exception in outermost handler!"<<endl<<endl<< "This should not happen. Please file a bug report "<< - "on version: "<<BUILD_ID<<"."<<endl<<endl<< + "on version: "<<build_id()<<"."<<endl<<endl<< flush; delete g_app; Modified: trunk/src/network_lan_promotion.cc =================================================================== --- trunk/src/network_lan_promotion.cc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/network_lan_promotion.cc 2008-10-04 15:26:26 UTC (rev 3341) @@ -157,7 +157,7 @@ gameinfo.version = LAN_PROMOTION_PROTOCOL_VERSION; gameinfo.state = LAN_GAME_OPEN; - strncpy (gameinfo.gameversion, BUILD_ID, sizeof(gameinfo.gameversion)); + strncpy (gameinfo.gameversion, build_id().c_str(), sizeof(gameinfo.gameversion)); gethostname (gameinfo.hostname, sizeof(gameinfo.hostname)); } Modified: trunk/src/profile.cc =================================================================== --- trunk/src/profile.cc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/profile.cc 2008-10-04 15:26:26 UTC (rev 3341) @@ -1020,8 +1020,9 @@ { FileWrite fw; - fw.Printf("# Automatically created by Widelands " BUILD_ID "\n"); + fw.Printf((std::string("# Automatically created by Widelands ")+build_id()+"\n").c_str()); + for (Section_list::iterator s = m_sections.begin(); s != m_sections.end(); Modified: trunk/src/streamwrite.h =================================================================== --- trunk/src/streamwrite.h 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/streamwrite.h 2008-10-04 15:26:26 UTC (rev 3341) @@ -54,6 +54,7 @@ */ virtual void Flush(); + //TODO: implement an overloaded method that accepts fmt as std::string void Printf(const char *fmt, ...) __attribute__((format(printf, 2, 3))); void Signed8 (int8_t const x) {Data(&x, 1);} Modified: trunk/src/ui/ui_fs_menus/fullscreen_menu_main.cc =================================================================== --- trunk/src/ui/ui_fs_menus/fullscreen_menu_main.cc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/ui/ui_fs_menus/fullscreen_menu_main.cc 2008-10-04 15:26:26 UTC (rev 3341) @@ -76,7 +76,7 @@ version (this, MENU_XRES - 25, MENU_YRES - 29, - std::string(_("Version ")) + BUILD_ID, Align_Right), + std::string(_("Version ")) + build_id(), Align_Right), copyright (this, 15, MENU_YRES - 29, Modified: trunk/src/wlapplication.cc =================================================================== --- trunk/src/wlapplication.cc 2008-10-04 13:05:58 UTC (rev 3340) +++ trunk/src/wlapplication.cc 2008-10-04 15:26:26 UTC (rev 3341) @@ -941,8 +941,9 @@ { i18n::grab_textdomain("widelands");// uses system standard language + //TODO: do away with the sprintf sillyness and use plain cout streaming char buffer[80]; - snprintf(buffer, sizeof(buffer), _("This is Widelands-%s\n\n"), BUILD_ID); + snprintf(buffer, sizeof(buffer), _("This is Widelands-%s\n\n"), build_id().c_str()); cout << buffer; cout << _("Usage: widelands <option0>=<value0> ... <optionN>=<valueN>\n\n"); cout << _("Options:\n\n"); @@ -1126,7 +1127,7 @@ ("\n\nPlease report this problem to help us improve Widelands. " "You will find related messages in the standard output " "(stdout.txt on Windows). You are using build "); - message += BUILD_ID; + message += build_id(); message += _ (". Please add this information to your report.\n\n" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nas...@us...> - 2008-10-04 17:57:21
|
Revision: 3342 http://widelands.svn.sourceforge.net/widelands/?rev=3342&view=rev Author: nasenbaer_peter Date: 2008-10-04 17:57:09 +0000 (Sat, 04 Oct 2008) Log Message: ----------- * Fix some windows-problems Modified Paths: -------------- trunk/build/win32/README.WIN32 trunk/build/win32/mingw/Makefile trunk/build/win32/mingw/Widelands_win.h trunk/build/win32/mingw/Widelands_win.rc trunk/src/backtrace.cc Added Paths: ----------- trunk/build/win32/mingw/build_id.cc trunk/build/win32/mingw/wlversion.h Property Changed: ---------------- trunk/src/ Modified: trunk/build/win32/README.WIN32 =================================================================== --- trunk/build/win32/README.WIN32 2008-10-04 15:26:26 UTC (rev 3341) +++ trunk/build/win32/README.WIN32 2008-10-04 17:57:09 UTC (rev 3342) @@ -1,4 +1,7 @@ -This subfolder contains the DevC++-project-file "Widelands.dev" --> For coding and compiling widelands via Bloodshed's DevCpp (http://www.Bloodshed.net) -and the InnoSetup-file "Widelands.iss" --> For packing your compiled Widelands-version in an installable InnoSetup-file (http://www.jrsoftware.org) \ No newline at end of file +This directory holds tools and scripts for win32-system users. +* you can run buildcat.sh in msys (with installed python) to compile + the gettext translation files +* You can find a Makefile for mingw-gcc >= 4.1 in subdirectory "mingw" +* You can find an InnoSetup-Script "Widelands.iss" for packing your + compiled Widelands build in subdiretory "innosetup". + the needed software can be find at http://www.jrsoftware.org \ No newline at end of file Modified: trunk/build/win32/mingw/Makefile =================================================================== --- trunk/build/win32/mingw/Makefile 2008-10-04 15:26:26 UTC (rev 3341) +++ trunk/build/win32/mingw/Makefile 2008-10-04 17:57:09 UTC (rev 3342) @@ -169,5 +169,10 @@ win32tool: @echo "===> Creating icon.o for win32" @$(WINDRES) -i Widelands_win.rc --input-format=rc -o icon.o -O coff + @echo "===> Copying configuration files to \"src\"" @-rm -rf ../../../src/config.h @cp -r ./config.h ../../../src + @-rm -rf ../../../src/build_id.cc + @cp -r ./build_id.cc ../../../src + @-rm -rf ../../../src/wlversion.h + @cp -r ./wlversion.h ../../../src Modified: trunk/build/win32/mingw/Widelands_win.h =================================================================== --- trunk/build/win32/mingw/Widelands_win.h 2008-10-04 15:26:26 UTC (rev 3341) +++ trunk/build/win32/mingw/Widelands_win.h 2008-10-04 17:57:09 UTC (rev 3342) @@ -19,8 +19,9 @@ #ifndef WIDELANDS_WIN_H #define WIDELANDS_WIN_H -#include "../../../src/build_id.h" +#include "wlversion.h" + /* VERSION DEFINITIONS */ #define VER_STRING "0.0.0.13" #define VER_MAJOR 0 @@ -28,7 +29,7 @@ #define VER_RELEASE 0 #define VER_BUILD 13 #define COMPANY_NAME "The Widelands Development Team" -#define FILE_VERSION build_id().c_str() +#define FILE_VERSION BUILD_ID #define FILE_DESCRIPTION "Widelands - realtime strategy game" #define INTERNAL_NAME "WL" #define LEGAL_COPYRIGHT "GPL v2" @@ -36,6 +37,6 @@ #define License "Gnu GPL v2" #define ORIGINAL_FILENAME "widelands" #define PRODUCT_NAME "Widelands" -#define PRODUCT_VERSION build_id().c_str() +#define PRODUCT_VERSION BUILD_ID #endif /*WIDELANDS_WIN_H*/ Modified: trunk/build/win32/mingw/Widelands_win.rc =================================================================== --- trunk/build/win32/mingw/Widelands_win.rc 2008-10-04 15:26:26 UTC (rev 3341) +++ trunk/build/win32/mingw/Widelands_win.rc 2008-10-04 17:57:09 UTC (rev 3342) @@ -16,9 +16,10 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ + +#include "wlversion.h" #include <windows.h> // included for version info constants -#include "../../../src/build_id.h" A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "../WL.ico" @@ -40,7 +41,7 @@ BLOCK "080904E4" { VALUE "CompanyName", "The Widelands Development Team" - VALUE "FileVersion", build_id().c_str() + VALUE "FileVersion", BUILD_ID VALUE "FileDescription", "Widelands - realtime strategy game" VALUE "InternalName", "WL" VALUE "LegalCopyright", "GPL v2" @@ -48,7 +49,7 @@ VALUE "License", "Gnu GPL v2" VALUE "OriginalFilename", "widelands" VALUE "ProductName", "Widelands - an Open-Source realtime strategy game" - VALUE "ProductVersion", build_id().c_str() + VALUE "ProductVersion", BUILD_ID } } BLOCK "VarFileInfo" Added: trunk/build/win32/mingw/build_id.cc =================================================================== --- trunk/build/win32/mingw/build_id.cc (rev 0) +++ trunk/build/win32/mingw/build_id.cc 2008-10-04 17:57:09 UTC (rev 3342) @@ -0,0 +1,7 @@ +#include "build_id.h" +#include "wlversion.h" + +std::string build_id() +{ + return BUILD_ID; +} Property changes on: trunk/build/win32/mingw/build_id.cc ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/build/win32/mingw/wlversion.h =================================================================== --- trunk/build/win32/mingw/wlversion.h (rev 0) +++ trunk/build/win32/mingw/wlversion.h 2008-10-04 17:57:09 UTC (rev 3342) @@ -0,0 +1 @@ +#define BUILD_ID "Build13" Property changes on: trunk/build/win32/mingw/wlversion.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Property changes on: trunk/src ___________________________________________________________________ Modified: svn:ignore - build_id.h config.h native-* game.cc~ + build_id.h config.h native-* game.cc~ wlversion.h build_id.cc Modified: trunk/src/backtrace.cc =================================================================== --- trunk/src/backtrace.cc 2008-10-04 15:26:26 UTC (rev 3341) +++ trunk/src/backtrace.cc 2008-10-04 17:57:09 UTC (rev 3342) @@ -19,12 +19,18 @@ #include "backtrace.h" +#ifndef WIN32 +#ifndef APPLE #include <execinfo.h> +#endif +#endif #define BACKTRACE_STACKSIZE 24 std::string get_backtrace() { std::string result("Backtrace:\n"); +#ifndef WIN32 +#ifndef APPLE void * stack[BACKTRACE_STACKSIZE]; size_t size = backtrace(stack, BACKTRACE_STACKSIZE); char * * const list = backtrace_symbols(stack, size); @@ -33,5 +39,7 @@ result += '\n'; } free(list); +#endif +#endif return result; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-02 11:30:43
|
Revision: 3319 http://widelands.svn.sourceforge.net/widelands/?rev=3319&view=rev Author: sigra Date: 2008-10-02 11:30:30 +0000 (Thu, 02 Oct 2008) Log Message: ----------- Fix placement of immovables and bobs in the editor. Immovables can only be placed on walkable locations and bobs can only be placed on locations with compatible movecaps. This means no more trees and land animals on water, snow and lava and no more ducks on non-water terrain. Move ducks from land to water on a map. Modified Paths: -------------- trunk/maps/Elven Forests.wmf/binary/bob trunk/maps/Elven Forests.wmf/binary/bob_data trunk/maps/Elven Forests.wmf/binary/mapobjects trunk/src/bob.cc trunk/src/bob.h trunk/src/critter_bob.cc trunk/src/critter_bob.h trunk/src/editor/tools/editor_place_bob_tool.cc trunk/src/editor/tools/editor_place_immovable_tool.cc trunk/src/editor_game_base.cc trunk/src/field.h trunk/src/soldier.cc trunk/src/widelands_map_immovabledata_data_packet.cc trunk/src/widelands_map_object_packet.cc trunk/src/worker.cc trunk/src/worker.h trunk/src/worker_descr.cc trunk/src/worker_descr.h Modified: trunk/src/bob.cc =================================================================== --- trunk/src/bob.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/bob.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -97,12 +97,14 @@ /** * Create a bob of this type */ -Bob *Bob::Descr::create(Editor_Game_Base *gg, Player *owner, Coords coords) +Bob * Bob::Descr::create + (Editor_Game_Base * const egbase, Player * const owner, Coords const coords) + const { Bob *bob = create_object(); bob->set_owner(owner); - bob->set_position(gg, coords); - bob->init(gg); + bob->set_position(egbase, coords); + bob->init(egbase); return bob; } @@ -629,9 +631,9 @@ CheckStepAnd cstep; if (forceonlast) - cstep.add(CheckStepWalkOn(get_movecaps(), true)); + cstep.add(CheckStepWalkOn(descr().movecaps(), true)); else - cstep.add(CheckStepDefault(get_movecaps())); + cstep.add(CheckStepDefault(descr().movecaps())); cstep.add(CheckStepBlocked(tracker)); if (game->map().findpath(m_position, dest, persist, path, cstep) < 0) { @@ -942,7 +944,7 @@ // Move capability check if (!force) { - CheckStepDefault cstep(get_movecaps()); + CheckStepDefault cstep(descr().movecaps()); if (!cstep.allowed(&map, m_position, newf, dir, CheckStep::stepNormal)) return -1; Modified: trunk/src/bob.h =================================================================== --- trunk/src/bob.h 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/bob.h 2008-10-02 11:30:30 UTC (rev 3319) @@ -196,7 +196,7 @@ virtual ~Descr() {}; const std::string & name() const throw () {return m_name;} - Bob *create(Editor_Game_Base *g, Player *owner, Coords coords); + Bob * create(Editor_Game_Base *, Player * owner, Coords) const; bool is_world_bob() const {return not m_owner_tribe;} const char* get_picture() const {return m_picture.c_str();} @@ -213,6 +213,7 @@ Profile *prof, Tribe_Descr* tribe); + virtual uint32_t movecaps() const throw () {return 0;} uint32_t vision_range() const; protected: @@ -235,7 +236,6 @@ virtual int32_t get_type() const throw () {return BOB;} virtual char const * type_name() const throw () {return "bob";} virtual Type get_bob_type() const throw () = 0; - virtual uint32_t get_movecaps() const throw () {return 0;} const std::string & name() const throw () {return descr().name();} virtual void init(Editor_Game_Base*); Modified: trunk/src/critter_bob.cc =================================================================== --- trunk/src/critter_bob.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/critter_bob.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -228,7 +228,11 @@ } +uint32_t Critter_Bob_Descr::movecaps() const throw () { + return is_swimming() ? MOVECAPS_SWIM : MOVECAPS_WALK; +} + /* ============================================================================== @@ -248,10 +252,7 @@ Critter_Bob::~Critter_Bob() {} -uint32_t Critter_Bob::get_movecaps() const throw () -{return descr().is_swimming() ? MOVECAPS_SWIM : MOVECAPS_WALK;} - /* ============================== Modified: trunk/src/critter_bob.h =================================================================== --- trunk/src/critter_bob.h 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/critter_bob.h 2008-10-02 11:30:30 UTC (rev 3319) @@ -39,6 +39,7 @@ Bob * create_object() const; bool is_swimming() const throw () {return m_swimming;} + uint32_t movecaps() const throw (); const DirAnimations & get_walk_anims() const throw () {return m_walk_anims;} const std::string & descname() const throw () {return m_descname;} __attribute__ ((deprecated)) const char * get_descname() const throw () {return descname().c_str();} @@ -66,7 +67,6 @@ char const * type_name() const throw () {return "critter";} virtual Bob::Type get_bob_type() const throw () {return Bob::CRITTER;} - uint32_t get_movecaps() const throw (); virtual void init_auto_task(Game* g); Modified: trunk/src/editor/tools/editor_place_bob_tool.cc =================================================================== --- trunk/src/editor/tools/editor_place_bob_tool.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/editor/tools/editor_place_bob_tool.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -24,6 +24,8 @@ #include "editor_game_base.h" #include "bob.h" +using Widelands::Bob; + /** * Choses an object to place randomly from all enabled * and places this on the current field @@ -40,11 +42,15 @@ (map.get_fcoords(center.node), parent.get_sel_radius())); if (get_nr_enabled()) { do { - if (Widelands::Bob * const bob = mr.location().field->get_first_bob()) - // There is already a bob. Remove it first - bob->remove(&editor); - editor.create_bob(mr.location(), get_random_enabled()); + Bob::Descr const & descr = + *map.world().get_bob_descr(get_random_enabled()); + if (mr.location().field->get_caps() & descr.movecaps()) { + if (Bob * const bob = mr.location().field->get_first_bob()) + bob->remove(&editor); // There is already a bob. Remove it. + descr.create(&editor, 0, mr.location()); + } } while (mr.advance(map)); return mr.radius() + 2; - } else return mr.radius(); + } else + return mr.radius(); } Modified: trunk/src/editor/tools/editor_place_immovable_tool.cc =================================================================== --- trunk/src/editor/tools/editor_place_immovable_tool.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/editor/tools/editor_place_immovable_tool.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -43,10 +43,8 @@ (map.get_fcoords(center.node), radius)); do if (not mr.location().field->get_immovable() - or - mr.location().field->get_immovable()->get_size() - == - Widelands::BaseImmovable::NONE) + and + mr.location().field->get_caps() & Widelands::MOVECAPS_WALK) egbase.create_immovable(mr.location(), get_random_enabled(), 0); while (mr.advance(map)); return radius + 2; Modified: trunk/src/editor_game_base.cc =================================================================== --- trunk/src/editor_game_base.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/editor_game_base.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -625,7 +625,7 @@ (Coords const c, Bob::Descr::Index const idx, Tribe_Descr const * const tribe) { - Bob::Descr & descr = + Bob::Descr const & descr = * (tribe ? tribe->get_bob_descr(idx) Modified: trunk/src/field.h =================================================================== --- trunk/src/field.h 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/field.h 2008-10-02 11:30:30 UTC (rev 3319) @@ -67,8 +67,9 @@ /** can we build any building on this field?*/ BUILDCAPS_BUILDINGMASK = BUILDCAPS_SIZEMASK|BUILDCAPS_MINE|BUILDCAPS_PORT, - /** Can Map_Objects walk or swim here? Also used for Map_Object::get_movecaps() - * If MOVECAPS_WALK, any walking being can walk to this field*/ + /// Can Map_Objects walk or swim here? Also used for + /// Map_Object_Descr::movecaps. If MOVECAPS_WALK, any walking being can walk + /// to this field. MOVECAPS_WALK = 32, /// If MOVECAPS_SWIM, any swimming being (including ships) can go there. Modified: trunk/src/soldier.cc =================================================================== --- trunk/src/soldier.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/soldier.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -874,7 +874,7 @@ g->map().find_reachable_immovables_unique (Area<FCoords>(get_position(), MaxProtectionRadius), &attackables, - CheckStepWalkOn(get_movecaps(), false), + CheckStepWalkOn(descr().movecaps(), false), FindImmovableAttackable()); for Modified: trunk/src/widelands_map_immovabledata_data_packet.cc =================================================================== --- trunk/src/widelands_map_immovabledata_data_packet.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/widelands_map_immovabledata_data_packet.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -93,21 +93,19 @@ else imm.m_program = 0; imm.m_program_ptr = fr.Unsigned32(); - if (!imm.m_program) { + if (!imm.m_program) imm.m_program_ptr = 0; - } else { - if (imm.m_program->get_size() <= imm.m_program_ptr) { - // Try to not fail if the program of some immovable has - // changed significantly. Note that in some cases, the - // immovable may end up broken despite the fixup, but - // there is not really anything we can do against that. - log - ("Warning: Immovable '%s', size of program '%s' seems " - "to have changed.\n", - descr.name().c_str(), - imm.m_program->get_name().c_str()); - imm.m_program_ptr = 0; - } + else if (imm.m_program->get_size() <= imm.m_program_ptr) { + // Try to not fail if the program of some immovable has + // changed significantly. Note that in some cases, the + // immovable may end up broken despite the fixup, but there + // is not really anything we can do against that. + log + ("Warning: Immovable '%s', size of program '%s' seems " + "to have changed.\n", + descr.name().c_str(), + imm.m_program->get_name().c_str()); + imm.m_program_ptr = 0; } imm.m_program_step = fr.Signed32(); Modified: trunk/src/widelands_map_object_packet.cc =================================================================== --- trunk/src/widelands_map_object_packet.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/widelands_map_object_packet.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -59,7 +59,7 @@ // Initial loading stage for (;;) - switch (uint8_t header = fr.Unsigned8()) { + switch (uint8_t const header = fr.Unsigned8()) { case 0: return; case Map_Object::header_Immovable: Modified: trunk/src/worker.cc =================================================================== --- trunk/src/worker.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/worker.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -395,7 +395,7 @@ (" FindObject(%i, %i, %s)\n", action->iparam1, action->iparam2, action->sparam1.c_str()); - CheckStepWalkOn cstep(get_movecaps(), false); + CheckStepWalkOn cstep(descr().movecaps(), false); Map & map = g->map(); const Area<FCoords> area (map.get_fcoords(get_position()), action->iparam1); @@ -502,7 +502,7 @@ Map & map = g->map(); World * const w = &map.world(); - CheckStepDefault cstep(get_movecaps()); + CheckStepDefault cstep(descr().movecaps()); Area<FCoords> area(map.get_fcoords(get_position()), action->iparam1); @@ -892,12 +892,6 @@ } -uint32_t Worker::get_movecaps() const throw () -{ - return MOVECAPS_WALK; -} - - /** * Change the location. This should be called in the following situations: * \li worker creation (usually, location is a warehouse) @@ -2290,7 +2284,7 @@ // Find a suitable field and walk towards it std::vector<Coords> list; - CheckStepDefault cstep(get_movecaps()); + CheckStepDefault cstep(descr().movecaps()); FindNodeAnd ffa; ffa.add(FindNodeImmovableSize(FindNodeImmovableSize::sizeNone), false); Modified: trunk/src/worker.h =================================================================== --- trunk/src/worker.h 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/worker.h 2008-10-02 11:30:30 UTC (rev 3319) @@ -78,8 +78,6 @@ Tribe_Descr const & tribe() const throw () {return descr().tribe();} const std::string & descname() const throw () {return descr().descname();} - virtual uint32_t get_movecaps() const throw (); - PlayerImmovable * get_location(Editor_Game_Base * egbase) { return reinterpret_cast<PlayerImmovable *>(m_location.get(egbase)); } Modified: trunk/src/worker_descr.cc =================================================================== --- trunk/src/worker_descr.cc 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/worker_descr.cc 2008-10-02 11:30:30 UTC (rev 3319) @@ -98,6 +98,9 @@ } +uint32_t Worker_Descr::movecaps() const throw () {return MOVECAPS_WALK;} + + /** * Parse the worker data from configuration */ Modified: trunk/src/worker_descr.h =================================================================== --- trunk/src/worker_descr.h 2008-10-01 20:36:44 UTC (rev 3318) +++ trunk/src/worker_descr.h 2008-10-02 11:30:30 UTC (rev 3319) @@ -91,6 +91,7 @@ (Editor_Game_Base &, Player &, PlayerImmovable &, const Coords) const; typedef std::map<Worker_Descr *, std::string> becomes_map_t; + virtual uint32_t movecaps() const throw (); protected: virtual void parse This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-03 12:22:49
|
Revision: 3329 http://widelands.svn.sourceforge.net/widelands/?rev=3329&view=rev Author: sigra Date: 2008-10-03 12:22:43 +0000 (Fri, 03 Oct 2008) Log Message: ----------- Get something resembling a backtrace when bug #2100222 happens. Modified Paths: -------------- trunk/build/scons-tools/scons_configure.py trunk/src/widelands.h Added Paths: ----------- trunk/src/backtrace.cc trunk/src/backtrace.h Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-03 11:11:07 UTC (rev 3328) +++ trunk/build/scons-tools/scons_configure.py 2008-10-03 12:22:43 UTC (rev 3329) @@ -132,6 +132,7 @@ if env['build']=='debug': env.debug=1 env.Append(CCFLAGS='-DNOPARACHUTE') + env.Append(LINKFLAGS='-rdynamic') if env['build']=='profile': env.debug=1 Added: trunk/src/backtrace.cc =================================================================== --- trunk/src/backtrace.cc (rev 0) +++ trunk/src/backtrace.cc 2008-10-03 12:22:43 UTC (rev 3329) @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2008 by the Widelands Development 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include "backtrace.h" + +#include <execinfo.h> + +#define BACKTRACE_STACKSIZE 24 + +std::string get_backtrace() { + std::string result("Backtrace:\n"); + void * stack[BACKTRACE_STACKSIZE]; + size_t size = backtrace(stack, BACKTRACE_STACKSIZE); + char * * const list = backtrace_symbols(stack, size); + for (char * const * it = list; size; --size, ++it) { + result += *it; + result += '\n'; + } + free(list); + return result; +} Property changes on: trunk/src/backtrace.cc ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Added: trunk/src/backtrace.h =================================================================== --- trunk/src/backtrace.h (rev 0) +++ trunk/src/backtrace.h 2008-10-03 12:22:43 UTC (rev 3329) @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2008 by the Widelands Development 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., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include <string> + +std::string get_backtrace(); Property changes on: trunk/src/backtrace.h ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native Modified: trunk/src/widelands.h =================================================================== --- trunk/src/widelands.h 2008-10-03 11:11:07 UTC (rev 3328) +++ trunk/src/widelands.h 2008-10-03 12:22:43 UTC (rev 3329) @@ -20,6 +20,9 @@ #ifndef WIDELANDS_H #define WIDELANDS_H +#include "backtrace.h" +#include "log.h" + #include <cassert> #include <cstddef> #include <limits> @@ -66,6 +69,8 @@ explicit _Index(size_t const I) : i(static_cast<value_t>(I)) { + if (I >= std::numeric_limits<value_t>::max()) + log("%s", get_backtrace().c_str()); assert(I < std::numeric_limits<value_t>::max()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-10-04 22:55:20
|
Revision: 3344 http://widelands.svn.sourceforge.net/widelands/?rev=3344&view=rev Author: bedouin Date: 2008-10-04 22:54:19 +0000 (Sat, 04 Oct 2008) Log Message: ----------- - For scons builds: move autogenerated file build_id.cc from source directory into the build dir - Some minor cleanups around build_id.* handling in other parts of the buildsys Modified Paths: -------------- trunk/SConstruct trunk/build/scons-tools/scons_configure.py trunk/src/SConscript trunk/src/SConscript.dist Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-10-04 21:40:59 UTC (rev 3343) +++ trunk/SConstruct 2008-10-04 22:54:19 UTC (rev 3344) @@ -161,7 +161,8 @@ return False if env.enable_configuration: - do_buildid(env) + # Generate build_id.cc - scons itself will decide whether a recompile is needed + Command(os.path.join(BUILDDIR, "build_id.cc"), [Value(get_build_id(env))], generate_buildid_file) print_build_info(env) print #prettyprinting @@ -237,7 +238,7 @@ distadd(env, 'SConstruct') distadd(env, 'build-widelands.sh') -dist=env.DistPackage('widelands-'+env['build_id'], 'build-widelands.sh') # the second argument is a (neccessary) dummy +dist=env.DistPackage('widelands-'+get_build_id(env), 'build-widelands.sh') # the second argument is a (neccessary) dummy Alias('dist', dist) AlwaysBuild(dist) @@ -282,7 +283,7 @@ Delete('utils/confgettext.pyc'), Delete('tags'), Delete('widelands'), - Delete('src/build_id.h'), + Delete('src/build_id.cc'), Delete('src/config.h'), Delete('locale/sv_SE'), Delete('locale/de_DE'), Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-04 21:40:59 UTC (rev 3343) +++ trunk/build/scons-tools/scons_configure.py 2008-10-04 22:54:19 UTC (rev 3344) @@ -54,23 +54,27 @@ print print 'Platform: ', env['PLATFORM'] print 'Build type: ', env['build'] - print 'Build ID: ', env['build_id'] + print 'Build ID: ', get_build_id(env) -def do_buildid(env): +def get_build_id(env): #This is just a default value, don't change it here in the code. #Use the commandline option 'build_id' instead if env['build_id']=='': env['build_id']=detect_revision() - build_id_file=open('src/build_id.cc', "w") + return env['build_id'] +def generate_buildid_file(env, target, source): + build_id_file=open(target[0].path, "w") + build_id_file.write("""#include "build_id.h" std::string build_id() { - return \""""+env['build_id']+"""\"; + return \""""+source[0].get_contents()+"""\"; } """) + build_id_file.close() ################################################################################ Modified: trunk/src/SConscript =================================================================== --- trunk/src/SConscript 2008-10-04 21:40:59 UTC (rev 3343) +++ trunk/src/SConscript 2008-10-04 22:54:19 UTC (rev 3344) @@ -1,3 +1,5 @@ +import os + Import('*') #TODO: find a way to remove the .orig files astyle leaves around. Probably in @@ -3,5 +5,5 @@ # scons-tools/astyle.py -SRC=simpleglob("*.cc") +SRC=simpleglob("*.cc")+["build_id.cc"] srcenv=env.Clone() @@ -46,6 +48,6 @@ env.Alias("indent", indent) binary=srcenv.Program(target='widelands', source=SRC+libs) -copybinary=srcenv.Command('#/widelands', binary, Copy('widelands', BUILDDIR+'/widelands')) +copybinary=srcenv.Command('#/widelands', binary, Copy('widelands', os.path.join(BUILDDIR, 'widelands'))) Return('copybinary') Modified: trunk/src/SConscript.dist =================================================================== --- trunk/src/SConscript.dist 2008-10-04 21:40:59 UTC (rev 3343) +++ trunk/src/SConscript.dist 2008-10-04 22:54:19 UTC (rev 3344) @@ -5,8 +5,7 @@ distadd(env, 'src/SConscript.dist') distadd(env, 'src/*.h') distadd(env, 'src/*.cc') -distadd(env, 'src/config.h.default') -distadd(env, 'src/build_id.h.default') +distadd(env, 'src/*.default') SConscript('editor/SConscript.dist') SConscript('ui/ui_basic/SConscript.dist') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-10-04 23:56:07
|
Revision: 3345 http://widelands.svn.sourceforge.net/widelands/?rev=3345&view=rev Author: bedouin Date: 2008-10-04 23:53:26 +0000 (Sat, 04 Oct 2008) Log Message: ----------- Move a function to make main SConstruct more readable Modified Paths: -------------- trunk/SConstruct trunk/build/scons-tools/scons_configure.py Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-10-04 22:54:19 UTC (rev 3344) +++ trunk/SConstruct 2008-10-04 23:53:26 UTC (rev 3345) @@ -144,22 +144,6 @@ TARGET=parse_cli(env) BUILDDIR='build/'+TARGET+'-'+env['build'] -def configure_is_needed(targets): - """Do we need to run autoconfiguration? If we're building the default target - (==no target given at commandline): yes. If we're _only_ building targets - that don't need configuration: no.""" - - if targets==[]: - return True - - NOCONFTARGETS=["clean", "dist", "distclean", "doc", "indent", "install", "longlines", "precommit", "uninst", "uninstall"] - def allowed(x): return x in NOCONFTARGETS - - if filter(allowed, targets) == []: - return True - else: - return False - if env.enable_configuration: # Generate build_id.cc - scons itself will decide whether a recompile is needed Command(os.path.join(BUILDDIR, "build_id.cc"), [Value(get_build_id(env))], generate_buildid_file) Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-04 22:54:19 UTC (rev 3344) +++ trunk/build/scons-tools/scons_configure.py 2008-10-04 23:53:26 UTC (rev 3345) @@ -286,6 +286,23 @@ ################################################################################ +def configure_is_needed(targets): + """Do we need to run autoconfiguration? If we're building the default target + (==no target given at commandline): yes. If we're _only_ building targets + that don't need configuration: no.""" + + NOCONFTARGETS=["clean", "dist", "distclean", "doc", "indent", "install", "longlines", "precommit", "uninst", "uninstall"] + is_needed=False + + if targets==[]: + is_needed=True + + def allowed(x): return x in NOCONFTARGETS + if filter(allowed, targets) == []: + is_needed=True + + return is_needed + def do_configure_basic_compiling(config_h_file, conf, env): print "Checking for a working C++ compiler ...", if not conf.TryLink("""class c{}; int main(){class c the_class;}""", '.cc'): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-05 09:40:31
|
Revision: 3347 http://widelands.svn.sourceforge.net/widelands/?rev=3347&view=rev Author: sigra Date: 2008-10-05 09:39:29 +0000 (Sun, 05 Oct 2008) Log Message: ----------- * Fix bug#2100222 (Conditional jump or move depends on uninitialized value(s) in AnimationGfx::AnimationGfx), found by Valgrind, regression in revision 3006. The code tried to use uninitialized values if an animation declared playercolor=true in the config but a _pc file was missing. Now the code throws an exception when this happens. Fix barbarian soldier walk animation, which declared playercolor=true but was missing walk_ne_00_pc and others. After the release we can hopefully scrap the old playercolor system, which would simplify the code tremendously. Then we will not need to fiddle with config keys to get player colors, just put the _pc files in place and they will be used. I have a patch ready, so I would really appreciate if the graphic artists would add missing playercolor masks (such as the frontier markes and flags). * Eliminate needless dynamic allocation of AnimationGfx::m_plrframes. * Optimize filename construction in AnimationGfx::AnimationGfx. Instead ow rewriting the whole name for each file we are searching for (like tribes/barbarians/workers/stonemason/walk_ne_[0-9][0-9](_pc)?.{bmp,png,gif,jpg}), write the base part just once and change only the number part, _pc and ending. Revision Links: -------------- http://widelands.svn.sourceforge.net/widelands/?rev=3006&view=rev Modified Paths: -------------- trunk/src/animation.cc trunk/src/animation.h trunk/src/animation_gfx.h trunk/src/render.cc trunk/tribes/barbarians/workers/soldier/conf Modified: trunk/src/animation.cc =================================================================== --- trunk/src/animation.cc 2008-10-05 00:03:37 UTC (rev 3346) +++ trunk/src/animation.cc 2008-10-05 09:39:29 UTC (rev 3347) @@ -37,7 +37,7 @@ */ void EncodeData::clear() { - hasplrclrs = false; + hasplrclrs = No; } @@ -48,13 +48,12 @@ Parse color codes from section, the following keys are currently known: clrkey_[r, g, b] color key -shadowclr_[r, g, b] color for shadow pixels =============== */ void EncodeData::parse(Section & s) { if (s.get_bool("playercolor", false)) - hasplrclrs = true; + hasplrclrs = Mask; // Read old-style player color codes char key[] = "plrclr0_r"; @@ -69,7 +68,7 @@ plrclr[i] = RGBColor(r, g, b); } - hasplrclrs = true; + hasplrclrs = Old; } @@ -82,8 +81,8 @@ */ void EncodeData::add(const EncodeData *other) { - if (other->hasplrclrs) { - hasplrclrs = true; + if (other->hasplrclrs == Old) { + hasplrclrs = Old; for (int32_t i = 0; i < 4; ++i) plrclr[i] = other->plrclr[i]; } @@ -145,18 +144,15 @@ char const * picnametempl, EncodeData const * const encdefaults) { - uint32_t id; - AnimationData* ad; m_animations.push_back(AnimationData()); - id = m_animations.size(); + uint32_t const id = m_animations.size(); + AnimationData & ad = m_animations[id - 1]; + ad.frametime = FRAME_LENGTH; + ad.hotspot.x = 0; + ad.hotspot.y = 0; + ad.encdata.clear(); + ad.picnametempl = ""; - ad = &m_animations[id-1]; - ad->frametime = FRAME_LENGTH; - ad->hotspot.x = 0; - ad->hotspot.y = 0; - ad->encdata.clear(); - ad->picnametempl = ""; - // Determine picture name template if (char const * const pics = s.get_string("pics")) @@ -173,14 +169,14 @@ size_t const len = strlen(pictempl) - 4; if (pictempl[len] == '.') pictempl[len] = '\0'; // delete extension - ad->picnametempl = pictempl; + ad.picnametempl = pictempl; } // Read mapping from frame numbers to sound effect names and load effects // will yield strange results if there is a different number of sfx_frame and sfx_name int32_t framenum; const char *fxname; - ad->sfx_cues[123456]="dummy"; + ad.sfx_cues[123456] = "dummy"; while (s.get_next_int("sfx_frame", &framenum) && @@ -188,22 +184,24 @@ { //TODO: error handling g_sound_handler.load_fx(directory, fxname); - ad->sfx_cues[framenum]=fxname; + ad.sfx_cues[framenum] = fxname; } //TODO: complain about mismatched number of sfx_name/sfx_frame // Get descriptive data if (encdefaults) - ad->encdata.add(encdefaults); + ad.encdata.add(encdefaults); - ad->encdata.parse(s); + ad.encdata.parse(s); - int32_t fps = s.get_int("fps"); + int32_t const fps = s.get_int("fps"); + if (fps < 0) + throw wexception("fps is %i, must be non-negative", fps); if (fps > 0) - ad->frametime = 1000 / fps; + ad.frametime = 1000 / fps; // TODO: Frames of varying size / hotspot? - ad->hotspot = s.get_Point("hotspot"); + ad.hotspot = s.get_Point("hotspot"); return id; } Modified: trunk/src/animation.h =================================================================== --- trunk/src/animation.h 2008-10-05 00:03:37 UTC (rev 3346) +++ trunk/src/animation.h 2008-10-05 09:39:29 UTC (rev 3347) @@ -34,7 +34,7 @@ class Section; struct EncodeData { - bool hasplrclrs; + enum {No, Mask, Old} hasplrclrs; RGBColor plrclr[4]; void clear(); Modified: trunk/src/animation_gfx.h =================================================================== --- trunk/src/animation_gfx.h 2008-10-05 00:03:37 UTC (rev 3346) +++ trunk/src/animation_gfx.h 2008-10-05 09:39:29 UTC (rev 3347) @@ -52,7 +52,7 @@ private: void encode(uint8_t plyr, const RGBColor*); - Frames * m_plrframes; + Frames m_plrframes[MAX_PLAYERS + 1]; Frames m_pcmasks; EncodeData m_encodedata; Point m_hotspot; Modified: trunk/src/render.cc =================================================================== --- trunk/src/render.cc 2008-10-05 00:03:37 UTC (rev 3346) +++ trunk/src/render.cc 2008-10-05 09:39:29 UTC (rev 3347) @@ -368,6 +368,7 @@ static const uint32_t nextensions = 4; static const char extensions[nextensions][5] = {".bmp", ".png", ".gif", ".jpg"}; AnimationGfx::AnimationGfx(const AnimationData* data) +: m_hotspot(data->hotspot) { m_encodedata.hasplrclrs = data->encdata.hasplrclrs; m_encodedata.plrclr[0] = data->encdata.plrclr[0]; @@ -375,121 +376,147 @@ m_encodedata.plrclr[2] = data->encdata.plrclr[2]; m_encodedata.plrclr[3] = data->encdata.plrclr[3]; - m_hotspot = data->hotspot; - m_plrframes = new std::vector<Surface*>[MAX_PLAYERS+1]; + // In the filename template, the last sequence of '?' characters (if any) + // is replaced with a number, for example the template "idle_??" is + // replaced with "idle_00". Then the code looks if there is a file with + // that name + any extension in the list above. Assuming that it finds a + // file, it increments the number so that the filename is "idle_01" and + // looks for a file with that name + extension, and so on until it can not + // find any file. Then it is assumed that there are no more frames in the + // animation. - std::vector<Surface *> frames; - for (;;) { - // create the base file name by reverse-scanning for '?' and replacing - char fnamebase[256]; - snprintf(fnamebase, sizeof(fnamebase), "%s", data->picnametempl.c_str()); + // Allocate a buffer for the filename. It must be large enough to hold the + // picture name template, the "_pc" (3 characters) part for playercolor + // masks, the extension (4 characters including the dot) and the null + // terminator. Copy the picture name template into the buffer. + char filename[256]; + size_t const picnametempl_size = data->picnametempl.size(); + if (sizeof(filename) < picnametempl_size + 3 + 4 + 1) + throw wexception + ("buffer too small (%u) for picture name temlplate of size %u\n", + sizeof(filename), picnametempl_size); + strcpy(filename, data->picnametempl.c_str()); - int32_t nr = frames.size(); - char *p = fnamebase + strlen(fnamebase); - while (p > fnamebase) { - if (*--p != '?') - continue; + // Find out where in the picture name template the number is. Search + // backwards from the end. + char * const after_basename = filename + picnametempl_size; + char * last_digit = after_basename; + while (filename <= last_digit and *last_digit != '?') + --last_digit; + char * before_first_digit = last_digit; + while (filename <= before_first_digit and *before_first_digit == '?') { + *before_first_digit = '0'; + --before_first_digit; + } - *p = '0' + (nr % 10); - nr = nr / 10; - } - if (nr) // cycled up to maximum possible frame number - break; - + for (;;) { // Load the base image - uint32_t extnr; - for (extnr = 0; extnr < nextensions; ++extnr) { - char fname[256]; - snprintf(fname, sizeof(fname), "%s%s", fnamebase, extensions[extnr]); - - // is the frame actually there? - if (not g_fs->FileExists(fname)) - continue; - - try { - SDL_Surface & bmp = *LoadImage(fname); - - // Get a new AnimFrame - Surface & frame = *new Surface(); - frames.push_back(&frame); - frame.set_sdl_surface(bmp); - } - catch (const std::exception & e) { - log("WARNING: Couldn't load animation frame %s: %s\n", fname, e.what()); - continue; - } - break; - } - if (extnr == nextensions) - break; - - // See if there's a player colour mask for this frame - if (m_encodedata.hasplrclrs) { - for (extnr = 0; extnr < nextensions; ++extnr) { - char fname[256]; - snprintf(fname, sizeof(fname), "%s_pc%s", fnamebase, extensions[extnr]); - - if (not g_fs->FileExists(fname)) - continue; - + for (size_t extnr = 0;;) { + strcpy(after_basename, extensions[extnr]); + if (g_fs->FileExists(filename)) { // Is the frame actually there? try { - SDL_Surface & bmp = *LoadImage(fname); + SDL_Surface & surface = *LoadImage(filename); + // Get a new AnimFrame. Surface & frame = *new Surface(); - frame.set_sdl_surface(bmp); - m_pcmasks.push_back(&frame); - break; + m_plrframes[0].push_back(&frame); + frame.set_sdl_surface(surface); + } catch (std::exception const & e) { + throw wexception + ("could not load animation frame %s: %s\n", + filename, e.what()); } - catch (const std::exception & e) { - log("WARNING: Couldn't load animation pc frame %s: %s\n", fname, e.what()); - continue; + // Successfully loaded the frame. + break; // No need to look for files with other extensions. + } else if (++extnr == nextensions) // Tried all extensions. + goto end; // This frame does not exist. No more frames in anim. + } + + switch (m_encodedata.hasplrclrs) { + case EncodeData::Mask: + strcpy(after_basename, "_pc"); + for (size_t extnr = 0;;) { + strcpy(after_basename + 3, extensions[extnr]); + if (g_fs->FileExists(filename)) { + try { + SDL_Surface & surface = *LoadImage(filename); + Surface & frame = *new Surface(); + frame.set_sdl_surface(surface); + m_pcmasks.push_back(&frame); + break; + } catch (std::exception const & e) { + throw wexception + ("error while reading \"%s\": %s", filename, e.what()); + } + } else if (++extnr == nextensions) { + *after_basename = '\0'; // cut off the extension + throw wexception("\"%s\" is missing", filename); } } + break; + case EncodeData::Old: { + Surface & origsurface = *m_plrframes[0].back(); + Surface & newsurface = *new Surface(); + newsurface.set_sdl_surface(*SDL_DisplayFormat(origsurface.m_surface)); - if (extnr == nextensions) { - Surface & origsurface = *frames.back(); - Surface & newsurface = *new Surface(); - newsurface.set_sdl_surface(*SDL_DisplayFormat(origsurface.m_surface)); + static const RGBColor whitecolors[4] = { + RGBColor(119, 119, 119), + RGBColor(166, 166, 166), + RGBColor(210, 210, 210), + RGBColor(255, 255, 255) + }; + uint32_t white = RGBColor(255, 255, 255).map(newsurface.format()); + uint32_t black = RGBColor(0, 0, 0).map(newsurface.format()); + uint32_t plrclr[4]; + uint32_t new_plrclr[4]; - static const RGBColor whitecolors[4] = { - RGBColor(119, 119, 119), - RGBColor(166, 166, 166), - RGBColor(210, 210, 210), - RGBColor(255, 255, 255) - }; - uint32_t white = RGBColor(255, 255, 255).map(newsurface.format()); - uint32_t black = RGBColor(0, 0, 0).map(newsurface.format()); - uint32_t plrclr[4]; - uint32_t new_plrclr[4]; + for (uint32_t i = 0; i < 4; ++i) { + plrclr[i] = m_encodedata.plrclr[i].map(origsurface.format()); + new_plrclr[i] = whitecolors[i].map(origsurface.format()); + } - for (uint32_t i = 0; i < 4; ++i) { - plrclr[i] = m_encodedata.plrclr[i].map(origsurface.format()); - new_plrclr[i] = whitecolors[i].map(origsurface.format()); - } - - // Walk the surface, replace all playercolors. - for (uint32_t y = 0; y < newsurface.get_h(); ++y) { - for (uint32_t x = 0; x < newsurface.get_w(); ++x) { - const uint32_t clr = origsurface.get_pixel(x, y); - newsurface.set_pixel(x, y, black); - for (uint32_t i = 0; i < 4; ++i) { - if (clr == plrclr[i]) { - origsurface.set_pixel(x, y, new_plrclr[i]); - newsurface.set_pixel(x, y, white); - break; - } + // Walk the surface, replace all playercolors. + for (uint32_t y = 0; y < newsurface.get_h(); ++y) { + for (uint32_t x = 0; x < newsurface.get_w(); ++x) { + const uint32_t clr = origsurface.get_pixel(x, y); + newsurface.set_pixel(x, y, black); + for (uint32_t i = 0; i < 4; ++i) { + if (clr == plrclr[i]) { + origsurface.set_pixel(x, y, new_plrclr[i]); + newsurface.set_pixel(x, y, white); + break; } } } + } - m_pcmasks.push_back(&newsurface); + m_pcmasks.push_back(&newsurface); + break; + } + case EncodeData::No:; + } + + // Increment the number in the filename. + for (char * digit_to_increment = last_digit;;) { + if (digit_to_increment == before_first_digit) + goto end; // The number wrapped around to all zeros. + assert('0' <= *digit_to_increment); + assert (*digit_to_increment <= '9'); + if (*digit_to_increment == '9') { + *digit_to_increment = '0'; + --digit_to_increment; + } else { + ++*digit_to_increment; + break; } } } - - m_plrframes[0] = frames; - - if (!frames.size()) +end: + if (m_plrframes[0].empty()) throw wexception("Animation %s has no frames", data->picnametempl.c_str()); + if (m_pcmasks.size() and m_pcmasks.size() < m_plrframes[0].size()) + throw wexception + ("animation has %u frames but playercolor mask has only %u frames", + m_plrframes[0].size(), m_pcmasks.size()); } @@ -507,12 +534,9 @@ for (uint32_t j = 0; j < frames.size(); ++j) delete frames[j]; } - delete[] m_plrframes; - m_plrframes = 0; for (uint32_t j = 0; j < m_pcmasks.size(); ++j) delete m_pcmasks[j]; - m_pcmasks.clear(); } Modified: trunk/tribes/barbarians/workers/soldier/conf =================================================================== --- trunk/tribes/barbarians/workers/soldier/conf 2008-10-05 00:03:37 UTC (rev 3346) +++ trunk/tribes/barbarians/workers/soldier/conf 2008-10-05 09:39:29 UTC (rev 3347) @@ -50,5 +50,4 @@ [walk] hotspot=5 13 fps=20 -playercolor=true This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-10-05 10:46:54
|
Revision: 3349 http://widelands.svn.sourceforge.net/widelands/?rev=3349&view=rev Author: bedouin Date: 2008-10-05 10:45:54 +0000 (Sun, 05 Oct 2008) Log Message: ----------- In scons builds, move the autogenerated config.h from src/to the build directory. Other build systems do not require modification. Modified Paths: -------------- trunk/SConstruct trunk/build/scons-tools/scons_configure.py trunk/src/SConscript Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-10-05 10:18:18 UTC (rev 3348) +++ trunk/SConstruct 2008-10-05 10:45:54 UTC (rev 3349) @@ -143,6 +143,7 @@ TARGET=parse_cli(env) BUILDDIR='build/'+TARGET+'-'+env['build'] +env.Append(CPPPATH=[os.path.join('#', BUILDDIR)]) if env.enable_configuration: # Generate build_id.cc - scons itself will decide whether a recompile is needed @@ -151,9 +152,13 @@ print_build_info(env) print #prettyprinting + #TODO: can this be combined with the enclosing if block? Would make the logic easier to understand if configure_is_needed(BUILD_TARGETS): do_configure(conf, env) + # Generate config.h - scons itself will decide whether a recompile is needed + Command(os.path.join(BUILDDIR, "config.h"), [Value(generate_configh_content(env))], generate_configh_file) + env=conf.Finish() print # Pretty output @@ -267,8 +272,6 @@ Delete('utils/confgettext.pyc'), Delete('tags'), Delete('widelands'), - Delete('src/build_id.cc'), - Delete('src/config.h'), Delete('locale/sv_SE'), Delete('locale/de_DE'), Delete('locale/da_DK'), Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-05 10:18:18 UTC (rev 3348) +++ trunk/build/scons-tools/scons_configure.py 2008-10-05 10:45:54 UTC (rev 3349) @@ -5,51 +5,6 @@ ################################################################################ -def write_configh_header(): - config_h_file=open('src/config.h', "w") - config_h_file.write(""" -// This file is autogenerated. It will be overwritten by the next run of scons - -#ifndef CONFIG_H -#define CONFIG_H - -""") - return config_h_file - -# TODO: split this up and write the data where it originates -def write_configh(config_h_file, env): - if os.path.isabs(env['bindir']): - bindir=env['bindir'] - else: - bindir=os.path.join(env['install_prefix'], env['bindir']) - - if os.path.isabs(env['datadir']): - datadir=env['datadir'] - else: - datadir=os.path.join(env['install_prefix'], env['datadir']) - - if os.path.isabs(env['localedir']): - localedir=env['localedir'] - else: - localedir=os.path.join(env['install_prefix'], env['localedir']) - - if env['build'] != 'release' and env['prefer_localdata']: - config_h_file.write("#define INSTALL_PREFIX \".\"\n") - config_h_file.write("#define INSTALL_BINDIR \".\"\n") - config_h_file.write("#define INSTALL_DATADIR \".\"\n") - config_h_file.write("#define INSTALL_LOCALEDIR \"locale\"\n\n") - else: - config_h_file.write("#define INSTALL_PREFIX \""+env['install_prefix']+"\"\n") - config_h_file.write("#define INSTALL_BINDIR \""+env['bindir']+"\"\n") - config_h_file.write("#define INSTALL_DATADIR \""+env['datadir']+"\"\n") - config_h_file.write("#define INSTALL_LOCALEDIR \""+env['localedir']+"\"\n\n") - -def write_configh_footer(config_h_file): - config_h_file.write("\n#endif\n") - config_h_file.close() - -################################################################################ - def print_build_info(env): print print 'Platform: ', env['PLATFORM'] @@ -303,7 +258,7 @@ return is_needed -def do_configure_basic_compiling(config_h_file, conf, env): +def do_configure_basic_compiling(conf, env): print "Checking for a working C++ compiler ...", if not conf.TryLink("""class c{}; int main(){class c the_class;}""", '.cc'): print "no" @@ -328,7 +283,7 @@ print "Your compiler does not support __attribute__((format(printf, 2, 3))) which is neccessary for widelands. Please get a decent compiler." env.Exit(1) -def do_configure_locale(config_h_file, conf, env): +def do_configure_locale(conf, env): setlocalefound=0 if (conf.CheckFunc('setlocale') or conf.CheckLibWithHeader('', 'locale.h', 'C', 'setlocale("LC_ALL", "C");', autoadd=0)): setlocalefound=1 @@ -346,10 +301,11 @@ if not conf.CheckFunc('getenv'): print '--> Your system does not support getenv(). Tilde epansion in filenames will not work.' + env.HAS_GETENV=False else: - config_h_file.write("#define HAS_GETENV\n"); + env.HAS_GETENV=True -def do_configure_libraries(config_h_file, conf, env): +def do_configure_libraries(conf, env): if not conf.CheckSDLConfig(env): print 'Could not find sdl-config! Is SDL installed?' env.Exit(1) @@ -364,6 +320,7 @@ print 'Boost version >= 1.33 needed. Make sure Boost development packages are installed.' env.Exit(1) + env.HAS_PARAGUI=False #disabled until somebody finds time and courage to actually work on this #fweber #if not conf.CheckParaguiConfig(env): # print 'Could not find paragui. That\'s no problem unless you\'re a developer working on this.' @@ -371,7 +328,7 @@ # #env.Exit(1) #else: # env.ParseConfig(env['paraguiconfig']+' --libs --cflags') - # config_h_file.write("#define HAS_PARAGUI\n\n"); + # env.HAS_PARAGUI=True if not conf.CheckLibWithHeader('z', header='zlib.h', language='C', autoadd=1): print 'Could not find the zlib library! Is it installed?' @@ -407,15 +364,13 @@ Mix_LoadMUS_RW("foo.ogg"); } """, '.c'): - config_h_file.write("#define NEW_SDL_MIXER 1\n"); - config_h_file.write("//next line is needed by SDL_mixer\n"); - config_h_file.write("#define USE_RWOPS\n"); + env.NEW_SDL_MIXER=True print 'SDL_mixer supports Mix_LoadMUS_RW(). Good' else: - config_h_file.write("#define NEW_SDL_MIXER 0\n"); print 'Your SDL_mixer does not support Mix_LoadMUS_RW(). Widelands will run without problems, but consider updating SDL_mixer anyway.' + env.NEW_SDL_MIXER=False -def do_configure_debugtools(config_h_file, conf, env): +def do_configure_debugtools(conf, env): if conf.CheckLib('efence', symbol='EF_newFrame', language='C', autoadd=0): if env.efence: conf.CheckCompilerFlag('-include stdlib.h -include string.h -include efence.h', env) @@ -426,7 +381,7 @@ print 'Could not find efence, so doing a debug-efence build is impossible !' env.Exit(1) -def do_configure_compiler_warnings(config_h_file, conf, env): +def do_configure_compiler_warnings(conf, env): conf.CheckCompilerFlag('-Wall', env) conf.CheckCompilerFlag('-Wcast-align', env) conf.CheckCompilerFlag('-Werror=cast-align', env) @@ -473,7 +428,7 @@ #conf.CheckCompilerFlag('-Wno-unused-parameter', env) #conf.CheckCompilerFlag('-Werror', env) -def do_configure_compiler_features(config_h_file, conf, env): +def do_configure_compiler_features(conf, env): conf.CheckCompilerFlag('-fstack-protector-all', env) conf.CheckCompilerFlag('-fbounds-check', env) conf.CheckCompilerFlag('-pipe', env) @@ -497,7 +452,7 @@ conf.CheckCompilerFlag('-g', env) conf.CheckCompilerFlag('-fmessage-length=0', env) -def do_configure_linker_features(config_h_file, conf, env): +def do_configure_linker_features(conf, env): if env.profile: conf.CheckLinkerFlag('-pg', env) conf.CheckLinkerFlag('-fprofile-arcs', env) @@ -506,17 +461,72 @@ conf.CheckLinkerFlag('-s', env) def do_configure(conf, env): - config_h_file=write_configh_header() + do_configure_basic_compiling(conf, env) + do_configure_locale(conf, env) + do_configure_libraries(conf, env) + do_configure_debugtools(conf, env) - do_configure_basic_compiling(config_h_file, conf, env) - do_configure_locale(config_h_file, conf, env) - do_configure_libraries(config_h_file, conf, env) - do_configure_debugtools(config_h_file, conf, env) + do_configure_compiler_warnings(conf, env) + do_configure_compiler_features(conf, env) + do_configure_linker_features(conf, env) - do_configure_compiler_warnings(config_h_file, conf, env) - do_configure_compiler_features(config_h_file, conf, env) - do_configure_linker_features(config_h_file, conf, env) +################################################################################ - write_configh(config_h_file, env) - write_configh_footer(config_h_file) +def generate_configh_content(env): + data="" + if os.path.isabs(env['bindir']): + bindir=env['bindir'] + else: + bindir=os.path.join(env['install_prefix'], env['bindir']) + + if os.path.isabs(env['datadir']): + datadir=env['datadir'] + else: + datadir=os.path.join(env['install_prefix'], env['datadir']) + + if os.path.isabs(env['localedir']): + localedir=env['localedir'] + else: + localedir=os.path.join(env['install_prefix'], env['localedir']) + + if env['build'] != 'release' and env['prefer_localdata']: + data+="#define INSTALL_PREFIX \".\"\n" + data+="#define INSTALL_BINDIR \".\"\n" + data+="#define INSTALL_DATADIR \".\"\n" + data+="#define INSTALL_LOCALEDIR \"locale\"\n\n" + else: + data+="#define INSTALL_PREFIX \""+env['install_prefix']+"\"\n" + data+="#define INSTALL_BINDIR \""+env['bindir']+"\"\n" + data+="#define INSTALL_DATADIR \""+env['datadir']+"\"\n" + data+="#define INSTALL_LOCALEDIR \""+env['localedir']+"\"\n\n" + + if env.HAS_GETENV==True: + data+="#define HAS_GETENV\n\n" + + if env.HAS_PARAGUI==True: + data+="#define HAS_PARAGUI\n\n" + + if env.NEW_SDL_MIXER==True: + data+="#define NEW_SDL_MIXER 1\n" + data+="//next line is needed by SDL_mixer\n" + data+="#define USE_RWOPS\n" + else: + data+="#define NEW_SDL_MIXER 0\n" + + return data + +def generate_configh_file(env, target, source): + config_h_file=open(target[0].path, "w") + + config_h_file.write(""" // This file is autogenerated. It will be overwritten by the next run of scons + +#ifndef CONFIG_H +#define CONFIG_H + +""") + config_h_file.write(source[0].get_contents()) + config_h_file.write("\n#endif\n\n") + + config_h_file.close() + Modified: trunk/src/SConscript =================================================================== --- trunk/src/SConscript 2008-10-05 10:18:18 UTC (rev 3348) +++ trunk/src/SConscript 2008-10-05 10:45:54 UTC (rev 3349) @@ -9,8 +9,6 @@ srcenv=env.Clone() -srcenv.Append(CPPPATH=['#/src']) - Export('srcenv') # Ordering is paramount in the SConscript calls! This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-10-05 12:24:20
|
Revision: 3352 http://widelands.svn.sourceforge.net/widelands/?rev=3352&view=rev Author: bedouin Date: 2008-10-05 12:19:59 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Clean up main SConscript logic Modified Paths: -------------- trunk/SConstruct trunk/build/scons-tools/scons_configure.py Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-10-05 11:36:26 UTC (rev 3351) +++ trunk/SConstruct 2008-10-05 12:19:59 UTC (rev 3352) @@ -141,24 +141,20 @@ # # Parse commandline and autoconfigure -TARGET=parse_cli(env) -BUILDDIR='build/'+TARGET+'-'+env['build'] +BUILDDIR=parse_cli(env, BUILD_TARGETS) env.Append(CPPPATH=[os.path.join('#', BUILDDIR)]) +print_build_info(env) + if env.enable_configuration: # Generate build_id.cc - scons itself will decide whether a recompile is needed Command(os.path.join(BUILDDIR, "build_id.cc"), [Value(get_build_id(env))], generate_buildid_file) - print_build_info(env) - print #prettyprinting + do_configure(conf, env) - #TODO: can this be combined with the enclosing if block? Would make the logic easier to understand - if configure_is_needed(BUILD_TARGETS): - do_configure(conf, env) + # Generate config.h - scons itself will decide whether a recompile is needed + Command(os.path.join(BUILDDIR, "config.h"), [Value(generate_configh_content(env))], generate_configh_file) - # Generate config.h - scons itself will decide whether a recompile is needed - Command(os.path.join(BUILDDIR, "config.h"), [Value(generate_configh_content(env))], generate_configh_file) - env=conf.Finish() print # Pretty output Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-05 11:36:26 UTC (rev 3351) +++ trunk/build/scons-tools/scons_configure.py 2008-10-05 12:19:59 UTC (rev 3352) @@ -10,6 +10,7 @@ print 'Platform: ', env['PLATFORM'] print 'Build type: ', env['build'] print 'Build ID: ', get_build_id(env) + print def get_build_id(env): #This is just a default value, don't change it here in the code. @@ -34,8 +35,7 @@ ################################################################################ -def parse_cli(env): - TARGET='native' +def parse_cli(env, buildtargets): env.enable_configuration=True env.debug=0 env.optimize=0 @@ -43,16 +43,35 @@ env.efence=0 env.profile=0 + # Crosscompile config must be done before anything else! + #if env['cross']: + # print 'Cross-compiling does not work yet!' + # env.Exit(1) + # #TARGET='i586-mingw32msvc' + # #PREFIX='/usr/local/cross-tools' + # #env['ENV']['PATH']=PREFIX+'/'+TARGET+'/bin:'+PREFIX+'/bin'+env['ENV']['PATH'] + # #env['CXX']=TARGET+'-g++' + # ### manually overwrite + # ###env['sdlconfig']=PREFIX+'/bin/'+TARGET+'-sdl_config' + # #env['sdlconfig']=PREFIX+'/'+TARGET+'/bin/'+TARGET+'-sdl-config' + #else: + # TARGET='native' + TARGET='native' + + BUILDDIR='build/'+TARGET+'-'+env['build'] + if env.GetOption('clean'): env.enable_configuration=False - return TARGET + return BUILDDIR if '-h' in sys.argv[1:]: env.enable_configuration=False - return TARGET + return BUILDDIR if '-H' in sys.argv[1:]: env.enable_configuration=False - return TARGET + return BUILDDIR + env.enable_configuration=configure_is_needed(buildtargets) + #This makes LIBPATH work correctly - I just don't know why :-( #Obviously, env.LIBPATH must be forced to be a list instead of a string. Is this #a scons problem? Or rather our problem??? @@ -115,21 +134,8 @@ env.Append(CCFLAGS='-DUSE_GGZ') env.Append(LIBS=['ggzmod', 'ggzcore', 'ggz']) - #if env['cross']: - # print 'Cross-compiling does not work yet!' - # env.Exit(1) - # #TARGET='i586-mingw32msvc' - # #PREFIX='/usr/local/cross-tools' - # #env['ENV']['PATH']=PREFIX+'/'+TARGET+'/bin:'+PREFIX+'/bin'+env['ENV']['PATH'] - # #env['CXX']=TARGET+'-g++' - # ### manually overwrite - # ###env['sdlconfig']=PREFIX+'/bin/'+TARGET+'-sdl_config' - # #env['sdlconfig']=PREFIX+'/'+TARGET+'/bin/'+TARGET+'-sdl-config' - #else: - # TARGET='native' + return BUILDDIR - return TARGET - ################################################################################ def CheckPKG(context, name): @@ -246,7 +252,7 @@ (==no target given at commandline): yes. If we're _only_ building targets that don't need configuration: no.""" - NOCONFTARGETS=["clean", "dist", "distclean", "doc", "indent", "install", "longlines", "precommit", "uninst", "uninstall"] + NOCONFTARGETS=["clean", "dist", "distclean", "indent", "install", "longlines", "precommit", "shrink" "uninst", "uninstall"] is_needed=False if targets==[]: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <be...@us...> - 2008-10-05 15:00:26
|
Revision: 3356 http://widelands.svn.sourceforge.net/widelands/?rev=3356&view=rev Author: bedouin Date: 2008-10-05 14:59:26 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Use native Glob function for "scons tags" instead of self-written one. Don't run autoconf for building tags. Modified Paths: -------------- trunk/SConstruct trunk/build/scons-tools/scons_configure.py Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-10-05 13:12:41 UTC (rev 3355) +++ trunk/SConstruct 2008-10-05 14:59:26 UTC (rev 3356) @@ -184,9 +184,7 @@ ########################################################################### tags -S=find('src', '*.h') -S+=find('src', '*.cc') -Alias('tags', env.ctags(source=S, target='tags')) +Alias('tags', env.ctags(source=Glob('src/*.h', strings=True)+Glob('src/*.cc', strings=True), target='tags')) Default('tags') ################################################################## PNG shrinking Modified: trunk/build/scons-tools/scons_configure.py =================================================================== --- trunk/build/scons-tools/scons_configure.py 2008-10-05 13:12:41 UTC (rev 3355) +++ trunk/build/scons-tools/scons_configure.py 2008-10-05 14:59:26 UTC (rev 3356) @@ -252,7 +252,7 @@ (==no target given at commandline): yes. If we're _only_ building targets that don't need configuration: no.""" - NOCONFTARGETS=["clean", "dist", "distclean", "indent", "install", "longlines", "precommit", "shrink" "uninst", "uninstall"] + NOCONFTARGETS=["clean", "dist", "distclean", "indent", "install", "longlines", "precommit", "shrink", "tags", "uninst", "uninstall"] is_needed=False if targets==[]: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-05 15:05:11
|
Revision: 3357 http://widelands.svn.sourceforge.net/widelands/?rev=3357&view=rev Author: sigra Date: 2008-10-05 15:02:52 +0000 (Sun, 05 Oct 2008) Log Message: ----------- set svn:mime-type to image/png for the png files that did not already have that set Property Changed: ---------------- trunk/campaigns/emp01.wmf/pics/Amalea.png trunk/campaigns/emp01.wmf/pics/Lutius.png trunk/campaigns/emp01.wmf/pics/Saledus.png trunk/campaigns/emp02.wmf/pics/Amalea.png trunk/campaigns/emp02.wmf/pics/Lutius.png trunk/campaigns/emp02.wmf/pics/Saledus.png trunk/pics/WL-Editor-128.png trunk/pics/WL-Editor-16.png trunk/pics/WL-Editor-32.png trunk/pics/WL-Editor-64.png trunk/pics/cursor-alt2.png trunk/pics/high_priority_button.png trunk/pics/high_priority_on.png trunk/pics/low_priority_button.png trunk/pics/low_priority_on.png trunk/pics/menu_train_options.png trunk/pics/normal_priority_button.png trunk/pics/normal_priority_on.png trunk/pics/progress.png trunk/pics/progress_bg.png trunk/pics/tips_bg.png trunk/worlds/blackland/bobs/deer/deer_idle_se_00.png trunk/worlds/blackland/bobs/deer/deer_idle_se_01.png trunk/worlds/blackland/bobs/deer/deer_idle_se_02.png trunk/worlds/blackland/bobs/deer/deer_idle_se_03.png trunk/worlds/blackland/bobs/deer/deer_idle_se_04.png trunk/worlds/blackland/bobs/deer/deer_idle_se_05.png trunk/worlds/blackland/bobs/deer/deer_idle_se_06.png trunk/worlds/blackland/bobs/deer/deer_idle_se_07.png trunk/worlds/blackland/bobs/deer/deer_idle_se_08.png trunk/worlds/blackland/bobs/deer/deer_idle_se_09.png trunk/worlds/blackland/bobs/deer/deer_idle_se_10.png trunk/worlds/blackland/bobs/deer/deer_idle_se_11.png trunk/worlds/blackland/bobs/deer/deer_idle_se_12.png trunk/worlds/blackland/bobs/deer/deer_idle_se_13.png trunk/worlds/blackland/bobs/deer/deer_idle_se_14.png trunk/worlds/blackland/bobs/deer/deer_idle_se_15.png trunk/worlds/blackland/bobs/deer/deer_idle_se_16.png trunk/worlds/blackland/bobs/deer/deer_idle_se_17.png trunk/worlds/blackland/bobs/deer/deer_idle_se_18.png trunk/worlds/blackland/bobs/deer/deer_idle_se_19.png trunk/worlds/blackland/bobs/deer/deer_walk_e_02.png trunk/worlds/blackland/bobs/deer/deer_walk_e_03.png trunk/worlds/blackland/bobs/deer/deer_walk_e_04.png trunk/worlds/blackland/bobs/deer/deer_walk_e_05.png trunk/worlds/blackland/bobs/deer/deer_walk_e_06.png trunk/worlds/blackland/bobs/deer/deer_walk_e_07.png trunk/worlds/blackland/bobs/deer/deer_walk_e_08.png trunk/worlds/blackland/bobs/deer/deer_walk_e_09.png trunk/worlds/blackland/bobs/deer/deer_walk_e_10.png trunk/worlds/blackland/bobs/deer/deer_walk_e_11.png trunk/worlds/blackland/bobs/deer/deer_walk_e_12.png trunk/worlds/blackland/bobs/deer/deer_walk_e_13.png trunk/worlds/blackland/bobs/deer/deer_walk_e_14.png trunk/worlds/blackland/bobs/deer/deer_walk_e_15.png trunk/worlds/blackland/bobs/deer/deer_walk_e_16.png trunk/worlds/blackland/bobs/deer/deer_walk_e_17.png trunk/worlds/blackland/bobs/deer/deer_walk_e_18.png trunk/worlds/blackland/bobs/deer/deer_walk_e_19.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_02.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_03.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_04.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_05.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_06.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_07.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_08.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_09.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_10.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_11.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_12.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_13.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_14.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_15.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_16.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_17.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_18.png trunk/worlds/blackland/bobs/deer/deer_walk_ne_19.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_02.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_03.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_04.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_05.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_06.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_07.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_08.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_09.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_10.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_11.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_12.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_13.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_14.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_15.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_16.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_17.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_18.png trunk/worlds/blackland/bobs/deer/deer_walk_nw_19.png trunk/worlds/blackland/bobs/deer/deer_walk_se_02.png trunk/worlds/blackland/bobs/deer/deer_walk_se_03.png trunk/worlds/blackland/bobs/deer/deer_walk_se_04.png trunk/worlds/blackland/bobs/deer/deer_walk_se_05.png trunk/worlds/blackland/bobs/deer/deer_walk_se_06.png trunk/worlds/blackland/bobs/deer/deer_walk_se_07.png trunk/worlds/blackland/bobs/deer/deer_walk_se_08.png trunk/worlds/blackland/bobs/deer/deer_walk_se_09.png trunk/worlds/blackland/bobs/deer/deer_walk_se_10.png trunk/worlds/blackland/bobs/deer/deer_walk_se_11.png trunk/worlds/blackland/bobs/deer/deer_walk_se_12.png trunk/worlds/blackland/bobs/deer/deer_walk_se_13.png trunk/worlds/blackland/bobs/deer/deer_walk_se_14.png trunk/worlds/blackland/bobs/deer/deer_walk_se_15.png trunk/worlds/blackland/bobs/deer/deer_walk_se_16.png trunk/worlds/blackland/bobs/deer/deer_walk_se_17.png trunk/worlds/blackland/bobs/deer/deer_walk_se_18.png trunk/worlds/blackland/bobs/deer/deer_walk_se_19.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_02.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_03.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_04.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_05.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_06.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_07.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_08.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_09.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_10.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_11.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_12.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_13.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_14.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_15.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_16.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_17.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_18.png trunk/worlds/blackland/bobs/deer/deer_walk_sw_19.png trunk/worlds/blackland/bobs/deer/deer_walk_w_02.png trunk/worlds/blackland/bobs/deer/deer_walk_w_03.png trunk/worlds/blackland/bobs/deer/deer_walk_w_04.png trunk/worlds/blackland/bobs/deer/deer_walk_w_05.png trunk/worlds/blackland/bobs/deer/deer_walk_w_06.png trunk/worlds/blackland/bobs/deer/deer_walk_w_07.png trunk/worlds/blackland/bobs/deer/deer_walk_w_08.png trunk/worlds/blackland/bobs/deer/deer_walk_w_09.png trunk/worlds/blackland/bobs/deer/deer_walk_w_10.png trunk/worlds/blackland/bobs/deer/deer_walk_w_11.png trunk/worlds/blackland/bobs/deer/deer_walk_w_12.png trunk/worlds/blackland/bobs/deer/deer_walk_w_13.png trunk/worlds/blackland/bobs/deer/deer_walk_w_14.png trunk/worlds/blackland/bobs/deer/deer_walk_w_15.png trunk/worlds/blackland/bobs/deer/deer_walk_w_16.png trunk/worlds/blackland/bobs/deer/deer_walk_w_17.png trunk/worlds/blackland/bobs/deer/deer_walk_w_18.png trunk/worlds/blackland/bobs/deer/deer_walk_w_19.png trunk/worlds/blackland/bobs/fox/fox_idle_se_00.png trunk/worlds/blackland/bobs/fox/fox_idle_se_01.png trunk/worlds/blackland/bobs/fox/fox_idle_se_02.png trunk/worlds/blackland/bobs/fox/fox_idle_se_03.png trunk/worlds/blackland/bobs/fox/fox_idle_se_04.png trunk/worlds/blackland/bobs/fox/fox_idle_se_05.png trunk/worlds/blackland/bobs/fox/fox_idle_se_06.png trunk/worlds/blackland/bobs/fox/fox_idle_se_07.png trunk/worlds/blackland/bobs/fox/fox_idle_se_08.png trunk/worlds/blackland/bobs/fox/fox_idle_se_09.png trunk/worlds/blackland/bobs/fox/fox_idle_se_10.png trunk/worlds/blackland/bobs/fox/fox_idle_se_11.png trunk/worlds/blackland/bobs/fox/fox_idle_se_12.png trunk/worlds/blackland/bobs/fox/fox_idle_se_13.png trunk/worlds/blackland/bobs/fox/fox_idle_se_14.png trunk/worlds/blackland/bobs/fox/fox_idle_se_15.png trunk/worlds/blackland/bobs/fox/fox_idle_se_16.png trunk/worlds/blackland/bobs/fox/fox_idle_se_17.png trunk/worlds/blackland/bobs/fox/fox_idle_se_18.png trunk/worlds/blackland/bobs/fox/fox_idle_se_19.png trunk/worlds/blackland/bobs/fox/fox_walk_e_02.png trunk/worlds/blackland/bobs/fox/fox_walk_e_03.png trunk/worlds/blackland/bobs/fox/fox_walk_e_04.png trunk/worlds/blackland/bobs/fox/fox_walk_e_05.png trunk/worlds/blackland/bobs/fox/fox_walk_e_06.png trunk/worlds/blackland/bobs/fox/fox_walk_e_07.png trunk/worlds/blackland/bobs/fox/fox_walk_e_08.png trunk/worlds/blackland/bobs/fox/fox_walk_e_09.png trunk/worlds/blackland/bobs/fox/fox_walk_e_10.png trunk/worlds/blackland/bobs/fox/fox_walk_e_11.png trunk/worlds/blackland/bobs/fox/fox_walk_e_12.png trunk/worlds/blackland/bobs/fox/fox_walk_e_13.png trunk/worlds/blackland/bobs/fox/fox_walk_e_14.png trunk/worlds/blackland/bobs/fox/fox_walk_e_15.png trunk/worlds/blackland/bobs/fox/fox_walk_e_16.png trunk/worlds/blackland/bobs/fox/fox_walk_e_17.png trunk/worlds/blackland/bobs/fox/fox_walk_e_18.png trunk/worlds/blackland/bobs/fox/fox_walk_e_19.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_02.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_03.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_04.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_05.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_06.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_07.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_08.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_09.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_10.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_11.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_12.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_13.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_14.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_15.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_16.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_17.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_18.png trunk/worlds/blackland/bobs/fox/fox_walk_ne_19.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_02.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_03.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_04.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_05.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_06.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_07.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_08.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_09.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_10.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_11.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_12.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_13.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_14.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_15.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_16.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_17.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_18.png trunk/worlds/blackland/bobs/fox/fox_walk_nw_19.png trunk/worlds/blackland/bobs/fox/fox_walk_se_02.png trunk/worlds/blackland/bobs/fox/fox_walk_se_03.png trunk/worlds/blackland/bobs/fox/fox_walk_se_04.png trunk/worlds/blackland/bobs/fox/fox_walk_se_05.png trunk/worlds/blackland/bobs/fox/fox_walk_se_06.png trunk/worlds/blackland/bobs/fox/fox_walk_se_07.png trunk/worlds/blackland/bobs/fox/fox_walk_se_08.png trunk/worlds/blackland/bobs/fox/fox_walk_se_09.png trunk/worlds/blackland/bobs/fox/fox_walk_se_10.png trunk/worlds/blackland/bobs/fox/fox_walk_se_11.png trunk/worlds/blackland/bobs/fox/fox_walk_se_12.png trunk/worlds/blackland/bobs/fox/fox_walk_se_13.png trunk/worlds/blackland/bobs/fox/fox_walk_se_14.png trunk/worlds/blackland/bobs/fox/fox_walk_se_15.png trunk/worlds/blackland/bobs/fox/fox_walk_se_16.png trunk/worlds/blackland/bobs/fox/fox_walk_se_17.png trunk/worlds/blackland/bobs/fox/fox_walk_se_18.png trunk/worlds/blackland/bobs/fox/fox_walk_se_19.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_02.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_03.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_04.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_05.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_06.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_07.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_08.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_09.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_10.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_11.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_12.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_13.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_14.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_15.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_16.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_17.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_18.png trunk/worlds/blackland/bobs/fox/fox_walk_sw_19.png trunk/worlds/blackland/bobs/fox/fox_walk_w_02.png trunk/worlds/blackland/bobs/fox/fox_walk_w_03.png trunk/worlds/blackland/bobs/fox/fox_walk_w_04.png trunk/worlds/blackland/bobs/fox/fox_walk_w_05.png trunk/worlds/blackland/bobs/fox/fox_walk_w_06.png trunk/worlds/blackland/bobs/fox/fox_walk_w_07.png trunk/worlds/blackland/bobs/fox/fox_walk_w_08.png trunk/worlds/blackland/bobs/fox/fox_walk_w_09.png trunk/worlds/blackland/bobs/fox/fox_walk_w_10.png trunk/worlds/blackland/bobs/fox/fox_walk_w_11.png trunk/worlds/blackland/bobs/fox/fox_walk_w_12.png trunk/worlds/blackland/bobs/fox/fox_walk_w_13.png trunk/worlds/blackland/bobs/fox/fox_walk_w_14.png trunk/worlds/blackland/bobs/fox/fox_walk_w_15.png trunk/worlds/blackland/bobs/fox/fox_walk_w_16.png trunk/worlds/blackland/bobs/fox/fox_walk_w_17.png trunk/worlds/blackland/bobs/fox/fox_walk_w_18.png trunk/worlds/blackland/bobs/fox/fox_walk_w_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_00.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_01.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_idle_wnw_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_e_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_ne_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_nw_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_se_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_sw_19.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_02.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_03.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_04.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_05.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_06.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_07.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_08.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_09.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_10.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_11.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_12.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_13.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_14.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_15.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_16.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_17.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_18.png trunk/worlds/blackland/bobs/reindeer/reindeer_walk_w_19.png trunk/worlds/blackland/bobs/sheep/sheep_01.png trunk/worlds/blackland/bobs/sheep/sheep_02.png trunk/worlds/blackland/bobs/sheep/sheep_03.png trunk/worlds/blackland/bobs/sheep/sheep_04.png trunk/worlds/blackland/bobs/sheep/sheep_05.png trunk/worlds/blackland/bobs/sheep/sheep_06.png trunk/worlds/blackland/bobs/sheep/sheep_07.png trunk/worlds/blackland/bobs/sheep/sheep_08.png trunk/worlds/blackland/bobs/sheep/sheep_09.png trunk/worlds/blackland/bobs/sheep/sheep_10.png trunk/worlds/blackland/bobs/sheep/sheep_11.png trunk/worlds/blackland/bobs/sheep/sheep_12.png trunk/worlds/blackland/bobs/sheep/sheep_13.png trunk/worlds/blackland/bobs/sheep/sheep_14.png trunk/worlds/blackland/bobs/sheep/sheep_15.png trunk/worlds/blackland/bobs/sheep/sheep_16.png trunk/worlds/blackland/bobs/sheep/sheep_17.png trunk/worlds/blackland/bobs/sheep/sheep_18.png trunk/worlds/blackland/bobs/sheep/sheep_19.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_02.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_03.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_04.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_05.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_06.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_07.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_08.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_09.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_10.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_11.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_12.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_13.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_14.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_15.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_16.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_17.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_18.png trunk/worlds/blackland/bobs/sheep/sheep_walk_e_19.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_02.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_03.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_04.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_05.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_06.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_07.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_08.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_09.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_10.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_11.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_12.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_13.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_14.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_15.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_16.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_17.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_18.png trunk/worlds/blackland/bobs/sheep/sheep_walk_ne_19.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_02.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_03.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_04.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_05.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_06.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_07.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_08.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_09.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_10.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_11.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_12.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_13.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_14.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_15.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_16.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_17.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_18.png trunk/worlds/blackland/bobs/sheep/sheep_walk_nw_19.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_02.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_03.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_04.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_05.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_06.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_07.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_08.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_09.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_10.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_11.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_12.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_13.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_14.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_15.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_16.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_17.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_18.png trunk/worlds/blackland/bobs/sheep/sheep_walk_se_19.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_02.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_03.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_04.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_05.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_06.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_07.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_08.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_09.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_10.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_11.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_12.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_13.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_14.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_15.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_16.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_17.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_18.png trunk/worlds/blackland/bobs/sheep/sheep_walk_sw_19.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_02.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_03.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_04.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_05.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_06.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_07.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_08.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_09.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_10.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_11.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_12.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_13.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_14.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_15.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_16.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_17.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_18.png trunk/worlds/blackland/bobs/sheep/sheep_walk_w_19.png trunk/worlds/blackland/bobs/tree1_m/s3tree1_00.png trunk/worlds/blackland/bobs/tree1_m/s3tree1_01.png trunk/worlds/blackland/bobs/tree1_m/s3tree1_02.png trunk/worlds/blackland/bobs/tree1_m/s3tree1_03.png trunk/worlds/blackland/bobs/tree1_s/s2tree1_00.png trunk/worlds/blackland/bobs/tree1_s/s2tree1_01.png trunk/worlds/blackland/bobs/tree1_s/s2tree1_02.png trunk/worlds/blackland/bobs/tree1_s/s2tree1_03.png trunk/worlds/blackland/bobs/tree1_t/s1tree1_00.png trunk/worlds/blackland/bobs/tree1_t/s1tree1_01.png trunk/worlds/blackland/bobs/tree1_t/s1tree1_02.png trunk/worlds/blackland/bobs/tree1_t/s1tree1_03.png trunk/worlds/blackland/bobs/tree2_m/s3tree2_00.png trunk/worlds/blackland/bobs/tree2_m/s3tree2_01.png trunk/worlds/blackland/bobs/tree2_m/s3tree2_02.png trunk/worlds/blackland/bobs/tree2_m/s3tree2_03.png trunk/worlds/blackland/bobs/tree2_s/s2tree2_00.png trunk/worlds/blackland/bobs/tree2_s/s2tree2_01.png trunk/worlds/blackland/bobs/tree2_s/s2tree2_02.png trunk/worlds/blackland/bobs/tree2_s/s2tree2_03.png trunk/worlds/blackland/bobs/tree2_t/s1tree2_00.png trunk/worlds/blackland/bobs/tree2_t/s1tree2_01.png trunk/worlds/blackland/bobs/tree2_t/s1tree2_02.png trunk/worlds/blackland/bobs/tree2_t/s1tree2_03.png trunk/worlds/blackland/bobs/tree3_m/s3tree3_00.png trunk/worlds/blackland/bobs/tree3_m/s3tree3_01.png trunk/worlds/blackland/bobs/tree3_m/s3tree3_02.png trunk/worlds/blackland/bobs/tree3_m/s3tree3_03.png trunk/worlds/blackland/bobs/tree3_s/s2tree3_00.png trunk/worlds/blackland/bobs/tree3_s/s2tree3_01.png trunk/worlds/blackland/bobs/tree3_s/s2tree3_02.png trunk/worlds/blackland/bobs/tree3_s/s2tree3_03.png trunk/worlds/blackland/bobs/tree3_t/s1tree3_00.png trunk/worlds/blackland/bobs/tree3_t/s1tree3_01.png trunk/worlds/blackland/bobs/tree3_t/s1tree3_02.png trunk/worlds/blackland/bobs/tree3_t/s1tree3_03.png trunk/worlds/blackland/bobs/tree4_m/s3tree4_00.png trunk/worlds/blackland/bobs/tree4_m/s3tree4_01.png trunk/worlds/blackland/bobs/tree4_m/s3tree4_02.png trunk/worlds/blackland/bobs/tree4_m/s3tree4_03.png trunk/worlds/blackland/bobs/tree4_s/s2tree4_00.png trunk/worlds/blackland/bobs/tree4_s/s2tree4_01.png trunk/worlds/blackland/bobs/tree4_s/s2tree4_02.png trunk/worlds/blackland/bobs/tree4_s/s2tree4_03.png trunk/worlds/blackland/bobs/tree4_t/s1tree4_00.png trunk/worlds/blackland/bobs/tree4_t/s1tree4_01.png trunk/worlds/blackland/bobs/tree4_t/s1tree4_02.png trunk/worlds/blackland/bobs/tree4_t/s1tree4_03.png trunk/worlds/blackland/bobs/tree5_m/s3tree5_00.png trunk/worlds/blackland/bobs/tree5_m/s3tree5_01.png trunk/worlds/blackland/bobs/tree5_m/s3tree5_02.png trunk/worlds/blackland/bobs/tree5_m/s3tree5_03.png trunk/worlds/blackland/bobs/tree5_s/s2tree5_00.png trunk/worlds/blackland/bobs/tree5_s/s2tree5_01.png trunk/worlds/blackland/bobs/tree5_s/s2tree5_02.png trunk/worlds/blackland/bobs/tree5_s/s2tree5_03.png trunk/worlds/blackland/bobs/tree5_t/s1tree5_00.png trunk/worlds/blackland/bobs/tree5_t/s1tree5_01.png trunk/worlds/blackland/bobs/tree5_t/s1tree5_02.png trunk/worlds/blackland/bobs/tree5_t/s1tree5_03.png trunk/worlds/blackland/bobs/tree6_m/s3tree6_00.png trunk/worlds/blackland/bobs/tree6_m/s3tree6_01.png trunk/worlds/blackland/bobs/tree6_m/s3tree6_02.png trunk/worlds/blackland/bobs/tree6_m/s3tree6_03.png trunk/worlds/blackland/bobs/tree6_s/s2tree6_00.png trunk/worlds/blackland/bobs/tree6_s/s2tree6_01.png trunk/worlds/blackland/bobs/tree6_s/s2tree6_02.png trunk/worlds/blackland/bobs/tree6_s/s2tree6_03.png trunk/worlds/blackland/bobs/tree6_t/s1tree6_00.png trunk/worlds/blackland/bobs/tree6_t/s1tree6_01.png trunk/worlds/blackland/bobs/tree6_t/s1tree6_02.png trunk/worlds/blackland/bobs/tree6_t/s1tree6_03.png trunk/worlds/blackland/bobs/tree7_m/s3tree7_00.png trunk/worlds/blackland/bobs/tree7_m/s3tree7_01.png trunk/worlds/blackland/bobs/tree7_m/s3tree7_02.png trunk/worlds/blackland/bobs/tree7_m/s3tree7_03.png trunk/worlds/blackland/bobs/tree7_s/s2tree7_00.png trunk/worlds/blackland/bobs/tree7_s/s2tree7_01.png trunk/worlds/blackland/bobs/tree7_s/s2tree7_02.png trunk/worlds/blackland/bobs/tree7_s/s2tree7_03.png trunk/worlds/blackland/bobs/tree7_t/s1tree7_00.png trunk/worlds/blackland/bobs/tree7_t/s1tree7_01.png trunk/worlds/blackland/bobs/tree7_t/s1tree7_02.png trunk/worlds/blackland/bobs/tree7_t/s1tree7_03.png trunk/worlds/blackland/bobs/tree8_m/s3tree8_00.png trunk/worlds/blackland/bobs/tree8_m/s3tree8_01.png trunk/worlds/blackland/bobs/tree8_m/s3tree8_02.png trunk/worlds/blackland/bobs/tree8_m/s3tree8_03.png trunk/worlds/blackland/bobs/tree8_s/s2tree8_00.png trunk/worlds/blackland/bobs/tree8_s/s2tree8_01.png trunk/worlds/blackland/bobs/tree8_s/s2tree8_02.png trunk/worlds/blackland/bobs/tree8_s/s2tree8_03.png trunk/worlds/blackland/bobs/tree8_t/s1tree8_00.png trunk/worlds/blackland/bobs/tree8_t/s1tree8_01.png trunk/worlds/blackland/bobs/tree8_t/s1tree8_02.png trunk/worlds/blackland/bobs/tree8_t/s1tree8_03.png trunk/worlds/desert/bobs/deer/deer_idle_se_00.png trunk/worlds/desert/bobs/deer/deer_idle_se_01.png trunk/worlds/desert/bobs/deer/deer_idle_se_02.png trunk/worlds/desert/bobs/deer/deer_idle_se_03.png trunk/worlds/desert/bobs/deer/deer_idle_se_04.png trunk/worlds/desert/bobs/deer/deer_idle_se_05.png trunk/worlds/desert/bobs/deer/deer_idle_se_06.png trunk/worlds/desert/bobs/deer/deer_idle_se_07.png trunk/worlds/desert/bobs/deer/deer_idle_se_08.png trunk/worlds/desert/bobs/deer/deer_idle_se_09.png trunk/worlds/desert/bobs/deer/deer_idle_se_10.png trunk/worlds/desert/bobs/deer/deer_idle_se_11.png trunk/worlds/desert/bobs/deer/deer_idle_se_12.png trunk/worlds/desert/bobs/deer/deer_idle_se_13.png trunk/worlds/desert/bobs/deer/deer_idle_se_14.png trunk/worlds/desert/bobs/deer/deer_idle_se_15.png trunk/worlds/desert/bobs/deer/deer_idle_se_16.png trunk/worlds/desert/bobs/deer/deer_idle_se_17.png trunk/worlds/desert/bobs/deer/deer_idle_se_18.png trunk/worlds/desert/bobs/deer/deer_idle_se_19.png trunk/worlds/desert/bobs/deer/deer_walk_e_02.png trunk/worlds/desert/bobs/deer/deer_walk_e_03.png trunk/worlds/desert/bobs/deer/deer_walk_e_04.png trunk/worlds/desert/bobs/deer/deer_walk_e_05.png trunk/worlds/desert/bobs/deer/deer_walk_e_06.png trunk/worlds/desert/bobs/deer/deer_walk_e_07.png trunk/worlds/desert/bobs/deer/deer_walk_e_08.png trunk/worlds/desert/bobs/deer/deer_walk_e_09.png trunk/worlds/desert/bobs/deer/deer_walk_e_10.png trunk/worlds/desert/bobs/deer/deer_walk_e_11.png trunk/worlds/desert/bobs/deer/deer_walk_e_12.png trunk/worlds/desert/bobs/deer/deer_walk_e_13.png trunk/worlds/desert/bobs/deer/deer_walk_e_14.png trunk/worlds/desert/bobs/deer/deer_walk_e_15.png trunk/worlds/desert/bobs/deer/deer_walk_e_16.png trunk/worlds/desert/bobs/deer/deer_walk_e_17.png trunk/worlds/desert/bobs/deer/deer_walk_e_18.png trunk/worlds/desert/bobs/deer/deer_walk_e_19.png trunk/worlds/desert/bobs/deer/deer_walk_ne_02.png trunk/worlds/desert/bobs/deer/deer_walk_ne_03.png trunk/worlds/desert/bobs/deer/deer_walk_ne_04.png trunk/worlds/desert/bobs/deer/deer_walk_ne_05.png trunk/worlds/desert/bobs/deer/deer_walk_ne_06.png trunk/worlds/desert/bobs/deer/deer_walk_ne_07.png trunk/worlds/desert/bobs/deer/deer_walk_ne_08.png trunk/worlds/desert/bobs/deer/deer_walk_ne_09.png trunk/worlds/desert/bobs/deer/deer_walk_ne_10.png trunk/worlds/desert/bobs/deer/deer_walk_ne_11.png trunk/worlds/desert/bobs/deer/deer_walk_ne_12.png trunk/worlds/desert/bobs/deer/deer_walk_ne_13.png trunk/worlds/desert/bobs/deer/deer_walk_ne_14.png trunk/worlds/desert/bobs/deer/deer_walk_ne_15.png trunk/worlds/desert/bobs/deer/deer_walk_ne_16.png trunk/worlds/desert/bobs/deer/deer_walk_ne_17.png trunk/worlds/desert/bobs/deer/deer_walk_ne_18.png trunk/worlds/desert/bobs/deer/deer_walk_ne_19.png trunk/worlds/desert/bobs/deer/deer_walk_nw_02.png trunk/worlds/desert/bobs/deer/deer_walk_nw_03.png trunk/worlds/desert/bobs/deer/deer_walk_nw_04.png trunk/worlds/desert/bobs/deer/deer_walk_nw_05.png trunk/worlds/desert/bobs/deer/deer_walk_nw_06.png trunk/worlds/desert/bobs/deer/deer_walk_nw_07.png trunk/worlds/desert/bobs/deer/deer_walk_nw_08.png trunk/worlds/desert/bobs/deer/deer_walk_nw_09.png trunk/worlds/desert/bobs/deer/deer_walk_nw_10.png trunk/worlds/desert/bobs/deer/deer_walk_nw_11.png trunk/worlds/desert/bobs/deer/deer_walk_nw_12.png trunk/worlds/desert/bobs/deer/deer_walk_nw_13.png trunk/worlds/desert/bobs/deer/deer_walk_nw_14.png trunk/worlds/desert/bobs/deer/deer_walk_nw_15.png trunk/worlds/desert/bobs/deer/deer_walk_nw_16.png trunk/worlds/desert/bobs/deer/deer_walk_nw_17.png trunk/worlds/desert/bobs/deer/deer_walk_nw_18.png trunk/worlds/desert/bobs/deer/deer_walk_nw_19.png trunk/worlds/desert/bobs/deer/deer_walk_se_02.png trunk/worlds/desert/bobs/deer/deer_walk_se_03.png trunk/worlds/desert/bobs/deer/deer_walk_se_04.png trunk/worlds/desert/bobs/deer/deer_walk_se_05.png trunk/worlds/desert/bobs/deer/deer_walk_se_06.png trunk/worlds/desert/bobs/deer/deer_walk_se_07.png trunk/worlds/desert/bobs/deer/deer_walk_se_08.png trunk/worlds/desert/bobs/deer/deer_walk_se_09.png trunk/worlds/desert/bobs/deer/deer_walk_se_10.png trunk/worlds/desert/bobs/deer/deer_walk_se_11.png trunk/worlds/desert/bobs/deer/deer_walk_se_12.png trunk/worlds/desert/bobs/deer/deer_walk_se_13.png trunk/worlds/desert/bobs/deer/deer_walk_se_14.png trunk/worlds/desert/bobs/deer/deer_walk_se_15.png trunk/worlds/desert/bobs/deer/deer_walk_se_16.png trunk/worlds/desert/bobs/deer/deer_walk_se_17.png trunk/worlds/desert/bobs/deer/deer_walk_se_18.png trunk/worlds/desert/bobs/deer/deer_walk_se_19.png trunk/worlds/desert/bobs/deer/deer_walk_sw_02.png trunk/worlds/desert/bobs/deer/deer_walk_sw_03.png trunk/worlds/desert/bobs/deer/deer_walk_sw_04.png trunk/worlds/desert/bobs/deer/deer_walk_sw_05.png trunk/worlds/desert/bobs/deer/deer_walk_sw_06.png trunk/worlds/desert/bobs/deer/deer_walk_sw_07.png trunk/worlds/desert/bobs/deer/deer_walk_sw_08.png trunk/worlds/desert/bobs/deer/deer_walk_sw_09.png trunk/worlds/desert/bobs/deer/deer_walk_sw_10.png trunk/worlds/desert/bobs/deer/deer_walk_sw_11.png trunk/worlds/desert/bobs/deer/deer_walk_sw_12.png trunk/worlds/desert/bobs/deer/deer_walk_sw_13.png trunk/worlds/desert/bobs/deer/deer_walk_sw_14.png trunk/worlds/desert/bobs/deer/deer_walk_sw_15.png trunk/worlds/desert/bobs/deer/deer_walk_sw_16.png trunk/worlds/desert/bobs/deer/deer_walk_sw_17.png trunk/worlds/desert/bobs/deer/deer_walk_sw_18.png trunk/worlds/desert/bobs/deer/deer_walk_sw_19.png trunk/worlds/desert/bobs/deer/deer_walk_w_02.png trunk/worlds/desert/bobs/deer/deer_walk_w_03.png trunk/worlds/desert/bobs/deer/deer_walk_w_04.png trunk/worlds/desert/bobs/deer/deer_walk_w_05.png trunk/worlds/desert/bobs/deer/deer_walk_w_06.png trunk/worlds/desert/bobs/deer/deer_walk_w_07.png trunk/worlds/desert/bobs/deer/deer_walk_w_08.png trunk/worlds/desert/bobs/deer/deer_walk_w_09.png trunk/worlds/desert/bobs/deer/deer_walk_w_10.png trunk/worlds/desert/bobs/deer/deer_walk_w_11.png trunk/worlds/desert/bobs/deer/deer_walk_w_12.png trunk/worlds/desert/bobs/deer/deer_walk_w_13.png trunk/worlds/desert/bobs/deer/deer_walk_w_14.png trunk/worlds/desert/bobs/deer/deer_walk_w_15.png trunk/worlds/desert/bobs/deer/deer_walk_w_16.png trunk/worlds/desert/bobs/deer/deer_walk_w_17.png trunk/worlds/desert/bobs/deer/deer_walk_w_18.png trunk/worlds/desert/bobs/deer/deer_walk_w_19.png trunk/worlds/desert/bobs/fox/fox_idle_se_00.png trunk/worlds/desert/bobs/fox/fox_idle_se_01.png trunk/worlds/desert/bobs/fox/fox_idle_se_02.png trunk/worlds/desert/bobs/fox/fox_idle_se_03.png trunk/worlds/desert/bobs/fox/fox_idle_se_04.png trunk/worlds/desert/bobs/fox/fox_idle_se_05.png trunk/worlds/desert/bobs/fox/fox_idle_se_06.png trunk/worlds/desert/bobs/fox/fox_idle_se_07.png trunk/worlds/desert/bobs/fox/fox_idle_se_08.png trunk/worlds/desert/bobs/fox/fox_idle_se_09.png trunk/worlds/desert/bobs/fox/fox_idle_se_10.png trunk/worlds/desert/bobs/fox/fox_idle_se_11.png trunk/worlds/desert/bobs/fox/fox_idle_se_12.png trunk/worlds/desert/bobs/fox/fox_idle_se_13.png trunk/worlds/desert/bobs/fox/fox_idle_se_14.png trunk/worlds/desert/bobs/fox/fox_idle_se_15.png trunk/worlds/desert/bobs/fox/fox_idle_se_16.png trunk/worlds/desert/bobs/fox/fox_idle_se_17.png trunk/worlds/desert/bobs/fox/fox_idle_se_18.png trunk/worlds/desert/bobs/fox/fox_idle_se_19.png trunk/worlds/desert/bobs/fox/fox_walk_e_02.png trunk/worlds/desert/bobs/fox/fox_walk_e_03.png trunk/worlds/desert/bobs/fox/fox_walk_e_04.png trunk/worlds/desert/bobs/fox/fox_walk_e_05.png trunk/worlds/desert/bobs/fox/fox_walk_e_06.png trunk/worlds/desert/bobs/fox/fox_walk_e_07.png trunk/worlds/desert/bobs/fox/fox_walk_e_08.png trunk/worlds/desert/bobs/fox/fox_walk_e_09.png trunk/worlds/desert/bobs/fox/fox_walk_e_10.png trunk/worlds/desert/bobs/fox/fox_walk_e_11.png trunk/worlds/desert/bobs/fox/fox_walk_e_12.png trunk/worlds/desert/bobs/fox/fox_walk_e_13.png trunk/worlds/desert/bobs/fox/fox_walk_e_14.png trunk/worlds/desert/bobs/fox/fox_walk_e_15.png trunk/worlds/desert/bobs/fox/fox_walk_e_16.png trunk/worlds/desert/bobs/fox/fox_walk_e_17.png trunk/worlds/desert/bobs/fox/fox_walk_e_18.png trunk/worlds/desert/bobs/fox/fox_walk_e_19.png trunk/worlds/desert/bobs/fox/fox_walk_ne_02.png trunk/worlds/desert/bobs/fox/fox_walk_ne_03.png trunk/worlds/desert/bobs/fox/fox_walk_ne_04.png trunk/worlds/desert/bobs/fox/fox_walk_ne_05.png trunk/worlds/desert/bobs/fox/fox_walk_ne_06.png trunk/worlds/desert/bobs/fox/fox_walk_ne_07.png trunk/worlds/desert/bobs/fox/fox_walk_ne_08.png trunk/worlds/desert/bobs/fox/fox_walk_ne_09.png trunk/worlds/desert/bobs/fox/fox_walk_ne_10.png trunk/worlds/desert/bobs/fox/fox_walk_ne_11.png trunk/worlds/desert/bobs/fox/fox_walk_ne_12.png trunk/worlds/desert/bobs/fox/fox_walk_ne_13.png trunk/worlds/desert/bobs/fox/fox_walk_ne_14.png trunk/worlds/desert/bobs/fox/fox_walk_ne_15.png trunk/worlds/desert/bobs/fox/fox_walk_ne_16.png trunk/worlds/desert/bobs/fox/fox_walk_ne_17.png trunk/worlds/desert/bobs/fox/fox_walk_ne_18.png trunk/worlds/desert/bobs/fox/fox_walk_ne_19.png trunk/worlds/desert/bobs/fox/fox_walk_nw_02.png trunk/worlds/desert/bobs/fox/fox_walk_nw_03.png trunk/worlds/desert/bobs/fox/fox_walk_nw_04.png trunk/worlds/desert/bobs/fox/fox_walk_nw_05.png trunk/worlds/desert/bobs/fox/fox_walk_nw_06.png trunk/worlds/desert/bobs/fox/fox_walk_nw_07.png trunk/worlds/desert/bobs/fox/fox_walk_nw_08.png trunk/worlds/desert/bobs/fox/fox_walk_nw_09.png trunk/worlds/desert/bobs/fox/fox_walk_nw_10.png trunk/worlds/desert/bobs/fox/fox_walk_nw_11.png trunk/worlds/desert/bobs/fox/fox_walk_nw_12.png trunk/worlds/desert/bobs/fox/fox_walk_nw_13.png trunk/worlds/desert/bobs/fox/fox_walk_nw_14.png trunk/worlds/desert/bobs/fox/fox_walk_nw_15.png trunk/worlds/desert/bobs/fox/fox_walk_nw_16.png trunk/worlds/desert/bobs/fox/fox_walk_nw_17.png trunk/worlds/desert/bobs/fox/fox_walk_nw_18.png trunk/worlds/desert/bobs/fox/fox_walk_nw_19.png trunk/worlds/desert/bobs/fox/fox_walk_se_02.png trunk/worlds/desert/bobs/fox/fox_walk_se_03.png trunk/worlds/desert/bobs/fox/fox_walk_se_04.png trunk/worlds/desert/bobs/fox/fox_walk_se_05.png trunk/worlds/desert/bobs/fox/fox_walk_se_06.png trunk/worlds/desert/bobs/fox/fox_walk_se_07.png trunk/worlds/desert/bobs/fox/fox_walk_se_08.png trunk/worlds/desert/bobs/fox/fox_walk_se_09.png trunk/worlds/desert/bobs/fox/fox_walk_se_10.png trunk/worlds/desert/bobs/fox/fox_walk_se_11.png trunk/worlds/desert/bobs/fox/fox_walk_se_12.png trunk/worlds/desert/bobs/fox/fox_walk_se_13.png trunk/worlds/desert/bobs/fox/fox_walk_se_14.png trunk/worlds/desert/bobs/fox/fox_walk_se_15.png trunk/worlds/desert/bobs/fox/fox_walk_se_16.png trunk/worlds/desert/bobs/fox/fox_walk_se_17.png trunk/worlds/desert/bobs/fox/fox_walk_se_18.png trunk/worlds/desert/bobs/fox/fox_walk_se_19.png trunk/worlds/desert/bobs/fox/fox_walk_sw_02.png trunk/worlds/desert/bobs/fox/fox_walk_sw_03.png trunk/worlds/desert/bobs/fox/fox_walk_sw_04.png trunk/worlds/desert/bobs/fox/fox_walk_sw_05.png trunk/worlds/desert/bobs/fox/fox_walk_sw_06.png trunk/worlds/desert/bobs/fox/fox_walk_sw_07.png trunk/worlds/desert/bobs/fox/fox_walk_sw_08.png trunk/worlds/desert/bobs/fox/fox_walk_sw_09.png trunk/worlds/desert/bobs/fox/fox_walk_sw_10.png trunk/worlds/desert/bobs/fox/fox_walk_sw_11.png trunk/worlds/desert/bobs/fox/fox_walk_sw_12.png trunk/worlds/desert/bobs/fox/fox_walk_sw_13.png trunk/worlds/desert/bobs/fox/fox_walk_sw_14.png trunk/worlds/desert/bobs/fox/fox_walk_sw_15.png trunk/worlds/desert/bobs/fox/fox_walk_sw_16.png trunk/worlds/desert/bobs/fox/fox_walk_sw_17.png trunk/worlds/desert/bobs/fox/fox_walk_sw_18.png trunk/worlds/desert/bobs/fox/fox_walk_sw_19.png trunk/worlds/desert/bobs/fox/fox_walk_w_02.png trunk/worlds/desert/bobs/fox/fox_walk_w_03.png trunk/worlds/desert/bobs/fox/fox_walk_w_04.png trunk/worlds/desert/bobs/fox/fox_walk_w_05.png trunk/worlds/desert/bobs/fox/fox_walk_w_06.png trunk/worlds/desert/bobs/fox/fox_walk_w_07.png trunk/worlds/desert/bobs/fox/fox_walk_w_08.png trunk/worlds/desert/bobs/fox/fox_walk_w_09.png trunk/worlds/desert/bobs/fox/fox_walk_w_10.png trunk/worlds/desert/bobs/fox/fox_walk_w_11.png trunk/worlds/desert/bobs/fox/fox_walk_w_12.png trunk/worlds/desert/bobs/fox/fox_walk_w_13.png trunk/worlds/desert/bobs/fox/fox_walk_w_14.png trunk/worlds/desert/bobs/fox/fox_walk_w_15.png trunk/worlds/desert/bobs/fox/fox_walk_w_16.png trunk/worlds/desert/bobs/fox/fox_walk_w_17.png trunk/worlds/desert/bobs/fox/fox_walk_w_18.png trunk/worlds/desert/bobs/fox/fox_walk_w_19.png trunk/worlds/desert/bobs/sheep/sheep_01.png trunk/worlds/desert/bobs/sheep/sheep_02.png trunk/worlds/desert/bobs/sheep/sheep_03.png trunk/worlds/desert/bobs/sheep/sheep_04.png trunk/worlds/desert/bobs/sheep/sheep_05.png trunk/worlds/desert/bobs/sheep/sheep_06.png trunk/worlds/desert/bobs/sheep/sheep_07.png trunk/worlds/desert/bobs/sheep/sheep_08.png trunk/worlds/desert/bobs/sheep/sheep_09.png trunk/worlds/desert/bobs/sheep/sheep_10.png trunk/worlds/desert/bobs/sheep/sheep_11.png trunk/worlds/desert/bobs/sheep/sheep_12.png trunk/worlds/desert/bobs/sheep/sheep_13.png trunk/worlds/desert/bobs/sheep/sheep_14.png trunk/worlds/desert/bobs/sheep/sheep_15.png trunk/worlds/desert/bobs/sheep/sheep_16.png trunk/worlds/desert/bobs/sheep/sheep_17.png trunk/worlds/desert/bobs/sheep/sheep_18.png trunk/worlds/desert/bobs/sheep/sheep_19.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_02.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_03.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_04.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_05.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_06.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_07.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_08.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_09.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_10.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_11.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_12.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_13.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_14.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_15.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_16.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_17.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_18.png trunk/worlds/desert/bobs/sheep/sheep_walk_e_19.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_02.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_03.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_04.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_05.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_06.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_07.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_08.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_09.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_10.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_11.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_12.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_13.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_14.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_15.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_16.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_17.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_18.png trunk/worlds/desert/bobs/sheep/sheep_walk_ne_19.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_02.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_03.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_04.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_05.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_06.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_07.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_08.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_09.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_10.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_11.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_12.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_13.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_14.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_15.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_16.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_17.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_18.png trunk/worlds/desert/bobs/sheep/sheep_walk_nw_19.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_02.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_03.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_04.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_05.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_06.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_07.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_08.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_09.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_10.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_11.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_12.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_13.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_14.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_15.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_16.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_17.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_18.png trunk/worlds/desert/bobs/sheep/sheep_walk_se_19.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_02.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_03.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_04.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_05.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_06.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_07.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_08.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_09.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_10.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_11.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_12.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_13.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_14.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_15.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_16.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_17.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_18.png trunk/worlds/desert/bobs/sheep/sheep_walk_sw_19.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_02.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_03.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_04.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_05.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_06.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_07.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_08.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_09.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_10.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_11.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_12.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_13.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_14.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_15.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_16.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_17.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_18.png trunk/worlds/desert/bobs/sheep/sheep_walk_w_19.png trunk/worlds/desert/bobs/tree1_m/s3tree1_00.png trunk/worlds/desert/bobs/tree1_m/s3tree1_01.png trunk/worlds/desert/bobs/tree1_m/s3tree1_02.png trunk/worlds/desert/bobs/tree1_m/s3tree1_03.png trunk/worlds/desert/bobs/tree1_s/s2tree1_00.png trunk/worlds/desert/bobs/tree1_s/s2tree1_01.png trunk/worlds/desert/bobs/tree1_s/s2tree1_02.png trunk/worlds/desert/bobs/tree1_s/s2tree1_03.png trunk/worlds/desert/bobs/tree1_t/s1tree1_00.png trunk/worlds/desert/bobs/tree1_t/s1tree1_01.png trunk/worlds/desert/bobs/tree1_t/s1tree1_02.png trunk/worlds/desert/bobs/tree1_t/s1tree1_03.png trunk/worlds/desert/bobs/tree2_m/s3tree2_00.png trunk/worlds/desert/bobs/tree2_m/s3tree2_01.png trunk/worlds/desert/bobs/tree2_m/s3tree2_02.png trunk/worlds/desert/bobs/tree2_m/s3tree2_03.png trunk/worlds/desert/bobs/tree2_s/s2tree2_00.png trunk/worlds/desert/bobs/tree2_s/s2tree2_01.png trunk/worlds/desert/bobs/tree2_s/s2tree2_02.png trunk/worlds/desert/bobs/tree2_s/s2tree2_03.png trunk/worlds/desert/bobs/tree2_t/s1tree2_00.png trunk/worlds/desert/bobs/tree2_t/s1tree2_01.png trunk/worlds/desert/bobs/tree2_t/s1tree2_02.png trunk/worlds/desert/bobs/tree2_t/s1tree2_03.png trunk/worlds/desert/bobs/tree3_m/s3tree3_00.png trunk/worlds/desert/bobs/tree3_m/s3tree3_01.png trunk/worlds/desert/bobs/tree3_m/s3tree3_02.png trunk/worlds/desert/bobs/tree3_m/s3tree3_03.png trunk/worlds/desert/bobs/tree3_s/s2tree3_00.png trunk/worlds/desert/bobs/tree3_s/s2tree3_01.png trunk/worlds/desert/bobs/tree3_s/s2tree3_02.png trunk/worlds/desert/bobs/tree3_s/s2tree3_03.png trunk/worlds/desert/bobs/tree3_t/s1tree3_00.png trunk/worlds/desert/bobs/tree3_t/s1tree3_01.png trunk/worlds/desert/bobs/tree3_t/s1tree3_02.png trunk/worlds/desert/bobs/tree3_t/s1tree3_03.png trunk/worlds/desert/bobs/tree4_m/s3tree4_00.png trunk/worlds/desert/bobs/tree4_m/s3tree4_01.png trunk/worlds/desert/bobs/tree4_m/s3tree4_02.png trunk/worlds/desert/bobs/tree4_m/s3tree4_03.png trunk/worlds/desert/bobs/tree4_s/s2tree4_00.png trunk/worlds/desert/bobs/tree4_s/s2tree4_01.png trunk/worlds/desert/bobs/tree4_s/s2tree4_02.png trunk/worlds/desert/bobs/tree4_s/s2tree4_03.png trunk/worlds/desert/bobs/tree4_t/s1tree4_00.png trunk/worlds/desert/bobs/tree4_t/s1tree4_01.png trunk/worlds/desert/bobs/tree4_t/s1tree4_02.png trunk/worlds/desert/bobs/tree4_t/s1tree4_03.png trunk/worlds/desert/bobs/tree5_m/s3tree5_00.png trunk/worlds/desert/bobs/tree5_m/s3tree5_01.png trunk/worlds/desert/bobs/tree5_m/s3tree5_02.png trunk/worlds/desert/bobs/tree5_m/s3tree5_03.png trunk/worlds/desert/bobs/tree5_s/s2tree5_00.png trunk/worlds/desert/bobs/tree5_s/s2tree5_01.png trunk/worlds/desert/bobs/tree5_s/s2tree5_02.png trunk/worlds/desert/bobs/tree5_s/s2tree5_03.png trunk/worlds/desert/bobs/tree5_t/s1tree5_00.png trunk/worlds/desert/bobs/tree5_t/s1tree5_01.png trunk/worlds/desert/bobs/tree5_t/s1tree5_02.png trunk/worlds/desert/bobs/tree5_t/s1tree5_03.png trunk/worlds/desert/bobs/tree6_m/s3tree6_00.png trunk/worlds/desert/bobs/tree6_m/s3tree6_01.png trunk/worlds/desert/bobs/tree6_m/s3tree6_02.png trunk/worlds/desert/bobs/tree6_m/s3tree6_03.png trunk/worlds/desert/bobs/tree6_s/s2tree6_00.png trunk/worlds/desert/bobs/tree6_s/s2tree6_01.png trunk/worlds/desert/bobs/tree6_s/s2tree6_02.png trunk/worlds/desert/bobs/tree6_s/s2tree6_03.png trunk/worlds/desert/bobs/tree6_t/s1tree6_00.png trunk/worlds/desert/bobs/tree6_t/s1tree6_01.png trunk/worlds/desert/bobs/tree6_t/s1tree6_02.png trunk/worlds/desert/bobs/tree6_t/s1tree6_03.png trunk/worlds/desert/bobs/tree7_m/s3tree7_00.png trunk/worlds/desert/bobs/tree7_m/s3tree7_01.png trunk/worlds/desert/bobs/tree7_m/s3tree7_02.png trunk/worlds/desert/bobs/tree7_m/s3tree7_03.png trunk/worlds/desert/bobs/tree7_s/s2tree7_00.png trunk/worlds/desert/bobs/tree7_s/s2tree... [truncated message content] |
From: <nas...@us...> - 2008-10-06 17:45:45
|
Revision: 3368 http://widelands.svn.sourceforge.net/widelands/?rev=3368&view=rev Author: nasenbaer_peter Date: 2008-10-06 17:43:03 +0000 (Mon, 06 Oct 2008) Log Message: ----------- add "global" to general distribution Modified Paths: -------------- trunk/SConstruct trunk/build/win32/innosetup/Widelands.iss Added Paths: ----------- trunk/global/SConscript Modified: trunk/SConstruct =================================================================== --- trunk/SConstruct 2008-10-06 13:21:47 UTC (rev 3367) +++ trunk/SConstruct 2008-10-06 17:43:03 UTC (rev 3368) @@ -165,6 +165,7 @@ SConscript('txts/SConscript') SConscript('utils/SConscript') SConscript('worlds/SConscript') +SConscript('global/SConscript') Default(thebinary) if env['build']=='release': Modified: trunk/build/win32/innosetup/Widelands.iss =================================================================== --- trunk/build/win32/innosetup/Widelands.iss 2008-10-06 13:21:47 UTC (rev 3367) +++ trunk/build/win32/innosetup/Widelands.iss 2008-10-06 17:43:03 UTC (rev 3368) @@ -101,6 +101,7 @@ Source: ..\..\..\tribes\*; Excludes: .svn, Sconscript; DestDir: {app}\tribes\; Flags: recursesubdirs ignoreversion; Tasks: ; Languages: ; Attribs: hidden; Components: " Widelands" Source: ..\..\..\txts\*; Excludes: .svn, Sconscript; DestDir: {app}\txts\; Flags: recursesubdirs ignoreversion; Tasks: ; Languages: ; Attribs: hidden; Components: " Widelands" Source: ..\..\..\worlds\*; Excludes: .svn, Sconscript; DestDir: {app}\worlds\; Flags: recursesubdirs ignoreversion; Tasks: ; Languages: ; Attribs: hidden; Components: " Widelands" +Source: ..\..\..\global\*; Excludes: .svn, Sconscript; DestDir: {app}\global\; Flags: recursesubdirs ignoreversion; Tasks: ; Languages: ; Attribs: hidden; Components: " Widelands" Source: ..\..\..\*.dll; DestDir: {app}; Flags: ignoreversion; Components: " Widelands" Source: ..\..\..\widelands.exe; DestDir: {app}; Flags: ignoreversion; Components: " Widelands" Source: ..\..\..\ChangeLog; DestDir: {app}; Flags: ignoreversion; DestName: ChangeLog.txt; Components: " Widelands" @@ -114,10 +115,10 @@ [Icons] Name: {app}\{#Name} - Mapeditor; Filename: {app}\{#ExeName}; Parameters: " --editor"; WorkingDir: {app}; IconFilename: {app}\WL-Editor.ico; Comment: Directly starts the Widelands-Editor; Flags: useapppaths -Name: {group}\{#Name}; Filename: {app}\{#ExeName}; WorkingDir: {app}; IconFilename: {app}\widelands.exe; Flags: useapppaths; Tasks: ; Languages: +Name: {group}\{#Name}; Filename: {app}\{#ExeName}; WorkingDir: {app}; IconFilename: {app}\widelands.exe; Flags: useapppaths; Tasks: ; Languages: Name: {group}\{cm:ProgramOnTheWeb,{#Name}}; Filename: {app}\{#UrlName} Name: {group}\{cm:UninstallProgram,{#Name}}; Filename: {uninstallexe} -Name: {group}\{#HelpNameName}; Filename: {app}\{#HelpName}; Tasks: ; Languages: +Name: {group}\{#HelpNameName}; Filename: {app}\{#HelpName}; Tasks: ; Languages: Name: {group}\{#Name} - Mapeditor; Filename: {app}\{#ExeName}; Parameters: " --editor"; WorkingDir: {app}; IconFilename: {app}\WL-Editor.ico; Comment: Directly starts the Widelands-Editor; Flags: useapppaths Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\{#Name}; Filename: {app}\{#ExeName}; Tasks: quicklaunchicon; WorkingDir: {app}; Flags: useapppaths; IconFilename: {app}\widelands.exe Name: {userdesktop}\{#Name}; Filename: {app}\{#ExeName}; Tasks: desktopicon; WorkingDir: {app}; Flags: useapppaths; IconFilename: {app}\widelands.exe Added: trunk/global/SConscript =================================================================== --- trunk/global/SConscript (rev 0) +++ trunk/global/SConscript 2008-10-06 17:43:03 UTC (rev 3368) @@ -0,0 +1,8 @@ +Import('*') + +from Distribute import distadd, instadd + +instadd(env, 'global/*') + +distadd(env, 'global/*') + Property changes on: trunk/global/SConscript ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-09 16:00:37
|
Revision: 3373 http://widelands.svn.sourceforge.net/widelands/?rev=3373&view=rev Author: sigra Date: 2008-10-09 16:00:24 +0000 (Thu, 09 Oct 2008) Log Message: ----------- * Implement the part of feature request #1797118 (get rid of line numbers in programs) that applies to production programs. * Fix bug that the consume command required that all wares in a consume-group must be of the same type. For example the command "2=consume smoked_fish,smoked_meat 2" required 2 smoked_fish or 2 smoked_meat. Now it will also work if there is only one of each. * Change the syntax of a consume-group to ware1[,ware2[,...]][:quantitiy] (for example "smoked_fish,smoked_meat:2"). * Extend the consume command to take any number of consume-groups (for example "smoked_fish,smoked_meat:2 bread:2"). This means that unless all consume-groups can be satisfied, nothing is consumed when the command fails. This will fix many bugs in the game data where programs had for example "2=consume smoked_fish,smoked_meat 2" and "3=consume bread 2". If there was not 2 bread, it would consume 2 smoked_fish or 2 smoked_meat and then fail. * Get rid of the command check. It was only a work-around for the previously deficient command consume. * Implement the new command return. It can return from a program. There are 3 different return values; Failed, Completed and Skipped. Only programs returning Failed and Completed will affect statistics. A program that reaches the end will be considered to have implicitly returned Completed. The return command can optionally take a condition. Currently only one condition is supported; economy needs <ware_type>. This will allow a program to have a command "return=skipped unless economy needs marblecolumn". It will prevent Game Over as a result of a production deadlock on marble when a user forgets to turn off a stonemason for a while. This fixes the huge problem with production deadlocks that hit every new player in their first games and every experienced player once in a while. The condition makes a query to the economy, which now simply checks if there are no warehouse supplies that supply the ware type. This can of course be made much smarter later. * Extend the produce command to take any number of ware types with quantities. * Fix the call command to validate that the called program exists. This requires changing declaration order in some data files (for example if "work" calls "seed", "program=seed" must come before "program=work" in the "global" section of the productionsite definition. (However the definition order of the programs does not matter.) This fixes the bug that a call command may fail at run-time because the called program does not exists. The call command now stores a pointer to the called program instead of a std::string with its name. * Extend the call command with an optional error handling specification (call=<program_name> [on failure {ignore|repeat|fail}]). It will make it possible to ignore a failure of a called program and continue the calling program, or repeat the failed program until it succeeds. * Extend the sleep and animate commands. If no duration is given as the last parameter, the return value from a previous action is used for duration. This makes it possible to for example let the mining command calculate how long the following sleep/animation should last, depending on ore concentration and mining depth. * Get rid of the set command and the associated catch and nostats flags. * Get rid of the cryptic iparam1, iparam2, ... and sparam1 and replace them with real variable names that acutally make sense. * Fix a TODO for ProductionSite::program_act ("\todo Break up into smaller functions"). Also break up ProductionProgram::parse into smaller functions. * Write doxygen comments for most production program commands. * Fix the mine command to parse and validate its parameters at parse-time instead of at run-time. This fixes the bug that ProductionSite::program_act could throw "Should min resource <resource_type>, which doesn't exist in world. Tribe is not compatible with world!!" at run-time the first time a mining command is executed. Fix most other commands that had insufficient validation or did parsing at run-time (for example the consume command reparsed its wares at each execution). * Optimize away the needless string copying during production program parsing. It will no nonger construct a string for each command, use that to construct another set of strings with all parts of all commands (using split_string) and then even split those strings into further new strings. Now the parsing operates completely on the underlying buffer, setting null-terminators as needed. * Rename the building property enhances_to to enhancements and change it from std::vector<char *> to std::set<Building_Index>. This eliminates the need to allocate the enhancement names with strdup and deallocate them with free. It also makes the enhancement readily available to the code without searching for it by its name. This fixes the bug that an enhancement could be a wrong name (nonexistent building) or a duplicated name. (The corresponding Worker property becomes was fixed in the same way in revision 2859.) * Fix bugs in parsing of Building_Descr's buildcosts an inputs. Check that the ware types exist and are not duplicated and that the quantities are within range. * Fix bug in parsing of ProductionSite_Descr's outputs. Check that the ware types exist and are not duplicated. * Fix bugs in parsing of ProductionSite_Descr's, Critter_Bob_Descr's and Worker_Descr's programs. If a program was declared twice, it was parsed twice and the pointer to the first instance was overwritten with a pointer to the second instance. Therefore the first instance was leaked. * Fix const correctness of virtual Supply::nr_supplies and overriding functions in derived types. Revision Links: -------------- http://widelands.svn.sourceforge.net/widelands/?rev=2859&view=rev Modified Paths: -------------- trunk/src/animation.cc trunk/src/bob.cc trunk/src/building.cc trunk/src/building.h trunk/src/building_ui.cc trunk/src/computer_player.cc trunk/src/constructionsite.cc trunk/src/constructionsite.h trunk/src/critter_bob.cc trunk/src/editor/ui_menus/editor_variables_menu.cc trunk/src/encyclopedia_window.cc trunk/src/encyclopedia_window.h trunk/src/helper.h trunk/src/idleworkersupply.cc trunk/src/idleworkersupply.h trunk/src/immovable.cc trunk/src/instances.cc trunk/src/instances.h trunk/src/militarysite.cc trunk/src/militarysite.h trunk/src/production_program.cc trunk/src/production_program.h trunk/src/productionsite.cc trunk/src/productionsite.h trunk/src/profile.cc trunk/src/profile.h trunk/src/soldier.cc trunk/src/trainingsite.cc trunk/src/trainingsite.h trunk/src/transport.cc trunk/src/transport.h trunk/src/tribe.cc trunk/src/warehouse.cc trunk/src/warehouse.h trunk/src/warehousesupply.h trunk/src/worker.cc trunk/src/worker.h trunk/src/worker_descr.cc trunk/src/worker_descr.h trunk/src/worker_program.cc trunk/src/world.cc trunk/src/world.h trunk/tribes/atlantids/buildings/armoursmith/conf trunk/tribes/atlantids/buildings/bakery/conf trunk/tribes/atlantids/buildings/blackroot_farm/conf trunk/tribes/atlantids/buildings/burner/conf trunk/tribes/atlantids/buildings/coalmine/conf trunk/tribes/atlantids/buildings/crystalmine/conf trunk/tribes/atlantids/buildings/dungeon/conf trunk/tribes/atlantids/buildings/farm/conf trunk/tribes/atlantids/buildings/fish_breeder/conf trunk/tribes/atlantids/buildings/fisher/conf trunk/tribes/atlantids/buildings/forester/conf trunk/tribes/atlantids/buildings/goldmine/conf trunk/tribes/atlantids/buildings/goldweaver/conf trunk/tribes/atlantids/buildings/hunter/conf trunk/tribes/atlantids/buildings/ironmine/conf trunk/tribes/atlantids/buildings/labyrinth/conf trunk/tribes/atlantids/buildings/mill/conf trunk/tribes/atlantids/buildings/quarry/conf trunk/tribes/atlantids/buildings/sawmill/conf trunk/tribes/atlantids/buildings/smelting_works/conf trunk/tribes/atlantids/buildings/smokery/conf trunk/tribes/atlantids/buildings/spiderfarm/conf trunk/tribes/atlantids/buildings/toolsmith/conf trunk/tribes/atlantids/buildings/tower/conf trunk/tribes/atlantids/buildings/weaponsmith/conf trunk/tribes/atlantids/buildings/weaving-mill/conf trunk/tribes/atlantids/buildings/well/conf trunk/tribes/atlantids/buildings/woodcutter/conf trunk/tribes/barbarians/buildings/axefactory/conf trunk/tribes/barbarians/buildings/bakery/conf trunk/tribes/barbarians/buildings/battlearena/conf trunk/tribes/barbarians/buildings/big_inn/conf trunk/tribes/barbarians/buildings/brewery/conf trunk/tribes/barbarians/buildings/burner/conf trunk/tribes/barbarians/buildings/coalmine/conf trunk/tribes/barbarians/buildings/deep_coalmine/conf trunk/tribes/barbarians/buildings/deep_goldmine/conf trunk/tribes/barbarians/buildings/deep_oremine/conf trunk/tribes/barbarians/buildings/deeper_coalmine/conf trunk/tribes/barbarians/buildings/deeper_goldmine/conf trunk/tribes/barbarians/buildings/deeper_oremine/conf trunk/tribes/barbarians/buildings/farm/conf trunk/tribes/barbarians/buildings/fernery/conf trunk/tribes/barbarians/buildings/fisher/conf trunk/tribes/barbarians/buildings/fortress/conf trunk/tribes/barbarians/buildings/gamekeeper/conf trunk/tribes/barbarians/buildings/goldmine/conf trunk/tribes/barbarians/buildings/granitemine/conf trunk/tribes/barbarians/buildings/hardener/conf trunk/tribes/barbarians/buildings/helmsmith/conf trunk/tribes/barbarians/buildings/hunter/conf trunk/tribes/barbarians/buildings/inn/conf trunk/tribes/barbarians/buildings/lime_kiln/conf trunk/tribes/barbarians/buildings/lumberjack/conf trunk/tribes/barbarians/buildings/metalworks/conf trunk/tribes/barbarians/buildings/micro-brewery/conf trunk/tribes/barbarians/buildings/oremine/conf trunk/tribes/barbarians/buildings/quarry/conf trunk/tribes/barbarians/buildings/ranger/conf trunk/tribes/barbarians/buildings/smelting_works/conf trunk/tribes/barbarians/buildings/stronghold/conf trunk/tribes/barbarians/buildings/tavern/conf trunk/tribes/barbarians/buildings/trainingscamp/conf trunk/tribes/barbarians/buildings/warmill/conf trunk/tribes/barbarians/buildings/weaving-mill/conf trunk/tribes/barbarians/buildings/well/conf trunk/tribes/empire/buildings/arena/conf trunk/tribes/empire/buildings/armoursmith/conf trunk/tribes/empire/buildings/bakery/conf trunk/tribes/empire/buildings/barracks/conf trunk/tribes/empire/buildings/brewery/conf trunk/tribes/empire/buildings/burner/conf trunk/tribes/empire/buildings/coalmine/conf trunk/tribes/empire/buildings/colosseum/conf trunk/tribes/empire/buildings/deep_coalmine/conf trunk/tribes/empire/buildings/deep_goldmine/conf trunk/tribes/empire/buildings/deep_marblemine/conf trunk/tribes/empire/buildings/deep_oremine/conf trunk/tribes/empire/buildings/farm/conf trunk/tribes/empire/buildings/fisher/conf trunk/tribes/empire/buildings/forester/conf trunk/tribes/empire/buildings/fortress/conf trunk/tribes/empire/buildings/goldmine/conf trunk/tribes/empire/buildings/hunter/conf trunk/tribes/empire/buildings/inn/conf trunk/tribes/empire/buildings/lumberjack/conf trunk/tribes/empire/buildings/marblemine/conf trunk/tribes/empire/buildings/mill/conf trunk/tribes/empire/buildings/oremine/conf trunk/tribes/empire/buildings/outpost/conf trunk/tribes/empire/buildings/piggery/conf trunk/tribes/empire/buildings/quarry/conf trunk/tribes/empire/buildings/sawmill/conf trunk/tribes/empire/buildings/sheepfarm/conf trunk/tribes/empire/buildings/smelting_works/conf trunk/tribes/empire/buildings/stonemason/conf trunk/tribes/empire/buildings/tavern/conf trunk/tribes/empire/buildings/toolsmith/conf trunk/tribes/empire/buildings/trainingscamp/conf trunk/tribes/empire/buildings/vineyard/conf trunk/tribes/empire/buildings/vintagery/conf trunk/tribes/empire/buildings/weaponsmith/conf trunk/tribes/empire/buildings/weaving-mill/conf trunk/tribes/empire/buildings/well/conf Property Changed: ---------------- trunk/pics/choosemapmenu.jpg trunk/pics/fileviewmenu.jpg trunk/pics/launchgamemenu.jpg trunk/pics/mainmenu.jpg trunk/pics/optionsmenu.jpg trunk/pics/singleplmenu.jpg trunk/pics/splash.jpg trunk/sound/farm/farm_animal_00.ogg trunk/sound/farm/farm_animal_01.ogg trunk/sound/farm/scythe_00.ogg trunk/sound/farm/sheep_00.ogg trunk/sound/fisher/fisher_pull_net_00.ogg trunk/sound/fisher/fisher_throw_net_00.ogg trunk/sound/hammering/geologist_hammer_00.ogg trunk/sound/hammering/hammering_00.ogg trunk/sound/hammering/hammering_01.ogg trunk/sound/hammering/hammering_02.ogg trunk/sound/mill/mill_turning_00.ogg trunk/sound/mill/mill_turning_01.ogg trunk/sound/other/falling_tools_00.ogg trunk/sound/other/falling_tools_01.ogg trunk/sound/sawmill/sawmill_00.ogg trunk/sound/sawmill/sawmill_01.ogg trunk/sound/smiths/sharpening_00.ogg trunk/sound/smiths/smith_00.ogg trunk/sound/smiths/smith_01.ogg trunk/sound/smiths/smith_02.ogg trunk/sound/smiths/toolsmith_00.ogg trunk/sound/smiths/toolsmith_01.ogg trunk/sound/spoken/timber_00.ogg trunk/sound/spoken/timber_01.ogg trunk/sound/spoken/warehouse-bringitin_00.ogg trunk/sound/stonecutting/stonecutter_00.ogg trunk/sound/stonecutting/stonemason_00.ogg trunk/sound/woodcutting/fast_woodcutting_00.ogg trunk/sound/woodcutting/fast_woodcutting_01.ogg trunk/sound/woodcutting/fast_woodcutting_02.ogg trunk/sound/woodcutting/fast_woodcutting_03.ogg trunk/sound/woodcutting/woodcutting_00.ogg trunk/tribes/empire/map.jpg trunk/worlds/blackland/pics/loading_00.jpg trunk/worlds/desert/pics/loading_00.jpg trunk/worlds/winterland/pics/loading_00.jpg Property changes on: trunk/pics/choosemapmenu.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/pics/fileviewmenu.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/pics/launchgamemenu.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/pics/mainmenu.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/pics/optionsmenu.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/pics/singleplmenu.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/pics/splash.jpg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + image/jpeg Property changes on: trunk/sound/farm/farm_animal_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/farm/farm_animal_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/farm/scythe_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/farm/sheep_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/fisher/fisher_pull_net_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/fisher/fisher_throw_net_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/hammering/geologist_hammer_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/hammering/hammering_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/hammering/hammering_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/hammering/hammering_02.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/mill/mill_turning_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/mill/mill_turning_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/other/falling_tools_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/other/falling_tools_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/sawmill/sawmill_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/sawmill/sawmill_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/smiths/sharpening_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/smiths/smith_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/smiths/smith_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/smiths/smith_02.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/smiths/toolsmith_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/smiths/toolsmith_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/spoken/timber_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/spoken/timber_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/spoken/warehouse-bringitin_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/stonecutting/stonecutter_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/stonecutting/stonemason_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/woodcutting/fast_woodcutting_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/woodcutting/fast_woodcutting_01.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/woodcutting/fast_woodcutting_02.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/woodcutting/fast_woodcutting_03.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Property changes on: trunk/sound/woodcutting/woodcutting_00.ogg ___________________________________________________________________ Modified: svn:mime-type - application/octet-stream + application/ogg Modified: trunk/src/animation.cc =================================================================== --- trunk/src/animation.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/animation.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -175,7 +175,7 @@ // Read mapping from frame numbers to sound effect names and load effects // will yield strange results if there is a different number of sfx_frame and sfx_name int32_t framenum; - const char *fxname; + char * fxname; ad.sfx_cues[123456] = "dummy"; while (s.get_next_int("sfx_frame", &framenum) Modified: trunk/src/bob.cc =================================================================== --- trunk/src/bob.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/bob.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -82,12 +82,11 @@ // Parse attributes Section & global_s = prof->get_safe_section("global"); - const char* string; - while (global_s.get_next_string("attrib", &string)) { - uint32_t attrib = get_attribute_id(string); + while (Section::Value const * val = global_s.get_next_val("attrib")) { + uint32_t const attrib = get_attribute_id(val->get_string()); if (attrib < Map_Object::HIGHEST_FIXED_ATTRIBUTE) - throw wexception("Bad attribute '%s'", string); + throw wexception("Bad attribute '%s'", val->get_string()); add_attribute(attrib); } Modified: trunk/src/building.cc =================================================================== --- trunk/src/building.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/building.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -83,8 +83,6 @@ Building_Descr::~Building_Descr() { free(m_buildicon_fname); - for (uint32_t i=0; i<m_enhances_to.size(); ++i) - free(m_enhances_to[i]); } /* @@ -121,9 +119,10 @@ =============== */ void Building_Descr::parse - (char const * const directory, - Profile * const prof, - EncodeData const * const encdata) + (char const * const directory, + Profile * const prof, + enhancements_map_t & enhancements_map, + EncodeData const * const encdata) { char fname[256]; @@ -149,12 +148,21 @@ // Parse build options m_buildable = global_s.get_bool("buildable", true); - { - char const * string; - while (global_s.get_next_string("enhances_to", &string)) - if (string) - m_enhances_to.push_back(strdup(string)); - } + std::set<std::string> enhancement_names; + while + (Section::Value const * const v = global_s.get_next_val("enhancement")) + try { + std::string const target_name = v->get_string(); + if (enhancement_names.count(target_name)) + throw wexception("this has already been declared"); + enhancement_names.insert(target_name); + } catch (_wexception const & e) { + throw wexception + ("\"enhancements=%s\": %s", v->get_string(), e.what()); + } + enhancements_map.insert + (std::pair<Building_Descr *, std::set<std::string> > + (this, enhancement_names)); m_enhanced_building = global_s.get_bool("enhanced_building", false); if (m_buildable || m_enhanced_building) { // get build icon @@ -181,7 +189,24 @@ // Get costs Section & buildcost_s = prof->get_safe_section("buildcost"); while (Section::Value const * const val = buildcost_s.get_next_val(0)) - m_buildcost.push_back(CostItem(val->get_name(), val->get_int())); + try { + if (Ware_Index const idx = m_tribe.ware_index(val->get_name())) { + if (m_buildcost.count(idx)) + throw wexception + ("a buildcost item of this ware type has already been " + "defined"); + int32_t const value = val->get_int(); + if (value < 1 or 255 < value) + throw wexception("count is out of range 1 .. 255"); + m_buildcost.insert(std::pair<Ware_Index, uint8_t>(idx, value)); + } else + throw wexception + ("tribe does not define a ware type with this name"); + } catch (_wexception const & e) { + throw wexception + ("buildcost \"%s=%s\": %s", + val->get_name(), val->get_string(), e.what()); + } } if ((m_stopable = global_s.get_bool("stopable", m_stopable))) { @@ -207,12 +232,8 @@ add_animation("idle", g_anim.get(directory, idle_s, 0, encdata)); } - { - char const * string; - while (global_s.get_next_string("soundfx", &string)) - if (string) - g_sound_handler.load_fx(directory, string); - } + while (Section::Value const * const v = global_s.get_next_val("soundfx")) + g_sound_handler.load_fx(directory, v->get_string()); m_hints.parse (prof); @@ -298,8 +319,9 @@ =============== */ Building_Descr* Building_Descr::create_from_dir - (Tribe_Descr const & tribe, - char const * const directory, + (Tribe_Descr const & tribe, + enhancements_map_t & enhancements_map, + char const * const directory, EncodeData const * const encdata) { const char* name; @@ -344,7 +366,7 @@ else throw wexception("Unknown building type '%s'", type); - descr->parse(directory, &prof, encdata); + descr->parse(directory, &prof, enhancements_map, encdata); } catch (std::exception &e) { delete descr; @@ -416,7 +438,7 @@ if (descr().get_buildable() or descr().get_enhanced_building()) caps |= 1 << PCap_Bulldoze; if (descr().get_stopable()) caps |= 1 << PCap_Stopable; - if (descr().enhances_to().size()) caps |= 1 << PCap_Enhancable; + if (descr().enhancements().size()) caps |= 1 << PCap_Enhancable; return caps; } Modified: trunk/src/building.h =================================================================== --- trunk/src/building.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/building.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -62,7 +62,6 @@ CostItem(const char* iname, int32_t iamount) : name(iname), amount(iamount) {} }; - typedef std::vector<CostItem> BuildCost; Building_Descr(const Tribe_Descr &, const std::string & name); virtual ~Building_Descr(); @@ -73,7 +72,9 @@ __attribute__ ((deprecated)) const char * get_descname() const throw () {return m_descname.c_str();} bool get_buildable() const {return m_buildable;} bool get_enhanced_building() const {return m_enhanced_building;} - const BuildCost & get_buildcost() const throw () {return m_buildcost;} + std::map<Ware_Index, uint8_t> const & buildcost() const throw () { + return m_buildcost; + } uint32_t get_buildicon() const {return m_buildicon;} int32_t get_size() const throw () {return m_size;} bool get_ismine() const {return m_mine;} @@ -83,8 +84,13 @@ const std::string & get_stop_icon() const throw () {return m_stop_icon;} const std::string & get_continue_icon() const throw () {return m_continue_icon;} - const std::vector<char *> & enhances_to() const throw () - {return m_enhances_to;} + std::set<Building_Index> const & enhancements() const throw () { + return m_enhancements; + } + void add_enhancement(Building_Index const i) { + assert(not m_enhancements.count(i)); + m_enhancements.insert(i); + } Building * create (Editor_Game_Base &, @@ -93,7 +99,9 @@ bool construct, bool fill = false, Building_Descr const * = 0) const; - virtual void parse(char const * directory, Profile *, EncodeData const *); + typedef + std::map<Building_Descr *, std::set<std::string> > enhancements_map_t; + virtual void parse(char const * directory, Profile *, enhancements_map_t &, EncodeData const *); virtual void load_graphics(); virtual uint32_t get_conquers() const; @@ -117,20 +125,19 @@ const std::string m_name; // internal codename std::string m_descname; // descriptive name for GUI bool m_buildable; // the player can build this himself - BuildCost m_buildcost; + std::map<Ware_Index, uint8_t> m_buildcost; uint32_t m_buildicon; // if buildable: picture in the build dialog char* m_buildicon_fname; // filename for this icon int32_t m_size; // size of the building bool m_mine; - std::vector<char*> m_enhances_to; // building to enhance to or 0 + std::set<Building_Index> m_enhancements; bool m_enhanced_building; // if it is one, it is bulldozable BuildingHints m_hints; // hints (knowledge) for computer players uint32_t m_vision_range; // for migration, 0 is the default, meaning get_conquers() + 4 public: static Building_Descr* create_from_dir - (const Tribe_Descr &, - const char * const directory, + (Tribe_Descr const &, enhancements_map_t &, char const * directory, const EncodeData * const encdata); }; @@ -214,8 +221,9 @@ void collect_priorities (std::map<int32_t, std::map<Ware_Index, int32_t> > & p) const; - const std::vector<char *> & enhances_to() const throw () - {return descr().enhances_to();} + std::set<Building_Index> const & enhancements() const throw () { + return descr().enhancements(); + } void log_general_info(Editor_Game_Base *); Modified: trunk/src/building_ui.cc =================================================================== --- trunk/src/building_ui.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/building_ui.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -55,6 +55,7 @@ #include <sys/types.h> using Widelands::Building; +using Widelands::Building_Index; using Widelands::ConstructionSite; using Widelands::MilitarySite; using Widelands::ProductionSite; @@ -608,23 +609,21 @@ } if (m_capscache & 1 << Building::PCap_Enhancable) { - const std::vector<char *> & buildings = m_building->enhances_to(); + std::set<Building_Index> const & enhancements = + m_building->enhancements(); Widelands::Tribe_Descr const & tribe = m_player->player().tribe(); - const std::vector<char *>::const_iterator buildings_end = buildings.end(); + std::set<Building_Index>::const_iterator const enhancements_end = + enhancements.end(); for - (std::vector<char *>::const_iterator it = buildings.begin(); - it != buildings_end; + (std::set<Building_Index>::const_iterator it = enhancements.begin(); + it != enhancements_end; ++it) { - Widelands::Building_Index const id = tribe.building_index(*it); - if (not id) - throw wexception("Should enhance to unknown building: %s", *it); - - if (not m_player->player().is_building_allowed(id)) + if (not m_player->player().is_building_allowed(*it)) continue; Widelands::Building_Descr const & building = - *tribe.get_building_descr(id); + *tribe.get_building_descr(*it); char buffer[128]; snprintf (buffer, sizeof(buffer), @@ -634,7 +633,7 @@ x, 0, 34, 34, 4, building.get_buildicon(), - &Building_Window::act_enhance, this, id, // Button id = building id + &Building_Window::act_enhance, this, *it, // button id = building id buffer); x += 34; } @@ -1405,9 +1404,9 @@ UI::Box* box = new UI::Box (parent, 0, 0, UI::Box::Vertical); // Add the wares queue - std::vector<Widelands::WaresQueue*>* warequeues=ps->get_warequeues(); - for (uint32_t i = 0; i < warequeues->size(); ++i) { - create_ware_queue_panel (box, ps, (*warequeues)[i]); + std::vector<Widelands::WaresQueue *> const & warequeues = ps->warequeues(); + for (uint32_t i = 0; i < warequeues.size(); ++i) { + create_ware_queue_panel (box, ps, warequeues[i]); } box->add_space(8); Modified: trunk/src/computer_player.cc =================================================================== --- trunk/src/computer_player.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/computer_player.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -163,24 +163,22 @@ bo.type = bld.get_ismine() ? BuildingObserver::MINE : BuildingObserver::PRODUCTIONSITE; - const std::vector<Input>::const_iterator inputs_end = - prod.get_inputs()->end(); + std::map<Ware_Index, uint8_t>::const_iterator const inputs_end = + prod.inputs().end(); for - (std::vector<Input>::const_iterator it = - prod.get_inputs()->begin(); + (std::map<Ware_Index, uint8_t>::const_iterator it = + prod.inputs().begin(); it != inputs_end; ++it) - bo.inputs.push_back - (tribe->safe_ware_index(it->ware_descr().name().c_str()).value()); + bo.inputs.push_back(it->first.value()); - const std::set<std::string>::const_iterator outputs_end = - prod.get_outputs()->end(); + std::set<Ware_Index>::const_iterator const output_end = + prod.output().end(); for - (std::set<std::string>::const_iterator it = - prod.get_outputs()->begin(); - it != outputs_end; + (std::set<Ware_Index>::const_iterator it = prod.output().begin(); + it != output_end; ++it) - bo.outputs.push_back(tribe->safe_ware_index(it->c_str()).value()); + bo.outputs.push_back(it->value()); continue; } Modified: trunk/src/constructionsite.cc =================================================================== --- trunk/src/constructionsite.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/constructionsite.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -62,11 +62,15 @@ etc... =============== */ -void ConstructionSite_Descr::parse(const char* directory, Profile* prof, const EncodeData* encdata) +void ConstructionSite_Descr::parse + (char const * directory, + Profile * prof, + enhancements_map_t & enhancements_map, + EncodeData const * encdata) { add_attribute(Map_Object::CONSTRUCTIONSITE); - Building_Descr::parse(directory, prof, encdata); + Building_Descr::parse(directory, prof, enhancements_map, encdata); // TODO } @@ -314,28 +318,24 @@ Building::init(g); if (upcast(Game, game, g)) { - const Tribe_Descr & tribe = owner().tribe(); // TODO: figure out whether planing is necessary // Initialize the wares queues - const Building_Descr::BuildCost & buildcost = m_building->get_buildcost(); - const Building_Descr::BuildCost::size_type buildcost_size = - buildcost.size(); + std::map<Ware_Index, uint8_t> const & buildcost = + m_building->buildcost(); + size_t buildcost_size = buildcost.size(); m_wares.resize(buildcost_size); - - for (Building_Descr::BuildCost::size_type i = 0; i < buildcost_size; ++i) - { + std::map<Ware_Index, uint8_t>::const_iterator it = buildcost.begin(); + for (size_t i = 0; i < buildcost_size; ++i, ++it) { WaresQueue* wq = new WaresQueue(this); m_wares[i] = wq; wq->set_callback(&ConstructionSite::wares_queue_callback, this); wq->set_consume_interval(CONSTRUCTIONSITE_STEP_TIME); - wq->init - (tribe.safe_ware_index(buildcost[i].name.c_str()), - buildcost[i].amount); + wq->init(*it); - m_work_steps += buildcost[i].amount; + m_work_steps += it->second; } request_builder(game); Modified: trunk/src/constructionsite.h =================================================================== --- trunk/src/constructionsite.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/constructionsite.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -52,7 +52,7 @@ ConstructionSite_Descr (const Tribe_Descr &, const std::string & constructionsite_name); - virtual void parse(char const * directory, Profile *, EncodeData const *); + virtual void parse(char const * directory, Profile *, enhancements_map_t &, EncodeData const *); virtual Building * create_object() const; }; Modified: trunk/src/critter_bob.cc =================================================================== --- trunk/src/critter_bob.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/critter_bob.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -202,11 +202,12 @@ prof->get_section("walk"), encdata); - char const * string; - while (global_s.get_next_string("program", &string)) { + while (Section::Value const * const v = global_s.get_next_val("program")) { + std::string const program_name = v->get_string(); Critter_BobProgram* prog = 0; - try { + if (m_programs.count(program_name)) + throw wexception("this program has already been declared"); Critter_BobProgram::Parser parser; parser.descr = this; @@ -214,15 +215,13 @@ parser.prof = prof; parser.encdata = encdata; - prog = new Critter_BobProgram(string); - prog->parse(&parser, string); - m_programs[prog->get_name()] = prog; - } - catch (std::exception& e) - { + prog = new Critter_BobProgram(v->get_string()); + prog->parse(&parser, v->get_string()); + m_programs[program_name] = prog; + } catch (std::exception const & e) { delete prog; - - throw wexception("Parse error in program %s: %s", string, e.what()); + throw wexception + ("Parse error in program %s: %s", v->get_string(), e.what()); } } } Modified: trunk/src/editor/ui_menus/editor_variables_menu.cc =================================================================== --- trunk/src/editor/ui_menus/editor_variables_menu.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/editor/ui_menus/editor_variables_menu.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -207,7 +207,7 @@ char * endp; int32_t const ivar = strtol(m_value.text().c_str(), &endp, 0); - if (endp and *endp) { + if (*endp) { char buffer[1024]; snprintf (buffer, sizeof(buffer), Modified: trunk/src/encyclopedia_window.cc =================================================================== --- trunk/src/encyclopedia_window.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/encyclopedia_window.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -46,6 +46,10 @@ #define WINDOW_WIDTH 600 #define WINDOW_HEIGHT 550 +#define WARE_PICTURE_COLUMN_WIDTH 32 +#define QUANTITY_COLUMN_WIDTH 64 +#define WARE_GROUPS_TABLE_WIDTH (WINDOW_WIDTH * 2 / 3 - 5) + using namespace Widelands; EncyclopediaWindow::EncyclopediaWindow @@ -55,20 +59,23 @@ (&plr, ®istry, WINDOW_WIDTH, WINDOW_HEIGHT, _("Tribe ware encyclopedia")), interactivePlayer(plr), wares (this, 5, 5, WINDOW_WIDTH - 10, WINDOW_HEIGHT - 250), -prodSites (this, 5, WINDOW_HEIGHT - 150, WINDOW_WIDTH / 2 - 5, 140), +prodSites (this, 5, WINDOW_HEIGHT - 150, WINDOW_WIDTH / 3 - 5, 140), condTable - (this, WINDOW_WIDTH / 2, WINDOW_HEIGHT - 150, WINDOW_WIDTH / 2 - 5, 140), -descrTxt (this, 5, WINDOW_HEIGHT - 240, WINDOW_WIDTH - 10, 80, ""), -tribe (&interactivePlayer.get_player()->tribe()) + (this, + WINDOW_WIDTH / 3, WINDOW_HEIGHT - 150, WARE_GROUPS_TABLE_WIDTH, 140), +descrTxt (this, 5, WINDOW_HEIGHT - 240, WINDOW_WIDTH - 10, 80, "") { wares.selected.set(this, &EncyclopediaWindow::wareSelected); prodSites.selected.set(this, &EncyclopediaWindow::prodSiteSelected); - condTable.add_column (32); - condTable.add_column(108, _("Needs Ware")); - condTable.add_column (80, _("Consumed")); - condTable.add_column (70, _("Group")); + condTable.add_column (WARE_PICTURE_COLUMN_WIDTH); + condTable.add_column + (WARE_GROUPS_TABLE_WIDTH + - WARE_PICTURE_COLUMN_WIDTH + - QUANTITY_COLUMN_WIDTH, + _("Consumed ware type(s)")); + condTable.add_column (QUANTITY_COLUMN_WIDTH, _("Quantity")); fillWares(); @@ -76,18 +83,19 @@ center_to_parent(); } -EncyclopediaWindow::~EncyclopediaWindow() {} void EncyclopediaWindow::fillWares() { - Ware_Index const nr_wares = tribe->get_nrwares(); + Tribe_Descr const & tribe = interactivePlayer.get_player()->tribe(); + Ware_Index const nr_wares = tribe.get_nrwares(); for (Ware_Index i = Ware_Index::First(); i < nr_wares; ++i) { - Item_Ware_Descr const & ware = *tribe->get_ware_descr(i); + Item_Ware_Descr const & ware = *tribe.get_ware_descr(i); wares.add(ware.descname().c_str(), i, ware.get_icon()); } } void EncyclopediaWindow::wareSelected(uint32_t) { - selectedWare = tribe->get_ware_descr(wares.get_selected()); + Tribe_Descr const & tribe = interactivePlayer.get_player()->tribe(); + selectedWare = tribe.get_ware_descr(wares.get_selected()); descrTxt.set_text(selectedWare->get_helptext()); @@ -96,18 +104,18 @@ bool found = false; - Building_Index const nr_buildings = tribe->get_nrbuildings(); + Building_Index const nr_buildings = tribe.get_nrbuildings(); for (Building_Index i = Building_Index::First(); i < nr_buildings; ++i) - if (upcast(ProductionSite_Descr const, de, tribe->get_building_descr(i))) + if (upcast(ProductionSite_Descr const, de, tribe.get_building_descr(i))) { const char * const name = de->name().c_str(); if (strcmp(name, "constructionsite") and strcmp(name, "headquarters") and - de->get_outputs()->find(selectedWare->name()) + de->output().find(wares.get_selected()) != - de->get_outputs()->end()) + de->output().end()) { prodSites.add(de->descname().c_str(), i, de->get_buildicon()); found = true; @@ -121,10 +129,11 @@ void EncyclopediaWindow::prodSiteSelected(uint32_t) { assert(prodSites.has_selection()); condTable.clear(); + Tribe_Descr const & tribe = interactivePlayer.get_player()->tribe(); const ProductionSite_Descr::ProgramMap & program_map = static_cast<const ProductionSite_Descr &> - (*tribe->get_building_descr(prodSites.get_selected())) + (*tribe.get_building_descr(prodSites.get_selected())) .get_all_programs(); // FIXME This needs reworking. A program can indeed produce iron even if @@ -133,6 +142,8 @@ // FIXME as "produce iron" or "createitem iron". The program name is not // FIXME supposed to have any meaning to the game logic except to uniquely // FIXME identify the program. + // Only shows information from the first program that has a name indicating + // that it produces the considered ware type. std::map<std::string, ProductionProgram*>::const_iterator programIt = program_map.find(std::string("produce_") + selectedWare->name()); @@ -143,113 +154,62 @@ if (programIt == program_map.end()) programIt = program_map.find(std::string("prog_") + selectedWare->name()); + if (programIt == program_map.end()) + programIt = program_map.find(std::string("mine_") + selectedWare->name()); + if (programIt == program_map.end()) programIt = program_map.find("work"); if (programIt != program_map.end()) { - std::vector<ProductionAction> const & actions = + std::vector<ProductionAction *> const & actions = programIt->second->get_all_actions(); - std::map<std::string, WareCondition> waresConsumed; - std::map<std::string, WareCondition> waresChecked; - - int32_t consumeGroup = 0; - int32_t checkGroup = 0; - - const std::vector<ProductionAction>::const_iterator actions_end = + const std::vector<ProductionAction *>::const_iterator actions_end = actions.end(); for - (std::vector<ProductionAction>::const_iterator it = actions.begin(); + (std::vector<ProductionAction *>::const_iterator it = actions.begin(); it != actions_end; ++it) - { - // some actions are noted as "consume ware1, ware2" - const std::vector<std::string> splitWares - (split_string(it->sparam1, ",")); - const std::vector<std::string>::const_iterator splitWares_end = - splitWares.end(); - - bool isGrouped = false; - - if (splitWares.size() > 1) { - isGrouped = true; - if (it->type == ProductionAction::actCheck) ++checkGroup; - else if (it->type == ProductionAction::actConsume) ++consumeGroup; - } - - if - (std::map<std::string, WareCondition> * const m = - it->type == ProductionAction::actConsume ? - &waresConsumed - : - it->type == ProductionAction::actCheck ? &waresChecked : 0) + if (upcast(ActConsume const, action, *it)) { + ActConsume::Groups const & groups = action->groups(); + ActConsume::Groups::const_iterator const groups_end = + groups.end(); for - (std::vector<std::string>::const_iterator jt = - splitWares.begin(); - jt != splitWares_end; + (ActConsume::Groups::const_iterator jt = groups.begin(); + jt != groups_end; ++jt) { - WareCondition wc = {it->iparam1, isGrouped, checkGroup}; - (*m)[*jt] = wc; - } - } + std::set<Ware_Index> const & ware_types = jt->first; + assert(ware_types.size()); + std::string ware_type_names; + std::set<Ware_Index>::const_iterator const ware_types_end = + ware_types.end(); + for + (std::set<Ware_Index>::const_iterator kt = + ware_types.begin();;) + { + ware_type_names += tribe.get_ware_descr(*kt)->descname(); + if (++kt == ware_types_end) + break; + ware_type_names += _(" or "); + } - uint32_t i = 0; - const std::map<std::string, WareCondition>::const_iterator - waresChecked_end = waresChecked.end(); - for - (std::map<std::string, WareCondition>::const_iterator waresCheckedIt = - waresChecked.begin(); - waresCheckedIt != waresChecked_end; - ++waresCheckedIt, ++i) - { - const std::map<std::string, WareCondition>::iterator - waresConsumedIt = waresConsumed.find(waresCheckedIt->first); - const bool consumed = waresConsumedIt != waresConsumed.end(); - createCondTableEntry - (i, - waresCheckedIt->first.c_str(), - consumed, - waresCheckedIt->second); - if (consumed) waresConsumed.erase(waresConsumedIt); - } + // Make sure to detect if someone changes the type so that it + // needs more than 3 decimal digits to represent. + compile_assert + (std::numeric_limits<typeof(jt->second)>::max() <= 999); + char amount_string[4]; // Space for 3 digits + terminator. + sprintf(amount_string, "%u", jt->second); - const std::map<std::string, WareCondition>::const_iterator - waresConsumed_end = waresConsumed.end(); - for - (std::map<std::string, WareCondition>::const_iterator waresConsumedIt = - waresConsumed.begin(); - waresConsumedIt != waresConsumed_end; - ++waresConsumedIt, ++i) - createCondTableEntry - (i, waresConsumedIt->first.c_str(), true, waresConsumedIt->second); + // picture only of first ware type in group + UI::Table<intptr_t>::Entry_Record & tableEntry = + condTable.add(0); + tableEntry.set_picture + (0, tribe.get_ware_descr(*ware_types.begin())->get_icon()); + tableEntry.set_string (1, ware_type_names); + tableEntry.set_string (2, amount_string); + condTable.set_sort_column(1); + condTable.sort(); + } + } } } - -void EncyclopediaWindow::createCondTableEntry - (uint32_t const index, - std::string const & wareName, - bool const consumed, - WareCondition const & wareCondition) -{ - Item_Ware_Descr const & curWare = - *tribe->get_ware_descr(tribe->safe_ware_index(wareName.c_str())); - - UI::Table<intptr_t>::Entry_Record & tableEntry = condTable.add(index); - std::string rowText = curWare.descname(); - std::string consumeAmount = "0"; - std::string groupId = ""; - - if (consumed) { - char buffer[5]; - snprintf(buffer, sizeof(buffer), "%i", wareCondition.amount); - consumeAmount = buffer; - } - - if (wareCondition.isGrouped) - for (uint32_t k = 0; k < wareCondition.groupId; ++k) groupId += '*'; - - tableEntry.set_picture(0, curWare.get_icon()); - tableEntry.set_string (1, rowText); - tableEntry.set_string (2, consumeAmount); - tableEntry.set_string (3, groupId); -} Modified: trunk/src/encyclopedia_window.h =================================================================== --- trunk/src/encyclopedia_window.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/encyclopedia_window.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -35,15 +35,8 @@ struct Tribe_Descr; }; -struct WareCondition { - uint32_t amount; - bool isGrouped; - uint32_t groupId; -}; - struct EncyclopediaWindow : public UI::UniqueWindow { EncyclopediaWindow(Interactive_Player &, UI::UniqueWindow::Registry &); - ~EncyclopediaWindow(); private: Interactive_Player & interactivePlayer; UI::Listselect<Widelands::Ware_Index> wares; @@ -51,15 +44,9 @@ UI::Table <intptr_t> condTable; UI::Multiline_Textarea descrTxt; Widelands::Item_Ware_Descr const * selectedWare; - Widelands::Tribe_Descr const * tribe; void fillWares(); void wareSelected(uint32_t); void prodSiteSelected(uint32_t); - void createCondTableEntry - (const uint32_t index, - const std::string & wareName, - const bool consumed, - const WareCondition & wareCondition); }; #endif Modified: trunk/src/helper.h =================================================================== --- trunk/src/helper.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/helper.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -23,11 +23,102 @@ #include "wexception.h" #include <SDL_keyboard.h> + +#include <cassert> +#include <cstring> #include <sstream> #include <string> -#include <cstring> #include <vector> +/// Matches the string that candidate points to against the string that +/// template points to. Stops at when reaching a null character or the +/// character terminator. If a match is found, candidate is moved beyond the +/// matched part. +/// +/// example: +/// char const * candidate = "return 75"; +/// bool const result = match(candidate, "return"); +/// now candidate points to " 75" and result is true +inline bool match(char * & candidate, char const * pattern) { + for (char * p = candidate;; ++p, ++pattern) + if (not *pattern) { + candidate = p; + return true; + } else if (*p != *pattern) + break; + return false; +} + + +/// Returns the word starting at the character that p points to and ending +/// before the first terminator character. Replaces the terminator with null. +inline char * match + (char * & p, bool & reached_end, char const terminator = ' ') +{ + assert(terminator); + char * const result = p; + for (;*p != terminator; ++p) + if (*p == '\0') { + reached_end = true; + goto end; + } + *p = '\0'; // terminate the word + ++p; // move past the terminator +end: + if (result < p) + return result; + throw wexception("expected word"); +} + + +/// Skips a sequence of consecutive characters with the value c, starting at p. +/// Returns whether any characters were skipped. +inline bool skip(char * & p, char const c = ' ') { + char * t = p; + while (*t == c) + ++t; + if (p < t) { + p = t; + return true; + } else + return false; +} + + +/// Skips a sequence of consecutive characters with the value c, starting at p. +/// Throws _wexception if no characters were skipped. +inline void force_skip(char * & p, char const c = ' ') { + char * t = p; + while (*t == c) + ++t; + if (p < t) + p = t; + else + throw wexception("expected '%c' but found \"%s\"", c, p); +} + +/// Combines match and force_skip. +/// +/// example: +/// char const * candidate = "return 75"; +/// bool const result = match_force_skip(candidate, "return"); +/// now candidate points to "75" and result is true +/// +/// example: +/// char const * candidate = "return75"; +/// bool const result = match_force_skip(candidate, "return"); +/// throws _wexception +inline bool match_force_skip(char * & candidate, char const * pattern) { + for (char * p = candidate;; ++p, ++pattern) + if (not *pattern) { + force_skip(p); + candidate = p; + return true; + } else if (*p != *pattern) + break; + return false; +} + /** * Convert std::string to any sstream-compatible type * Modified: trunk/src/idleworkersupply.cc =================================================================== --- trunk/src/idleworkersupply.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/idleworkersupply.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -74,7 +74,7 @@ } -uint32_t IdleWorkerSupply::nr_supplies(Game*, const Request* req) +uint32_t IdleWorkerSupply::nr_supplies(Game *, Request const * req) const { if (req->get_type() == Request::WORKER && Modified: trunk/src/idleworkersupply.h =================================================================== --- trunk/src/idleworkersupply.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/idleworkersupply.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -35,7 +35,7 @@ /// into a Warehouse ASAP. virtual bool is_active() const throw () {return true;} - virtual uint32_t nr_supplies(Game*, const Request*); + virtual uint32_t nr_supplies(Game *, Request const *) const; virtual WareInstance & launch_item(Game *, const Request*) __attribute__ ((noreturn)); virtual Worker * launch_worker(Game *, const Request*); Modified: trunk/src/immovable.cc =================================================================== --- trunk/src/immovable.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/immovable.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -300,23 +300,19 @@ } - { // parse attributes - char const * string; - while (global_s.get_next_string("attrib", &string)) { - uint32_t attrib = get_attribute_id(string); - if (attrib < Map_Object::HIGHEST_FIXED_ATTRIBUTE) - if (attrib != Map_Object::RESI) - throw wexception("Bad attribute '%s'", string); - add_attribute(attrib); - } + // parse attributes + while (Section::Value const * const v = global_s.get_next_val("attrib")) { + uint32_t attrib = get_attribute_id(v->get_string()); + if (attrib < Map_Object::HIGHEST_FIXED_ATTRIBUTE) + if (attrib != Map_Object::RESI) + throw wexception("Bad attribute '%s'", v->get_string()); + add_attribute(attrib); } - { // parse the programs - char const * string; - while (global_s.get_next_string("program", &string)) - parse_program(directory, prof, string); - } + // parse the programs + while (Section::Value const * const v = global_s.get_next_val("program")) + parse_program(directory, prof, v->get_string()); if (m_programs.find("program") == m_programs.end()) { if (prof->get_section("program")) { Modified: trunk/src/instances.cc =================================================================== --- trunk/src/instances.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/instances.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -1,3 +1,5 @@ +#include "productionsite.h" +#include "upcast.h" /* * Copyright (C) 2002-2004, 2006-2008 by the Widelands Development Team * @@ -230,8 +232,8 @@ /** * Add this animation for this map object under this name */ -bool Map_Object_Descr::is_animation_known(const char* name) { - std::map<std::string, uint32_t>::iterator i=m_anims.begin(); +bool Map_Object_Descr::is_animation_known(const char * const name) const { + std::map<std::string, uint32_t>::const_iterator i = m_anims.begin(); while (i!=m_anims.end()) { if (i->first==name) return true; Modified: trunk/src/instances.h =================================================================== --- trunk/src/instances.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/instances.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -62,11 +62,12 @@ bool has_attribute(uint32_t) const throw (); static uint32_t get_attribute_id(std::string const & name); + bool is_animation_known(const char * name) const; + void add_animation(const char * name, uint32_t anim); + protected: void add_attribute(uint32_t attr); - void add_animation(const char* name, uint32_t anim); - bool is_animation_known(const char* name); private: Modified: trunk/src/militarysite.cc =================================================================== --- trunk/src/militarysite.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/militarysite.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -60,13 +60,14 @@ =============== */ void MilitarySite_Descr::parse - (char const * const directory, - Profile * const prof, - EncodeData const * const encdata) + (char const * const directory, + Profile * const prof, + enhancements_map_t & enhancements_map, + EncodeData const * const encdata) { Section & global_s = prof->get_safe_section("global"); - ProductionSite_Descr::parse(directory, prof, encdata); + ProductionSite_Descr::parse(directory, prof, enhancements_map, encdata); m_stopable = false; // Militarysites are not stopable. m_conquer_radius = global_s.get_safe_int("conquers"); Modified: trunk/src/militarysite.h =================================================================== --- trunk/src/militarysite.h 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/militarysite.h 2008-10-09 16:00:24 UTC (rev 3373) @@ -34,7 +34,7 @@ (const Tribe_Descr &, const std::string & militarysite_name); virtual ~MilitarySite_Descr(); - virtual void parse(char const * directory, Profile *, EncodeData const *); + virtual void parse(char const * directory, Profile *, enhancements_map_t &, EncodeData const *); virtual Building * create_object() const; virtual bool is_only_production_site() const throw () {return false;} Modified: trunk/src/production_program.cc =================================================================== --- trunk/src/production_program.cc 2008-10-09 15:59:10 UTC (rev 3372) +++ trunk/src/production_program.cc 2008-10-09 16:00:24 UTC (rev 3373) @@ -19,357 +19,906 @@ #include "production_program.h" -#include "helper.h" +#include "game.h" +#include "mapregion.h" #include "productionsite.h" #include "profile.h" +#include "soldier.h" +#include "soldiercontrol.h" +#include "sound/sound_handler.h" #include "tribe.h" #include "worker_program.h" +#include "helper.h" +#include "upcast.h" + #include <stdio.h> namespace Widelands { -ProductionProgram::ProductionProgram(const std::string & name) : m_name(name) {} +ProductionAction::~ProductionAction() {} +ActReturn::Condition::~Condition() {} -/* -=============== -ProductionProgram::parse +ActReturn::Negation::~Negation() { + delete operand; +} +bool ActReturn::Negation::evaluate(ProductionSite const & ps) const { + return not operand->evaluate(ps); +} -Parse a program. The building is parsed completely (hopefully). -=============== -*/ -void ProductionProgram::parse - (std::string const & directory, - Profile * const prof, - std::string const & name, - ProductionSite_Descr * const building, - EncodeData const * const encdata) + +ActReturn::Economy_Needs::Economy_Needs + (char const * parameters, Tribe_Descr const & tribe) { - Section & program_s = prof->get_safe_section(name.c_str()); + try { + ware_type = tribe.safe_ware_index(parameters); + } catch (_wexception const & e) { + throw wexception("needs: %s", e.what()); + } +} +bool ActReturn::Economy_Needs::evaluate(ProductionSite const & ps) const +{ +#if 0 + log + ("ActReturn::Economy_Needs::evaluate(%s): (called from %s:%u) " + "economy_needs(%s) = %u\n", + ps.descname().c_str(), + const_cast<ProductionSite &>(ps).get_current_program()->program->get_name().c_str(), + const_cast<ProductionSite &>(ps).get_current_program()->ip, + ps.descr().tribe().get_ware_descr(ware... [truncated message content] |
From: <si...@us...> - 2008-10-11 11:32:21
|
Revision: 3384 http://widelands.svn.sourceforge.net/widelands/?rev=3384&view=rev Author: sigra Date: 2008-10-11 11:32:13 +0000 (Sat, 11 Oct 2008) Log Message: ----------- Let the micro-brewery practice making beer until the brewer becomes a master_brewer, even if the economy does not need beer. Suggested by Philipp Niemann. Modified Paths: -------------- trunk/src/building.cc trunk/src/building_ui.cc trunk/src/production_program.cc trunk/src/production_program.h trunk/src/productionsite.cc trunk/src/productionsite.h trunk/src/worker.h trunk/tribes/barbarians/buildings/micro-brewery/conf Modified: trunk/src/building.cc =================================================================== --- trunk/src/building.cc 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/building.cc 2008-10-11 11:32:13 UTC (rev 3384) @@ -347,8 +347,7 @@ if (!g_fs->FileExists(fname)) return 0; - try - { + try { Profile prof(fname, "global"); // section-less file char const * const type = prof.get_safe_section("global").get_safe_string("type"); @@ -367,13 +366,12 @@ throw wexception("Unknown building type '%s'", type); descr->parse(directory, &prof, enhancements_map, encdata); - } - catch (std::exception &e) { + } catch (std::exception const & e) { enhancements_map.erase(descr); // Must remove the pointer from the map. delete descr; throw wexception("Error reading building %s: %s", name, e.what()); - } - catch (...) { + } catch (...) { + enhancements_map.erase(descr); // Must remove the pointer from the map. delete descr; throw; } Modified: trunk/src/building_ui.cc =================================================================== --- trunk/src/building_ui.cc 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/building_ui.cc 2008-10-11 11:32:13 UTC (rev 3384) @@ -1163,7 +1163,7 @@ void ProductionSite_Window_ListWorkerWindow::fill_list() { const uint32_t m_last_select = m_ls->selection_index(); m_ls->clear(); - const std::vector<Widelands::Worker *> & workers = *m_ps->get_production_workers(); + std::vector<Widelands::Worker *> const & workers = m_ps->workers(); for (uint32_t i = 0; i < workers.size(); ++i) { Widelands::Worker & worker = *workers[i]; Modified: trunk/src/production_program.cc =================================================================== --- trunk/src/production_program.cc 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/production_program.cc 2008-10-11 11:32:13 UTC (rev 3384) @@ -49,10 +49,11 @@ ActReturn::Economy_Needs::Economy_Needs - (char const * parameters, Tribe_Descr const & tribe) + (char * & parameters, Tribe_Descr const & tribe) { try { - ware_type = tribe.safe_ware_index(parameters); + bool reached_end; + ware_type = tribe.safe_ware_index(match(parameters, reached_end)); } catch (_wexception const & e) { throw wexception("needs: %s", e.what()); } @@ -73,8 +74,23 @@ } +bool ActReturn::Workers_Need_Experience::evaluate + (ProductionSite const & ps) const +{ + std::vector<Worker *> const & workers = ps.workers(); + std::vector<Worker *>::const_iterator const workers_end = workers.end(); + for + (std::vector<Worker *>::const_iterator it = workers.begin(); + it != workers_end; + ++it) + if ((*it)->needs_experience()) + return true; + return false; +} + + ActReturn::Condition * create_economy_condition - (char * parameters, Tribe_Descr const & tribe) + (char * & parameters, Tribe_Descr const & tribe) { try { if (match_force_skip(parameters, "needs")) @@ -88,17 +104,33 @@ } +ActReturn::Condition * create_workers_condition(char * & parameters) { + try { + if (match(parameters, "need experience")) + return new ActReturn::Workers_Need_Experience; + else + throw wexception + ("expeted \"need experience\" but found \"%s\"", parameters); + } catch (_wexception const & e) { + throw wexception("workers: %s", e.what()); + } +} + + ActReturn::Condition * ActReturn::create_condition - (char * parameters, Tribe_Descr const & tribe) + (char * & parameters, Tribe_Descr const & tribe) { try { if (match_force_skip(parameters, "not")) return new ActReturn::Negation (parameters, tribe); else if (match_force_skip(parameters, "economy")) return create_economy_condition(parameters, tribe); + else if (match_force_skip(parameters, "workers")) + return create_workers_condition(parameters); else throw wexception - ("expected {not|site|economy} but found \"%s\"", parameters); + ("expected {\"not\"|\"economy\"|\"workers\"} but found \"%s\"", + parameters); } catch (_wexception const & e) { throw wexception("invalid condition: %s", e.what()); } @@ -124,29 +156,75 @@ m_result, parameters); #endif if (skip(parameters)) { - if (match_force_skip(parameters, "when")) - m_condition = create_condition(parameters, descr.tribe()); - else if (match_force_skip(parameters, "unless")) - m_condition = new Negation (parameters, descr.tribe()); - else + if (match_force_skip(parameters, "when")) { + m_is_when = true; + for (;;) { + m_conditions.push_back + (create_condition(parameters, descr.tribe())); + if (*parameters) { + skip(parameters); + if (not match_force_skip(parameters, "and")) + throw wexception("expected \"or\" or end of input"); + } else + break; + } + } else if (match_force_skip(parameters, "unless")) { + m_is_when = false; + for (;;) { + if (not *parameters) + throw wexception("expected condition at end of input"); + m_conditions.push_back + (create_condition(parameters, descr.tribe())); + if (*parameters) { + skip(parameters); + if (not match_force_skip(parameters, "or")) + throw wexception("expected \"or\" or end of input"); + } else + break; + } + } else throw wexception ("expected {when|unless} but found \"%s\"", parameters); } else if (*parameters) throw wexception ("expected space or end of input but found \"%s\"", parameters); else - m_condition = 0; + m_is_when = true; } catch (_wexception const & e) { throw wexception("return: %s", e.what()); } } +ActReturn::~ActReturn() { + Conditions::const_iterator const conditions_end = m_conditions.end(); + for + (Conditions::const_iterator it = m_conditions.begin(); + it != conditions_end; + ++it) + delete *it; +} + void ActReturn::execute(Game & game, ProductionSite & ps) const { - if (not m_condition or m_condition->evaluate(ps)) + if (m_is_when) { // "when a and b and ..." (all conditions must be true) + Conditions::const_iterator const conditions_end = m_conditions.end(); + for + (Conditions::const_iterator it = m_conditions.begin(); + it != conditions_end; + ++it) + if (not (*it)->evaluate(ps)) // A condition is false, return. + return ps.program_end(game, m_result); + return ps.program_step(game); + } else { // "unless a or b or ..." (all conditions must be false) + Conditions::const_iterator const conditions_end = m_conditions.end(); + for + (Conditions::const_iterator it = m_conditions.begin(); + it != conditions_end; + ++it) + if ((*it)->evaluate(ps)) // A condition is true, continue program. + return ps.program_step(game); return ps.program_end(game, m_result); - else - return ps.program_step(game); + } } Modified: trunk/src/production_program.h =================================================================== --- trunk/src/production_program.h 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/production_program.h 2008-10-11 11:32:13 UTC (rev 3384) @@ -59,11 +59,13 @@ /// Failed ::= "failed" /// Completed ::= "completed" /// Skipped ::= "skipped" -/// condition_part ::= conition_modifier condition -/// condition_modifier ::= "when" | "unless" -/// condition ::= negation | economy_condition +/// condition_part ::= when_condition | unless_conition +/// when_condition ::= "when" condition {["and" condition]} +/// unless_condition ::= "unless" condition {["or" condition]} +/// condition ::= negation | economy_condition | workers_condition /// negation ::= "not" condition /// economy_condition ::= economy_needs +/// workers_condition ::= "need experience" /// economy_needs ::= "economy needs" ware_type /// Parameter semantics: /// return_value: @@ -94,6 +96,7 @@ /// implicitly set to Completed. struct ActReturn : public ProductionAction { ActReturn(char * parameters, ProductionSite_Descr const &); + virtual ~ActReturn(); virtual void execute(Game &, ProductionSite &) const; struct Condition { @@ -101,7 +104,7 @@ virtual bool evaluate(ProductionSite const &) const = 0; }; static Condition * create_condition - (char * parameters, Tribe_Descr const &); + (char * & parameters, Tribe_Descr const &); struct Negation : public Condition { Negation (char * parameters, Tribe_Descr const & tribe) @@ -129,14 +132,22 @@ /// Tests whether the economy needs a ware of type ware_type. struct Economy_Needs : public Condition { - Economy_Needs(char const * parameters, Tribe_Descr const &); + Economy_Needs(char * & parameters, Tribe_Descr const &); virtual bool evaluate(ProductionSite const &) const; private: Ware_Index ware_type; }; + /// Tests whether any of the workers at the site needs experience to become + /// upgraded. + struct Workers_Need_Experience : public Condition { + virtual bool evaluate(ProductionSite const &) const; + }; + + typedef std::vector<Condition *> Conditions; Program_Result m_result; - Condition * m_condition; + bool m_is_when; // otherwise it is "unless" + Conditions m_conditions; }; struct ProductionProgram; Modified: trunk/src/productionsite.cc =================================================================== --- trunk/src/productionsite.cc 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/productionsite.cc 2008-10-11 11:32:13 UTC (rev 3384) @@ -218,12 +218,12 @@ void ProductionSite::fill(Game & game) { Building::fill(game); Tribe_Descr const & tribe = owner().tribe(); - std::vector<std::string> const & workers = descr().workers(); - std::vector<std::string>::const_iterator const workers_end = - workers.end(); + std::vector<std::string> const & worker_types = descr().workers(); + std::vector<std::string>::const_iterator const worker_types_end = + worker_types.end(); for - (std::vector<std::string>::const_iterator it = workers.begin(); - it != workers_end; + (std::vector<std::string>::const_iterator it = worker_types.begin(); + it != worker_types_end; ++it) { Worker & worker = @@ -286,12 +286,13 @@ ++it) (*it)->set_location(this); } else {// request workers - std::vector<std::string> const & workers = descr().workers(); - std::vector<std::string>::const_iterator const workers_end = - workers.end(); + std::vector<std::string> const & worker_types = descr().workers(); + std::vector<std::string>::const_iterator const worker_types_end = + worker_types.end(); for - (std::vector<std::string>::const_iterator it = workers.begin(); - it != workers_end; + (std::vector<std::string>::const_iterator it = + worker_types.begin(); + it != worker_types_end; ++it) request_worker(it->c_str()); } Modified: trunk/src/productionsite.h =================================================================== --- trunk/src/productionsite.h 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/productionsite.h 2008-10-11 11:32:13 UTC (rev 3384) @@ -125,9 +125,7 @@ std::vector<WaresQueue *> const & warequeues() const { return m_input_queues; } - std::vector<Worker*>* get_production_workers() { - return &m_workers; - } + std::vector<Worker *> const & workers() const {return m_workers;} protected: virtual UI::Window * create_options_window Modified: trunk/src/worker.h =================================================================== --- trunk/src/worker.h 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/src/worker.h 2008-10-11 11:32:13 UTC (rev 3384) @@ -118,6 +118,7 @@ int32_t get_needed_experience() const {return m_needed_exp;} int32_t get_current_experience() const {return m_current_exp;} + bool needs_experience() const {return m_needed_exp != -1;} // debug void log_general_info(Editor_Game_Base*); Modified: trunk/tribes/barbarians/buildings/micro-brewery/conf =================================================================== --- trunk/tribes/barbarians/buildings/micro-brewery/conf 2008-10-11 08:59:09 UTC (rev 3383) +++ trunk/tribes/barbarians/buildings/micro-brewery/conf 2008-10-11 11:32:13 UTC (rev 3384) @@ -14,7 +14,7 @@ wheat=8 [work] -return=skipped unless economy needs beer +return=skipped unless economy needs beer or workers need experience consume=water wheat sleep=30000 animate=working 30000 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2008-10-12 19:45:41
|
Revision: 3389 http://widelands.svn.sourceforge.net/widelands/?rev=3389&view=rev Author: alexiadeath Date: 2008-10-12 19:45:28 +0000 (Sun, 12 Oct 2008) Log Message: ----------- Fix small gamedata bugs that prevented them loading after checks were created to check that all frames are indeed same size. Modified Paths: -------------- trunk/tribes/barbarians/buildings/quarry/b_quarry_b_00.png trunk/worlds/greenland/bobs/tree1/f_tree1_00.png trunk/worlds/greenland/bobs/tree1/f_tree1_01.png trunk/worlds/greenland/bobs/tree1/f_tree1_02.png trunk/worlds/greenland/bobs/tree1/f_tree1_03.png trunk/worlds/greenland/bobs/tree1/f_tree1_04.png trunk/worlds/greenland/bobs/tree1/f_tree1_05.png trunk/worlds/greenland/bobs/tree1/f_tree1_06.png trunk/worlds/greenland/bobs/tree1/f_tree1_07.png trunk/worlds/greenland/bobs/tree1/f_tree1_08.png trunk/worlds/greenland/bobs/tree1/f_tree1_09.png trunk/worlds/greenland/bobs/tree1/f_tree1_10.png trunk/worlds/greenland/bobs/tree1/f_tree1_11.png trunk/worlds/greenland/bobs/tree2/f_tree2_00.png trunk/worlds/greenland/bobs/tree2/f_tree2_01.png trunk/worlds/greenland/bobs/tree2/f_tree2_02.png trunk/worlds/greenland/bobs/tree2/f_tree2_03.png trunk/worlds/greenland/bobs/tree2/f_tree2_04.png trunk/worlds/greenland/bobs/tree2/f_tree2_05.png trunk/worlds/greenland/bobs/tree2/f_tree2_06.png trunk/worlds/greenland/bobs/tree2/f_tree2_07.png trunk/worlds/greenland/bobs/tree2/f_tree2_08.png trunk/worlds/greenland/bobs/tree2/f_tree2_09.png trunk/worlds/greenland/bobs/tree2/f_tree2_10.png trunk/worlds/greenland/bobs/tree2/f_tree2_11.png This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-13 23:16:01
|
Revision: 3395 http://widelands.svn.sourceforge.net/widelands/?rev=3395&view=rev Author: sigra Date: 2008-10-13 23:15:54 +0000 (Mon, 13 Oct 2008) Log Message: ----------- Implement counting of casualties and kills (the general statistics menu had an item for kills but it had no data, reported by Alexia Death - alexiadeath). Modified Paths: -------------- trunk/src/battle.cc trunk/src/game.cc trunk/src/game.h trunk/src/game_player_info_data_packet.cc trunk/src/general_statistics_menu.cc trunk/src/player.cc trunk/src/player.h trunk/src/production_program.h Added Paths: ----------- trunk/pics/genstats_casualties.png Property changes on: trunk/pics/genstats_casualties.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: svn:mergeinfo + Modified: trunk/src/battle.cc =================================================================== --- trunk/src/battle.cc 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/battle.cc 2008-10-13 23:15:54 UTC (rev 3395) @@ -20,6 +20,7 @@ #include "battle.h" #include "game.h" +#include "player.h" #include "wexception.h" #include "widelands_fileread.h" #include "widelands_filewrite.h" @@ -137,6 +138,8 @@ { if (soldier->get_current_hitpoints() < 1) { molog("soldier %u has died\n", soldier->get_serial()); + soldier ->get_owner()->count_casualty(); + (soldier == m_first ? m_second : m_first)->get_owner()->count_kill (); soldier->schedule_destroy(g); destroy(g); return; Modified: trunk/src/game.cc =================================================================== --- trunk/src/game.cc 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/game.cc 2008-10-13 23:15:54 UTC (rev 3395) @@ -780,22 +780,25 @@ void Game::sample_statistics() { // Update general stats - std::vector< uint32_t > land_size; land_size.resize(map().get_nrplayers()); - std::vector< uint32_t > nr_buildings; nr_buildings.resize(map().get_nrplayers()); - std::vector< uint32_t > nr_kills; nr_kills.resize(map().get_nrplayers()); - std::vector< uint32_t > miltary_strength; miltary_strength.resize(map().get_nrplayers()); - std::vector< uint32_t > nr_workers; nr_workers.resize(map().get_nrplayers()); - std::vector< uint32_t > nr_wares; nr_wares.resize(map().get_nrplayers()); - std::vector< uint32_t > productivity; productivity.resize(map().get_nrplayers()); + Player_Number const nr_plrs = map().get_nrplayers(); + std::vector< uint32_t > land_size; land_size .resize(nr_plrs); + std::vector< uint32_t > nr_buildings; nr_buildings .resize(nr_plrs); + std::vector< uint32_t > nr_casualties; nr_casualties .resize(nr_plrs); + std::vector< uint32_t > nr_kills; nr_kills .resize(nr_plrs); + std::vector< uint32_t > miltary_strength; miltary_strength.resize(nr_plrs); + std::vector< uint32_t > nr_workers; nr_workers .resize(nr_plrs); + std::vector< uint32_t > nr_wares; nr_wares .resize(nr_plrs); + std::vector< uint32_t > productivity; productivity .resize(nr_plrs); - std::vector< uint32_t > nr_production_sites; nr_production_sites.resize(map().get_nrplayers()); + std::vector< uint32_t > nr_production_sites; + nr_production_sites.resize(nr_plrs); // We walk the map, to gain all needed information. Map const & themap = map(); Extent const extent = themap.extent(); iterate_Map_FCoords(themap, extent, fc) { - if (fc.field->get_owned_by()) - ++land_size[fc.field->get_owned_by() - 1]; + if (Player_Number const owner = fc.field->get_owned_by()) + ++land_size[owner - 1]; // Get the immovable if (upcast(Building, building, fc.field->get_immovable())) @@ -819,9 +822,8 @@ s->get_level(atrTotal) + 1; // So that level 0 also counts. } - // Number of workers / wares - const Player_Number nr_players = map().get_nrplayers(); - iterate_players_existing(p, nr_players, *this, plr) { + // Number of workers / wares / casualties / kills. + iterate_players_existing(p, nr_plrs, *this, plr) { uint32_t wostock = 0; uint32_t wastock = 0; @@ -847,6 +849,8 @@ } nr_wares [p - 1] = wastock; nr_workers[p - 1] = wostock; + nr_casualties[p - 1] = plr->casualties(); + nr_kills [p - 1] = plr->kills (); } // Now, divide the statistics @@ -858,13 +862,14 @@ // Now, push this on the general statistics m_general_stats.resize(map().get_nrplayers()); for (uint32_t i = 0; i < map().get_nrplayers(); ++i) { - m_general_stats[i].land_size.push_back(land_size[i]); - m_general_stats[i].nr_buildings.push_back(nr_buildings[i]); - m_general_stats[i].nr_kills.push_back(nr_kills[i]); + m_general_stats[i].land_size .push_back(land_size [i]); + m_general_stats[i].nr_buildings .push_back(nr_buildings [i]); + m_general_stats[i].nr_casualties .push_back(nr_casualties [i]); + m_general_stats[i].nr_kills .push_back(nr_kills [i]); m_general_stats[i].miltary_strength.push_back(miltary_strength[i]); - m_general_stats[i].nr_workers.push_back(nr_workers[i]); - m_general_stats[i].nr_wares.push_back(nr_wares[i]); - m_general_stats[i].productivity.push_back(productivity[i]); + m_general_stats[i].nr_workers .push_back(nr_workers [i]); + m_general_stats[i].nr_wares .push_back(nr_wares [i]); + m_general_stats[i].productivity .push_back(productivity [i]); } } @@ -876,14 +881,15 @@ * \param version indicates the kind of statistics file, which may be * 0 - old style statistics (from the time when statistics were kept in * Interactive_Player) - * 1 - current version + * 1 - without casualties + * 2 - with casualties * * \todo Document parameter fr * \todo Would it make sense to not support the old style anymore? */ void Game::ReadStatistics(FileRead& fr, uint32_t version) { - if (version == 0 || version == 1) { + if (version <= 2) { if (version >= 1) { m_last_stats_update = fr.Unsigned32(); } @@ -899,6 +905,7 @@ m_general_stats[p - 1].nr_buildings .resize(entries); m_general_stats[p - 1].nr_wares .resize(entries); m_general_stats[p - 1].productivity .resize(entries); + m_general_stats[p - 1].nr_casualties .resize(entries); m_general_stats[p - 1].nr_kills .resize(entries); m_general_stats[p - 1].miltary_strength.resize(entries); } @@ -911,6 +918,8 @@ m_general_stats[p - 1].nr_buildings [j] = fr.Unsigned32(); m_general_stats[p - 1].nr_wares [j] = fr.Unsigned32(); m_general_stats[p - 1].productivity [j] = fr.Unsigned32(); + m_general_stats[p - 1].nr_casualties [j] = + version >= 2 ? fr.Unsigned32() : 0; m_general_stats[p - 1].nr_kills [j] = fr.Unsigned32(); m_general_stats[p - 1].miltary_strength[j] = fr.Unsigned32(); } @@ -946,6 +955,7 @@ fw.Unsigned32(m_general_stats[p - 1].nr_buildings [j]); fw.Unsigned32(m_general_stats[p - 1].nr_wares [j]); fw.Unsigned32(m_general_stats[p - 1].productivity [j]); + fw.Unsigned32(m_general_stats[p - 1].nr_casualties [j]); fw.Unsigned32(m_general_stats[p - 1].nr_kills [j]); fw.Unsigned32(m_general_stats[p - 1].miltary_strength[j]); } Modified: trunk/src/game.h =================================================================== --- trunk/src/game.h 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/game.h 2008-10-13 23:15:54 UTC (rev 3395) @@ -69,6 +69,7 @@ std::vector< uint32_t > nr_buildings; std::vector< uint32_t > nr_wares; std::vector< uint32_t > productivity; + std::vector< uint32_t > nr_casualties; std::vector< uint32_t > nr_kills; std::vector< uint32_t > miltary_strength; }; Modified: trunk/src/game_player_info_data_packet.cc =================================================================== --- trunk/src/game_player_info_data_packet.cc 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/game_player_info_data_packet.cc 2008-10-13 23:15:54 UTC (rev 3395) @@ -29,7 +29,7 @@ namespace Widelands { -#define CURRENT_PACKET_VERSION 3 +#define CURRENT_PACKET_VERSION 4 void Game_Player_Info_Data_Packet::Read @@ -60,7 +60,7 @@ rgb[j] = RGBColor(r, g, b); } - std::string name = fr.CString(); + std::string const name = fr.CString(); game->add_player(plnum, tribe, name); Player & player = game->player(plnum); @@ -69,13 +69,18 @@ for (uint32_t j = 0; j < 4; ++j) player.m_playercolor[j] = rgb[j]; - if (packet_version >= 2) + if (packet_version >= 2) { player.ReadStatistics(fr, 0); + if (packet_version >= 4) { + player.m_casualties = fr.Unsigned32(); + player.m_kills = fr.Unsigned32(); + } + } } } if (packet_version >= 2) - game->ReadStatistics(fr, 1); + game->ReadStatistics(fr, packet_version >= 4 ? 2 : 1); } else throw wexception("unknown/unhandled version %u", packet_version); } catch (_wexception const & e) { @@ -97,8 +102,7 @@ const Player_Number nr_players = game->map().get_nrplayers(); fw.Unsigned16(nr_players); iterate_players_existing_const(p, nr_players, *game, plr) { - // Player is in game - fw.Unsigned8(1); + fw.Unsigned8(1); // Player is in game. fw.Unsigned8(plr->m_see_all); @@ -120,7 +124,10 @@ fw.CString(plr->m_name.c_str()); plr->WriteStatistics(fw); - } else fw.Unsigned8(0); // Player is NOT in game. + fw.Unsigned32(plr->casualties()); + fw.Unsigned32(plr->kills ()); + } else + fw.Unsigned8(0); // Player is NOT in game. game->WriteStatistics(fw); Modified: trunk/src/general_statistics_menu.cc =================================================================== --- trunk/src/general_statistics_menu.cc 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/general_statistics_menu.cc 2008-10-13 23:15:54 UTC (rev 3395) @@ -39,7 +39,7 @@ using namespace Widelands; #define PLOT_HEIGHT 100 -#define NR_DIFFERENT_DATASETS 7 +#define NR_DIFFERENT_DATASETS 8 enum { ID_LANDSIZE = 0, @@ -101,9 +101,11 @@ m_plot->register_plot_data (i * NR_DIFFERENT_DATASETS + 4, &genstats[i].productivity, color); m_plot->register_plot_data - (i * NR_DIFFERENT_DATASETS + 5, &genstats[i].nr_kills, color); + (i * NR_DIFFERENT_DATASETS + 5, &genstats[i].nr_casualties, color); m_plot->register_plot_data - (i * NR_DIFFERENT_DATASETS + 6, &genstats[i].miltary_strength, color); + (i * NR_DIFFERENT_DATASETS + 6, &genstats[i].nr_kills, color); + m_plot->register_plot_data + (i * NR_DIFFERENT_DATASETS + 7, &genstats[i].miltary_strength, color); if (game.get_player(i + 1)) // Show area plot m_plot->show_plot(i * NR_DIFFERENT_DATASETS, 1); } @@ -135,7 +137,10 @@ pos.y += 25 + spacing + spacing; m_radiogroup = new UI::Radiogroup(); - button_size = (get_inner_w() - spacing * 8) / 7; + button_size = + (get_inner_w() - spacing * (NR_DIFFERENT_DATASETS + 1)) + / + NR_DIFFERENT_DATASETS; m_radiogroup->add_button (this, pos, @@ -169,6 +174,12 @@ m_radiogroup->add_button (this, pos, + g_gr->get_picture(PicMod_Game, "pics/genstats_casualties.png"), + _("Casualties")); + pos.x += button_size + spacing; + m_radiogroup->add_button + (this, + pos, g_gr->get_picture(PicMod_Game, "pics/genstats_kills.png"), _("Kills")); pos.x += button_size + spacing; Modified: trunk/src/player.cc =================================================================== --- trunk/src/player.cc 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/player.cc 2008-10-13 23:15:54 UTC (rev 3395) @@ -59,6 +59,8 @@ m_egbase (the_egbase), m_plnum (plnum), m_tribe (tribe_descr), + m_casualties (0), + m_kills (0), m_fields (0), m_allowed_buildings (tribe_descr.get_nrbuildings(), true), m_current_statistics(tribe_descr.get_nrwares ()), Modified: trunk/src/player.h =================================================================== --- trunk/src/player.h 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/player.h 2008-10-13 23:15:54 UTC (rev 3395) @@ -406,6 +406,11 @@ uint32_t findAttackSoldiers(Flag* flag, std::vector<Soldier*>* soldiers = 0); void enemyflagaction(Flag* flag, int32_t action, int32_t param, int32_t param2, int32_t param3); + uint32_t casualties() const {return m_casualties;} + uint32_t kills () const {return m_kills;} + void count_casualty() {++m_casualties;} + void count_kill () {++m_kills;} + AreaWatcher & add_areawatcher(const Player_Area<> player_area) { assert(player_area.player_number == get_player_number()); see_area @@ -463,6 +468,7 @@ bool m_view_changed; const Player_Number m_plnum; const Tribe_Descr& m_tribe; // buildings, wares, workers, sciences + uint32_t m_casualties, m_kills; RGBColor m_playercolor[4]; Field * m_fields; Modified: trunk/src/production_program.h =================================================================== --- trunk/src/production_program.h 2008-10-13 20:18:01 UTC (rev 3394) +++ trunk/src/production_program.h 2008-10-13 23:15:54 UTC (rev 3395) @@ -60,13 +60,14 @@ /// Completed ::= "completed" /// Skipped ::= "skipped" /// condition_part ::= when_condition | unless_conition -/// when_condition ::= "when" condition {["and" condition]} -/// unless_condition ::= "unless" condition {["or" condition]} +/// when_condition ::= "when" condition {"and" condition} +/// unless_condition ::= "unless" condition {"or" condition} /// condition ::= negation | economy_condition | workers_condition /// negation ::= "not" condition -/// economy_condition ::= economy_needs -/// workers_condition ::= "need experience" -/// economy_needs ::= "economy needs" ware_type +/// economy_condition ::= "economy" economy_needs +/// workers_condition ::= "workers" workers_need_experience +/// economy_needs ::= "needs" ware_type +/// workers_need_experience ::= "need experience" /// Parameter semantics: /// return_value: /// If return_value is Failed or Completed, the productionsite's @@ -76,11 +77,10 @@ /// A boolean condition that can be evaluated to true or false. /// condition_part: /// If omitted, the return is unconditional. -/// condition_modifier: -/// If condition_modifier is "when", the program returns if the -/// condition evaluates to true (otherwise the program continues). -/// If condition_modifier is "unless", the program returns if the -/// condition evaluates to false (otherwise the program continues). +/// when_condition: +/// This will cause the program to return when all conditions are true. +/// unless_condition: +/// This will cause the program to return unless some condition is true. /// ware_type: /// The name of a ware type (defined in the tribe). A ware type may only /// appear once in the command. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nas...@us...> - 2008-10-19 08:10:20
|
Revision: 3415 http://widelands.svn.sourceforge.net/widelands/?rev=3415&view=rev Author: nasenbaer_peter Date: 2008-10-19 08:10:18 +0000 (Sun, 19 Oct 2008) Log Message: ----------- Add sounds for ducks Modified Paths: -------------- trunk/worlds/blackland/bobs/duck/conf trunk/worlds/desert/bobs/duck/conf trunk/worlds/greenland/bobs/duck/conf trunk/worlds/winterland/bobs/duck/conf Added Paths: ----------- trunk/sound/animals/ trunk/sound/animals/duck_00.ogg trunk/sound/animals/duck_01.ogg trunk/sound/animals/duck_02.ogg Added: trunk/sound/animals/duck_00.ogg =================================================================== (Binary files differ) Property changes on: trunk/sound/animals/duck_00.ogg ___________________________________________________________________ Added: svn:mime-type + application/ogg Added: trunk/sound/animals/duck_01.ogg =================================================================== (Binary files differ) Property changes on: trunk/sound/animals/duck_01.ogg ___________________________________________________________________ Added: svn:mime-type + application/ogg Added: trunk/sound/animals/duck_02.ogg =================================================================== (Binary files differ) Property changes on: trunk/sound/animals/duck_02.ogg ___________________________________________________________________ Added: svn:mime-type + application/ogg Modified: trunk/worlds/blackland/bobs/duck/conf =================================================================== --- trunk/worlds/blackland/bobs/duck/conf 2008-10-19 07:47:24 UTC (rev 3414) +++ trunk/worlds/blackland/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) @@ -1,10 +1,13 @@ descname=_Duck type="critter" swimming=1 # defaults to 0, is only in the water? +soundfx=../../../../sound/animals/duck [idle] +pics=duck_??.png +sfx_frame=0 +sfx_name=../../../../sound/animals/duck hotspot=5 10 [walk] hotspot=5 10 - Modified: trunk/worlds/desert/bobs/duck/conf =================================================================== --- trunk/worlds/desert/bobs/duck/conf 2008-10-19 07:47:24 UTC (rev 3414) +++ trunk/worlds/desert/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) @@ -1,10 +1,13 @@ descname=_Duck type="critter" swimming=1 # defaults to 0, is only in the water? +soundfx=../../../../sound/animals/duck [idle] +pics=duck_??.png +sfx_frame=0 +sfx_name=../../../../sound/animals/duck hotspot=5 10 [walk] hotspot=5 10 - Modified: trunk/worlds/greenland/bobs/duck/conf =================================================================== --- trunk/worlds/greenland/bobs/duck/conf 2008-10-19 07:47:24 UTC (rev 3414) +++ trunk/worlds/greenland/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) @@ -1,10 +1,13 @@ descname=_Duck type="critter" swimming=1 # defaults to 0, is only in the water? +soundfx=../../../../sound/animals/duck [idle] +pics=duck_??.png +sfx_frame=0 +sfx_name=../../../../sound/animals/duck hotspot=5 10 [walk] hotspot=5 10 - Modified: trunk/worlds/winterland/bobs/duck/conf =================================================================== --- trunk/worlds/winterland/bobs/duck/conf 2008-10-19 07:47:24 UTC (rev 3414) +++ trunk/worlds/winterland/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) @@ -1,10 +1,13 @@ descname=_Duck type="critter" swimming=1 # defaults to 0, is only in the water? +soundfx=../../../../sound/animals/duck [idle] +pics=duck_??.png +sfx_frame=0 +sfx_name=../../../../sound/animals/duck hotspot=5 10 [walk] hotspot=5 10 - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nas...@us...> - 2008-10-19 08:23:06
|
Revision: 3414 http://widelands.svn.sourceforge.net/widelands/?rev=3414&view=rev Author: nasenbaer_peter Date: 2008-10-19 07:47:24 +0000 (Sun, 19 Oct 2008) Log Message: ----------- * Convert all stereo sounds to mono * rehigher the play intervall of sounds so Widelands doesn't play sounds in a loop * don't use "bring it in" sound for now, as it simply doesn't fit. Modified Paths: -------------- trunk/sound/farm/farm_animal_00.ogg trunk/sound/farm/sheep_00.ogg trunk/sound/hammering/geologist_hammer_00.ogg trunk/sound/spoken/timber_00.ogg trunk/sound/spoken/timber_01.ogg trunk/sound/spoken/warehouse-bringitin_00.ogg trunk/sound/stonecutting/stonemason_00.ogg trunk/src/sound/sound_handler.h trunk/tribes/atlantids/buildings/headquarters/conf trunk/tribes/barbarians/buildings/headquarters/conf trunk/tribes/empire/buildings/headquarters/conf Modified: trunk/sound/farm/farm_animal_00.ogg =================================================================== (Binary files differ) Modified: trunk/sound/farm/sheep_00.ogg =================================================================== (Binary files differ) Modified: trunk/sound/hammering/geologist_hammer_00.ogg =================================================================== (Binary files differ) Modified: trunk/sound/spoken/timber_00.ogg =================================================================== (Binary files differ) Modified: trunk/sound/spoken/timber_01.ogg =================================================================== (Binary files differ) Modified: trunk/sound/spoken/warehouse-bringitin_00.ogg =================================================================== (Binary files differ) Modified: trunk/sound/stonecutting/stonemason_00.ogg =================================================================== (Binary files differ) Modified: trunk/src/sound/sound_handler.h =================================================================== --- trunk/src/sound/sound_handler.h 2008-10-18 22:04:27 UTC (rev 3413) +++ trunk/src/sound/sound_handler.h 2008-10-19 07:47:24 UTC (rev 3414) @@ -40,7 +40,7 @@ /// How many milliseconds in the past to consider for /// Sound_Handler::play_or_not() -#define SLIDING_WINDOW_SIZE 500 +#define SLIDING_WINDOW_SIZE 20000 extern class Sound_Handler g_sound_handler; Modified: trunk/tribes/atlantids/buildings/headquarters/conf =================================================================== --- trunk/tribes/atlantids/buildings/headquarters/conf 2008-10-18 22:04:27 UTC (rev 3413) +++ trunk/tribes/atlantids/buildings/headquarters/conf 2008-10-19 07:47:24 UTC (rev 3414) @@ -1,6 +1,6 @@ [global] descname=_"Headquarters" -soundfx=../../../../sound/spoken/warehouse-bringitin +# soundfx=../../../../sound/spoken/warehouse-bringitin type=warehouse size=big buildable=no @@ -9,6 +9,6 @@ [idle] pics=hq_i_??.png -sfx_frame=0 -sfx_name=../../../../sound/spoken/warehouse-bringitin +# sfx_frame=0 +# sfx_name=../../../../sound/spoken/warehouse-bringitin hotspot=82 79 Modified: trunk/tribes/barbarians/buildings/headquarters/conf =================================================================== --- trunk/tribes/barbarians/buildings/headquarters/conf 2008-10-18 22:04:27 UTC (rev 3413) +++ trunk/tribes/barbarians/buildings/headquarters/conf 2008-10-19 07:47:24 UTC (rev 3414) @@ -4,7 +4,7 @@ [global] descname=_ Headquarters -soundfx=../../../../sound/spoken/warehouse-bringitin +# soundfx=../../../../sound/spoken/warehouse-bringitin type=warehouse size=big buildable=no @@ -13,6 +13,6 @@ [idle] pics=hq_i_??.png -sfx_frame=0 -sfx_name=../../../../sound/spoken/warehouse-bringitin +# sfx_frame=0 +# sfx_name=../../../../sound/spoken/warehouse-bringitin hotspot=83 113 Modified: trunk/tribes/empire/buildings/headquarters/conf =================================================================== --- trunk/tribes/empire/buildings/headquarters/conf 2008-10-18 22:04:27 UTC (rev 3413) +++ trunk/tribes/empire/buildings/headquarters/conf 2008-10-19 07:47:24 UTC (rev 3414) @@ -1,6 +1,6 @@ [global] descname=_ Headquarters -soundfx=../../../../sound/spoken/warehouse-bringitin +# soundfx=../../../../sound/spoken/warehouse-bringitin type=warehouse size=big buildable=no @@ -9,6 +9,6 @@ [idle] pics=hq_i_??.png -sfx_frame=0 -sfx_name=../../../../sound/spoken/warehouse-bringitin +# sfx_frame=0 +# sfx_name=../../../../sound/spoken/warehouse-bringitin hotspot=95 110 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <si...@us...> - 2008-10-19 09:33:39
|
Revision: 3416 http://widelands.svn.sourceforge.net/widelands/?rev=3416&view=rev Author: sigra Date: 2008-10-19 09:29:32 +0000 (Sun, 19 Oct 2008) Log Message: ----------- Fix parsing of mapping from animation frame to sfx. Modified Paths: -------------- trunk/src/animation.cc trunk/src/production_program.cc trunk/tribes/atlantids/buildings/headquarters/conf trunk/tribes/atlantids/buildings/warehouse/conf trunk/tribes/barbarians/buildings/headquarters/conf trunk/tribes/barbarians/buildings/warehouse/conf trunk/tribes/empire/buildings/headquarters/conf trunk/tribes/empire/buildings/warehouse/conf trunk/worlds/blackland/bobs/duck/conf trunk/worlds/blackland/bobs/sheep/conf trunk/worlds/desert/bobs/duck/conf trunk/worlds/desert/bobs/sheep/conf trunk/worlds/greenland/bobs/duck/conf trunk/worlds/greenland/bobs/sheep/conf trunk/worlds/winterland/bobs/duck/conf trunk/worlds/winterland/bobs/sheep/conf Modified: trunk/src/animation.cc =================================================================== --- trunk/src/animation.cc 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/src/animation.cc 2008-10-19 09:29:32 UTC (rev 3416) @@ -25,6 +25,8 @@ #include "sound/sound_handler.h" #include "wexception.h" +#include "helper.h" + #include <stdio.h> @@ -173,19 +175,29 @@ } // Read mapping from frame numbers to sound effect names and load effects - // will yield strange results if there is a different number of sfx_frame and sfx_name - int32_t framenum; - char * fxname; - while - (s.get_next_int("sfx_frame", &framenum) - && - s.get_next_string("sfx_name", &fxname)) - { - //TODO: error handling - g_sound_handler.load_fx(directory, fxname); - ad.sfx_cues[framenum] = fxname; + while (Section::Value * const v = s.get_next_val("sfx")) { + char * parameters = v->get_string(), * endp; + unsigned long long int const value = strtoull(parameters, &endp, 0); + uint32_t const frame_number = value; + try { + if (endp == parameters or frame_number != value) + throw wexception + ("expected frame number but found \"%s\"", parameters); + parameters = endp; + force_skip(parameters); + g_sound_handler.load_fx(directory, parameters); + std::map<uint32_t, std::string>::const_iterator const it = + ad.sfx_cues.find(frame_number); + if (it != ad.sfx_cues.end()) + throw wexception + ("redefinition for frame %u to \"%s\" (previously defined to " + "\"%s\")", + frame_number, parameters, it->second.c_str()); + } catch (_wexception const & e) { + throw wexception("sfx: %s", e.what()); + } + ad.sfx_cues[frame_number] = parameters; } - //TODO: complain about mismatched number of sfx_name/sfx_frame // Get descriptive data if (encdefaults) Modified: trunk/src/production_program.cc =================================================================== --- trunk/src/production_program.cc 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/src/production_program.cc 2008-10-19 09:29:32 UTC (rev 3416) @@ -467,14 +467,13 @@ case ':': { ++parameters; char * endp; - long long int value = strtoll(parameters, &endp, 0); - if - ((*endp and *endp != ' ') or - value < 1 or std::numeric_limits<uint8_t>::max() < value) + unsigned long long int const value = + strtoull(parameters, &endp, 0); + count = value; + if ((*endp and *endp != ' ') or value < 1 or count != value) throw wexception ("expected count but found \"%s\"", parameters); parameters = endp; - count = value; // fallthrough } case '\0': @@ -590,15 +589,16 @@ *parameters = '\0'; ++parameters; char * endp; - long long int value = strtoll(parameters, &endp, 0); + unsigned long long int const value = + strtoull(parameters, &endp, 0); + item.second = value; if ((*endp and *endp != ' ') or - value < 1 or std::numeric_limits<uint8_t>::max() < value) + value < 1 or item.second != value) throw wexception ("expected count but found \"%s\"", parameters); parameters = endp; - item.second = value; goto item_end; } } @@ -636,35 +636,31 @@ { char * endp; - long long int const value = strtoll(parameters, &endp, 0); - if (*endp != ' ' and value != static_cast<uint8_t>(value)) + unsigned long long int const value = strtoull(parameters, &endp, 0); + m_distance = value; + if (*endp != ' ' or m_distance != value) throw wexception ("expected distance but found \"%s\"", parameters); - m_distance = value; parameters = endp; } { char * endp; - long long int const value = strtoll(parameters, &endp, 0); - if - (*endp != ' ' and - (value < 1 or static_cast<uint8_t>(value) < value)) + unsigned long long int const value = strtoull(parameters, &endp, 0); + m_max = value; + if (*endp != ' ' or value < 1 or 100 < value) throw wexception ("expected percent but found \"%s\"", parameters); - m_max = value; parameters = endp; } { char * endp; - long long int const value = strtoll(parameters, &endp, 0); - if - (*endp and - (value < 1 or static_cast<uint8_t>(value) < value)) + unsigned long long int const value = strtoull(parameters, &endp, 0); + m_chance = value; + if (*endp or value < 1 or 100 < value) throw wexception ("expected percent but found \"%s\"", parameters); - m_chance = value; } std::string description = descr.descname(); @@ -800,11 +796,11 @@ parameters); char * endp; - long long int value = strtoll(parameters, &endp, 0); - if (*endp or static_cast<uint8_t>(value) != value) + unsigned long long int const value = strtoull(parameters, &endp, 0); + level = value; + if (*endp or level != value) throw wexception ("expected level but found \"%s\"", parameters); - level = value; } catch (_wexception const & e) { throw wexception("check_soldier: %s", e.what()); } @@ -859,23 +855,21 @@ { char * endp; - long long int value = strtoll(parameters, &endp, 0); - if (*endp != ' ' or static_cast<uint8_t>(value) != value) + unsigned long long int const value = strtoull(parameters, &endp, 0); + level = value; + if (*endp != ' ' or level != value) throw wexception ("expected level but found \"%s\"", parameters); - level = value; parameters = endp; } { char * endp; - long long int value = strtoll(parameters, &endp, 0); - if - (*endp or static_cast<uint8_t>(value) != value or - value <= level) + unsigned long long int const value = strtoull(parameters, &endp, 0); + target_level = value; + if (*endp or target_level != value or target_level <= level) throw wexception ("expected level > %u but found \"%s\"", level, parameters); - target_level = value; } } catch (_wexception const & e) { throw wexception("train: %s", e.what()); @@ -940,11 +934,11 @@ if (not reached_end) { char * endp; - long long int value = strtoll(parameters, &endp, 0); - if (*endp) + unsigned long long int const value = strtoull(parameters, &endp, 0); + priority = value; + if (*endp or priority != value) throw wexception ("expected priority but found \"%s\"", parameters); - priority = value; } else priority = 127; } catch (_wexception const & e) { Modified: trunk/tribes/atlantids/buildings/headquarters/conf =================================================================== --- trunk/tribes/atlantids/buildings/headquarters/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/tribes/atlantids/buildings/headquarters/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -9,6 +9,5 @@ [idle] pics=hq_i_??.png -# sfx_frame=0 -# sfx_name=../../../../sound/spoken/warehouse-bringitin +# sfx=0 ../../../../sound/spoken/warehouse-bringitin hotspot=82 79 Modified: trunk/tribes/atlantids/buildings/warehouse/conf =================================================================== --- trunk/tribes/atlantids/buildings/warehouse/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/tribes/atlantids/buildings/warehouse/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -26,7 +26,6 @@ [working] pics=warehouse_i_??.png # ??? -sfx_frame=1 -sfx_name=../../../../sound/spoken/warehouse-bringitin +sfx=1 ../../../../sound/spoken/warehouse-bringitin hotspot=60 64 playercolor=true Modified: trunk/tribes/barbarians/buildings/headquarters/conf =================================================================== --- trunk/tribes/barbarians/buildings/headquarters/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/tribes/barbarians/buildings/headquarters/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -13,6 +13,5 @@ [idle] pics=hq_i_??.png -# sfx_frame=0 -# sfx_name=../../../../sound/spoken/warehouse-bringitin +# sfx=0 ../../../../sound/spoken/warehouse-bringitin hotspot=83 113 Modified: trunk/tribes/barbarians/buildings/warehouse/conf =================================================================== --- trunk/tribes/barbarians/buildings/warehouse/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/tribes/barbarians/buildings/warehouse/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -24,6 +24,5 @@ [working] pics=warehouse_i_??.png # ??? -sfx_frame=1 -sfx_name=../../../../sound/spoken/warehouse-bringitin +sfx=1 ../../../../sound/spoken/warehouse-bringitin hotspot=56 77 Modified: trunk/tribes/empire/buildings/headquarters/conf =================================================================== --- trunk/tribes/empire/buildings/headquarters/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/tribes/empire/buildings/headquarters/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -9,6 +9,5 @@ [idle] pics=hq_i_??.png -# sfx_frame=0 -# sfx_name=../../../../sound/spoken/warehouse-bringitin +# sfx=0 ../../../../sound/spoken/warehouse-bringitin hotspot=95 110 Modified: trunk/tribes/empire/buildings/warehouse/conf =================================================================== --- trunk/tribes/empire/buildings/warehouse/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/tribes/empire/buildings/warehouse/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -24,6 +24,5 @@ [working] pics=warehouse_i_??.png # ??? -sfx_frame=1 -sfx_name=../../../../sound/spoken/warehouse-bringitin +sfx=1 ../../../../sound/spoken/warehouse-bringitin hotspot=60 72 Modified: trunk/worlds/blackland/bobs/duck/conf =================================================================== --- trunk/worlds/blackland/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/blackland/bobs/duck/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -5,8 +5,7 @@ [idle] pics=duck_??.png -sfx_frame=0 -sfx_name=../../../../sound/animals/duck +sfx=0 ../../../../sound/animals/duck hotspot=5 10 [walk] Modified: trunk/worlds/blackland/bobs/sheep/conf =================================================================== --- trunk/worlds/blackland/bobs/sheep/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/blackland/bobs/sheep/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -10,8 +10,7 @@ [idle] pics=sheep_??.png -sfx_frame=0 -sfx_name=../../../../sound/farm/sheep +sfx=0 ../../../../sound/farm/sheep hotspot=15 25 fps=20 Modified: trunk/worlds/desert/bobs/duck/conf =================================================================== --- trunk/worlds/desert/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/desert/bobs/duck/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -5,8 +5,7 @@ [idle] pics=duck_??.png -sfx_frame=0 -sfx_name=../../../../sound/animals/duck +sfx=0 ../../../../sound/animals/duck hotspot=5 10 [walk] Modified: trunk/worlds/desert/bobs/sheep/conf =================================================================== --- trunk/worlds/desert/bobs/sheep/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/desert/bobs/sheep/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -10,8 +10,7 @@ [idle] pics=sheep_??.png -sfx_frame=0 -sfx_name=../../../../sound/farm/sheep +sfx=0 ../../../../sound/farm/sheep hotspot=15 25 fps=20 Modified: trunk/worlds/greenland/bobs/duck/conf =================================================================== --- trunk/worlds/greenland/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/greenland/bobs/duck/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -5,8 +5,7 @@ [idle] pics=duck_??.png -sfx_frame=0 -sfx_name=../../../../sound/animals/duck +sfx=0 ../../../../sound/animals/duck hotspot=5 10 [walk] Modified: trunk/worlds/greenland/bobs/sheep/conf =================================================================== --- trunk/worlds/greenland/bobs/sheep/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/greenland/bobs/sheep/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -10,8 +10,7 @@ [idle] pics=sheep_??.png -sfx_frame=0 -sfx_name=../../../../sound/farm/sheep +sfx=0 ../../../../sound/farm/sheep hotspot=15 25 fps=20 Modified: trunk/worlds/winterland/bobs/duck/conf =================================================================== --- trunk/worlds/winterland/bobs/duck/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/winterland/bobs/duck/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -5,8 +5,7 @@ [idle] pics=duck_??.png -sfx_frame=0 -sfx_name=../../../../sound/animals/duck +sfx=0 ../../../../sound/animals/duck hotspot=5 10 [walk] Modified: trunk/worlds/winterland/bobs/sheep/conf =================================================================== --- trunk/worlds/winterland/bobs/sheep/conf 2008-10-19 08:10:18 UTC (rev 3415) +++ trunk/worlds/winterland/bobs/sheep/conf 2008-10-19 09:29:32 UTC (rev 3416) @@ -10,8 +10,7 @@ [idle] pics=sheep_??.png -sfx_frame=0 -sfx_name=../../../../sound/farm/sheep +sfx=0 ../../../../sound/farm/sheep hotspot=15 25 fps=20 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nas...@us...> - 2008-10-19 11:50:44
|
Revision: 3419 http://widelands.svn.sourceforge.net/widelands/?rev=3419&view=rev Author: nasenbaer_peter Date: 2008-10-19 11:50:33 +0000 (Sun, 19 Oct 2008) Log Message: ----------- * Some improvements on winterland and blackland loadingscreens * Hammering sounds for the builder Modified Paths: -------------- trunk/tribes/atlantids/workers/builder/conf trunk/tribes/barbarians/workers/builder/conf trunk/tribes/empire/workers/builder/conf trunk/worlds/blackland/pics/loading_00.jpg trunk/worlds/winterland/pics/loading_00.jpg Modified: trunk/tribes/atlantids/workers/builder/conf =================================================================== --- trunk/tribes/atlantids/workers/builder/conf 2008-10-19 11:10:25 UTC (rev 3418) +++ trunk/tribes/atlantids/workers/builder/conf 2008-10-19 11:50:33 UTC (rev 3419) @@ -2,7 +2,8 @@ descname=_Builder help=Works at construction sites to create a new building. type=generic -menu_pic=menu.png +soundfx=../../../../sound/hammering/hammering +menu_pic=builder_menu.png [buildcost] hammer=1 @@ -10,33 +11,13 @@ [idle] pics=idle_??.png +sfx=0 ../../../../sound/hammering/hammering hotspot=5 13 -[walk_e] -pics=walk_e_??.png +[walk] +dirpics=walk_!!_??.png hotspot=5 13 -[walk_w] -pics=walk_w_??.png -hotspot=5 13 - -[walk_se] -pics=walk_se_??.png -hotspot=5 13 - -[walk_sw] -pics=walk_sw_??.png -hotspot=5 13 - -[walk_nw] -pics=walk_nw_??.png -hotspot=5 13 - -[walk_ne] -pics=walk_ne_??.png -hotspot=5 13 - -# Walking with a ware, not needed for builder [walkload] -pics=walk_ne_00.png +dirpics=walk_!!_??.png hotspot=5 13 Modified: trunk/tribes/barbarians/workers/builder/conf =================================================================== --- trunk/tribes/barbarians/workers/builder/conf 2008-10-19 11:10:25 UTC (rev 3418) +++ trunk/tribes/barbarians/workers/builder/conf 2008-10-19 11:50:33 UTC (rev 3419) @@ -2,6 +2,7 @@ descname=_Builder help=Works at construction sites to create a new building. type=generic +soundfx=../../../../sound/hammering/hammering menu_pic=builder_menu.png [buildcost] @@ -10,32 +11,13 @@ [idle] pics=idle_??.png +sfx=0 ../../../../sound/hammering/hammering hotspot=5 13 -[walk_e] -pics=walk_e_??.png +[walk] +dirpics=walk_!!_??.png hotspot=5 13 -[walk_w] -pics=walk_w_??.png -hotspot=5 13 - -[walk_se] -pics=walk_se_??.png -hotspot=5 13 - -[walk_sw] -pics=walk_sw_??.png -hotspot=5 13 - -[walk_nw] -pics=walk_nw_??.png -hotspot=5 13 - -[walk_ne] -pics=walk_ne_??.png -hotspot=5 13 - [walkload] -pics=walk_ne_00.png +dirpics=walk_!!_??.png hotspot=5 13 Modified: trunk/tribes/empire/workers/builder/conf =================================================================== --- trunk/tribes/empire/workers/builder/conf 2008-10-19 11:10:25 UTC (rev 3418) +++ trunk/tribes/empire/workers/builder/conf 2008-10-19 11:50:33 UTC (rev 3419) @@ -2,6 +2,7 @@ descname=_Builder help=Works at construction sites to create a new building. type=generic +soundfx=../../../../sound/hammering/hammering menu_pic=builder_menu.png [buildcost] @@ -10,33 +11,13 @@ [idle] pics=idle_??.png +sfx=0 ../../../../sound/hammering/hammering hotspot=5 13 -[walk_e] -pics=walk_e_??.png +[walk] +dirpics=walk_!!_??.png hotspot=5 13 -[walk_w] -pics=walk_w_??.png -hotspot=5 13 - -[walk_se] -pics=walk_se_??.png -hotspot=5 13 - -[walk_sw] -pics=walk_sw_??.png -hotspot=5 13 - -[walk_nw] -pics=walk_nw_??.png -hotspot=5 13 - -[walk_ne] -pics=walk_ne_??.png -hotspot=5 13 - -# Walking with a ware, not needed for builder [walkload] -pics=walk_ne_00.png +dirpics=walk_!!_??.png hotspot=5 13 Modified: trunk/worlds/blackland/pics/loading_00.jpg =================================================================== (Binary files differ) Modified: trunk/worlds/winterland/pics/loading_00.jpg =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |