Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SDL/SDL.h>
- #include <SDL/SDL_image.h>
- #include <SDL/SDL_ttf.h>
- #include <iostream>
- #include <fstream>
- #include "Map.h"
- #include "Tile.h"
- using namespace std;
- inline SDL_Surface* loadImage(char* filename) {
- SDL_Surface* loadedImage = IMG_Load(filename);
- SDL_Surface* optimizedImage = NULL;
- if(loadedImage) {
- optimizedImage = SDL_DisplayFormat(loadedImage);
- SDL_FreeSurface(loadedImage);
- SDL_SetColorKey(optimizedImage, SDL_SRCCOLORKEY, SDL_MapRGB(optimizedImage->format, 255, 0, 255));
- cout << optimizedImage << endl;
- }
- return optimizedImage;
- }
- inline Map loadMap(char* filename) {
- cout << "Loading map..." << endl;
- ifstream stream;
- stream.open(filename, ios::binary);
- int width = -1;
- stream.read((char*)&width, sizeof(int));
- int height = -1;
- stream.read((char*)&height, sizeof(int));
- int size = -1;
- stream.read((char*)&size, sizeof(int));
- cout << "width: " << width << endl;
- cout << "height: " << height << endl;
- cout << "size: " << size << endl;
- Map map(width, height, size);
- int numSheets = -1;
- stream.read((char*)&numSheets, sizeof(int));
- cout << "numSheets: " << numSheets << endl;
- for(int i = 0; i < numSheets; i++) {
- int len = -1;
- stream.read((char*)&len, sizeof(int));
- cout << "len: " << len << endl;
- char string[len];
- stream.read(string, sizeof(char*)*len);
- cout << "string: '" << string << "'" << endl;
- SDL_Surface* sheet = loadImage(string);
- cout << "sheet == null: " << (sheet == NULL) << endl;
- map.addSheet(sheet, string);
- cout << "Load: " << sheet << endl;
- }
- for(int i = 0; i < width; i++) {
- for(int j = 0; j < height; j++) {
- int sheetNum = -1;
- stream.read((char*)&sheetNum, sizeof(int));
- SDL_Surface* sheet = map.getSheet(sheetNum);
- int x = i*size;
- int y = j*size;
- int sx = -1;
- stream.read((char*)&sx, sizeof(int));
- int sy = -1;
- stream.read((char*)&sy, sizeof(int));
- Tile tile(sheet, x, y, size, sx, sy);
- map.setTile(tile, i, j);
- if(sheetNum != -1) {
- cout << "sheetNum: " << sheetNum << endl;
- cout << "sx: " << sx << endl;
- cout << "sy: " << sy << endl;
- cout << "Going to next iteration..." << endl;
- }
- }
- }
- stream.close();
- cout << "done with method" << endl;
- return map;
- }
- inline void saveMap(char* filename, Map* map) {
- cout << "Saving map..." << endl;
- ofstream stream;
- stream.open(filename, ios::binary);
- int width = map->getWidth();
- int height = map->getHeight();
- int size = map->getTileSize();
- cout << "width: " << width << endl;
- stream.write((char*)&width, sizeof(int));
- cout << "height: " << height << endl;
- stream.write((char*)&height, sizeof(int));
- cout << "size: " << size << endl;
- stream.write((char*)&size, sizeof(int));
- int numSheets = map->numSheets();
- cout << "numSheets: " << numSheets << endl;
- stream.write((char*)&numSheets, sizeof(int));
- for(int i = 0; i < numSheets; i++) {
- char* filePath = map->getSheetPath(i);
- int filePathLen = strlen(filePath);
- cout << "strlen(filePath): " << filePathLen << endl;
- stream.write((char*)&filePathLen, sizeof(int));
- cout << "filePath: " << filePath << endl;
- stream.write(filePath, sizeof(char*)*filePathLen);
- }
- for(int i = 0; i < width; i++) {
- for(int j = 0; j < height; j++) {
- int sheetNum = map->getSheetNum(i, j);
- stream.write((char*)&sheetNum, sizeof(int));
- Tile t = map->getTile(i, j);
- int sx = t.getSheetX();
- int sy = t.getSheetY();
- stream.write((char*)&sx, sizeof(int));
- stream.write((char*)&sy, sizeof(int));
- if(sheetNum != -1) {
- cout << "sheetNum: " << sheetNum << endl;
- cout << "sx: " << sx << endl;
- cout << "sy: " << sy << endl;
- }
- }
- }
- stream.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment