git-svn-id: https://scorched3d.svn.sourceforge.net/svnroot/scorched3d/trunk/scorched...
[scorched3d/parasti.git] / src / common / landscapedef / LandscapeMusic.cpp
blob1d629a9ba7f2edb4d50d0640e12f6157eaf839fb
1 ////////////////////////////////////////////////////////////////////////////////
2 // Scorched3D (c) 2000-2009
3 //
4 // This file is part of Scorched3D.
5 //
6 // Scorched3D is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
11 // Scorched3D is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with Scorched3D; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 ////////////////////////////////////////////////////////////////////////////////
21 #include <landscapedef/LandscapeMusic.h>
22 #include <math.h>
24 LandscapeMusicType::LandscapeMusicType()
28 LandscapeMusicType::~LandscapeMusicType()
32 bool LandscapeMusicType::readXML(XMLNode *node)
34 // Playstate
35 std::string state;
36 while (node->getNamedChild("playstate", state, false))
38 PlayState playstate;
39 if (0 == strcmp(state.c_str(), "loading")) playstate = StateLoading;
40 else if (0 == strcmp(state.c_str(), "buying")) playstate = StateBuying;
41 else if (0 == strcmp(state.c_str(), "playing")) playstate = StatePlaying;
42 else if (0 == strcmp(state.c_str(), "shot")) playstate = StateShot;
43 else if (0 == strcmp(state.c_str(), "score")) playstate = StateScore;
44 else if (0 == strcmp(state.c_str(), "wait")) playstate = StateWait;
45 else return node->returnError("Unknown playstate type");
46 playstates.push_back(playstate);
48 if (playstates.empty()) return node->returnError("No playstats defined");
50 // Sound file
51 if (!node->getNamedChild("file", file)) return false;
52 if (!S3D::checkDataFile(file.c_str())) return false;
54 // Gain (volume)
55 if (!node->getNamedChild("gain", gain)) return false;
56 return node->failChildren();