Example #1
0
void Music::getSongNames(Common::StringArray &songs) {
	songs.clear();
	if (IS_SERRATED_SCALPEL) {
		if (IS_3DO) {
			Common::FSDirectory gameDirectory(ConfMan.get("path"));
			Common::FSDirectory *musicDirectory = gameDirectory.getSubDirectory("music");
			Common::ArchiveMemberList files;

			musicDirectory->listMatchingMembers(files, "*_mw22.aifc");

			for (Common::ArchiveMemberList::iterator i = files.begin(); i != files.end(); ++i) {
				Common::String name = (*i)->getName();
				name.erase(name.size() - 10);
				songs.push_back(name);
			}
		} else {
			for (int i = 0; i < ARRAYSIZE(SONG_NAMES); i++) {
				songs.push_back(SONG_NAMES[i]);
			}
		}
	} else {
		Common::StringArray fileList;
		_vm->_res->getResourceNames("music.lib", fileList);
		for (Common::StringArray::iterator i = fileList.begin(); i != fileList.end(); ++i) {
			if ((*i).matchString("*.XMI", true)) {
				(*i).erase((*i).size() - 4);
				songs.push_back(*i);
			}
		}
	}
	Common::sort(songs.begin(), songs.end());
}
Example #2
0
void EntityClassQuake3_Construct()
{
  StringOutputStream baseDirectory(256);
  StringOutputStream gameDirectory(256);
  const char* basegame = GlobalRadiant().getRequiredGameDescriptionKeyValue("basegame");
  const char* gamename = GlobalRadiant().getGameName();
  baseDirectory << GlobalRadiant().getGameToolsPath() << basegame << '/';
  gameDirectory << GlobalRadiant().getGameToolsPath() << gamename << '/';

  class LoadEntityDefinitionsVisitor : public EClassModules::Visitor
  {
    const char* baseDirectory;
    const char* gameDirectory;
  public:
    LoadEntityDefinitionsVisitor(const char* baseDirectory, const char* gameDirectory)
      : baseDirectory(baseDirectory), gameDirectory(gameDirectory)
    {
    }
    void visit(const char* name, const EntityClassScanner& table) const
    {
      Paths paths;
      EntityClassQuake3_constructDirectory(baseDirectory, table.getExtension(), paths);
      if(!string_equal(baseDirectory, gameDirectory))
      {
        EntityClassQuake3_constructDirectory(gameDirectory, table.getExtension(), paths);
      }

      for(Paths::iterator i = paths.begin(); i != paths.end(); ++i)
      {
        EntityClassesLoadFile(table, (*i).second)((*i).first.c_str());
      }
    }
  };

  EntityClassManager_getEClassModules().foreachModule(LoadEntityDefinitionsVisitor(baseDirectory.c_str(), gameDirectory.c_str()));
}