From 6b99c7aee539e35b8e67520f36adeca9007641cb Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Tue, 17 Feb 2015 13:28:50 -0500 Subject: Refactored map loader and added a second map Also tweaked the font for apostrophe, p, and q --- src/map.cpp | 257 +++++++----------------------------------------------------- 1 file changed, 30 insertions(+), 227 deletions(-) (limited to 'src/map.cpp') diff --git a/src/map.cpp b/src/map.cpp index 0dd3e04..cb1ce72 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1,252 +1,55 @@ #include "map.h" +#include "mapview.h" -struct platform_t { - int x; - int y; - int w; - int h; - bool enter_from_left; - bool enter_from_right; - bool enter_from_top; - bool enter_from_bottom; - int r; - int g; - int b; - int a; -}; - -Map::Map() +Map::Map(char* filename) { - add_collision(-6, 0, GAME_WIDTH, left, 1); - add_collision(GAME_WIDTH+6, 0, GAME_WIDTH, right, 1); - - FILE* f = fopen("../maps/bigmap.txt", "r"); - char* mapbuf = (char*) malloc(MAP_WIDTH*(MAP_HEIGHT-1)*sizeof(char)); + FILE* f = fopen(filename, "r"); + m_mapdata = (char*) malloc(MAP_WIDTH*(MAP_HEIGHT-1)*sizeof(char)); for (int i=0; i::iterator it; - - switch (dir) - { - case up: - it = up_collisions.begin(); - for (; it!=up_collisions.end(); it++) - { - if (it->axis < axis) break; - } - - up_collisions.insert(it, {axis, lower, upper, type}); - - break; - case down: - it = down_collisions.begin(); - for (; it!=down_collisions.end(); it++) - { - if (it->axis > axis) break; - } - - down_collisions.insert(it, {axis, lower, upper, type}); - - break; - case left: - it = left_collisions.begin(); - for (; it!=left_collisions.end(); it++) - { - if (it->axis < axis) break; - } - - left_collisions.insert(it, {axis, lower, upper, type}); - - break; - case right: - it = right_collisions.begin(); - for (; it!=right_collisions.end(); it++) - { - if (it->axis > axis) break; - } - - right_collisions.insert(it, {axis, lower, upper, type}); - - break; - } + return m_mapdata; } -void Map::check_collisions(mob_t* mob, int x_next, int y_next) +const char* Map::title() { - if (x_next < mob->x) - { - for (list::iterator it=left_collisions.begin(); it!=left_collisions.end(); it++) - { - if (it->axis > mob->x) continue; - if (it->axis < x_next) break; - - if ((mob->y+mob->h > it->lower) && (mob->y < it->upper)) - { - // We have a collision! - if (it->type == 0) - { - x_next = it->axis; - mob->x_vel = 0; - } else if (it->type == 1) - { - x_next = GAME_WIDTH-mob->w/2; - } - - break; - } - } - } else if (x_next > mob->x) - { - for (list::iterator it=right_collisions.begin(); it!=right_collisions.end(); it++) - { - if (it->axis < mob->x+mob->w) continue; - if (it->axis > x_next+mob->w) break; - - if ((mob->y+mob->h > it->lower) && (mob->y < it->upper)) - { - // We have a collision! - if (it->type == 0) - { - x_next = it->axis - mob->w; - mob->x_vel = 0; - } else if (it->type == 1) - { - x_next = -mob->w/2; - } - - break; - } - } - } - - mob->x = x_next; - - if (y_next < mob->y) - { - for (list::iterator it=up_collisions.begin(); it!=up_collisions.end(); it++) - { - if (it->axis > mob->y) continue; - if (it->axis < y_next) break; - - if ((mob->x+mob->w > it->lower) && (mob->x < it->upper)) - { - // We have a collision! - if (it->type == 0) - { - y_next = it->axis; - mob->y_vel = 0; - } else if (it->type == 1) - { - y_next = GAME_HEIGHT-mob->h/2-1; - } - - break; - } - } - } else if (y_next > mob->y) - { - for (list::iterator it=down_collisions.begin(); it!=down_collisions.end(); it++) - { - if (it->axis < mob->y+mob->h) continue; - if (it->axis > y_next+mob->h) break; + return m_title; +} - if ((mob->x+mob->w > it->lower) && (mob->x < it->upper)) - { - // We have a collision! - if (it->type == 0) - { - y_next = it->axis - mob->h; - mob->y_vel = 0; - } else if (it->type == 1) - { - y_next = 1 - mob->h/2; - } - - break; - } - } - } - - mob->y = y_next; +Map* Map::getLeftMap() +{ + return m_leftMap; +} + +Map* Map::getRightMap() +{ + return m_rightMap; +} + +void Map::setLeftMap(Map* m) +{ + m_leftMap = m; } -void Map::render(Texture* buffer) +void Map::setRightMap(Map* m) { - blitTexture(bg, buffer, NULL, NULL); + m_rightMap = m; } -- cgit 1.4.1