~swag/armagetronad/0.2.9-sty+ct+ap-fork

« back to all changes in this revision

Viewing changes to src/tron/gParser.h

  • Committer: luke-jr
  • Date: 2006-05-29 01:55:42 UTC
  • Revision ID: svn-v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs:7d95bf1e-0414-0410-9756-b78462a59f44:armagetronad%2Fbranches%2F0.2.8%2Farmagetronad:4612
Unify tags/branches of modules released together

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#ifndef ArmageTron_PARSER_H
 
3
#define ArmageTron_PARSER_H
 
4
 
 
5
#include "defs.h"
 
6
#include <libxml/parser.h>
 
7
#include <libxml/tree.h>
 
8
 
 
9
class eGrid;
 
10
class gArena;
 
11
class eCoord;
 
12
class ePoint;
 
13
class gGame;
 
14
class gWallRim;
 
15
 
 
16
/*
 
17
Note to the reader: In the full World idea, the parser should, 
 
18
when called, create a full world structure, from the Empire down,
 
19
and just return a pointer to it(He, whats to forbit a server from
 
20
running 2 independant games?). 
 
21
 
 
22
Due to the limitations of the current code, it is best to have a 
 
23
pointer to the gGame, the gArena and the gGrid.
 
24
 
 
25
*/
 
26
 
 
27
class gParser {
 
28
 
 
29
    gArena *theArena; /*Patch: All the world structure should be created by the parser*/
 
30
    eGrid *theGrid; /*Patch: All the world structure should be created by the parser*/
 
31
 
 
32
    xmlDocPtr doc; /* The map xml document */
 
33
 
 
34
    REAL rimTexture; /* The rim wall texture coordinate */
 
35
 
 
36
    ePoint * DrawRim( eGrid * grid, ePoint * start, eCoord const & stop, REAL h=10000 ); /* Draws a rim wall segment */
 
37
 
 
38
public:
 
39
    gParser(gArena *anArena, eGrid *aGrid);
 
40
    //    gParser(const gGame *aGame, gArena *anArena, tControlledPTR<eGrid> aGrid);
 
41
    /*Sorry, I just cant figure when you'd want to load without
 
42
      validating, or revalidate a document. So I joined both 
 
43
      toghether */
 
44
    bool LoadAndValidateMapXML(char const *uri, FILE* docfd, char const * filepath );
 
45
    void InstantiateMap(float sizeMultiplier);
 
46
 
 
47
protected:
 
48
    bool trueOrFalse(char *str);
 
49
    char *myxmlGetProp(xmlNodePtr cur, const char *name);
 
50
    int myxmlGetPropInt(xmlNodePtr cur, const char *name);
 
51
    float myxmlGetPropFloat(xmlNodePtr cur, const char *name);
 
52
    bool myxmlGetPropBool(xmlNodePtr cur, const char *name);
 
53
    void myxmlGetDirection(xmlNodePtr cur, float &x, float &y);
 
54
 
 
55
    //    bool isElement(const xmlChar *elementName, const xmlChar *searchedElement);
 
56
    bool isElement(const xmlChar *elementName, const xmlChar *searchedElement, const xmlChar * keyword = NULL);
 
57
    bool isValidAlternative(xmlNodePtr cur, const xmlChar * keyword = NULL);
 
58
    void processSubAlt(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword = NULL);
 
59
    bool isValidCodeName(const xmlChar *version);
 
60
    bool isValidDotNumber(const xmlChar *version);
 
61
    bool validateVersionSubRange(const xmlChar *subRange, const xmlChar *codeName, const xmlChar *dotVersion);
 
62
    bool xmlCharSearchReplace(xmlChar *&original, const xmlChar * searchPattern, const xmlChar * replace);
 
63
    int validateVersionRange(xmlChar *version, const xmlChar * codeName, const xmlChar * dotVersion);
 
64
    void endElementAlternative(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
65
 
 
66
    void parseAxes(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
67
    void parseSpawn(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
68
    void parseZone(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
69
    void parseWall(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
70
 
 
71
    bool parseShapeCircle(eGrid *grid, xmlNodePtr cur, float &x, float &y, float &radius, float &growth, const xmlChar * keyword);
 
72
 
 
73
    void parseField(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
74
    void parseWorld(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword = NULL);
 
75
    void parseMap(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword = NULL);
 
76
 
 
77
    void parseSettings(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword = NULL);
 
78
    void parseSetting(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
79
 
 
80
    void parseAlternativeContent(eGrid *grid, xmlNodePtr cur);
 
81
    /* Experimental features*/
 
82
    void parseWallLine(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
83
    void parseWallRect(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
84
    void parseObstacleWall(eGrid *grid, xmlNodePtr cur, const xmlChar * keyword);
 
85
 
 
86
    /* This is a hack that will bring shame to my decendants for many generations: */
 
87
    float sizeMultiplier;
 
88
};
 
89
 
 
90
#endif //ArmageTron_PARSER_H
 
91