00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <XML/XMLFile.h>
00022 #include <common/Defines.h>
00023 #include <tankai/TankAINames.h>
00024 #include <stdlib.h>
00025
00026 TankAINames::TankAINames()
00027 {
00028
00029 }
00030
00031 TankAINames::~TankAINames()
00032 {
00033
00034 }
00035
00036 bool TankAINames::loadAIs()
00037 {
00038
00039 XMLFile file;
00040 if (!file.readFile(S3D::getDataFile("data/tankais.xml")))
00041 {
00042 S3D::dialogMessage("TankAIStore",
00043 S3D::formatStringBuffer("Failed to parse \"%s\"\n%s",
00044 "data/tankais.xml",
00045 file.getParserError()));
00046 return false;
00047 }
00048
00049
00050 if (!file.getRootNode())
00051 {
00052 S3D::dialogMessage("TankAIStore",
00053 S3D::formatStringBuffer("Failed to find tank ai definition file \"%s\"",
00054 "data/tankais.xml"));
00055 return false;
00056 }
00057
00058
00059 std::list<XMLNode *>::iterator childrenItor;
00060 std::list<XMLNode *> &children = file.getRootNode()->getChildren();
00061 for (childrenItor = children.begin();
00062 childrenItor != children.end();
00063 childrenItor++)
00064 {
00065
00066 XMLNode *currentNode = (*childrenItor);
00067 if (strcmp(currentNode->getName(), "ai"))
00068 {
00069 S3D::dialogMessage("TankAIStore",
00070 "Failed to find ai node");
00071 return false;
00072 }
00073
00074 std::string name;
00075 if (!currentNode->getNamedChild("name", name)) return false;
00076
00077 bool availableForPlayers = true;
00078 currentNode->getNamedChild("availableforplayers", availableForPlayers, false);
00079
00080 if (availableForPlayers)
00081 {
00082 ais_.push_back(name);
00083 }
00084 }
00085
00086 ais_.push_back("Random");
00087 ais_.push_back("Human");
00088
00089 return true;
00090 }