Roguelike
 All Classes Namespaces Functions Variables Typedefs Friends Pages
chunk.h
1 
23 #ifndef _CHUNK_H
24 #define _CHUNK_H
25 
26 #define CHUNK_DIR DATADIR "/chunk"
27 
28 #include <vector>
29 #include <stdlib.h>
30 #include <string.h>
31 #include <sstream>
32 #include <fstream>
33 #include <boost/filesystem.hpp>
34 #include <assert.h>
35 
36 #include <constants.h>
37 #include <procedurally_blind_db.h>
38 #include <corruptible_pblind_db.h>
39 #include <chunk_layer.h>
40 #include <overworld_gen.h>
41 #include <defs.h>
42 #include <ctime>
43 #include <iostream>
44 #include <spawner.h>
45 #include <int_point.h>
46 
47 using namespace std;
48 namespace fs=boost::filesystem;
49 
50 static const int BYTES_PER_TILE = 2;
51 static const int CHUNKLAYER_META_BYTES = 6; //spawner row/col, upstairs row/col, downstairs row/col
52 static const int CHUNK_META_BYTES = 6; //height, width, depth, chunk_type_id, world_row, world_col
53 
54 struct chunk_meta {
58  int height;
62  int width;
63 
70  int depth;
71 
76 
80  int world_row;
81 
85  int world_col;
86 };
87 
98 class Chunk{
99  typedef std::vector<std::vector<Tile> > TileMatrix;
100  private:
101  chunk_meta cm;
102 
108 
113  std::vector<ChunkLayer> layers;
114 
126  bool find_serialized_chunk();
127 
132  int calculate_file_size(int bytes_per_tile);
133 
148  void deserialize(string file_name);
149 
150  public:
154  Chunk();
155 
169  Chunk(MapTile tile_type, int _world_row, int _world_col);
170 
183  void init(MapTile tile_type, int _world_row, int _world_col);
184 
188  bool build_chunk_with_dungeons();
189 
194  void build_land_chunk();
195 
199  void build_forest_chunk();
200 
204  void build_water_chunk();
205 
209  void build_beach_chunk();
210 
217  IntPoint get_world_loc() const;
218 
224  IntPoint get_up_stair(int depth) const;
225 
231  IntPoint get_down_stair(int depth) const;
232 
239  std::vector<Item*>& get_items(int depth);
240 
246  void remove_item(Item* item, int depth);
247 
253  void add_item(Item* item, int depth);
254 
259  const std::vector<std::vector<Tile> >& get_floor(int depth);
260 
267  Tile* get_tile(int depth, int row, int col) ;
268 
278  void set_tile(int depth, int row, int col, Tile tile);
279 
284  int get_depth() const;
285 
293  bool out_of_bounds(int depth, int row, int col) const;
294 
300  Spawner get_spawner(int depth);
301 
306  void dungeon_dump(int depth);
307 
311  MapTile get_type();
312 
323  void serialize();
324 
325 };
326 
327 #endif
Definition: defs.h:168
int world_col
Definition: chunk.h:85
int world_row
Definition: chunk.h:80
Definition: chunk.h:98
Definition: chunk.h:54
MapTile chunk_type
Definition: chunk.h:107
int chunk_type_id
Definition: chunk.h:75
std::vector< ChunkLayer > layers
Definition: chunk.h:113
int height
Definition: chunk.h:58
Definition: defs.h:66
Definition: item.h:40
Definition: int_point.h:26
int depth
Definition: chunk.h:70
int width
Definition: chunk.h:62
Definition: spawner.h:35