text: #ifndef MAPGAME_H
  #define MAPGAME_H
  
  #include <vector>
  
  #include "Finalclass.h"
  #include "Labclass.h"
  #include "Maths.h"
  #include "Otherlevel.h"
  #include "Spacestation2.h"
  #include "Tower.h"
  #include "TowerBG.h"
  #include "WarpClass.h"
  
  struct Roomtext
  {
      int x, y;
      std::string text;
  };
  
  class mapclass
  {
  public:
      mapclass(void);
  
      int intpol(int a, int b, float c);
  
      void setteleporter(int x, int y);
  
      void settrinket(int x, int y);
  
      void resetmap(void);
  
      void resetnames(void);
  
      void transformname(int t);
  
      std::string getglitchname(int x, int y);
  
      void initmapdata(void);
      void initcustommapdata(void);
  
      int finalat(int x, int y);
  
      int maptiletoenemycol(int t);
  
      void changefinalcol(int t);
  
      void setcol(TowerBG& bg_obj, const int r1, const int g1, const int b1 , const int r2, const  int g2, const int b2, const int c);
  
      void updatebgobj(TowerBG& bg_obj);
  
      void setbgobjlerp(TowerBG& bg_obj);
  
      void updatetowerglow(TowerBG& bg_obj);
  
      void nexttowercolour(void);
      bool nexttowercolour_set;
  
      void settowercolour(int t);
  
      bool spikecollide(int x, int y);
  
      bool collide(int x, int y);
  
      void settile(int xp, int yp, int t);
  
  
      int area(int _rx, int _ry);
  
      void exploretower(void);
  
      void hideship(void);
  
      void showship(void);
  
      void resetplayer(const bool player_died);
      void resetplayer(void);
  
      void warpto(int rx, int ry , int t, int tx, int ty);
  
      void gotoroom(int rx, int ry);
  
      std::string currentarea(int t);
  
      void loadlevel(int rx, int ry);
  
      void twoframedelayfix(void);
  
  
      int roomdeaths[20 * 20];
      int roomdeathsfinal[20 * 20];
      static const int areamap[20 * 20];
      int contents[40 * 30];
      bool explored[20 * 20];
      int vmult[30];
  
      bool isexplored(const int rx, const int ry);
      void setexplored(const int rx, const int ry, const bool status);
  
      int background;
      int rcol;
      int tileset;
      bool warpx;
      bool warpy;
  
  
      std::string roomname;
      std::string hiddenname;
  
      //Special tower stuff
      bool towermode;
      int ypos;
      int oldypos;
      int cameramode;
      int cameraseek, cameraseekframe;
      int resumedelay;
      bool minitowermode;
  
      int colstatedelay;
      int colsuperstate;
      int spikeleveltop, spikelevelbottom;
      int oldspikeleveltop, oldspikelevelbottom;
      //final level navigation
      bool finalmode;
      bool finalstretch;
  
      //Variables for playing custom levels
      bool custommode;
      bool custommodeforreal;
      int customwidth, customheight;
      int custommmxoff, custommmyoff, custommmxsize, custommmysize;
      int customzoom;
      bool customshowmm;
  
      std::string specialnames[8];
      int glitchmode;
      int glitchdelay;
      std::string glitchname;
  
      //final level colour cycling stuff
      bool final_colormode;
      int final_mapcol;
      int final_aniframe;
      int final_aniframedelay;
      int final_colorframe, final_colorframedelay;
  
      //Teleporters and Trinkets on the map
      std::vector<point> teleporters;
      std::vector<point> shinytrinkets;
  
      bool showteleporters, showtargets, showtrinkets;
  
      //Roomtext
      bool roomtexton;
      std::vector<Roomtext> roomtext;
  
      //Levels
      otherlevelclass otherlevel;
      spacestation2class spacestation2;
      labclass lablevel;
      finalclass finallevel;
      warpclass warplevel;
      towerclass tower;
      int extrarow;
  
      //Accessibility options
      bool invincibility;
  
      //Map cursor
      int cursorstate, cursordelay;
  };
  
  #ifndef MAP_DEFINITION
  extern mapclass map;
  #endif
  
  #endif /* MAPGAME_H */
  