-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWorld.cpp
76 lines (71 loc) · 1.9 KB
/
World.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* @file World.cpp
* World.cpp provides the functionality for the game world.
*
* @brief Source file for a World.
*
* @author Michael Abrams
* @author James Boocock
* @author Toby Herbert
* @author Tatai Nikora
* @version 0.3
*/
#include "World.h"
std::string World::get_author() {
return author;
}
std::string World::get_language() {
return language;
}
Area* World::get_active_area() {
return active_area;
}
Area* World::get_area(int index) {
return areas[index];
}
void World::add_area(Area *new_area) {
areas.push_back(new_area);
num_areas++;
}
int World::get_num_areas() {
return num_areas;
}
Area *World::get_area(std::string area_id) {
for(unsigned int area_num = 0; area_num < areas.size(); area_num++) {
if(areas[area_num]->get_id().compare(area_id) == 0) {
return areas[area_num];
}
}
return NULL;
}
bool World::init_active_area() {
for(unsigned int area_num = 0; area_num < areas.size(); area_num++) {
if(areas[area_num]->get_id().compare(initial_area) == 0) {
active_area = areas[area_num];
return true;
}
}
return false;
}
void World::change_area(std::string name) {
for(unsigned int area_num = 0; area_num < areas.size(); area_num++) {
if(areas[area_num]->get_id().compare(name) == 0) {
active_area = areas[area_num];
}
}
}
World::World(const char *lang, const char *auth, const char *init_area) {
language = lang;
author = auth;
initial_area = init_area;
num_areas = 0;
Area* inventory = new Area("inventory","","","Inventory");
Area* garbage = new Area("garbage","","","Garbage");
add_area(inventory);
add_area(garbage);
}
World::~World() {
for(unsigned int area_num = 0; area_num < areas.size(); area_num++) {
delete areas[area_num];
}
}