#include <map.h>
Veřejné typy | |
typedef QPoint | Field |
Policko mapy (souradnice v jednotkach policek). | |
typedef QList< BombicMapObject * > | ObjectListT |
Seznam objektu mapy. | |
Veřejné sloty | |
void | setGeneratedBoxesCount (BombicMapObject *box, int count) |
Nastavit pocet boxu k nahodnemu vygenerovani. | |
void | setGeneratedCreaturesCount (BombicMapObject *creature, int count) |
Nastavit pocet priser k nahodnemu vygenerovani. | |
void | setGeneratedBonusesCount (BombicMapObject *bonus, int count) |
Nastavit pocet bonusu k nahodnemu vygenerovani. | |
void | setModified (bool modified=true) |
Nastavit jestli byla mapa zmenena. | |
Signály | |
void | generatedBoxAdded (BombicMapObject *object) |
Pridana generovana bedna. | |
void | generatedCreatureAdded (BombicMapObject *object) |
Pridana generovana prisera. | |
void | generatedBonusAdded (BombicMapObject *object) |
Pridan generovany bonus. | |
void | generatedBoxRemoved (BombicMapObject *object) |
Odstranena generovana bedna. | |
void | generatedCreatureRemoved (BombicMapObject *object) |
Odstranena generovana bedna. | |
void | generatedBonusRemoved (BombicMapObject *object) |
Odstranen generovany bonus. | |
Veřejné metody | |
BombicMap (const QString &name, int width, int height, BombicMapBackground *background, const QString &filename="") | |
Konstrukce prazdne mapy. | |
BombicMap * | createCopy (const QString &newBackground) |
Vytvorit kopii mapy s jinym pozadim. | |
BombicMap * | createCopy (int newWidth, int newHeight) |
Vytvorit kopii mapy s jinymi rozmery. | |
~BombicMap () | |
Destrukce mapy a jejich objektu. | |
bool | canInsert (BombicMapObject *object, const BombicMap::Field &dstField) |
Test zda lze vlozit objekt do mapy. | |
void | insert (BombicMapObject *object, const BombicMap::Field &dstField) |
Vlozit objekt do mapy. | |
void | remove (BombicMapObject *object) |
Odstranit objekt z mapy. | |
BombicMapObject * | objectOnTop (const BombicMap::Field &field) |
Objekt na vrchu policka. | |
const ObjectListT & | objectsOnField (const BombicMap::Field &field) |
Seznam objektu na policku. | |
MapObjectGenerator * | boxGenerator (const BombicMap::Field &field) |
Generator beden na policku. | |
MapObjectGenerator * | creatureGenerator (const BombicMap::Field &field) |
Generator priser na policku. | |
MapObjectGenerator * | bonusGenerator (const BombicMap::Field &field) |
Generator bonusu na policku. | |
const ObjectListT & | generatedBoxes () |
Vsechny boxy, ktere se v mape nahodne generuji. | |
const ObjectListT & | generatedCreatures () |
Vsechny prisery, ktere se v mape nahodne generuji. | |
const ObjectListT & | generatedBonuses () |
Vsechny bonusy, ktere se v mape nahodne generuji. | |
void | updateGeneratorsBlocking (const Field &field) |
Obnovit blokovani generatoru policka. | |
const QString & | name () |
Jmeno mapy. | |
const QString & | filename () |
Soubor, do ktereho se ma mapa ulozit. | |
void | setName (const QString &name) |
Jmeno mapy. | |
void | setFilename (const QString &filename) |
Soubor, do ktereho se ma mapa ulozit. | |
const QRect & | fieldsRect () |
Obdelnik mapy (v jednotkach policek). | |
BombicMapBackground * | background () |
Pozadi mapy. | |
bool | wasModified () |
Jestli byla mapa zmenena. | |
Privátní typy | |
typedef QVector< QVector < FieldSetT > > | FieldsT |
Typ matice policek mapy. | |
Privátní metody | |
void | insertBackgroundWalls () |
Vlozit zdi pozadi do mapy. | |
void | updateGeneratorsBlocking (const FieldSetT &fieldSet) |
Pokusit se odblokovat generovani. | |
void | setGeneratedObjectsCount (ObjectListT &objList, BombicMapObject *object, int count) |
Nastavit pocet objektu k nahodnemu vygenerovani. | |
void | addGeneratedMapObject (ObjectListT &objList, BombicMapObject *object) |
Pridat objekt k vygenerovani. | |
void | removeGeneratedMapObject (ObjectListT &objList, BombicMapObject *object) |
Odstranit objekt k vygenerovani. | |
Privátní atributy | |
QString | name_ |
Jmeno mapy. | |
QString | filename_ |
Soubor, do ktereho se pripadne mapa ulozi. | |
QRect | fieldsRect_ |
Obdelnik mapy (v jednotkach policek). | |
ObjectListT | generatedBoxes_ |
Seznam generovanych beden. | |
ObjectListT | generatedCreatures_ |
Seznam generovanych priser. | |
ObjectListT | generatedBonuses_ |
Seznam generovanych bonusu. | |
BombicMapBackground * | background_ |
Pozadi mapy. | |
FieldsT | fields_ |
Matice policek mapy, velikost odpovida fieldsRect_ . | |
bool | modified_ |
Jestli je mapa editovana. | |
Třídy | |
struct | FieldSetT |
Mnozina reprezentujici jedno policko. ... |
Udrzuje strukturu mapy, rozlozeni objektu mapy. V mape, jak je ulozena na disku jsou napevno umistene objekty a objekty, ktere se pri konstrukci mapy ve hre nahodne vygeneruji. V mape lze urcit, na ktera policka lze tyto objekty generovat, a na ktera ne. Vzhledem k tomu, ze lze generovat pouze prisery, bedny a bonusy, je implementace primo zamerena na tento konkretni pripad. U kazdeho policka jsou tedy vedeny generatory, kazdy z nich rika, zda-li lze na policku objekt generovat. Nasledne je BombicMap vizualizovana skrze MapScene
.
typedef QPoint BombicMap::Field |
Policko mapy (souradnice v jednotkach policek).
typedef QList<BombicMapObject *> BombicMap::ObjectListT |
Seznam objektu mapy.
typedef QVector< QVector< FieldSetT > > BombicMap::FieldsT [private] |
Typ matice policek mapy.
BombicMap::BombicMap | ( | const QString & | name, | |
int | width, | |||
int | height, | |||
BombicMapBackground * | background, | |||
const QString & | filename = "" | |||
) |
Konstrukce prazdne mapy.
Zkonstruuje mapu o rozmerech width
, height
s pozadim background
. Nova mapa se stava vlastnikem background
a to bude dealokovano pri destrukci mapy. Nove zkonstruovana mapa obsahuje pouze obvodove zdi pozadi a inicializovane generatory objektu (vsechna policka povolena pro generovani).
name | nazev mapy | |
width | sirska mapy v polickach | |
height | vyska mapy v polickach | |
background | pointer na pozadi | |
filename | soubor, do ktereho se ma mapa ulozit |
BombicMap::~BombicMap | ( | ) |
Destrukce mapy a jejich objektu.
Dealokuje vsechny (pevne i generovane) objekty mapy a pozadi.
BombicMap * BombicMap::createCopy | ( | const QString & | newBackground | ) |
Vytvorit kopii mapy s jinym pozadim.
newBackground | nazev noveho pozadi |
0 | Mapu nebylo mozne vytvorit. |
BombicMap * BombicMap::createCopy | ( | int | newWidth, | |
int | newHeight | |||
) |
Vytvorit kopii mapy s jinymi rozmery.
newWidth | nova sirka mapy | |
newHeight | nova vyska mapy |
0 | Mapu nebylo mozne vytvorit. |
bool BombicMap::canInsert | ( | BombicMapObject * | object, | |
const BombicMap::Field & | dstField | |||
) |
Test zda lze vlozit objekt do mapy.
Kontroluje, zda se objekt vejde do mapy (podle BombicMapObject::size() a BombicMapObject::toplapping()) a zda muze byt vkladany objekt na policku zaroven s objekty, ktere jiz jsou na polickach, do kterych objekt zasahuje (BombicMapObject::canBeWith()).
object | vkladany objekt | |
dstField | policko, na ktere chceme vlozit objekt (leve horni objektu) |
void BombicMap::insert | ( | BombicMapObject * | object, | |
const BombicMap::Field & | dstField | |||
) |
Vlozit objekt do mapy.
Vlozi objekt do mapy. Kontroluje pouze, jestli se objekt do mapy vejde. Nekontroluje toplapping objektu, a ostatni objekty na zasazenych polickach (viz BombicMap::canInsert()). Pokud objekt blokuje generovani, obstara i blokovani generatoru. Prebira vlastnictvi object
, ktery bude dealokovan v destruktoru mapy.
object | vkladany objekt | |
dstField | policko, na ktere chceme vlozit objekt (leve horni objektu) |
void BombicMap::remove | ( | BombicMapObject * | object | ) |
Odstranit objekt z mapy.
Odstrani objekt ze vsech policek, na kterych lezi. Vlastnictvi objektu prechazi na volajiciho, objekt jiz nebude dealokovan v destruktoru mapy. Obnovuje blokovani generatoru.
object | odstranovany objekt |
BombicMapObject * BombicMap::objectOnTop | ( | const BombicMap::Field & | field | ) |
Objekt na vrchu policka.
Pokud je policko field
a neni prazdne, ziska vrchni objekt na policku. Poradi objektu na policku je dano poradim pridavani do mapy (LIFO). Vyjimku tvori floorobject (objekt na zemi), ktery je v dusledku soucasti pozadi, proto se do mapy pridava jako spodni prvek policka.
field | policko, jehoz objekt chceme ziskat |
0 | Policko neni v mape nebo je prazdne. |
const BombicMap::ObjectListT & BombicMap::objectsOnField | ( | const BombicMap::Field & | field | ) |
Seznam objektu na policku.
@ details Seznam objektu na policku (objekty zustavaji vlastnictvim mapy).
Poradi objektu v seznamu je dano poradim na policku, zpusobene poradim pridavani do mapy.
field | policko, jehoz objekty chceme ziskat |
field
musi byt uvnitr mapy - neni provadena zadna kontrola
MapObjectGenerator * BombicMap::boxGenerator | ( | const BombicMap::Field & | field | ) |
Generator beden na policku.
Na kazdem policku vedeme zaznam o tom, zda lze na tomto policku generovat bedny. Toto je dotaz na strukturu konkretniho policka. Vracena struktura zustava ve vlastnictvi mapy.
field | policko, o nemz chceme informace |
0 | Zadane policko neni v mape. |
MapObjectGenerator * BombicMap::creatureGenerator | ( | const BombicMap::Field & | field | ) |
Generator priser na policku.
Na kazdem policku vedeme zaznam o tom, zda lze na tomto policku generovat prisery. Toto je dotaz na strukturu konkretniho policka. Vracena struktura zustava ve vlastnictvi mapy.
field | policko, o nemz chceme informace |
0 | Zadane policko neni v mape. |
MapObjectGenerator * BombicMap::bonusGenerator | ( | const BombicMap::Field & | field | ) |
Generator bonusu na policku.
Na kazdem policku vedeme zaznam o tom, zda lze na tomto policku generovat bonusy. Toto je dotaz na strukturu konkretniho policka. Vracena struktura zustava ve vlastnictvi mapy.
field | policko, o nemz chceme informace |
0 | Zadane policko neni v mape. |
const BombicMap::ObjectListT & BombicMap::generatedBoxes | ( | ) |
Vsechny boxy, ktere se v mape nahodne generuji.
const BombicMap::ObjectListT & BombicMap::generatedCreatures | ( | ) |
Vsechny prisery, ktere se v mape nahodne generuji.
const BombicMap::ObjectListT & BombicMap::generatedBonuses | ( | ) |
Vsechny bonusy, ktere se v mape nahodne generuji.
void BombicMap::updateGeneratorsBlocking | ( | const Field & | field | ) |
Obnovit blokovani generatoru policka.
Podle aktualne umistenych (i generovanych) objektu na policku field
nastavi blokovani generatoru.
field | policko, pro ktere se ma obnovit blokovani |
const QString & BombicMap::name | ( | ) |
Jmeno mapy.
const QString & BombicMap::filename | ( | ) |
Soubor, do ktereho se ma mapa ulozit.
void BombicMap::setName | ( | const QString & | name | ) |
Jmeno mapy.
name | nove jmeno mapy |
void BombicMap::setFilename | ( | const QString & | filename | ) |
Soubor, do ktereho se ma mapa ulozit.
filename | nove jmeno souboru |
const QRect & BombicMap::fieldsRect | ( | ) |
Obdelnik mapy (v jednotkach policek).
BombicMapBackground * BombicMap::background | ( | ) |
Pozadi mapy.
Vraceny pointer zustava ve vlastnictvi mapy a bude dealokovan v destruktoru mapy.
bool BombicMap::wasModified | ( | ) |
Jestli byla mapa zmenena.
void BombicMap::setGeneratedBoxesCount | ( | BombicMapObject * | box, | |
int | count | |||
) | [slot] |
Nastavit pocet boxu k nahodnemu vygenerovani.
Nastavi pocet beden stejneho druhu jako box
pro generovani. Tento pocet se tedy tyka beden, ktere maji shodny BombicMapObject::name()
.
box | prototyp bedny, jejiz pocet pro generovani nastavujeme | |
count | novy pocet generovanych beden zadaneho druhu |
void BombicMap::setGeneratedCreaturesCount | ( | BombicMapObject * | creature, | |
int | count | |||
) | [slot] |
Nastavit pocet priser k nahodnemu vygenerovani.
Nastavi pocet priser stejneho druhu jako creature
pro generovani. Tento pocet se tedy tyka priser, ktere maji shodny BombicMapObject::name()
.
creature | prototyp prisery, jejiz pocet pro generovani nastavujeme | |
count | novy pocet generovanych priser zadaneho druhu |
void BombicMap::setGeneratedBonusesCount | ( | BombicMapObject * | bonus, | |
int | count | |||
) | [slot] |
Nastavit pocet bonusu k nahodnemu vygenerovani.
Nastavi pocet bonusu stejneho druhu jako bonus
pro generovani. Tento pocet se tedy tyka bonusu, ktere maji shodny BombicMapObject::name()
.
bonus | prototyp bonusu, jehoz pocet pro generovani nastavujeme | |
count | novy pocet generovanych bonusu zadaneho druhu |
void BombicMap::setModified | ( | bool | modified = true |
) | [slot] |
Nastavit jestli byla mapa zmenena.
modified | jestli byla mapa zmenena (novy stav mapy) |
void BombicMap::generatedBoxAdded | ( | BombicMapObject * | object | ) | [signal] |
Pridana generovana bedna.
void BombicMap::generatedCreatureAdded | ( | BombicMapObject * | object | ) | [signal] |
Pridana generovana prisera.
void BombicMap::generatedBonusAdded | ( | BombicMapObject * | object | ) | [signal] |
Pridan generovany bonus.
void BombicMap::generatedBoxRemoved | ( | BombicMapObject * | object | ) | [signal] |
Odstranena generovana bedna.
void BombicMap::generatedCreatureRemoved | ( | BombicMapObject * | object | ) | [signal] |
Odstranena generovana bedna.
void BombicMap::generatedBonusRemoved | ( | BombicMapObject * | object | ) | [signal] |
Odstranen generovany bonus.
void BombicMap::insertBackgroundWalls | ( | ) | [private] |
Vlozit zdi pozadi do mapy.
Do mapy vlozi obvodove zdi definovane pozadim background_
.
void BombicMap::updateGeneratorsBlocking | ( | const FieldSetT & | fieldSet | ) | [private] |
Pokusit se odblokovat generovani.
Podle aktualne umistenych (i generovanych) objektu na policku field
nastavi blokovani generatoru.
fieldSet | policko (jeho obsah), pro ktere se ma obnovit blokovani |
void BombicMap::setGeneratedObjectsCount | ( | ObjectListT & | objList, | |
BombicMapObject * | object, | |||
int | count | |||
) | [private] |
Nastavit pocet objektu k nahodnemu vygenerovani.
Nastavi pocet objektu stejneho druhu jako object
pro generovani. Tento pocet se tedy tyka objektu, ktere maji shodny BombicMapObject::name()
.
objList | seznam generovanych objektu | |
object | prototyp objektu, jehoz pocet pro generovani nastavujeme | |
count | novy pocet generovanych objektu zadaneho druhu |
void BombicMap::addGeneratedMapObject | ( | ObjectListT & | objList, | |
BombicMapObject * | object | |||
) | [private] |
Pridat objekt k vygenerovani.
Prida generovany objekt do seznamu. Vlastnictvi objektu prechazi na mapu a objekt bude dealokovan v destruktoru mapy nebo pri odstranovani ze seznamu. Vyvola signal generatedMapObjectAdded().
objList | seznam generovanych objektu | |
object | pridavany objekt |
void BombicMap::removeGeneratedMapObject | ( | ObjectListT & | objList, | |
BombicMapObject * | object | |||
) | [private] |
Odstranit objekt k vygenerovani.
Odstrani generovany objekt ze seznamu. Vyvola signal generatedMapObjectRemoved().
objList | seznam generovanych objektu | |
object | odstranovany objekt |
QString BombicMap::name_ [private] |
Jmeno mapy.
QString BombicMap::filename_ [private] |
Soubor, do ktereho se pripadne mapa ulozi.
QRect BombicMap::fieldsRect_ [private] |
Obdelnik mapy (v jednotkach policek).
ObjectListT BombicMap::generatedBoxes_ [private] |
Seznam generovanych beden.
ObjectListT BombicMap::generatedCreatures_ [private] |
Seznam generovanych priser.
ObjectListT BombicMap::generatedBonuses_ [private] |
Seznam generovanych bonusu.
BombicMapBackground* BombicMap::background_ [private] |
Pozadi mapy.
FieldsT BombicMap::fields_ [private] |
Matice policek mapy, velikost odpovida fieldsRect_
.
bool BombicMap::modified_ [private] |
Jestli je mapa editovana.