Dokumentace třídy MapScene

Scena (vyzobrazeni) mapy a interakce s uzivatelem. ...

#include <map_scene.h>

Diagram tříd pro MapScene:

Collaboration graph
[vysvětlivky]

Seznam všech členů.

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.
MapObjectGeneratorgetRandomGenerator (ObjectGeneratorsT &generators)
 Ziskat nahodny generator.
BombicMapObjecttakeRandomObject (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

BombicMapmap_
 Mapa hry zobrazovana ve scene.
BombicMapObjectworkingObject_
 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. ...


Detailní popis

Scena (vyzobrazeni) mapy a interakce s uzivatelem.

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.


Dokumentace k členským typům

Typ mnoziny generatoru.


Dokumentace konstruktoru a destruktoru

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).

Parametry:
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.

Tato funkce volá...


Dokumentace k metodám

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.

Parametry:
object vkladany objekts
dstField policko, na ktere se ma objekt vlozit

Tato funkce volá...

Tuto funkci volají...

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.

Parametry:
object odstranovany objekt

Tato funkce volá...

Tuto funkci volají...

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().

Parametry:
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]

Zaznamenat zmenu generatoru beden.

Viz také:
registerGeneratorChange()

void MapScene::registerCreatureGeneratorChange (  )  [slot]

Zaznamenat zmenu generatoru priser.

Viz také:
registerGeneratorChange()

void MapScene::registerBonusGeneratorChange (  )  [slot]

Zaznamenat zmenu generatoru bonusu.

Viz také:
registerGeneratorChange()

void MapScene::addGeneratedBox ( BombicMapObject mapObj  )  [slot]

Pridat generovanou bednu.

Parametry:
mapObj objekt, ktery ma byt pridan

void MapScene::addGeneratedCreature ( BombicMapObject mapObj  )  [slot]

Pridat generovanou priseru.

Parametry:
mapObj objekt, ktery ma byt pridan

void MapScene::addGeneratedBonus ( BombicMapObject mapObj  )  [slot]

Pridat generovany bonus.

Parametry:
mapObj objekt, ktery ma byt pridan

void MapScene::removeGeneratedBox ( BombicMapObject mapObj  )  [slot]

Odstranit generovanou bednu.

Parametry:
mapObj objekt, ktery ma byt odstranen

void MapScene::removeGeneratedCreature ( BombicMapObject mapObj  )  [slot]

Odstranit generovanou priseru.

Parametry:
mapObj objekt, ktery ma byt odstranen

void MapScene::removeGeneratedBonus ( BombicMapObject mapObj  )  [slot]

Odstranit generovany bonus.

Parametry:
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).

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

void MapScene::mousePressEvent ( QGraphicsSceneMouseEvent *  event  )  [protected, virtual]

Handler stisku mysi.

Parametry:
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).

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

void MapScene::mouseDoubleClickEvent ( QGraphicsSceneMouseEvent *  event  )  [protected, virtual]

Handler dvojiteho kliknuti.

Odstrani ze sceny (a mapy) objekt, na ktery se dvojkliklo (je-li nejaky).

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

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.

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

void MapScene::dragLeaveEvent ( QGraphicsSceneDragDropEvent *  event  )  [protected, virtual]

Handler vystupu tazeni mysi.

Schova prvky znazornujici tazeny objekt.

Parametry:
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.

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

void MapScene::startDragging ( QGraphicsSceneMouseEvent *  event  )  [private]

Zacnout tazeni mysi.

Zkontroluje je-li pod mysi nejaky objekt k tazeni a nastartuje udalost tazeni tohoto objektu.

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

Tuto funkci volají...

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.

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

Tuto funkci volají...

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).

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

Tuto funkci volají...

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).

Parametry:
event udalost, ktera handler vyvolala

Tato funkce volá...

Tuto funkci volají...

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.

Parametry:
eventPos pozice udalosti (mysi) ve scene

Tato funkce volá...

Tuto funkci volají...

void MapScene::unselectField (  )  [private]

Zrusit vyber (odoznacit policko).

Odoznaci pripadne vybrane policko. Zrusi zobrazeni policka v MapFieldView.

Tuto funkci volají...

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.

Parametry:
mousePosition pozice mysi v pixelech
relatedObjectRect obdelik objektu, ktereho se akce mysi tyka
Návratová hodnota:
Leve horni policko objektu, kdyz si ho predstavime pod mysi.

Tuto funkci volají...

void MapScene::insertBackgroundFields (  )  [private]

