-extern GLuint rabbittexture;
-
-struct TextureInfo;
-
-class CampaignLevel
-{
-private:
- int width;
- struct Position
- {
- int x;
- int y;
- };
-public:
- std::string mapname;
- std::string description;
- int choosenext;
- /*
- 0 = Immediately load next level at the end of this one.
- 1 = Go back to the world map.
- 2 = Don't bring up the Fiery loading screen. Maybe other things, I've not investigated.
- */
- //int numnext; // 0 on final level. As David said: he meant to add story branching, but he eventually hadn't.
- std::vector<int> nextlevel;
- Position location;
-
- CampaignLevel() : width(10) {
- choosenext = 1;
- location.x = 0;
- location.y = 0;
- }
-
- int getStartX() {
- return 30+120+location.x*400/512;
- }
-
- int getStartY() {
- return 30+30+(512-location.y)*400/512;
- }
-
- int getEndX() {
- return getStartX()+width;
- }
-
- int getEndY() {
- return getStartY()+width;
- }
-
- XYZ getCenter() {
- XYZ center;
- center.x=getStartX()+width/2;
- center.y=getStartY()+width/2;
- return center;
- }
-
- int getWidth() {
- return width;
- }
-
- istream& operator<< (istream& is) {
- is.ignore(256,':');
- is.ignore(256,':');
- is.ignore(256,' ');
- is >> mapname;
- is.ignore(256,':');
- is >> description;
- for(int pos = description.find('_');pos!=string::npos;pos = description.find('_',pos)) {
- description.replace(pos,1,1,' ');
- }
- is.ignore(256,':');
- is >> choosenext;
- is.ignore(256,':');
- int numnext,next;
- is >> numnext;
- for(int j=0;j<numnext;j++) {
- is.ignore(256,':');
- is >> next;
- nextlevel.push_back(next-1);
- }
- is.ignore(256,':');
- is >> location.x;
- is.ignore(256,':');
- is >> location.y;
- return is;
- }
-
- friend istream& operator>> (istream& is, CampaignLevel& cl) {
- return cl << is;
- }
-};
-
-namespace Game
-{
- //public: