#include <map_scene.h>
Veřejné sloty | |
void | setWorkingObject (BombicMapObject *object) |
Nastavit pracovni objekt. | |
void | unsetWorkingObject () |
Zrusit pracovni objekt. | |
void | hideWorkingObject () |
Schovat pracovni objekt. | |
void | registerBoxGeneratorChange () |
Zaznamenat zmenu generatoru beden. | |
void | registerCreatureGeneratorChange () |
Zaznamenat zmenu generatoru priser. | |
void | registerBonusGeneratorChange () |
Zaznamenat zmenu generatoru bonusu. | |
void | addGeneratedBox (BombicMapObject *mapObj) |
Pridat generovanou bednu. | |
void | addGeneratedCreature (BombicMapObject *mapObj) |
Pridat generovanou priseru. | |
void | addGeneratedBonus (BombicMapObject *mapObj) |
Pridat generovany bonus. | |
void | removeGeneratedBox (BombicMapObject *mapObj) |
Odstranit generovanou bednu. | |
void | removeGeneratedCreature (BombicMapObject *mapObj) |
Odstranit generovanou priseru. | |
void | removeGeneratedBonus (BombicMapObject *mapObj) |
Odstranit generovany bonus. | |
Veřejné metody | |
MapScene (BombicMap *map, QObject *parent=0) | |
Zkonstruuje mapu a jeji scenu. | |
~MapScene () | |
Destruuje mapu a jeji scenu. | |
void | insert (BombicMapObject *object, const BombicMap::Field &dstField) |
Vlozit objekt do sceny. | |
void | remove (BombicMapObject *object) |
Odstranit objekt ze sceny. | |
Chráněné metody | |
virtual void | mouseMoveEvent (QGraphicsSceneMouseEvent *event) |
Handler pohybu mysi. | |
virtual void | mousePressEvent (QGraphicsSceneMouseEvent *event) |
Handler stisku mysi. | |
virtual void | mouseReleaseEvent (QGraphicsSceneMouseEvent *event) |
Handler uvoleni mysi. | |
virtual void | mouseDoubleClickEvent (QGraphicsSceneMouseEvent *event) |
Handler dvojiteho kliknuti. | |
virtual void | dragMoveEvent (QGraphicsSceneDragDropEvent *event) |
Handler pohybu tazeni mysi. | |
virtual void | dragLeaveEvent (QGraphicsSceneDragDropEvent *event) |
Handler vystupu tazeni mysi. | |
virtual void | dropEvent (QGraphicsSceneDragDropEvent *event) |
Handler uvolneni tazeni mysi. | |
Privátní typy | |
typedef QSet < MapObjectGenerator * > | ObjectGeneratorsT |
Typ mnoziny generatoru. | |
Privátní sloty | |
void | toggleObjectGenerating () |
Prepnout, zda generovat objekty ci ne. | |
Privátní metody | |
void | startDragging (QGraphicsSceneMouseEvent *event) |
Zacnout tazeni mysi. | |
void | moveWorkingObject (QGraphicsSceneMouseEvent *event) |
Pohnout pracovnim objektem ve scene. | |
void | insertWorkingObject (QGraphicsSceneMouseEvent *event) |
Vlozit pracovni objekt do sceny. | |
void | removeClickedObject (QGraphicsSceneMouseEvent *event) |
Odstranit objekt, na ktery se kliklo, ze sceny. | |
void | selectField (const QPointF &eventPos) |
Vybrat (oznacit) policko. | |
void | unselectField () |
Zrusit vyber (odoznacit policko). | |
BombicMap::Field | getField (const QPointF &mousePosition, const QRect &relatedObjectRect=QRect(0, 0, 1, 1)) |
Policko mapy, ktereho se tyka pozice mysi. | |
void | insertBackgroundFields () |
Vlozit pozadi policek do sceny. | |
void | insertObjectsGraphicsItems () |
Vlozit graficke prvky objektu. | |
void | removeGeneratedObjectsFromMap () |
Odstranit vygenerovane objekty z mapy. | |
void | insertGeneratorGraphicsItem (MapObjectGenerator *generator, qreal zDiff) |
Vlozit graficky prvek generatoru. | |
void | initObjectGenerators () |
Inicializovat generatory objektu. | |
void | initObjectGenerator (MapObjectGenerator *generator, ObjectGeneratorsT &availableGenerators, const char *registerGeneratorChangeMethod, const char *addGeneratedObjectMethod) |
Inicializovat generator objektu. | |
void | registerGeneratorChange (MapObjectGenerator *generator, ObjectGeneratingToolsT &tools) |
Zaznamenat zmenu generatoru. | |
void | addGeneratedObject (BombicMapObject *mapObj, ObjectGeneratingToolsT &tools) |
Pridat generovany objekt. | |
void | removeGeneratedObject (BombicMapObject *mapObj, ObjectGeneratingToolsT &tools) |
Odstranit generovany objekt. | |
void | generateObjects () |
Generovat objekty k vygenerovani. | |
void | generateObjects (ObjectGeneratingToolsT &tools) |
Generovat objekty k vygenerovani. | |
MapObjectGenerator * | getRandomGenerator (ObjectGeneratorsT &generators) |
Ziskat nahodny generator. | |
BombicMapObject * | takeRandomObject (BombicMap::ObjectListT &objects) |
Ziskat nahodny objekt. | |
void | sortGraphicsOnField (const BombicMap::Field &field) |
Umisti prisery na policku, aby nebyly uplne v zakrytu. | |
void | initHelperItems () |
Inicializovat pomocne prvky sceny. | |
void | showInsertionHelperItem (const QRect &objectRect) |
Zobrazit pomocny prvek sceny zobrazujici objekt pri vkladani. | |
void | showCanInsertItem (const QRect &objectRect) |
Zobrazit pomocny prvek sceny zobrazujici, ze objekt lze vlozit. | |
void | showCannotInsertItem (const QRect &objectRect) |
Zobrazit pomocny prvek sceny zobrazujici, ze objekt nelze vlozit. | |
Privátní atributy | |
BombicMap * | map_ |
Mapa hry zobrazovana ve scene. | |
BombicMapObject * | workingObject_ |
Pracovni objekt (v cizim vlastnictvi). | |
QGraphicsRectItem * | insertionHelperItem_ |
Pomocny prvek sceny zobrazujici objekt pri vkladani. | |
QGraphicsRectItem * | selectedFieldHelperItem_ |
Pomocny prvek sceny zobrazujici vybrane policko. | |
BombicMap::Field | selectedField_ |
Vybrane (oznacene) policko. | |
ObjectGeneratingToolsT | boxesGeneratingTools_ |
Pomucky pro generovani beden. | |
ObjectGeneratingToolsT | creaturesGeneratingTools_ |
Pomucky pro generovani priser. | |
ObjectGeneratingToolsT | bonusesGeneratingTools_ |
Pomucky pro generovani bonusu. | |
bool | mousePressed_ |
Zda-li je aktualne stisknuto tlacitko mysi, na ktere se da navazat uvolnenim za vzniku kliknuti. | |
bool | mouseClicked_ |
Zda-li bylo nevyuzite kliknuti za vzniku dvojkliku. | |
bool | doObjectGenerating_ |
Zda-li se maji (nebo spis nemaji) generovat objekty. | |
Friends | |
class | MapFieldView |
Třídy | |
struct | ObjectGeneratingToolsT |
Pomucky pro generovani objektu. ... |
Scena mapy je zobrazena v MapView, zpracovava uzivateluv vstup a sofistikovane zobrazuje mapu. V ramci MapScene je podporovan drag and drop, lze vkladat objekt vybrany v MapObjectPalette. Zaroven provadi za pomoci generatoru nahodne generovani objektu mapy a spravuje nevygenerovane objekty.
typedef QSet<MapObjectGenerator *> MapScene::ObjectGeneratorsT [private] |
Typ mnoziny generatoru.
MapScene::MapScene | ( | BombicMap * | map, | |
QObject * | parent = 0 | |||
) |
Zkonstruuje mapu a jeji scenu.
Vytvori scenu mapy map
. Prebira vlastnictvi map
a pri ruseni tuto mapu dealokuje. Nova scena se spoji (connect()
) s paletou objektu a s pohledem na scenu. Pripravi se insertion helper items (zastupne graficke prvky pouzivane pri vkladani objektu, kdyz nechceme zobrazit primo obrazek objektu).
map | zobrazovana mapa | |
parent | rodicovsky objekt |
MapScene::~MapScene | ( | ) |
Destruuje mapu a jeji scenu.
Odoznaci policko. Dealokuje pruvodce nastaveni generovanych objektu. Dealokuje mapu, ktera je ve scene zobrazena.
void MapScene::insert | ( | BombicMapObject * | object, | |
const BombicMap::Field & | dstField | |||
) |
Vlozit objekt do sceny.
Vlozenim objektu do sceny (mapy) se stava vlastnikem objektu mapa, a objekt bude dealokovan pri dealokaci mapy.
object | vkladany objekts | |
dstField | policko, na ktere se ma objekt vlozit |
void MapScene::remove | ( | BombicMapObject * | object | ) |
Odstranit objekt ze sceny.
Odstranenim objektu ze sceny (mapy) prechazi jeho vlastnictvi na volajiciho. Objekt jiz nebude dealokovan pri dealokaci mapy.
object | odstranovany objekt |
void MapScene::setWorkingObject | ( | BombicMapObject * | object | ) | [slot] |
Nastavit pracovni objekt.
Vlastnictvi pracovniho objektu zustava volajicimu. Nez volajici zrusi ci modifikuje tento objekt, mel by vzdy zavola unsetWorkingObject().
object | nastavovany objekt |
void MapScene::unsetWorkingObject | ( | ) | [slot] |
Zrusit pracovni objekt.
Vlastnikem pracovniho objektu neni MapScene ale volajici, tato fce tedy jen zrusi referenci na pracovni objekt.
void MapScene::hideWorkingObject | ( | ) | [slot] |
Schovat pracovni objekt.
Odstrani ze sceny pracovni objekt (je-li nejaky) a skryje jeho pripadny zastupny prvek insertionHelperItem_
.
void MapScene::registerBoxGeneratorChange | ( | ) | [slot] |
void MapScene::registerCreatureGeneratorChange | ( | ) | [slot] |
void MapScene::registerBonusGeneratorChange | ( | ) | [slot] |
void MapScene::addGeneratedBox | ( | BombicMapObject * | mapObj | ) | [slot] |
Pridat generovanou bednu.
mapObj | objekt, ktery ma byt pridan |
void MapScene::addGeneratedCreature | ( | BombicMapObject * | mapObj | ) | [slot] |
Pridat generovanou priseru.
mapObj | objekt, ktery ma byt pridan |
void MapScene::addGeneratedBonus | ( | BombicMapObject * | mapObj | ) | [slot] |
Pridat generovany bonus.
mapObj | objekt, ktery ma byt pridan |
void MapScene::removeGeneratedBox | ( | BombicMapObject * | mapObj | ) | [slot] |
Odstranit generovanou bednu.
mapObj | objekt, ktery ma byt odstranen |
void MapScene::removeGeneratedCreature | ( | BombicMapObject * | mapObj | ) | [slot] |
Odstranit generovanou priseru.
mapObj | objekt, ktery ma byt odstranen |
void MapScene::removeGeneratedBonus | ( | BombicMapObject * | mapObj | ) | [slot] |
Odstranit generovany bonus.
mapObj | objekt, ktery ma byt odstranen |
void MapScene::toggleObjectGenerating | ( | ) | [private, slot] |
Prepnout, zda generovat objekty ci ne.
Prepne generovani objektu. Objekty bud vygeneruje, nebo je naopak z mapy odstrani.
void MapScene::mouseMoveEvent | ( | QGraphicsSceneMouseEvent * | event | ) | [protected, virtual] |
Handler pohybu mysi.
Pri zmacknutem tlacitku mysi nastartuje tazeni objektu, jinak hybne pracovnim objektem (je-li nejaky).
event | udalost, ktera handler vyvolala |
void MapScene::mousePressEvent | ( | QGraphicsSceneMouseEvent * | event | ) | [protected, virtual] |
Handler stisku mysi.
event | udalost, ktera handler vyvolala |
void MapScene::mouseReleaseEvent | ( | QGraphicsSceneMouseEvent * | event | ) | [protected, virtual] |
Handler uvoleni mysi.
Pri predchozim stisku tlacitka (dohromady kliknuti) vlozi do sceny (a mapy) pracovni objekt (je-li nejaky).
event | udalost, ktera handler vyvolala |
void MapScene::mouseDoubleClickEvent | ( | QGraphicsSceneMouseEvent * | event | ) | [protected, virtual] |
Handler dvojiteho kliknuti.
Odstrani ze sceny (a mapy) objekt, na ktery se dvojkliklo (je-li nejaky).
event | udalost, ktera handler vyvolala |
void MapScene::dragMoveEvent | ( | QGraphicsSceneDragDropEvent * | event | ) | [protected, virtual] |
Handler pohybu tazeni mysi.
Mame-li nejaky tazeny objekt, zobrazi zastupny prvek ve spravne velikosti podle toho jestli lze na tuto pozici mysi tazeny objekt premistit ci nikoli.
event | udalost, ktera handler vyvolala |
void MapScene::dragLeaveEvent | ( | QGraphicsSceneDragDropEvent * | event | ) | [protected, virtual] |
Handler vystupu tazeni mysi.
Schova prvky znazornujici tazeny objekt.
event | udalost, ktera handler vyvolala |
void MapScene::dropEvent | ( | QGraphicsSceneDragDropEvent * | event | ) | [protected, virtual] |
Handler uvolneni tazeni mysi.
Mame-li nejaky tazeny objekt a lze jej na pozici mysi vlozit, presune tazeny objekt. Schova prvny znazornujici tazeny objekt.
event | udalost, ktera handler vyvolala |
void MapScene::startDragging | ( | QGraphicsSceneMouseEvent * | event | ) | [private] |
Zacnout tazeni mysi.
Zkontroluje je-li pod mysi nejaky objekt k tazeni a nastartuje udalost tazeni tohoto objektu.
event | udalost, ktera handler vyvolala |
void MapScene::moveWorkingObject | ( | QGraphicsSceneMouseEvent * | event | ) | [private] |
Pohnout pracovnim objektem ve scene.
Je-li nejaky pracovni objekt, pohne s nim podle pozice mysi. Lze-li objekt na tuto pozici vlozit, vlozi do sceny (ale nikoli do mapy) primo tento objekt, v opacnem pripade zobrazi na teto pozici zastupnou insertionHelperItem_
ve spravne velikosti a vyznamu cannot insert.
event | udalost, ktera handler vyvolala |
void MapScene::insertWorkingObject | ( | QGraphicsSceneMouseEvent * | event | ) | [private] |
Vlozit pracovni objekt do sceny.
Je-li nejaky pracovni objekt, a lze-li jej na pozici mysi vlozit, vlozi kopii pracovniho objektu do sceny (a mapy).
event | udalost, ktera handler vyvolala |
void MapScene::removeClickedObject | ( | QGraphicsSceneMouseEvent * | event | ) | [private] |
Odstranit objekt, na ktery se kliklo, ze sceny.
Zkontroluje je-li pod mysi nejaky objekt k odstraneni a pripadne jej odstrani (a dealokuje).
event | udalost, ktera handler vyvolala |
void MapScene::selectField | ( | const QPointF & | eventPos | ) | [private] |
Vybrat (oznacit) policko.
Zkontroluje je-li pod mysi nejake policko a pripadne jej oznaci jako vybrane a zobrazi jej v detailu v MapFieldView
.
eventPos | pozice udalosti (mysi) ve scene |
void MapScene::unselectField | ( | ) | [private] |
Zrusit vyber (odoznacit policko).
Odoznaci pripadne vybrane policko. Zrusi zobrazeni policka v MapFieldView
.
BombicMap::Field MapScene::getField | ( | const QPointF & | mousePosition, | |
const QRect & | relatedObjectRect = QRect(0,0,1,1) | |||
) | [private] |
Policko mapy, ktereho se tyka pozice mysi.
Mame objekt urcite velikosti (defaultne 1x1 policko). Objekt si predstavime vycentrovany pod pozici mysi. Zajima nas umisteni leveho horniho policka objektu.
mousePosition | pozice mysi v pixelech | |
relatedObjectRect | obdelik objektu, ktereho se akce mysi tyka |
void MapScene::insertBackgroundFields | ( | ) | [private] |
Vlozit pozadi policek do sceny.
Prida a napozicuje graficke prvky pozadi mapy.
void MapScene::insertObjectsGraphicsItems | ( | ) | [private] |
Vlozit graficke prvky objektu.
Vlozi do sceny popisky generatoru a pevne umistenych objektu.
void MapScene::removeGeneratedObjectsFromMap | ( | ) | [private] |
Odstranit vygenerovane objekty z mapy.
Vyhodi vsechny generovane objekty z mapy. Pokud je zapnute generovani objektu, tak ho na dobu odstranovani objektu vypne, aby se objekty opet nevygenerovali.
void MapScene::insertGeneratorGraphicsItem | ( | MapObjectGenerator * | generator, | |
qreal | zDiff | |||
) | [private] |
Vlozit graficky prvek generatoru.
generator | generator, jehoz graficky prvek chceme pridat | |
zDiff | hodnota ktera bude pridana k souradnici Z pri pozicovani |
void MapScene::initObjectGenerators | ( | ) | [private] |
Inicializovat generatory objektu.
Inicializuje vsechny generatory mapy.
void MapScene::initObjectGenerator | ( | MapObjectGenerator * | generator, | |
ObjectGeneratorsT & | availableGenerators, | |||
const char * | registerGeneratorChangeMethod, | |||
const char * | addGeneratedObjectMethod | |||
) | [private] |
Inicializovat generator objektu.
Pripoji generator
do slotu pro zmenu generatoru a pro pridani generovaneho objektu. Prida generator
mezi generatory, ktere mohou generovat samozrejme jen pokud muze generovat.
generator | generator, ktery chceme inicializovat | |
availableGenerators | seznam generatoru, ktere mohou generovat | |
registerGeneratorChangeMethod | mistni slot pro zmenu generatoru | |
addGeneratedObjectMethod | mistni slot pro pridani generovaneho objektu |
void MapScene::registerGeneratorChange | ( | MapObjectGenerator * | generator, | |
ObjectGeneratingToolsT & | tools | |||
) | [private] |
Zaznamenat zmenu generatoru.
Prida nebo odebere generator
z availableGenerators
. Pokud jej pridal, zkusi vygenerovat objekty.
generator | generator, ktery zmenu vyvolal | |
tools | pomucky pro vygenerovani |
void MapScene::addGeneratedObject | ( | BombicMapObject * | mapObj, | |
ObjectGeneratingToolsT & | tools | |||
) | [private] |
Pridat generovany objekt.
mapObj | objekt, ktery ma byt pridan | |
tools | pomucky pro vygenerovani |
void MapScene::removeGeneratedObject | ( | BombicMapObject * | mapObj, | |
ObjectGeneratingToolsT & | tools | |||
) | [private] |
Odstranit generovany objekt.
mapObj | objekt, ktery ma byt odstranen | |
tools | pomucky pro vygenerovani |
void MapScene::generateObjects | ( | ) | [private] |
Generovat objekty k vygenerovani.
Pokusi se vygenerovat nevygenerovane objekty (bedny i prisery), pokud nejake jsou.
void MapScene::generateObjects | ( | ObjectGeneratingToolsT & | tools | ) | [private] |
Generovat objekty k vygenerovani.
Pokusi se vygenerovat nevygenerovane objekty objectsToGenerate
do generatoru availableGenerators
. Pokud nejake (objekty i generatory) jsou. Pokud je generovani zakazano (doObjectGenerating_
neni nastaveno) nedela nic.
tools | pomucky pro vygenerovani |
MapObjectGenerator * MapScene::getRandomGenerator | ( | ObjectGeneratorsT & | generators | ) | [private] |
Ziskat nahodny generator.
Nahodne vybere jeden generator z generators
. Ten vrati ale zaroven ponecha v generators
.
generators | generatory, z nichz nahodne vybirame |
BombicMapObject * MapScene::takeRandomObject | ( | BombicMap::ObjectListT & | objects | ) | [private] |
Ziskat nahodny objekt.
Nahodne vybere jeden objekt mapy z objects
a odstrani jej.
objects | objekty, z nichz nahodne vybirame |
void MapScene::sortGraphicsOnField | ( | const BombicMap::Field & | field | ) | [private] |
Umisti prisery na policku, aby nebyly uplne v zakrytu.
Kdybychom povolili vkladani vice stejnych objektu na jedno policko a dale nic neresili, budou objekty na policku v zakrytu a nebude ani trochu patrne, kolik asi jich tam je (a ktere). Tato fce napomuze tento problem resit tim, ze vychyli objekty na policku tak, aby ta co je nahore byla plne videt, a ostatni v zakrytu naznacovaly, kolik jich je.
field | policko mapy, pro ktere chceme rozestaveni udelat |
void MapScene::initHelperItems | ( | ) | [private] |
Inicializovat pomocne prvky sceny.
Inicializuje prvek, ktery se pouzije, kdyz uzivatel vklada do sceny objekt, ale nechceme zobrazit primo tento objekt. Napr. protoze na konkretni misto sceny to neni mozne. Nechceme mast uzivatele duplikovanim obrazku objektu. Dale inicializuje prvek, ktery se pouzije pro zvyrazneni policka, ktere je detailne zobrazeno ve field view. Po inicializaci prvky do sceny vlozi a skryje.
void MapScene::showInsertionHelperItem | ( | const QRect & | objectRect | ) | [private] |
Zobrazit pomocny prvek sceny zobrazujici objekt pri vkladani.
Zobrazi na misto objektu, jehoz obdelnik je objectRect
pomocny graficky prvek, tak, jak byl naposledy nastaven. Vetsinou chcete ale zaroven nastavit vyznam prvku, pouzijte proto radsi showCanInsertItem()
nebo showCannotInsertItem()
.
objectRect | obdelnik objektu, ktery ma insertItem predstavovat |
void MapScene::showCanInsertItem | ( | const QRect & | objectRect | ) | [private] |
Zobrazit pomocny prvek sceny zobrazujici, ze objekt lze vlozit.
objectRect | obdelnik objektu, ktery ma insertItem predstavovat |
void MapScene::showCannotInsertItem | ( | const QRect & | objectRect | ) | [private] |
Zobrazit pomocny prvek sceny zobrazujici, ze objekt nelze vlozit.
objectRect | obdelnik objektu, ktery ma insertItem predstavovat |
friend class MapFieldView [friend] |
BombicMap* MapScene::map_ [private] |
Mapa hry zobrazovana ve scene.
BombicMapObject* MapScene::workingObject_ [private] |
Pracovni objekt (v cizim vlastnictvi).
QGraphicsRectItem* MapScene::insertionHelperItem_ [private] |
Pomocny prvek sceny zobrazujici objekt pri vkladani.
QGraphicsRectItem* MapScene::selectedFieldHelperItem_ [private] |
Pomocny prvek sceny zobrazujici vybrane policko.
BombicMap::Field MapScene::selectedField_ [private] |
Vybrane (oznacene) policko.
Pomucky pro generovani beden.
Pomucky pro generovani priser.
Pomucky pro generovani bonusu.
bool MapScene::mousePressed_ [private] |
Zda-li je aktualne stisknuto tlacitko mysi, na ktere se da navazat uvolnenim za vzniku kliknuti.
bool MapScene::mouseClicked_ [private] |
Zda-li bylo nevyuzite kliknuti za vzniku dvojkliku.
bool MapScene::doObjectGenerating_ [private] |
Zda-li se maji (nebo spis nemaji) generovat objekty.