#include <base.h>
Veřejné typy | |
typedef std::vector< bonus_t > | bonuses_t |
Typ seznamu jmen a počtů bonusů. | |
typedef std::vector < std::vector< std::list < proportionedMO_t > > > | base_array_t |
Typ dvourozměrného pole mapy, na každém políčku seznam objektů s rozměry. | |
typedef std::vector < std::vector< allowed_field_t > > | allowed_array_t |
Typ dvourozměrného pole, na každém políčku TRUE, pokud je možné vygenerovat box. | |
typedef std::vector< MapObject * > | generatedMOs_t |
Typ seznamu generovaných objektů. | |
Veřejné metody | |
GameBase (Uint16 players_count, const std::string &mapname) | |
Inicializace normální hry. | |
GameBase (Uint16 players_count, const std::string &mapname, const bonuses_t &bonuses, bool creatures) | |
Inicializace hry pro deathmatch. | |
~GameBase () | |
Uvolnění naalokovaaných objektů. | |
void | set_player (Uint16 player_num, const PlayerProperties &prop) |
Nastavení parametrů hráče. | |
void | get_player (Uint16 player_num, PlayerProperties &prop) |
Získání parametrů hráče. | |
Privátní metody | |
void | load_map_ (Uint16 players_count, const std::string &mapname, bool deathmatch, bool creatures) |
Načtení mapy pro hru. | |
void | load_background_ (const std::string &bgname) |
Načtení pozadí mapy. | |
void | load_players_ (TiXmlElement *playersEl, Uint16 count) |
Načtení hráčů. | |
void | load_players_deathmatch_ (TiXmlElement *playersEl, Uint16 count) |
Načtení hráčů do deathmatche. | |
void | load_walls_ (TiXmlElement *wallsEl) |
Načtení zdí mapy. | |
void | load_floorobjects_ (TiXmlElement *floorEl) |
Načtení objektů na zemi. | |
void | load_boxes_ (TiXmlElement *boxesEl) |
Načtení beden mapy. | |
void | load_noboxes_ (TiXmlElement *boxesEl) |
Připravení políček, na kterých nesmí být bedna. | |
void | load_bonuses_ (TiXmlElement *bonusEl) |
Načtení bonusů. | |
void | load_bonuses_ (const bonuses_t &bonuses) |
Načtení bonusů z externího zdroje. | |
void | load_creatures_ (TiXmlElement *creaturesEl) |
Načtení příšer. | |
void | load_nocreatures_ (TiXmlElement *nocreaturesEl) |
Připravení políček, na kterých nesmí být příšery. | |
void | insert_background_ (const Animation &anim, const Animation &anim_burned, Uint16 x, Uint16 y) |
Vytvoření a vložení pozadí do mapy. | |
void | insert_wall_ (const Animation &anim, Uint16 toplapping, Uint16 x, Uint16 y, Uint16 w, Uint16 h) |
Vytvoření a vložení zdi do mapy. | |
void | insert_floorobject_ (const Animation &anim, Uint16 x, Uint16 y, Uint16 w, Uint16 h) |
Vytvoření a vložení objektu na zemi do mapy. | |
void | insert_box_ (const Animation &anim, const Animation &sur_burning, Uint16 toplapping) |
Pouze vytvoření bedny. | |
void | insert_box_ (const Animation &anim, const Animation &sur_burning, Uint16 toplapping, Uint16 x, Uint16 y, Uint16 w, Uint16 h) |
Vytvoření a vložení bedny do mapy. | |
void | insert_bonus_ (const std::string &bonus_name, const Animation &anim) |
Pouze vytvoření bonusu. | |
void | insert_creature_ (const Animation &anim_up, const Animation &anim_right, const Animation &anim_down, const Animation &anim_left, const Animation &anim_burned, Uint16 speed, Uint16 lives, Uint16 ai) |
Pouze vytvoření příšery. | |
void | insert_creature_ (const Animation &anim_up, const Animation &anim_right, const Animation &anim_down, const Animation &anim_left, const Animation &anim_burned, Uint16 x, Uint16 y, Uint16 speed, Uint16 lives, Uint16 ai) |
Vytvoření a vložení příšery do mapy. | |
void | insert_player_ (const Animation &anim_up, const Animation &anim_right, const Animation &anim_down, const Animation &anim_left, const Animation &anim_burned, Uint16 x, Uint16 y, Uint16 speed, Uint16 num) |
Vytvoření a vložení hráče do mapy. | |
void | clear_null_objects_ () |
Vyhození nulových pointerů z base_array_. | |
Privátní atributy | |
base_array_t | base_array_ |
Pole mapy. | |
allowed_array_t | allowed_array_ |
Pole mapy, na každém políčku TRUE, pokud je možné vygenerovat box. | |
Uint16 | allowed_boxes_count_ |
Počet volných políček v boxes_array_. | |
generatedMOs_t | generatedMOs_ |
Seznam neumístěných objektů. | |
std::vector< Player * > | players_ |
Seznam hráčů. | |
Friends | |
class | Game |
Třídy | |
struct | allowed_field_t |
struct | bonus_t |
struct | proportionedMO_t |
Třída GameBase řeší první načtení mapy a jejích objektů z XML, připraví hrací pole a vloží do něj (a nikam jinam) pevně umístěné objekty. Náhodně generované objekty (statické, respektive dynamické) se uloží do seznamů statických, respektive dynamických objektů. Bomby, plameny a ikony se zde nepřipravují, nejsou základními objekty mapy. Z této předpřipravené struktury se vytvoří konkrétní hra, proto je friend s třídou Game.
typedef std::vector< bonus_t > GameBase::bonuses_t |
Typ seznamu jmen a počtů bonusů.
typedef std::vector< std::vector< std::list< proportionedMO_t > > > GameBase::base_array_t |
Typ dvourozměrného pole mapy, na každém políčku seznam objektů s rozměry.
typedef std::vector< std::vector< allowed_field_t> > GameBase::allowed_array_t |
Typ dvourozměrného pole, na každém políčku TRUE, pokud je možné vygenerovat box.
typedef std::vector< MapObject* > GameBase::generatedMOs_t |
Typ seznamu generovaných objektů.
GameBase::GameBase | ( | Uint16 | players_count, | |
const std::string & | mapname | |||
) |
Inicializace normální hry.
Vytvori zaklad hry pro kooperativ mod.
players_count | počet hráčů | |
mapname | název mapy |
GameBase::GameBase | ( | Uint16 | players_count, | |
const std::string & | mapname, | |||
const bonuses_t & | bonuses, | |||
bool | creatures | |||
) |
Inicializace hry pro deathmatch.
Vytvori zaklad hry pro deathmatch.
players_count | počet hráčů | |
mapname | název mapy | |
bonuses | seznam bonusu k vygenerovani | |
creatures | jestli se maji vkladat prisery |
GameBase::~GameBase | ( | ) |
Uvolnění naalokovaaných objektů.
Zruší všechny umístěné i generované objekty.
void GameBase::set_player | ( | Uint16 | player_num, | |
const PlayerProperties & | prop | |||
) |
Nastavení parametrů hráče.
player_num | číslo (pořadí) hráče | |
prop | vlastnosti hráče |
void GameBase::get_player | ( | Uint16 | player_num, | |
PlayerProperties & | prop | |||
) |
Získání parametrů hráče.
player_num | číslo (pořadí) hráče | |
prop | vlastnosti hráče |
void GameBase::load_map_ | ( | Uint16 | players_count, | |
const std::string & | mapname, | |||
bool | deathmatch, | |||
bool | creatures | |||
) | [private] |
Načtení mapy pro hru.
Načte mapu z XML souborů, umístí do ní pevně dané objekty, vytvoří struktury s generovanými objekty.
players_count | počet hráčů | |
mapname | název mapy | |
deathmatch | vytváří-li mapu pro deathmatch | |
creatures | má-li připravit do mapy také příšery |
void GameBase::load_background_ | ( | const std::string & | bgname | ) | [private] |
Načtení pozadí mapy.
Vytvoří z XML a vloží do mapy její pozadí.
bgname | název pozadí mapy |
void GameBase::load_players_ | ( | TiXmlElement * | playersEl, | |
Uint16 | count | |||
) | [private] |
Načtení hráčů.
Načte z XML a vloží do mapy hráče.
playersEl | element v XML souboru specifikující výchozí pozici hráče | |
count | počet hráčů |
void GameBase::load_players_deathmatch_ | ( | TiXmlElement * | playersEl, | |
Uint16 | count | |||
) | [private] |
Načtení hráčů do deathmatche.
Načte z XML a vloží do mapy hráče pro deathmatch.
playersEl | element v XML souboru specifikující výchozí pozici hráče | |
count | počet hráčů |
void GameBase::load_walls_ | ( | TiXmlElement * | wallsEl | ) | [private] |
Načtení zdí mapy.
Načte z XML a vloží do mapy zdi.
wallsEl | element v XML souboru specifikující zdi mapy |
void GameBase::load_floorobjects_ | ( | TiXmlElement * | floorsEl | ) | [private] |
Načtení objektů na zemi.
Načte z XML a vloží do mapy objekty na zemi.
floorsEl | element v XML souboru specifikující objekt na zemi |
void GameBase::load_boxes_ | ( | TiXmlElement * | boxesEl | ) | [private] |
Načtení beden mapy.
Načte z XML a vloží do mapy pevně dané bedny, ostatní připraví pro vygenerování.
boxesEl | element v XML souboru specifikující bedny v mapě |
void GameBase::load_noboxes_ | ( | TiXmlElement * | boxesEl | ) | [private] |
Připravení políček, na kterých nesmí být bedna.
Načte z XML informace o políčkách, na kterých nesmí být bedna. Na základě tohoto, a již umístěných objektů v mapě vytvoří strukturu políček vhodných k umístění beden, zároven uloží počet těchto políček.
boxesEl | element v XML souboru specifikující bedny v mapě |
void GameBase::load_bonuses_ | ( | TiXmlElement * | bonusEl | ) | [private] |
Načtení bonusů.
Načte z XML a připraví pro pozdější vygenerování bonusy.
bonusEl | element v XML souboru specifikující bonus |
void GameBase::load_bonuses_ | ( | const bonuses_t & | bonuses | ) | [private] |
Načtení bonusů z externího zdroje.
void GameBase::load_creatures_ | ( | TiXmlElement * | creaturesEl | ) | [private] |
Načtení příšer.
Načte z XML a vloží do mapy pevně umístěné nestvůry, ostatní připraví pro pozdější vygenerování.
creaturesEl | element v XML souboru specifikující nestvůry |
void GameBase::load_nocreatures_ | ( | TiXmlElement * | nocreaturesEl | ) | [private] |
Připravení políček, na kterých nesmí být příšery.
Načte z XML informace o políčkách, na kterých nesmí být příšera. Na základě tohoto, a již umístěných objektů v mapě doplní do struktury políček vhodných k umístění.
nocreaturesEl | element v XML souboru specifikující políčka v mapě, na kterých nechceme příšery. |
void GameBase::insert_background_ | ( | const Animation & | anim, | |
const Animation & | anim_burned, | |||
Uint16 | x, | |||
Uint16 | y | |||
) | [private] |
Vytvoření a vložení pozadí do mapy.
Vytvoří pozadí na zadaných souřadnicích a vloží ho do mapy.
anim | animace pozadí | |
anim_burned | animace ohořelého | |
x | souřadnice políčka v mapě | |
y | souřadnice políčka v mapě |
void GameBase::insert_wall_ | ( | const Animation & | anim, | |
Uint16 | toplapping, | |||
Uint16 | x, | |||
Uint16 | y, | |||
Uint16 | w, | |||
Uint16 | h | |||
) | [private] |
Vytvoření a vložení zdi do mapy.
Vytvoří zed na zadaných souřadnicích a vloží ji do mapy. Zed vkládá do mapy na všechna políčka, které zabírá. Zakáže políčka pro vygenerování příšery i bedny.
anim | animace vkládané zdi | |
toplapping | počet políček odshora obrázku, které nezabírají místo v mapě | |
x | souřadnice políčka pro levý roh zdi v mapě | |
y | souřadnice políčka pro horní roh zdi v mapě | |
w | šířka zdi v políčkách | |
h | výška zdi v políčkách |
void GameBase::insert_floorobject_ | ( | const Animation & | anim, | |
Uint16 | x, | |||
Uint16 | y, | |||
Uint16 | w, | |||
Uint16 | h | |||
) | [private] |
Vytvoření a vložení objektu na zemi do mapy.
Vytvoří objekt na zemi na zadaných souřadnicích a vloží ho do mapy. Objekt vkládá do mapy na všechna políčka, které zabírá.
anim | animace vkládaného objektu | |
x | souřadnice políčka pro levý roh objektu v mapě | |
y | souřadnice políčka pro horní roh objektu v mapě | |
w | šířka objektu v políčkách | |
h | výška objektu v políčkách |
void GameBase::insert_box_ | ( | const Animation & | anim, | |
const Animation & | anim_burning, | |||
Uint16 | toplapping | |||
) | [private] |
Pouze vytvoření bedny.
Vytvoří bednu a vloží ji do seznamu pro pozdější náhodné vygenerování.
anim | animace vkládané bedny | |
anim_burning | animace hořící bedny | |
toplapping | počet políček odshora obrázku, které nezabírají místo v mapě |
void GameBase::insert_box_ | ( | const Animation & | anim, | |
const Animation & | anim_burning, | |||
Uint16 | toplapping, | |||
Uint16 | x, | |||
Uint16 | y, | |||
Uint16 | w, | |||
Uint16 | h | |||
) | [private] |
Vytvoření a vložení bedny do mapy.
Vytvoří bednu na zadaných souřadnicích a vloží ji do mapy. Bednu vkládá do mapy na všechna políčka, která zabírá. Zakáže vygenerování další bedny a příšery.
anim | animace vkládané bedny | |
anim_burning | animace hořící bedny | |
toplapping | počet políček odshora obrázku, které nezabírají místo v mapě | |
x | souřadnice políčka pro levý roh bedny v mapě | |
y | souřadnice políčka pro horní roh bedny v mapě | |
w | šířka bedny v políčkách | |
h | výška bedny v políčkách |
void GameBase::insert_bonus_ | ( | const std::string & | bonus_name, | |
const Animation & | anim | |||
) | [private] |
Pouze vytvoření bonusu.
Vytvoří bonus a vloží ho do seznamu pro pozdější náhodné vygenerování.
bonus_name | jméno bonusu v XML | |
anim | animace vkládaného bonusu (do mapy) |
void GameBase::insert_creature_ | ( | const Animation & | anim_up, | |
const Animation & | anim_right, | |||
const Animation & | anim_down, | |||
const Animation & | anim_left, | |||
const Animation & | anim_burned, | |||
Uint16 | speed, | |||
Uint16 | lives, | |||
Uint16 | ai | |||
) | [private] |
Pouze vytvoření příšery.
Vytvoří nestvůru na zadaných souřadnicích a vloží ji do seznamu pro pozdější vygenerování.
anim_left | animace pro otočení doleva | |
anim_up | animace pro otočení nahoru | |
anim_right | animace pro otočení doprava | |
anim_down | animace pro otočení dolů | |
anim_burned | animace pro umírání | |
speed | rychlost v pixelech za jednu časovou jednotku | |
lives | počet životů | |
ai | kvalita umělé inteligence |
void GameBase::insert_creature_ | ( | const Animation & | anim_up, | |
const Animation & | anim_right, | |||
const Animation & | anim_down, | |||
const Animation & | anim_left, | |||
const Animation & | anim_burned, | |||
Uint16 | x, | |||
Uint16 | y, | |||
Uint16 | speed, | |||
Uint16 | lives, | |||
Uint16 | ai | |||
) | [private] |
Vytvoření a vložení příšery do mapy.
Vytvoří nestvůru na zadaných souřadnicích a vloží ji do mapy. Zakáže vygenerovat na tomto místě bendu.
anim_left | animace pro otočení doleva | |
anim_up | animace pro otočení nahoru | |
anim_right | animace pro otočení doprava | |
anim_down | animace pro otočení dolů | |
anim_burned | animace pro umírání | |
x | souřadnice nestvůry v mapě | |
y | souřadnice nestvůry v mapě | |
speed | rychlost v pixelech za jednu časovou jednotku | |
lives | počet životů | |
ai | kvalita umělé inteligence |
void GameBase::insert_player_ | ( | const Animation & | anim_up, | |
const Animation & | anim_right, | |||
const Animation & | anim_down, | |||
const Animation & | anim_left, | |||
const Animation & | anim_burned, | |||
Uint16 | x, | |||
Uint16 | y, | |||
Uint16 | speed, | |||
Uint16 | num | |||
) | [private] |
Vytvoření a vložení hráče do mapy.
Vytvoří hráče na zadaných souřadnicích a vloží jej do mapy. Zakáže na tomto místě a v nejbližším okolí vygenerovat příšeru a bednu.
anim_left | animace pro otočení doleva | |
anim_up | animace pro otočení nahoru | |
anim_right | animace pro otočení doprava | |
anim_down | animace pro otočení dolů | |
anim_burned | animace pro umírání | |
x | souřadnice hráče v mapě | |
y | souřadnice hráče v mapě | |
speed | rychlost v pixelech za jednu časovou jednotku | |
num | číslo (pořadí) hráče |
void GameBase::clear_null_objects_ | ( | ) | [private] |
Vyhození nulových pointerů z base_array_.
Do pole mapy jsme u rozměrnějších objektů vkládali pravý objekt pouze na levé horní políčko. Na ostatní políčka, která zabírá, jsme vkládali nulové pointery, abychom zamezili umístění dalšího objektu na zabrané políčko. Nyní chceme tyto falešné nulové objekty vyhodit, jednak jsou nám už k ničemu a jednak by nám vadili při dalším použití base_array_.
friend class Game [friend] |
base_array_t GameBase::base_array_ [private] |
Pole mapy.
allowed_array_t GameBase::allowed_array_ [private] |
Pole mapy, na každém políčku TRUE, pokud je možné vygenerovat box.
Uint16 GameBase::allowed_boxes_count_ [private] |
Počet volných políček v boxes_array_.
generatedMOs_t GameBase::generatedMOs_ [private] |
Seznam neumístěných objektů.
std::vector< Player* > GameBase::players_ [private] |
Seznam hráčů.