widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #01031
[Merge] lp:~csirkeee/widelands/memory-leaks into lp:widelands
Kiscsirke has proposed merging lp:~csirkeee/widelands/memory-leaks into lp:widelands.
Requested reviews:
Widelands Developers (widelands-dev)
For more details, see:
https://code.launchpad.net/~csirkeee/widelands/memory-leaks/+merge/151372
A few more memory leaks fixed. I think the memory footprint in normal play is starting to look agreeable :)
The biggest change is in the Sound_handler: in the end I didn't make it into a cache, but went with what seemed to be the original intention, that every sound is loaded into memory until the game is closed. That's okay, since the "sound" directory is 2 MB only right now. But at least now the sounds can't be loaded several times. If the the amount of our sounds grow significantly, it might be necessary to change it into a cache. For details of the change, see last revision description.
--
https://code.launchpad.net/~csirkeee/widelands/memory-leaks/+merge/151372
Your team Widelands Developers is requested to review the proposed merge of lp:~csirkeee/widelands/memory-leaks into lp:widelands.
=== modified file 'src/graphic/animation.cc'
--- src/graphic/animation.cc 2013-02-10 16:41:12 +0000
+++ src/graphic/animation.cc 2013-03-02 21:16:23 +0000
@@ -130,6 +130,7 @@
// Read mapping from frame numbers to sound effect names and load effects
while (Section::Value * const v = s.get_next_val("sfx")) {
char * parameters = v->get_string(), * endp;
+ std::string fx_name;
unsigned long long int const value = strtoull(parameters, &endp, 0);
uint32_t const frame_number = value;
try {
@@ -139,7 +140,8 @@
_("frame number"), parameters);
parameters = endp;
force_skip(parameters);
- g_sound_handler.load_fx(directory, parameters);
+ fx_name = std::string(directory) + "/" + std::string(parameters);
+ g_sound_handler.load_fx_if_needed(directory, parameters, fx_name);
std::map<uint32_t, std::string>::const_iterator const it =
ad.sfx_cues.find(frame_number);
if (it != ad.sfx_cues.end())
@@ -150,7 +152,7 @@
} catch (const _wexception & e) {
throw wexception("sfx: %s", e.what());
}
- ad.sfx_cues[frame_number] = parameters;
+ ad.sfx_cues[frame_number] = fx_name;
}
ad.hasplrclrs = s.get_bool("playercolor", false);
=== modified file 'src/graphic/font_handler.cc'
--- src/graphic/font_handler.cc 2013-02-10 16:41:12 +0000
+++ src/graphic/font_handler.cc 2013-03-02 21:16:23 +0000
@@ -66,6 +66,13 @@
const LineCacheEntry & get_line(const TextStyle & style, const std::string & text);
+ ~Data() {
+ while (!linecache.empty()) {
+ delete linecache.back().image;
+ linecache.pop_back();
+ }
+ }
+
private:
void render_line(LineCacheEntry & lce);
};
=== modified file 'src/graphic/graphic.cc'
--- src/graphic/graphic.cc 2013-02-28 15:55:51 +0000
+++ src/graphic/graphic.cc 2013-03-02 21:16:23 +0000
@@ -312,6 +312,8 @@
delete texture;
delete m_rendertarget;
+ flush_animations();
+
#if USE_OPENGL
if (g_opengl)
GLSurfaceTexture::Cleanup();
@@ -511,6 +513,12 @@
png_destroy_write_struct(&png_ptr, &info_ptr);
}
+void Graphic::flush_maptextures()
+{
+ BOOST_FOREACH(Texture* texture, m_maptextures)
+ delete texture;
+ m_maptextures.clear();
+}
/**
* Creates a terrain texture.
=== modified file 'src/graphic/graphic.h'
--- src/graphic/graphic.h 2013-02-10 18:57:34 +0000
+++ src/graphic/graphic.h 2013-03-02 21:16:23 +0000
@@ -110,6 +110,7 @@
void save_png(const Image*, StreamWrite*) const;
+ void flush_maptextures();
uint32_t get_maptexture(const std::string& fnametempl, uint32_t frametime);
void animate_maptextures(uint32_t time);
void reset_texture_animation_reminder();
=== modified file 'src/graphic/surface_cache.cc'
--- src/graphic/surface_cache.cc 2013-02-10 14:37:59 +0000
+++ src/graphic/surface_cache.cc 2013-03-02 21:16:23 +0000
@@ -64,6 +64,9 @@
};
SurfaceCacheImpl::~SurfaceCacheImpl() {
+ for (Container::iterator it = map_.begin(); it != map_.end(); ++it) {
+ delete it->second;
+ }
}
Surface* SurfaceCacheImpl::get(const std::string& hash) {
=== modified file 'src/graphic/texture.cc'
--- src/graphic/texture.cc 2013-02-09 23:18:23 +0000
+++ src/graphic/texture.cc 2013-03-02 21:16:23 +0000
@@ -45,6 +45,7 @@
m_pixels (0),
m_curframe (0),
m_frame_num(0),
+ m_texture_image(NULL),
m_nrframes (0),
m_frametime(frametime),
is_32bit (format.BytesPerPixel == 4),
@@ -75,6 +76,7 @@
SDL_Surface * surf;
+ if (m_texture_image) free(m_texture_image);
m_texture_image = strdup(fname);
FileRead fr;
=== modified file 'src/logic/building.cc'
--- src/logic/building.cc 2013-02-10 19:36:24 +0000
+++ src/logic/building.cc 2013-03-02 21:16:23 +0000
@@ -164,9 +164,6 @@
add_animation("empty", g_anim.get(directory.c_str(), *empty, 0));
}
- while (Section::Value const * const v = global_s.get_next_val("soundfx"))
- g_sound_handler.load_fx(directory, v->get_string());
-
m_vision_range = global_s.get_int("vision_range");
}
=== modified file 'src/logic/immovable.cc'
--- src/logic/immovable.cc 2013-02-10 19:36:24 +0000
+++ src/logic/immovable.cc 2013-03-02 21:16:23 +0000
@@ -136,7 +136,7 @@
else if (not strcmp(v->get_name(), "seed"))
action = new ActSeed (v->get_string(), immovable);
else if (not strcmp(v->get_name(), "playFX"))
- action = new ActPlayFX (v->get_string(), immovable);
+ action = new ActPlayFX (directory, v->get_string(), immovable);
else if (not strcmp(v->get_name(), "construction"))
action = new ActConstruction(v->get_string(), immovable, directory, prof);
else
@@ -849,11 +849,12 @@
ImmovableProgram::ActPlayFX::ActPlayFX
- (char * parameters, const Immovable_Descr &)
+ (const std::string & directory, char * parameters, const Immovable_Descr &)
{
try {
bool reached_end;
- name = match(parameters, reached_end);
+ std::string filename = match(parameters, reached_end);
+ name = directory + "/" + filename;
if (not reached_end) {
char * endp;
@@ -864,6 +865,8 @@
(_("expected %s but found \"%s\""), _("priority"), parameters);
} else
priority = 127;
+
+ g_sound_handler.load_fx_if_needed(directory, filename, name);
} catch (const _wexception & e) {
throw game_data_error("playFX: %s", e.what());
}
=== modified file 'src/logic/immovable_program.h'
--- src/logic/immovable_program.h 2013-02-10 19:36:24 +0000
+++ src/logic/immovable_program.h 2013-03-02 21:16:23 +0000
@@ -129,6 +129,8 @@
/// Parameter syntax:
/// parameters ::= soundFX [priority]
/// Parameter semantics:
+ /// directory:
+ /// The directory of the productionsite.
/// soundFX:
/// The filename of an soundFX (relative to the productionsite's
/// directory).
@@ -138,7 +140,7 @@
/// Plays the specified soundFX with the specified priority. Whether the
/// soundFX is actually played is determined by the sound handler.
struct ActPlayFX : public Action {
- ActPlayFX(char * parameters, const Immovable_Descr &);
+ ActPlayFX(const std::string & directory, char * parameters, const Immovable_Descr &);
virtual void execute(Game &, Immovable &) const;
private:
std::string name;
=== modified file 'src/logic/partially_finished_building.cc'
--- src/logic/partially_finished_building.cc 2013-02-10 18:47:18 +0000
+++ src/logic/partially_finished_building.cc 2013-03-02 21:16:23 +0000
@@ -75,7 +75,7 @@
if (upcast(Game, game, &egbase))
request_builder(*game);
- g_sound_handler.play_fx("create_construction_site", m_position, 255);
+ g_sound_handler.play_fx("sound/create_construction_site", m_position, 255);
}
/*
=== modified file 'src/logic/player.cc'
--- src/logic/player.cc 2013-02-12 10:14:39 +0000
+++ src/logic/player.cc 2013-03-02 21:16:23 +0000
@@ -215,16 +215,16 @@
* enabled.
*/
void Player::play_message_sound(const std::string & sender) {
-#define MAYBE_PLAY(a) if (sender == a) { \
- g_sound_handler.play_fx(a, 200, PRIO_ALWAYS_PLAY); \
+#define MAYBE_PLAY(a, b) if (sender == a) { \
+ g_sound_handler.play_fx(b, 200, PRIO_ALWAYS_PLAY); \
return; \
}
if (g_options.pull_section("global").get_bool("sound_at_message", true)) {
- MAYBE_PLAY("site_occupied");
- MAYBE_PLAY("under_attack");
+ MAYBE_PLAY("site_occupied", "sound/military/site_occupied");
+ MAYBE_PLAY("under_attack", "sound/military/under_attack");
- g_sound_handler.play_fx("message", 200, PRIO_ALWAYS_PLAY);
+ g_sound_handler.play_fx("sound/message", 200, PRIO_ALWAYS_PLAY);
}
}
=== modified file 'src/logic/production_program.cc'
--- src/logic/production_program.cc 2013-03-01 23:12:08 +0000
+++ src/logic/production_program.cc 2013-03-02 21:16:23 +0000
@@ -1411,15 +1411,13 @@
return ps.program_step(game);
}
-
-//TODO: check if fx exists, load fx, lots of other checks for
-//parameter correctness
ProductionProgram::ActPlayFX::ActPlayFX
- (char * parameters, const ProductionSite_Descr &)
+ (const std::string & directory, char * parameters, const ProductionSite_Descr &)
{
try {
bool reached_end;
- name = match(parameters, reached_end);
+ std::string filename = match(parameters, reached_end);
+ name = directory + "/" + filename;
if (not reached_end) {
char * endp;
@@ -1430,6 +1428,8 @@
(_("expected %s but found \"%s\""), _("priority"), parameters);
} else
priority = 127;
+
+ g_sound_handler.load_fx_if_needed(directory, filename, name);
} catch (const _wexception & e) {
throw game_data_error("playFX: %s", e.what());
}
@@ -1627,7 +1627,7 @@
else if (not strcmp(v->get_name(), "train"))
action = new ActTrain (v->get_string(), *building);
else if (not strcmp(v->get_name(), "playFX"))
- action = new ActPlayFX (v->get_string(), *building);
+ action = new ActPlayFX (directory, v->get_string(), *building);
else if (not strcmp(v->get_name(), "construct"))
action = new ActConstruct (v->get_string(), *building, _name);
else if (not strcmp(v->get_name(), "check_map"))
=== modified file 'src/logic/production_program.h'
--- src/logic/production_program.h 2013-02-10 19:36:24 +0000
+++ src/logic/production_program.h 2013-03-02 21:16:23 +0000
@@ -535,6 +535,8 @@
/// Parameter syntax:
/// parameters ::= soundFX [priority]
/// Parameter semantics:
+ /// directory:
+ /// The directory of the productionsite.
/// soundFX:
/// The filename of an soundFX (relative to the productionsite's
/// directory).
@@ -544,7 +546,7 @@
/// Plays the specified soundFX with the specified priority. Whether the
/// soundFX is actually played is determined by the sound handler.
struct ActPlayFX : public Action {
- ActPlayFX(char * parameters, const ProductionSite_Descr &);
+ ActPlayFX(const std::string & directory, char * parameters, const ProductionSite_Descr &);
virtual void execute(Game &, ProductionSite &) const;
#ifdef WRITE_GAME_DATA_AS_HTML
virtual void writeHTML
=== modified file 'src/logic/worker_descr.cc'
--- src/logic/worker_descr.cc 2013-02-10 19:36:24 +0000
+++ src/logic/worker_descr.cc 2013-03-02 21:16:23 +0000
@@ -101,9 +101,6 @@
"walkload_??",
prof.get_section("walkload"));
- while (Section::Value const * const v = global_s.get_next_val("soundfx"))
- g_sound_handler.load_fx(directory, v->get_string());
-
// Read the becomes and experience
if (char const * const becomes_name = global_s.get_string("becomes")) {
m_becomes = tribe().safe_worker_index(becomes_name);
=== modified file 'src/logic/worker_program.cc'
--- src/logic/worker_program.cc 2013-02-10 19:36:24 +0000
+++ src/logic/worker_program.cc 2013-03-02 21:16:23 +0000
@@ -19,10 +19,11 @@
#include "worker_program.h"
-#include "profile/profile.h"
#include "findnode.h"
#include "game_data_error.h"
#include "helper.h"
+#include "profile/profile.h"
+#include "sound/sound_handler.h"
#include "tribe.h"
namespace Widelands {
@@ -639,13 +640,16 @@
void WorkerProgram::parse_playFX
(Worker_Descr *,
Worker::Action * act,
- Parser *,
+ Parser * parser,
const std::vector<std::string> & cmd)
{
if (cmd.size() < 2 || cmd.size() > 3)
throw wexception("Usage: playFX <fx_name> [priority]");
- act->sparam1 = cmd[1];
+ act->sparam1 = parser->directory + "/" + cmd[1];
+
+ g_sound_handler.load_fx_if_needed(parser->directory, cmd[1], act->sparam1);
+
act->function = &Worker::run_playFX;
act->iparam1 =
cmd.size() == 2 ?
=== modified file 'src/logic/world.cc'
--- src/logic/world.cc 2013-03-01 23:12:08 +0000
+++ src/logic/world.cc 2013-03-02 21:16:23 +0000
@@ -567,6 +567,8 @@
{
int32_t i;
+ g_gr->flush_maptextures();
+
// Load terrain graphics
for (i = 0; i < ters.get_nitems(); ++i)
ters.get(i)->load_graphics();
=== modified file 'src/sound/sound_handler.cc'
--- src/sound/sound_handler.cc 2013-02-16 01:05:43 +0000
+++ src/sound/sound_handler.cc 2013-03-02 21:16:23 +0000
@@ -210,17 +210,17 @@
*/
void Sound_Handler::load_system_sounds()
{
- load_fx("sound", "click");
- load_fx("sound", "create_construction_site");
- load_fx("sound", "message");
- load_fx("sound/military", "under_attack");
- load_fx("sound/military", "site_occupied");
+ load_fx_if_needed("sound", "click", "sound/click");
+ load_fx_if_needed("sound", "create_construction_site", "sound/create_construction_site");
+ load_fx_if_needed("sound", "message", "sound/message");
+ load_fx_if_needed("sound/military", "under_attack", "sound/military/under_attack");
+ load_fx_if_needed("sound/military", "site_occupied", "sound/military/site_occupied");
}
/** Load a sound effect. One sound effect can consist of several audio files
* named EFFECT_XX.ogg, where XX is between 00 and 99. If
* BASENAME_XX (without extension) is a directory, effects will be loaded
- * recursively.
+ * recursively. If it is already loaded, the function does nothing.
*
* Subdirectories of and files under BASENAME_XX can be named anything you want.
*
@@ -235,34 +235,48 @@
* \internal
* \param recursive Whether to recurse into subdirectories
*/
-void Sound_Handler::load_fx
- (const std::string & dir, const std::string & fxname, bool const recursive)
+void Sound_Handler::load_fx_if_needed
+ (const std::string & dir,
+ const std::string & filename,
+ const std::string & fx_name,
+ bool recursive)
{
filenameset_t dirs, files;
filenameset_t::const_iterator i;
assert(g_fs);
- if (m_nosound)
+ if (m_nosound || m_fxs.count(fx_name) > 0)
return;
- g_fs->FindFiles(dir, fxname + "_??.ogg." + i18n::get_locale(), &files);
- if (files.empty())
- g_fs->FindFiles(dir, fxname + "_??.ogg", &files);
-
- for (i = files.begin(); i != files.end(); ++i) {
- assert(!g_fs->IsDirectory(*i));
- load_one_fx(i->c_str(), fxname);
- }
-
- if (recursive) {
- g_fs->FindFiles(dir, "*_??." + i18n::get_locale(), &dirs);
- if (dirs.empty())
- g_fs->FindFiles(dir, "*_??", &dirs);
-
- for (i = dirs.begin(); i != dirs.end(); ++i) {
- assert(g_fs->IsDirectory(*i));
- load_fx(*i, fxname, true);
+ m_fxs[fx_name] = new FXset();
+
+ // List for recursion.
+ std::list<std::string> dirs_left;
+ dirs_left.push_back(dir);
+
+ while (!dirs_left.empty()) {
+ std::string current_dir = dirs_left.front();
+ dirs_left.pop_front();
+
+ g_fs->FindFiles(current_dir, filename + "_??.ogg." + i18n::get_locale(), &files);
+ if (files.empty())
+ g_fs->FindFiles(current_dir, filename + "_??.ogg", &files);
+
+ for (i = files.begin(); i != files.end(); ++i) {
+ assert(!g_fs->IsDirectory(*i));
+ load_one_fx(i->c_str(), fx_name);
+ }
+
+ if (recursive) {
+ g_fs->FindFiles(current_dir, "*_??." + i18n::get_locale(), &dirs);
+ if (dirs.empty())
+ g_fs->FindFiles(current_dir, "*_??", &dirs);
+
+ for (i = dirs.begin(); i != dirs.end(); ++i) {
+ assert(g_fs->IsDirectory(*i));
+ dirs_left.push_back(*i);
+ }
}
}
}
@@ -276,15 +290,15 @@
* until the game is finished.
*/
void Sound_Handler::load_one_fx
- (char const * const filename, const std::string & fx_name)
+ (char const * const path, const std::string & fx_name)
{
FileRead fr;
if (m_nosound)
return;
- if (not fr.TryOpen(*g_fs, filename)) {
- log("WARNING: Could not open %s for reading!\n", filename);
+ if (not fr.TryOpen(*g_fs, path)) {
+ log("WARNING: Could not open %s for reading!\n", path);
return;
}
@@ -294,15 +308,14 @@
{
//make sure that requested FXset exists
- if (m_fxs.count(fx_name) == 0)
- m_fxs[fx_name] = new FXset();
+ assert(m_fxs.count(fx_name) > 0);
m_fxs[fx_name]->add_fx(m);
} else
log
("Sound_Handler: loading sound effect \"%s\" for FXset \"%s\" "
"failed: %s\n",
- filename, fx_name.c_str(), Mix_GetError());
+ path, fx_name.c_str(), Mix_GetError());
}
/** Calculate the position of an effect in relation to the visible part of the
=== modified file 'src/sound/sound_handler.h'
--- src/sound/sound_handler.h 2013-02-10 19:36:24 +0000
+++ src/sound/sound_handler.h 2013-03-02 21:16:23 +0000
@@ -176,9 +176,10 @@
void read_config();
void load_system_sounds();
- void load_fx
+ void load_fx_if_needed
(const std::string & dir,
- const std::string & basename,
+ const std::string & filename,
+ const std::string & fx_name,
bool recursive = false);
void play_fx
(const std::string & fx_name,
=== modified file 'src/ui_basic/panel.cc'
--- src/ui_basic/panel.cc 2013-02-10 20:07:27 +0000
+++ src/ui_basic/panel.cc 2013-03-02 21:16:23 +0000
@@ -768,7 +768,7 @@
*/
void Panel::play_click()
{
- g_sound_handler.play_fx("click", 128, PRIO_ALWAYS_PLAY);
+ g_sound_handler.play_fx("sound/click", 128, PRIO_ALWAYS_PLAY);
}
/**
=== modified file 'tribes/atlanteans/builder/conf'
--- tribes/atlanteans/builder/conf 2010-09-21 18:46:41 +0000
+++ tribes/atlanteans/builder/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,4 @@
help=_Works at construction sites to create a new building.
-soundfx=../../../sound/hammering/hammering
[buildcost]
hammer=1
=== modified file 'tribes/atlanteans/farm/conf'
--- tribes/atlanteans/farm/conf 2011-09-12 17:29:32 +0000
+++ tribes/atlanteans/farm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/farm_animal
size=big
output=corn
=== modified file 'tribes/atlanteans/farmer/conf'
--- tribes/atlanteans/farmer/conf 2010-08-01 14:35:38 +0000
+++ tribes/atlanteans/farmer/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/scythe
help=_Plants fields.
program=plant
program=harvest
=== modified file 'tribes/atlanteans/fisher/conf'
--- tribes/atlanteans/fisher/conf 2010-08-01 14:35:38 +0000
+++ tribes/atlanteans/fisher/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,5 @@
help=_The fisher fishes delicious fish.
program=fish
-soundfx=../../../sound/fisher/fisher_throw_net
-soundfx=../../../sound/fisher/fisher_pull_net
[buildcost]
carrier=1
=== modified file 'tribes/atlanteans/geologist/conf'
--- tribes/atlanteans/geologist/conf 2010-08-01 14:35:38 +0000
+++ tribes/atlanteans/geologist/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,6 @@
help=_Discovers resources for mining.
program=expedition
program=search
-soundfx=../../../sound/hammering/geologist_hammer
[buildcost]
carrier=1
=== modified file 'tribes/atlanteans/headquarters/conf'
--- tribes/atlanteans/headquarters/conf 2012-03-14 21:36:03 +0000
+++ tribes/atlanteans/headquarters/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-# soundfx=../../../sound/spoken/warehouse-bringitin
size=big
buildable=no
destructible=no
=== modified file 'tribes/atlanteans/horsefarm/conf'
--- tribes/atlanteans/horsefarm/conf 2012-03-15 14:56:28 +0000
+++ tribes/atlanteans/horsefarm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/horse
size=big
output=horse
=== modified file 'tribes/atlanteans/sawmill/conf'
--- tribes/atlanteans/sawmill/conf 2010-08-01 14:35:38 +0000
+++ tribes/atlanteans/sawmill/conf 2013-03-02 21:16:23 +0000
@@ -1,6 +1,5 @@
size=medium
output=planks
-soundfx=../../../sound/sawmill/sawmill
[aihints]
is_basic=true
=== modified file 'tribes/atlanteans/shipwright/conf'
--- tribes/atlanteans/shipwright/conf 2010-11-14 23:43:48 +0000
+++ tribes/atlanteans/shipwright/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,4 @@
help=_Works at the shipyard and constructs new ships.
-soundfx=../../../sound/hammering/hammering
program=buildship
[buildcost]
=== modified file 'tribes/atlanteans/stonecutter/conf'
--- tribes/atlanteans/stonecutter/conf 2010-08-01 14:35:38 +0000
+++ tribes/atlanteans/stonecutter/conf 2013-03-02 21:16:23 +0000
@@ -1,6 +1,5 @@
help=_Cuts raw pieces of granite out of laying stones.
program=cut_stone
-soundfx=../../../sound/stonecutting/stonecutter
[buildcost]
pick=1
=== modified file 'tribes/atlanteans/weaponsmithy/conf'
--- tribes/atlanteans/weaponsmithy/conf 2011-09-12 17:29:32 +0000
+++ tribes/atlanteans/weaponsmithy/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,3 @@
-soundfx=../../../sound/smiths/smith
-soundfx=../../../sound/smiths/sharpening
size=medium
output=light_trident
output=long_trident
=== modified file 'tribes/atlanteans/woodcutter/conf'
--- tribes/atlanteans/woodcutter/conf 2010-08-01 14:35:38 +0000
+++ tribes/atlanteans/woodcutter/conf 2013-03-02 21:16:23 +0000
@@ -1,6 +1,5 @@
help=_Fells trees.
program=harvest
-soundfx=../../../sound/sawmill/sawmill
[buildcost]
carrier=1
=== modified file 'tribes/barbarians/axefactory/conf'
--- tribes/barbarians/axefactory/conf 2011-10-17 23:47:47 +0000
+++ tribes/barbarians/axefactory/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,3 @@
-soundfx=../../../sound/smiths/smith
-soundfx=../../../sound/smiths/sharpening
size=medium
buildable=no
output=axe
=== modified file 'tribes/barbarians/builder/conf'
--- tribes/barbarians/builder/conf 2010-09-21 18:46:41 +0000
+++ tribes/barbarians/builder/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,4 @@
help=_Works at construction sites to raise a new building.
-soundfx=../../../sound/hammering/hammering
[buildcost]
hammer=1
=== modified file 'tribes/barbarians/cattlefarm/conf'
--- tribes/barbarians/cattlefarm/conf 2010-08-01 14:35:38 +0000
+++ tribes/barbarians/cattlefarm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/ox
size=big
output=ox
=== modified file 'tribes/barbarians/farm/conf'
--- tribes/barbarians/farm/conf 2010-11-09 14:19:14 +0000
+++ tribes/barbarians/farm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/farm_animal
size=big
output=wheat
=== modified file 'tribes/barbarians/farmer/conf'
--- tribes/barbarians/farmer/conf 2010-11-09 14:19:14 +0000
+++ tribes/barbarians/farmer/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/scythe
help=_Plants fields.
program=plant
program=harvest
=== modified file 'tribes/barbarians/fisher/conf'
--- tribes/barbarians/fisher/conf 2010-08-01 14:35:38 +0000
+++ tribes/barbarians/fisher/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,5 @@
help=_Gets fish out of the sea.
program=fish
-soundfx=../../../sound/fisher/fisher_throw_net
-soundfx=../../../sound/fisher/fisher_pull_net
[buildcost]
carrier=1
=== modified file 'tribes/barbarians/geologist/conf'
--- tribes/barbarians/geologist/conf 2010-08-01 14:35:38 +0000
+++ tribes/barbarians/geologist/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,6 @@
help=_Discovers resources for mining.
program=expedition
program=search
-soundfx=../../../sound/hammering/geologist_hammer
[buildcost]
carrier=1
=== modified file 'tribes/barbarians/headquarters/conf'
--- tribes/barbarians/headquarters/conf 2012-03-14 21:36:03 +0000
+++ tribes/barbarians/headquarters/conf 2013-03-02 21:16:23 +0000
@@ -2,7 +2,6 @@
# Building, fortified base and some towers made of black wood. Some flags
# in the player colors may be present
-# soundfx=../../../sound/spoken/warehouse-bringitin
size=big
buildable=no
destructible=no
=== modified file 'tribes/barbarians/lumberjack/conf'
--- tribes/barbarians/lumberjack/conf 2010-10-28 11:00:06 +0000
+++ tribes/barbarians/lumberjack/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,5 @@
help=_Fells trees.
program=chop
-soundfx=../../../sound/spoken/timber
-soundfx=../../../sound/woodcutting/woodcutting
[buildcost]
carrier=1
=== modified file 'tribes/barbarians/metalworks/conf'
--- tribes/barbarians/metalworks/conf 2012-02-15 21:25:34 +0000
+++ tribes/barbarians/metalworks/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/smiths/toolsmith
size=medium
output=felling_axe
output=bakingtray
=== modified file 'tribes/barbarians/shipwright/conf'
--- tribes/barbarians/shipwright/conf 2012-03-20 02:32:04 +0000
+++ tribes/barbarians/shipwright/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,4 @@
help=_Works at the shipyard and constructs new ships.
-soundfx=../../../sound/hammering/hammering
program=buildship
[buildcost]
=== modified file 'tribes/barbarians/stonemason/conf'
--- tribes/barbarians/stonemason/conf 2010-12-07 14:19:42 +0000
+++ tribes/barbarians/stonemason/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/stonecutting/stonecutter
help=_Cuts raw pieces of granite out of laying stones.
program=cut
=== modified file 'tribes/barbarians/warmill/conf'
--- tribes/barbarians/warmill/conf 2011-10-17 23:47:47 +0000
+++ tribes/barbarians/warmill/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,3 @@
-soundfx=../../../sound/smiths/smith
-soundfx=../../../sound/smiths/sharpening
size=medium
buildable=no
output=axe
=== modified file 'tribes/empire/builder/conf'
--- tribes/empire/builder/conf 2010-09-21 18:46:41 +0000
+++ tribes/empire/builder/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,4 @@
help=_Works at construction sites to create a new building.
-soundfx=../../../sound/hammering/hammering
[buildcost]
hammer=1
=== modified file 'tribes/empire/donkeyfarm/conf'
--- tribes/empire/donkeyfarm/conf 2010-03-28 08:46:10 +0000
+++ tribes/empire/donkeyfarm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/donkey
size=big
output=donkey
=== modified file 'tribes/empire/farm/conf'
--- tribes/empire/farm/conf 2010-08-01 14:35:38 +0000
+++ tribes/empire/farm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/farm_animal
size=big
output=wheat
=== modified file 'tribes/empire/farmer/conf'
--- tribes/empire/farmer/conf 2010-08-01 14:35:38 +0000
+++ tribes/empire/farmer/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/scythe
help=_Plants fields.
program=plant
program=harvest
=== modified file 'tribes/empire/fisher/conf'
--- tribes/empire/fisher/conf 2011-10-03 15:51:56 +0000
+++ tribes/empire/fisher/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,5 @@
help=_Gets fish out of the sea.
program=fish
-soundfx=../../../sound/fisher/fisher_throw_net
-soundfx=../../../sound/fisher/fisher_pull_net
[buildcost]
carrier=1
=== modified file 'tribes/empire/geologist/conf'
--- tribes/empire/geologist/conf 2010-08-01 14:35:38 +0000
+++ tribes/empire/geologist/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,6 @@
help=_Discovers resources for mining.
program=expedition
program=search
-soundfx=../../../sound/hammering/geologist_hammer
[buildcost]
carrier=1
=== modified file 'tribes/empire/headquarters/conf'
--- tribes/empire/headquarters/conf 2012-03-14 21:36:03 +0000
+++ tribes/empire/headquarters/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-# soundfx=../../../sound/spoken/warehouse-bringitin
size=big
buildable=no
destructible=no
=== modified file 'tribes/empire/headquarters_shipwreck/conf'
--- tribes/empire/headquarters_shipwreck/conf 2012-03-14 21:36:03 +0000
+++ tribes/empire/headquarters_shipwreck/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-# soundfx=../../../sound/spoken/warehouse-bringitin
size=big
buildable=no
destructible=no
=== modified file 'tribes/empire/lumberjack/conf'
--- tribes/empire/lumberjack/conf 2011-10-03 15:51:56 +0000
+++ tribes/empire/lumberjack/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,5 @@
help=_Fells trees.
program=chop
-soundfx=../../../sound/spoken/timber
-soundfx=../../../sound/woodcutting/fast_woodcutting
[buildcost]
carrier=1
=== modified file 'tribes/empire/mill/conf'
--- tribes/empire/mill/conf 2011-10-19 16:46:38 +0000
+++ tribes/empire/mill/conf 2013-03-02 21:16:23 +0000
@@ -1,6 +1,5 @@
size=medium
output=flour
-soundfx=../../../sound/mill/mill_turning
[buildcost]
trunk=3
=== modified file 'tribes/empire/piggery/conf'
--- tribes/empire/piggery/conf 2010-08-01 14:35:38 +0000
+++ tribes/empire/piggery/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/farm_animal
size=big
output=meat
=== modified file 'tribes/empire/sawmill/conf'
--- tribes/empire/sawmill/conf 2010-11-07 13:46:47 +0000
+++ tribes/empire/sawmill/conf 2013-03-02 21:16:23 +0000
@@ -1,6 +1,5 @@
size=medium
output=wood
-soundfx=../../../sound/sawmill/sawmill
[aihints]
is_basic=true
=== modified file 'tribes/empire/sheepfarm/conf'
--- tribes/empire/sheepfarm/conf 2011-09-12 17:29:32 +0000
+++ tribes/empire/sheepfarm/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/farm/sheep
size=big
output=wool
=== modified file 'tribes/empire/shipwright/conf'
--- tribes/empire/shipwright/conf 2012-03-20 02:32:04 +0000
+++ tribes/empire/shipwright/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,4 @@
help=_Works at the shipyard and constructs new ships.
-soundfx=../../../sound/hammering/hammering
program=buildship
[buildcost]
=== modified file 'tribes/empire/stonemason/conf'
--- tribes/empire/stonemason/conf 2011-10-03 15:51:56 +0000
+++ tribes/empire/stonemason/conf 2013-03-02 21:16:23 +0000
@@ -1,7 +1,6 @@
help=_Cuts raw pieces of granite and marble out of laying stones.
program=cut_stone
program=cut_marble
-soundfx=../../../sound/stonecutting/stonecutter
[buildcost]
pick=1
=== modified file 'tribes/empire/stonemasons_house/conf'
--- tribes/empire/stonemasons_house/conf 2011-09-12 17:29:32 +0000
+++ tribes/empire/stonemasons_house/conf 2013-03-02 21:16:23 +0000
@@ -1,6 +1,5 @@
size=medium
output=marblecolumn
-soundfx=../../../sound/stonecutting/stonemason
[aihints]
is_basic=true
=== modified file 'tribes/empire/toolsmithy/conf'
--- tribes/empire/toolsmithy/conf 2012-02-15 21:25:34 +0000
+++ tribes/empire/toolsmithy/conf 2013-03-02 21:16:23 +0000
@@ -1,4 +1,3 @@
-soundfx=../../../sound/smiths/toolsmith
size=medium
output=axe
output=bakingtray
=== modified file 'tribes/empire/weaponsmithy/conf'
--- tribes/empire/weaponsmithy/conf 2011-10-03 15:51:56 +0000
+++ tribes/empire/weaponsmithy/conf 2013-03-02 21:16:23 +0000
@@ -1,5 +1,3 @@
-soundfx=../../../sound/smiths/smith
-soundfx=../../../sound/smiths/sharpening
size=big
output=wood_lance
output=lance
Follow ups