void Entity::loadSoundsFromStatBlock(StatBlock *src_stats) { unloadSounds(); if (!src_stats) src_stats = &stats; for (size_t i = 0; i < src_stats->sfx_attack.size(); ++i) { std::string anim_name = src_stats->sfx_attack[i].first; sound_attack.push_back(std::pair<std::string, std::vector<SoundID> >()); sound_attack.back().first = anim_name; for (size_t j = 0; j < src_stats->sfx_attack[i].second.size(); ++j) { SoundID sid = snd->load(src_stats->sfx_attack[i].second[j], "Entity attack"); sound_attack.back().second.push_back(sid); } } for (size_t i = 0; i < src_stats->sfx_hit.size(); ++i) { sound_hit.push_back(snd->load(src_stats->sfx_hit[i], "Entity was hit")); } for (size_t i = 0; i < src_stats->sfx_die.size(); ++i) { sound_die.push_back(snd->load(src_stats->sfx_die[i], "Entity died")); } for (size_t i = 0; i < src_stats->sfx_critdie.size(); ++i) { sound_critdie.push_back(snd->load(src_stats->sfx_critdie[i], "Entity died from critical hit")); } for (size_t i = 0; i < src_stats->sfx_block.size(); ++i) { sound_block.push_back(snd->load(src_stats->sfx_block[i], "Entity blocked")); } if (src_stats->sfx_levelup != "") sound_levelup = snd->load(src_stats->sfx_levelup, "Entity leveled up"); if (src_stats->sfx_lowhp != "") sound_lowhp = snd->load(src_stats->sfx_lowhp, "Entity has low hp"); }
Avatar::~Avatar() { if (SHOW_TARGET) { anim->decreaseCount("animations/target.txt"); delete target_anim; } if (stats.transformed && charmed_stats && charmed_stats->animations != "") { anim->decreaseCount(charmed_stats->animations); } else { anim->decreaseCount("animations/hero.txt"); } for (unsigned int i=0; i<animsets.size(); i++) { if (animsets[i]) anim->decreaseCount(animsets[i]->getName()); delete anims[i]; } anim->cleanUp(); delete charmed_stats; delete hero_stats; unloadSounds(); for (unsigned i=0; i<sound_steps.size(); i++) snd->unload(sound_steps[i]); delete haz; }
Sounds::~Sounds() { unloadSounds(); }