00001
00002
00009
00010
#ifndef XML_NIVEAU_H
00011
#define XML_NIVEAU_H
00012
00013
#include "../lib/libxml2/include/tree.h"
00014
#include "../lib/libxml2/include/xmlmemory.h"
00015
#include "../lib/libxml2/include/parser.h"
00016
00017
#include "type_arme.h"
00018
#include "type_bonus_arme.h"
00019
#include "type_bonus_bouclier.h"
00020
#include "type_ennemi.h"
00021
00022
#include <string>
00023
#include <map>
00024
#include <vector>
00025
00026 #define FICHIER_XML_NIVEAU "./data/niveau.xml"
00027
00029 typedef struct
00030
{
00031 float m_fBonusArmeFrequence;
00032 std::vector<CTypeBonusArme*> m_TypeBonusArme;
00033
00034 float m_fBonusBouclierFrequence;
00035 std::vector<CTypeBonusBouclier*> m_TypeBonusBouclier;
00036
00037 unsigned int m_uiEnnemiNombre;
00038 float m_fEnnemiFrequence;
00039 std::vector<CTypeEnnemi*> m_TypeEnnemi;
00040 }
SNiveau;
00041
00043 class CXMLNiveau
00044 {
00045
private:
00046 std::vector<SNiveau> m_Niveaux;
00047
00049 std::map<unsigned int, CTypeBonusArme*> m_TypeBonusArme;
00051 std::map<unsigned int, CTypeBonusBouclier*> m_TypeBonusBouclier;
00053 std::map<unsigned int, CTypeEnnemi*> m_TypeEnnemi;
00054
00056
CTypeBonusArme* GetTypeBonusArmeParIndex (
unsigned int uiIndex)
const;
00058
CTypeBonusBouclier* GetTypeBonusBouclierParIndex (
unsigned int uiIndex)
const;
00060
CTypeEnnemi* GetTypeEnnemiParIndex (
unsigned int uiIndex)
const;
00061
00063
void Jeu (xmlNode* pNode);
00065
void BonusArmes (xmlNode* pNode);
00067 std::pair<unsigned int, CTypeBonusArme*> BonusArme (xmlNode* pNode);
00069
CVecteur Ancrage (xmlNode* pNode);
00071
void BonusBoucliers (xmlNode* pNode);
00073 std::pair<unsigned int, CTypeBonusBouclier*> BonusBouclier (xmlNode* pNode);
00075
void Ennemis (xmlNode* pNode);
00077 std::pair<unsigned int, CTypeEnnemi*> Ennemi (xmlNode* pNode);
00079
CTypeArme* Arme (xmlNode* pNode);
00081
void Niveaux (xmlNode* pNode);
00083
SNiveau Niveau (xmlNode* pNode);
00085
void IndexArmes (xmlNode* pNode,
SNiveau & Niveau);
00087
void IndexEnnemis (xmlNode* pNode,
SNiveau & Niveau);
00089
void IndexBoucliers (xmlNode* pNode,
SNiveau & Niveau);
00091
int IndexAttribute (xmlNode* pNode);
00092
00094
unsigned int CompterChildren (xmlNode* pNode);
00096
bool Validation (xmlDoc* pDocument);
00097
00098
public:
00099
CXMLNiveau ();
00100
~CXMLNiveau ();
00101
00103
unsigned int GetEnnemiNombre (
unsigned int uiNiveau)
const;
00105
unsigned int GetNiveauNombre ()
const;
00107
float GetEnnemiFrequence (
unsigned int uiNiveau)
const;
00109
float GetBonusArmeFrequence (
unsigned int uiNiveau)
const;
00111
float GetBonusBouclierFrequence (
unsigned int uiNiveau)
const;
00112
00114
CTypeBonusArme*
GetTypeBonusArme (
unsigned int uiNiveau)
const;
00116
CTypeBonusBouclier*
GetTypeBonusBouclier (
unsigned int uiNiveau)
const;
00118
CTypeEnnemi*
GetTypeEnnemi (
unsigned int uiNiveau)
const;
00119
00121
bool Charger (
const char* szFilename);
00122 };
00123
00124
#endif //XML_NIVEAU_H