-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhero.cpp
56 lines (46 loc) · 1.55 KB
/
hero.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
/*
This file is part of Heroes of Wesnoth.
Copyright (C) 2007, 2008, 2009 Jon Ander Peñalba <[email protected]>
Heroes of Wesnoth is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3 as
published by the Free Software Foundation.
Heroes of Wesnoth is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Heroes of Wesnoth. If not, see <http://www.gnu.org/licenses/>
*/
#include "hero.hpp"
#include "xml_manager.hpp"
// Constructor
Hero::Hero(const char *type) : Unit("hero", 1) {
master = this;
visibility = 8;
this->type = type;
setCreaturesAttributes(HEROES_XML_FILE);
// The hero starts controling no creatures
for (int i=0; i<MAX_UNITS; i++)
creature[i]=NULL;
}
// Destructor
Hero::~Hero(void) {
for (int i=0; i<MAX_UNITS; i++)
delete creature[i];
}
// Assings a new creature to the hero.
void Hero::recruitCreature(Unit *creature, const int position) {
if (position != -1) {
this->creature[position] = creature;
if (creature) this->creature[position]->setMaster(this);
} else {
bool found = false;
for (int i = 0; i<MAX_UNITS && !found; i++) {
if (this->creature[i] == NULL) {
this->creature[i] = creature;
if (creature) this->creature[i]->setMaster(this);
found = true;
}
}
}
}