]> git.lizzy.rs Git - dragonblocks-bedrock.git/blob - src/map.cpp
Add files via upload
[dragonblocks-bedrock.git] / src / map.cpp
1 #include <string>
2 #include <stdlib.h>
3 #include <cstring>
4 #include <cstdio>
5 #include "map.h"
6 #include "node.h"
7 #include "game.h"
8 using namespace std;
9 Node *Map::getNode(int x, int y){
10         if(x < MAPWIDTH && y < MAPHEIGHT && x > -1 && y > -1)
11                 return content[x][y];
12         return NULL;    
13 }
14 void Map::setNode(int x, int y, Node *n){
15         if(x < MAPWIDTH && y < MAPHEIGHT && x > -1 && y > -1)
16                 content[x][y] = n;
17 }
18 void Map::setNode(int x, int y, string n){
19         setNode(x, y, Node::getNodeByName(n));
20 }
21 void Map::load(){
22         Game::log("Loading Map from " + Game::mapfile);
23         FILE *mapfile = fopen(Game::mapfile.c_str(), "r");
24         if(mapfile){
25                 for(int x = 0; x < MAPWIDTH; x++)
26                         for(int y = 0; y < MAPHEIGHT; y++){
27                                 char buffer[512] = {0};
28                                 fscanf(mapfile, "%s", buffer);
29                                 setNode(x, y, buffer);
30                         }
31                 fclose(mapfile);
32                 Game::log("Loaded Map");
33         }
34         else{
35                 Game::log("Could not Load Map.", ERROR);
36                 exit(EXIT_FAILURE);
37         }
38 }
39 void Map::save(){
40         Game::log("Saving Map to " + Game::mapfile);
41         FILE *mapfile = fopen(Game::mapfile.c_str(), "w");
42         if(mapfile){
43                 for(int x = 0; x < MAPWIDTH; x++){
44                         for(int y = 0; y < MAPHEIGHT; y++)
45                                 fprintf(mapfile,"%s ", getNode(x,y)->name.c_str());
46                         fprintf(mapfile, "\n");
47                 }
48                 fclose(mapfile);
49                 Game::log("Saved Map");
50         }
51         else
52                 Game::log("Could not Save Map.", ERROR);
53 }