home *** CD-ROM | disk | FTP | other *** search
/ Game Programming - All in One (3rd Edition) / game_prog_all_in_one_3rd_ed.iso / sources / TankWar-Final / scroller.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2006-06-22  |  986 b   |  44 lines

  1. #include <allegro.h>
  2. #include "mappyal.h"
  3. #include "scroller.h"
  4.  
  5. tilescroller::tilescroller() {
  6.     xoffset = 0;
  7.     yoffset = 0;
  8. }
  9.  
  10. tilescroller::~tilescroller() {
  11.     MapFreeMem();
  12. }
  13.  
  14. int tilescroller::loadmap(char *filename) {
  15.     int ret = MapLoad(filename);
  16.  
  17.     //MapLoad returns wrong value for success
  18.     if (ret == 0) {
  19.         if (mapwidth == 0) return 1;
  20.         _mapwidth = mapwidth;
  21.         _mapheight = mapheight;
  22.         _tilewidth = mapblockwidth;
  23.         _tileheight = mapblockheight;
  24.         MapSetPal8();
  25.         return 1;
  26.     } else {
  27.         return 0;
  28.     }
  29. }
  30.  
  31. void tilescroller::drawmap(BITMAP *dest) {
  32.     MapDrawBG(dest, xoffset, yoffset, 0, 0, SCREEN_W-1, SCREEN_H-1);
  33.  
  34.     //make sure it doesn't scroll beyond map edge
  35.     if (xoffset < 0) xoffset = 0;
  36.     if (xoffset > _mapwidth * _tilewidth - SCREEN_W) 
  37.         xoffset = _mapwidth * _tilewidth - SCREEN_W;
  38.  
  39.     if (yoffset < 0) yoffset = 0;
  40.     if (yoffset > _mapheight * _tileheight - SCREEN_H) 
  41.         yoffset = _mapheight * _tileheight - SCREEN_H;
  42.  
  43. }
  44.