Vlozit pozadi policek do sceny.

Prida a napozicuje graficke prvky pozadi mapy.

Tato funkce volá...

Tuto funkci volají...

void MapScene::insertObjectsGraphicsItems (  )  [private]

Vlozit graficke prvky objektu.

Vlozi do sceny popisky generatoru a pevne umistenych objektu.

Tato funkce volá...

Tuto funkci volají...

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.

Tato funkce volá...

void MapScene::insertGeneratorGraphicsItem ( MapObjectGenerator generator,
qreal  zDiff 
) [private]

Vlozit graficky prvek generatoru.

Parametry:
generator generator, jehoz graficky prvek chceme pridat
zDiff hodnota ktera bude pridana k souradnici Z pri pozicovani

Tato funkce volá...

Tuto funkci volají...

void MapScene::initObjectGenerators (  )  [private]

Inicializovat generatory objektu.

Inicializuje vsechny generatory mapy.

Viz také:
initObjectGenerator()

Tato funkce volá...

Tuto funkci volají...

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.

Parametry:
generator generator, ktery chceme inicializovat
availableGenerators seznam generatoru, ktere mohou generovat
registerGeneratorChangeMethod mistni slot pro zmenu generatoru
addGeneratedObjectMethod mistni slot pro pridani generovaneho objektu

Tato funkce volá...

Tuto funkci volají...

void MapScene::registerGeneratorChange ( MapObjectGenerator generator,
ObjectGeneratingToolsT tools 
) [private]

Zaznamenat zmenu generatoru.

Prida nebo odebere generator z availableGenerators. Pokud jej pridal, zkusi vygenerovat objekty.

Parametry:
generator generator, ktery zmenu vyvolal
tools pomucky pro vygenerovani

Tato funkce volá...

void MapScene::addGeneratedObject ( BombicMapObject mapObj,
ObjectGeneratingToolsT tools 
) [private]

Pridat generovany objekt.

Parametry:
mapObj objekt, ktery ma byt pridan
tools pomucky pro vygenerovani

Tato funkce volá...

void MapScene::removeGeneratedObject ( BombicMapObject mapObj,
ObjectGeneratingToolsT tools 
) [private]

Odstranit generovany objekt.

Parametry:
mapObj objekt, ktery ma byt odstranen
tools pomucky pro vygenerovani

Tato funkce volá...

void MapScene::generateObjects (  )  [private]

Generovat objekty k vygenerovani.

Pokusi se vygenerovat nevygenerovane objekty (bedny i prisery), pokud nejake jsou.

Tuto funkci volají...

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.

Parametry:
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.

Parametry:
generators generatory, z nichz nahodne vybirame
Návratová hodnota:
Nahodne vybrany generator.

Tuto funkci volají...

BombicMapObject * MapScene::takeRandomObject ( BombicMap::ObjectListT objects  )  [private]

Ziskat nahodny objekt.

Nahodne vybere jeden objekt mapy z objects a odstrani jej.

Parametry:
objects objekty, z nichz nahodne vybirame
Návratová hodnota:
Nahodne vybrany objekt mapy.

Tato funkce volá...

Tuto funkci volají...

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.

Parametry:
field policko mapy, pro ktere chceme rozestaveni udelat

Tato funkce volá...

Tuto funkci volají...

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.

Tuto funkci volají...

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().

Parametry:
objectRect obdelnik objektu, ktery ma insertItem predstavovat

Tuto funkci volají...

void MapScene::showCanInsertItem ( const QRect &  objectRect  )  [private]

Zobrazit pomocny prvek sceny zobrazujici, ze objekt lze vlozit.

Parametry:
objectRect obdelnik objektu, ktery ma insertItem predstavovat

Tato funkce volá...

Tuto funkci volají...

void MapScene::showCannotInsertItem ( const QRect &  objectRect  )  [private]

Zobrazit pomocny prvek sceny zobrazujici, ze objekt nelze vlozit.

Parametry:
objectRect obdelnik objektu, ktery ma insertItem predstavovat

Tato funkce volá...

Tuto funkci volají...


Dokumentace k friends

friend class MapFieldView [friend]


Dokumentace k datovým členům

Mapa hry zobrazovana ve scene.

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.

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.

Zda-li se maji (nebo spis nemaji) generovat objekty.


Dokumentace pro tuto třídu byla generována z následujících souborů:

Generováno Mon May 24 21:59:04 2010 pro projekt Bombic 2 map editor programem  doxygen 1.5.6