My Project
 
Loading...
Searching...
No Matches
room.h
Go to the documentation of this file.
1#pragma once
2
3#include "bundlable.h"
4#include "define.h"
5#include "graph.h"
6
7#include <set>
8#include <map>
9
10class Level;
11class Room:public Bundlable,public Graph::Node{
12public:
41
42 class Door{
43 private:
44 Point p;
45 public:
50 Door(int x, int y);
51 void set(Type type);
52 Point getPoint() { return p; }
53 };
54
55 typedef void(*PaintMethod)(Level* l, Room* r);
56
57private:
58 Rect bounds;
59
60 static const Type _SPECIALS[];
61 static std::map<Type, PaintMethod> paintMethods;
62public:
63 std::set<Room*> neigbours;
64 std::map<Room*, Door*> connected;
65 static std::list<Type> SPECIALS;
66
68 int price;
70
71 Room();
72
73 void set(int left, int top, int right, int bottom);
74 void set(Rect b);
75 void addNeigbour(Room* other);
76 int width();
77 int height();
78 Point center();
79 void connect(Room* room);
80 int random() { return random(0); }
81 int random(int m);
82 Rect getBounds() { return bounds; }
83 Door* entrance();
84 bool inside(int p);
85
86 static void useType(Type type);
87 static void paint(Type type, Level* level, Room* r);
89
90 virtual int Distance() { return distance; }
91 virtual void Distance(int v) { distance = v; }
92 virtual int Price() { return price; }
93 virtual void Price(int v) { price = v; }
94 virtual std::set<Graph::Node*> edges() { return std::set<Graph::Node*>(neigbours.begin(), neigbours.end()); }
95
96 virtual void storeInBundle(Bundle* bundle);
97 virtual void restoreFromBundle(Bundle* bundle);
98 virtual std::string getClassName() { return "Room"; }
99 static void shuffleTypes();
100};
Definition door.h:3
Definition graph.h:8
Definition level.h:17
Type type
Definition room.h:49
Type
Definition room.h:46
@ UNLOCKED
Definition room.h:47
@ TUNNEL
Definition room.h:47
@ LOCKED
Definition room.h:47
@ EMPTY
Definition room.h:47
@ BARRICADE
Definition room.h:47
@ HIDDEN
Definition room.h:47
@ REGULAR
Definition room.h:47
Door(int x, int y)
Definition room.cpp:219
Point getPoint()
Definition room.h:52
void set(Type type)
Definition room.cpp:226
Definition room.h:11
static void paint(Type type, Level *level, Room *r)
Definition room.cpp:121
Point center()
Definition room.cpp:159
virtual std::string getClassName()
Definition room.h:98
static PaintMethod getPaintMethod(Type type)
Definition room.cpp:127
virtual void Price(int v)
Definition room.h:93
virtual void restoreFromBundle(Bundle *bundle)
Definition room.cpp:81
bool inside(int p)
Definition room.cpp:207
int random()
Definition room.h:80
void addNeigbour(Room *other)
Definition room.cpp:43
virtual void storeInBundle(Bundle *bundle)
Definition room.cpp:67
void(* PaintMethod)(Level *l, Room *r)
Definition room.h:55
Type
Definition room.h:13
@ EXIT
Definition room.h:17
@ WEAK_FLOOR
Definition room.h:36
@ STATUE
Definition room.h:33
@ RAT_KING
Definition room.h:35
@ LABORATORY
Definition room.h:26
@ PIT
Definition room.h:37
@ PASSAGE
Definition room.h:20
@ MAGIC_WELL
Definition room.h:30
@ TRAPS
Definition room.h:28
@ BOSS_EXIT
Definition room.h:18
@ GARDEN
Definition room.h:31
@ ARMORY
Definition room.h:24
@ ALL
Definition room.h:39
@ SHOP
Definition room.h:21
@ BLACKSMITH
Definition room.h:22
@ CRYPT
Definition room.h:32
@ TREASURY
Definition room.h:23
@ VAULT
Definition room.h:27
@ LIBRARY
Definition room.h:25
@ ENTRANCE
Definition room.h:16
@ ALTAR
Definition room.h:38
@ STORAGE
Definition room.h:29
@ NONE
Definition room.h:14
@ STANDARD
Definition room.h:15
@ TUNNEL
Definition room.h:19
@ POOL
Definition room.h:34
Door * entrance()
Definition room.cpp:171
virtual int Price()
Definition room.h:92
int height()
Definition room.cpp:62
static std::list< Type > SPECIALS
Definition room.h:65
int width()
Definition room.cpp:57
std::set< Room * > neigbours
Definition room.h:63
int price
Definition room.h:68
void set(int left, int top, int right, int bottom)
Definition room.cpp:33
virtual std::set< Graph::Node * > edges()
Definition room.h:94
static void shuffleTypes()
Definition room.cpp:176
virtual int Distance()
Definition room.h:90
Room()
Definition room.cpp:27
virtual void Distance(int v)
Definition room.h:91
Type type
Definition room.h:69
void connect(Room *room)
Definition room.cpp:92
Rect getBounds()
Definition room.h:82
std::map< Room *, Door * > connected
Definition room.h:64
static void useType(Type type)
Definition room.cpp:112
int distance
Definition room.h:67
glm::ivec4 Rect
Definition define.h:11
glm::ivec2 Point
Definition define.h:8