
Obecné: je třeba se domluvit, kde a jak reprezentovat databázi, asi
jaku SQL skript, který ji založí?

=========== Návrh databáze/připojení ===========================================

Bude jeden globální objekt (singleton), který bude reprezentovat připojení k databázi.
Objekt nebude thread-safe, neboť se k němu bude přistupovat jenom pomocí jednoho
vlákna. Objekt bude obsahovat připojení k databázi, transakci a předpřipravené query.
Jelikož knihovna IBPP neumožňuje použít předpřipravené query bez kontextu běžící
transakce, bude pořád běžet transakce, která se bude potvrzovat pomocí CommitRetain,
což je speciální příkaz Commit, který transakci commitne, ale zachová její kontext,
tj. z pohledu uživatele se jedná o potvrzení transakce a okamžité nastartování nové.

Metody:
 - bool open(server, database, user, password)
   Zkusí se připojit k databázi, pokud to vyjde, vrátí true, jinak false, nehází
   žádné výjimky. Engine hry tuto funkci zavolá a postupně bude nahrávat všechna 
   data. Zároveň tato metoda nastartuje transakci a připraví všechny dotazy.
   
 - void close()
   Uzavře připojení k databázi.
   
 - void commit()
   Zavolá commitRetain na databázi, tj. commitne transakci a hned vytvoří novou,
   se stejným kontextem.
   

============ Scientific tree ===================================================

Jednotlivé stromy pro uživatele budou reprezentovány jako řádky jediné tabulky
SCTREE. Tabulka bude mít jako primární klíč dvojici (ID uživatele, ID uzlu stromu).
ID uzlu stromů se vygenerují vždy stejně pro každý strom, při zavolání konstruktoru
stromů.


|-------------------------------------------------------------------------|
| Tabulka SCTREE    |                             |                       |
| Atribut           |            LeafNode         |       InnerNode       |
|-------------------------------------------------------------------------|
| IDUSER                id hráče, kterému patří ten uzel vědeckého stromu |
| IDNODE                id uzlu ve stromu, pro stejný uzel v různých      |
|                       stromech je stejné                                |
| ASSIGNEDPTS           body přidelené pro uzel, assignedPts_             |
|-------------------------------------------------------------------------|
| INTEGER1          |   freePtsInNode_            |           --          |
| ICOMP1            |   itemComponents_[0].int    |           --          |
| DCOMP1            |   itemComponents_[0].double |           --          |
| ICOMP2            |   itemComponents_[1].int    |           --          |
| DCOMP2            |   itemComponents_[1].double |           --          |
| ICOMP3            |   itemComponents_[2].int    |           --          |
| DCOMP3            |   itemComponents_[2].double |           --          |
| ICOMP4            |   itemComponents_[3].int    |           --          |
| DCOMP4            |   itemComponents_[3].double |           --          |
| ICOMP5            |   itemComponents_[4].int    |           --          |
| DCOMP5            |   itemComponents_[4].double |           --          |
|-------------------------------------------------------------------------|

Uzly stromu budou číslovány od jedné, neboť potřebujeme ještě uložit data stromu,
tj. proměnnou freeTokens_ v hlavním objektu toho stromu. Ty budou uloženy jako
záznam (IDUSER, 0, ASSIGNEDPTS := freeTokens_), neboť uzel stromu s číslem 0 
neexistuje.

Datové typy: Firebird neumí UNSIGNED integery, proto tam, kde je unsigned long,
nebo něco podobného, navrhuji dát typ INT64, tj. atributy IDUSER, IDNODE, ASSIGNEDPTS,
INTEGER1 budou typu INT64. unsigned short může být reprezentován jako INTEGER,
protože má pouze 16 bitů, tj. hodnoty ICOMPx budou typu INTEGER a DOUBLE1, DCOMPx 
typu DOUBLE.

Je třeba zvážit oindexování této tabulky, navrhuji asi složený index na primárním 
klíči, tj (IDUSER, IDNODE). 

Co se týče metod ukládání, navrhuji tyto metody v scientificTree: 
 - void insertIntoDB(id userId)
 - void loadFromDB(id userId)
 - void storeToDB(id userId)
 - void deleteFromDB(id userId)
 - void markTreeNode(unsigned long& currentNodeIndex)

Protože většina (resp. všechny, co jsem našel) políček je private, bude nutné
upgradovat také tyto objekty o další nové metody a asi přidat nějaké položky.

=============== Realm class ====================================================

Předpoklad: id říše = id uživatele (každý uživatel má jednu říši?), pokud to
neplatí, tak změníme IDUSER na IDREALM a bude to id říše.

realmClass: Zde bude nutné uložit dva vektory pro každého hráče, jeden pro lodě,
jeden pro základny. Budou tedy dvě tabulky s atributy id hráče a id základny/lodě
s tím, že tyto záznamy budou celé primární klíč. Zároveň bude vytvořen index na
id hráče, aby byly snadné selecty na seznamy lodí/základen jednotlivých hráčů.

|-------------------------------------------------------------------------|
| Tabulka REALMBASES |                                                    |
| Atribut            |            Význam / položka                        |
|-------------------------------------------------------------------------|
| IDUSER                id hráče, kterému patří základna                  |
| IDBASE                id základny, která patří hráči s id IDUSER        |
|-------------------------------------------------------------------------|

|-------------------------------------------------------------------------|
| Tabulka REALMSHIPS |                                                    |
| Atribut            |            Význam / položka                        |
|-------------------------------------------------------------------------|
| IDUSER                id hráče, kterému patří loď                       |
| IDSHIP                id lodě, která patří hráči s id IDUSER            |
|-------------------------------------------------------------------------|

Datové typy budou ve všech případech INT64.

============= Item patterns ====================================================

Vzory jednotlivých věcí ve hře, statická tabulka. Jelikož je tato tabulka 
statická a vždy stejná, budou se do ní data nahrávat spolu s vytvářením tabulek 
ve speciálním skriptu. Výčet položek je v souboru item_patterns.h. Jeden řádek
tabulky bude odpovídat jednomu vzoru. Vzory budou dále obsahovat položky jako 
například náklady na výrobu apod.

|-------------------------------------------------------------------------|
| Tabulka ITEMPATTERNS  |                                                 |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| IDPATTERN               id vzoru, konstanty např. PATTERN_ID_PROBE      |
| DENSITY                 density_                                        |
| TRANSPORT               transport_                                      |
| CONSULREI               constructionUlrei_                              |
| CONSTITANIUM            constructionTitanium_                           |
| CONSDEUTERIUM           constructionDeuterium_                          |
| CONSHEAVYWATER          constructionHeavyWater_                         |
| REPAIRABILITY           repairability_                                  |
| MOUNTING                mounting_                                       |
| MINWEIGHT               minWeight_                                      |
| MAXWEIGHT               maxWeight_                                      |
|-------------------------------------------------------------------------|

Jako datový typ bude IDPATTERN INTEGER, jinde budou všude INT64. Předpokládá se,
že to nepřeteče, tj. že bude stačit 63 bitů, jinak nevím, jak to reprezentovat,
jako double?

============= Items ============================================================

Objekty ve hře jsou v hierarchické struktuře, ale budou reprezentovány jednou 
velkou tabulkou, kde co jedna instance nějakého objektu, to jeden řádek 
v databázové tabulce. Jelikož se musí rozlišit, který objekt se má vytvořit,
musí být v databázové tabulce uložen také typ objektu, což jednoznačně určuje
soukromá proměnná patternID_ ve společném předku. Jednotlivé objekty obsahují
proměnné typu double a integer, což bude řešeno spoustou přídavných atributů
v jediné námi definované tabulce.

Tabulka bude vypsána po částech, pro každou třídu bude napsané jen mapování,
jelikož třídy od sebe dědí, bude to mít inkrementální charakter. Následuje 
společná část:

|-------------------------------------------------------------------------|
| Tabulka ITEMS     |                             |                       |
| Atribut           |            separate         |       stackable       |
|-------------------------------------------------------------------------|
| IDITEM                            id instance objektu ve hře            |
| PATTERN                           pattern (druh) objektu ve hře         |
| WEIGHT                            váha objektu                          |
|-------------------------------------------------------------------------|
| DAMAGE            |          damage_            |           --          |
| WORKING           |             --              |        working_       |
| DAMAGED           |             --              |        damaged_       |
|-------------------------------------------------------------------------|

OBJEKT: energeticAccumulatorClass
|-------------------------------------------------------------------------|
|              Atributy objektu energeticAccumulatorClass                 |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               accumulator_                      |
| I2                    |               charging_                         |
| I3                    |               energy_                           |
|-------------------------------------------------------------------------|

OBJEKT: navigationComputerClass
|-------------------------------------------------------------------------|
|              Atributy objektu navigationComputerClass                   |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| D1                    |               maxSpeedToC_                      |
|-------------------------------------------------------------------------|

OBJEKT: quarkGluonCoreClass
|-------------------------------------------------------------------------|
|              Atributy objektu quarkGluonCoreClass                       |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| D1                    |               maxSpeedToC_                      |
| I1                    |               consumption_                      |
|-------------------------------------------------------------------------|

OBJEKT: subspaceBeaconClass
|-------------------------------------------------------------------------|
|              Atributy objektu subspaceBeaconClass                       |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| D1                    |               maxSpeedToC_                      |
|-------------------------------------------------------------------------|

OBJEKT: inertialDampersClass
|-------------------------------------------------------------------------|
|              Atributy objektu inertialDampersClass                      |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| D1                    |               maxSpeedToC_                      |
|-------------------------------------------------------------------------|

OBJEKT: impulsJetEngineClass
|-------------------------------------------------------------------------|
|              Atributy objektu impulsJetEngineClass                      |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               consumption_                      |
| I2                    |               force_                            |
|-------------------------------------------------------------------------|

OBJEKT: mechanicalDampersClass
|-------------------------------------------------------------------------|
|              Atributy objektu mechanicalDampersClass                    |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               maxAcceleration_                  |
|-------------------------------------------------------------------------|

OBJEKT: deflectorShieldsGeneratorClass
|-------------------------------------------------------------------------|
|              Atributy objektu deflectorShieldsGeneratorClass            |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               solidity_                         |
| I2                    |               accumulator_                      |
| I3                    |               charging_                         |
| I4                    |               leak_                             |
| I5                    |               energy_                           |
|-------------------------------------------------------------------------|

OBJEKT: weaponEnergyCircuitClass
|-------------------------------------------------------------------------|
|              Atributy objektu weaponEnergyCircuitClass                  |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               charging_                         |
|-------------------------------------------------------------------------|

OBJEKT: droneMissileLauncherClass
|-------------------------------------------------------------------------|
|              Atributy objektu droneMissileLauncherClass                 |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               accumulator_                      |
| I2                    |               charging_                         |
| I3                    |               energy_                           |
|-------------------------------------------------------------------------|

OBJEKT: droneMissilesClass
|-------------------------------------------------------------------------|
|              Atributy objektu droneMissilesClass                        |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: laserGunClass
|-------------------------------------------------------------------------|
|              Atributy objektu laserGunClass                             |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               accumulator_                      |
| I2                    |               charging_                         |
| I3                    |               range_                            |
| I4                    |               precision_                        |
| I5                    |               forcibility_                      |
| I6                    |               energy_                           |
|-------------------------------------------------------------------------|

OBJEKT: transportBeamGeneratorClass
|-------------------------------------------------------------------------|
|              Atributy objektu transportBeamGeneratorClass               |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               accumulator_                      |
| I2                    |               charging_                         |
| I3                    |               range_                            |
| I4                    |               precision_                        |
| I5                    |               forcibility_                      |
| I6                    |               energy_                           |
|-------------------------------------------------------------------------|

OBJEKT: magneticalCollectorsOfPlasmaClass
|-------------------------------------------------------------------------|
|              Atributy objektu magneticalCollectorsOfPlasmaClass         |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: submersibleFiltrationTankClass
|-------------------------------------------------------------------------|
|              Atributy objektu submersibleFiltrationTankClass            |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: submarineMiningMachineClass
|-------------------------------------------------------------------------|
|              Atributy objektu submarineMiningMachineClass               |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: undergroundDrillingMachineClass
|-------------------------------------------------------------------------|
|              Atributy objektu undergroundDrillingMachineClass           |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: probeClass
|-------------------------------------------------------------------------|
|              Atributy objektu probeClass                                |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               level_                            |
|-------------------------------------------------------------------------|

OBJEKT: highResolutionSensorsClass
|-------------------------------------------------------------------------|
|              Atributy objektu highResolutionSensorsClass                |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               range_                            |
| I2                    |               level_                            |
| I3                    |               consumption_                      |
|-------------------------------------------------------------------------|

OBJEKT: longRangeSensorsClass
|-------------------------------------------------------------------------|
|              Atributy objektu longRangeSensorsClass                     |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               range_                            |
| I2                    |               level_                            |
| I3                    |               consumption_                      |
|-------------------------------------------------------------------------|

OBJEKT: cloakingDeviceClass
|-------------------------------------------------------------------------|
|              Atributy objektu cloakingDeviceClass                       |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               level_                            |
| I2                    |               consumption_                      |
|-------------------------------------------------------------------------|

OBJEKT: androidsClass
|-------------------------------------------------------------------------|
|              Atributy objektu androidsClass                             |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: magneticalGridClass
|-------------------------------------------------------------------------|
|              Atributy objektu magneticalGridClass                       |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: transportContainerClass
|-------------------------------------------------------------------------|
|              Atributy objektu transportContainerClass                   |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: energeticCellClass
|-------------------------------------------------------------------------|
|              Atributy objektu energeticCellClass                        |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: plasmaFilterClass
|-------------------------------------------------------------------------|
|              Atributy objektu plasmaFilterClass                         |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|                            NEMA ZADNE POLOZKY                           |
|-------------------------------------------------------------------------|

OBJEKT: scientificLabClass
|-------------------------------------------------------------------------|
|              Atributy objektu scientificLabClass                        |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               level_                            |
| I2                    |               capacity_                         |
|-------------------------------------------------------------------------|

OBJEKT: lifeSupportClass
|-------------------------------------------------------------------------|
|              Atributy objektu lifeSupportClass                          |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               capacity_                         |
| I2                    |               consumption_                      |
|-------------------------------------------------------------------------|

OBJEKT: subspaceTransmitterClass
|-------------------------------------------------------------------------|
|              Atributy objektu subspaceTransmitterClass                  |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               messageCost_                      |
|-------------------------------------------------------------------------|

OBJEKT: mainframeClass
|-------------------------------------------------------------------------|
|              Atributy objektu mainframeClass                            |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               bioNodes_                         |
| I2                    |               prediction_                       |
| I3                    |               timeReusability_                  |
| I4                    |               consumption_                      |
|-------------------------------------------------------------------------|

OBJEKT: hangarClass
|-------------------------------------------------------------------------|
|              Atributy objektu hangarClass                               |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| I1                    |               level_                            |
| I2                    |               length_                           |
| I3                    |               width_                            |
| I4                    |               depth_                            |
|-------------------------------------------------------------------------|

OBJEKT: magneticalFilterClass
|-------------------------------------------------------------------------|
|              Atributy objektu magneticalFilterClass                     |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: deuteriumDecomposerClass
|-------------------------------------------------------------------------|
|              Atributy objektu deuteriumDecomposerClass                  |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: zirconiumReactorClass
|-------------------------------------------------------------------------|
|              Atributy objektu zirconiumReactorClass                     |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

OBJEKT: ilmeniteFurnaceClass
|-------------------------------------------------------------------------|
|              Atributy objektu ilmeniteFurnaceClass                      |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|        PODLE URZY SE TY POLOZKY BUDOU BRAT Z VEDY {{zakomentovano}}     |
|-------------------------------------------------------------------------|

Jelikož, na rozdíl od jiných objektů, zde řádky v tabulce reprezentují jiné 
třídy, v loadovacích procedurách zde bude switch, který napřed rozhodne, která
třída se bude loadovat.

=========== Lodě a základny ====================================================

Jednotlivé základny a lodě budou potřebovat seznamy identifikátorů, které musí
být uloženy v databázi. Těch seznamů je konstantně mnoho pro obě třídy, přesto
budou reprezentovány trojicí (id lodě/základny, id seznamu, id položky). Primární
klíč bude celá trojice, ale indexy budou i nad dvojicí položek (id lodě/základny,
id seznamu), neboť bude nutné načítat celé seznamy. Následuje definice template
tabulky pro seznamy:

|-------------------------------------------------------------------------|
|       Template tabulka pro seznamy                                      |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| IDFORTRESS            |  identifikátor objektu, kterému náleží seznam   |
| IDITEMOFLIST          |  pořadové číslo položky v seznamu               |
|-------------------------------------------------------------------------|

|-------------------------------------------------------------------------|
|       Template tabulka pro seznamy s energy state                       |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| IDFORTRESS            |  identifikátor objektu, kterému náleží seznam   |
| IDITEMOFLIST          |  pořadové číslo položky v seznamu               |
| ENERGY                |  polozka energy state                           |
| TARGETENERGY          |  pořadové číslo položky v seznamu               |
|-------------------------------------------------------------------------|

Stejně tak implementace bude obecná - dosadí se jméno tabulky jenom, 
do speciálního objektu, který bude zařizovat práci s listy. Bude jedna tabulka
pro seznamy  jednotlivých lodí, dále jedna tabulka pro seznamy jednotlivých
základen.

Jako alternativu je možné používat unikátní IDLIST pro každý seznam nezávisle na
třídě, které patří.

Jak loď, tak základna dědí od třídy fortressClass a sdílejí velkou část položek,
přesto budou dvě tabulky, neboť Urza tam má dva cache listy a je asi pravděpodobné,
že budou existovat lodě a základy se stejnými ID.

|-------------------------------------------------------------------------|
|       Template tabulka pro lodě/základny - společné atributy            |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| IDFORTRESS            |  identifikátor lodě nebo základny               |
| REALMID               |  	           realmID_                           |
| FORTRESSNAME          |              fortressName_                      |
| FORTRESSTYPE          |              lod/zakladna                       |
| WEIGHT                |              weight_                            |
| TSINTEGRITY           |              totalStructuralIntegrity_          |
| SINTEGRITY            |              structuralIntegrity_               |
| LENGTH               D|              length_                            |
| WIDTH                D|              width_                             |
| HEIGHT               D|              height_                            |
|-------------------------------------------------------------------------|
|                 #########    SUROVINY     #########                     |
|-------------------------------------------------------------------------|
| QGPLASMA             D|              quarkGluonPlasma_                  |
| ULREA                D|              ulrea_                             |
| HEAVYWATER           D|              heavyWater_                        |
| DEUTERIUM            D|              deuterium_                         |
| ZCRYSTAL             D|              zirconiumCrystal_                  |
| ENERGY               D|              energy_                            |
| ILMENITE             D|              ilmenite_                          |
| TITANIUM             D|              titanium_                          |
|-------------------------------------------------------------------------|
| QGPLASMAGRAD         D|              quarkGluonPlasmaGradient_          |
| ULREAGRAD            D|              ulreaGradient_                     |
| HEAVYWATERGRAD       D|              heavyWaterGradient_                |
| DEUTERIUMGRAD        D|              deuteriumGradient_                 |
| ZCRYSTALGRAD         D|              zirconiumCrystalGradient_          |
| ENERGYGRAD           D|              energyGradient_                    |
| ILMENITEGRAD         D|              ilmeniteGradient_                  |
| TITANIUMGRAD         D|              titaniumGradient_                  |
|-------------------------------------------------------------------------|
| UPDQGPLASMA          D|              quarkGluonPlasmaUpdate_            |
| UPDULREA             D|              ulreaUpdate_                       |
| UPDCONRES            D|              containeredResourcesUpdate_        |
| UPDENERGY            D|              energyUpdate_                      |
|-------------------------------------------------------------------------|
| QGPLASMATRIGGER      D|              quarkGluonPlasmaTrigger_           |
| CRTRIGGER            D|              containeredResourcesTrigger_       |
| ENERGYTRIGGER        D|              energyTrigger_                     |
|-------------------------------------------------------------------------|
| TARGET                |              targetOfWeapons_                   |
| LTAIMTIME            D|              lastTargetAimTime_                 |
|-------------------------------------------------------------------------|
|                 #########    energeticSystem     #########              |
|-------------------------------------------------------------------------|
| ENE_ACCUMULATOR       |  energeticSystem->energeticAccumulatorID_       |
| ENE_ESC_ENERGY        |  energeticAccumulatorEnergyState.energy         |
| ENE_ESC_TENERGY       |  energeticAccumulatorEnergyState.targetEnergy   |
|-------------------------------------------------------------------------|
|                 #########    deflectorShields    #########              |
|-------------------------------------------------------------------------|
| DEF_SHIELDGENERATOR   |  deflectorShields->deflectorShieldsGeneratorID_ |
| DEF_ESC1_ENERGY       |  deflectorShieldsGeneratorEnergyState_          |
| DEF_ESC1_TENERGY      |  deflectorShieldsGeneratorEnergyState_          |
| DEF_EDC_PRIORITY     C|  deflectorsEnergyDivision.priority              |
| DEF_EDC_RATIO         |  deflectorsEnergyDivision.ratio                 |
| DEF_EDC_MPD           |  deflectorsEnergyDivision.maxPowerDrain         |
| DEF_EDC_SDOEL         |  deflectorsEnergyDivision.shutDownOnEnergyLack  |
|-------------------------------------------------------------------------|	
|                 #########    weapons    #########                       |
|-------------------------------------------------------------------------|
| WEP_ENERGYCIRCUIT     |  weapons->weaponEnergyCircuitID_                |
| WEP_DRONEMISSILES     |  weapons->droneMissilesID_                      |
| WEP_EDC_PRIORITY     C|  weaponsEnergyDivision.priority                 |
| WEP_EDC_RATIO         |  weaponsEnergyDivision.ratio                    |
| WEP_EDC_MPD           |  weaponsEnergyDivision.maxPowerDrain            |
| WEP_EDC_SDOEL         |  weaponsEnergyDivision.shutDownOnEnergyLack     |
|-------------------------------------------------------------------------|	
|                 #########    transport beam    #########                |
|-------------------------------------------------------------------------|
| TBM_GENERATOR         |  tbm->transportBeamGeneratorID_                 |
| TBM_ESC_ENERGY        |  tBeamEnergyState.energy                        |
| TBM_ESC_TENERGY       |  tBeamEnergyState.targetEnergy                  |
| TBM_EDC_PRIORITY     C|  tBeamEnergyDivision.priority                   |
| TBM_EDC_RATIO         |  tBeamEnergyDivision.ratio                      |
| TBM_EDC_MPD           |  tBeamEnergyDivision.maxPowerDrain              |
| TBM_EDC_SDOEL         |  tBeamEnergyDivision.shutDownOnEnergyLack       |
|-------------------------------------------------------------------------|	
|                 #########    miningDevices    #########                 |
|-------------------------------------------------------------------------|
| MIN_MAGCOLLECTORS     |  miningDevices->magneticalCollectorsOfPlasmaID_ |
| MIN_FILTRATIONTANK    |  miningDevices->submersibleFiltrationTankID_    |
| MIN_MININGMACHINE     |  miningDevices->submarineMiningMachineID_       |
| MIN_DRILLINGMACHINE   |  miningDevices->undergroundDrillingMachineID_   |
| MIN_QGQUARRYING      D|  miningDevices->quarkGluonPlasmaQuarrying_      |
| MIN_DEQUARRYING      D|  miningDevices->deuteriumQuarrying_             |
| MIN_ZCQUARRYING      D|  miningDevices->zirconiumCrystalQuarrying_      |
| MIN_ILQUARRYING      D|  miningDevices->ilmeniteQuarrying_              |
|-------------------------------------------------------------------------|	
|                 #########    probeDevices    #########                  |
|-------------------------------------------------------------------------|
|                 #########    sensors    #########                       |
|-------------------------------------------------------------------------|
| SEN_HIRESSENSORS      |  sensors->highResolutionSensorsID_              |
| SEN_LONGRANGESENSORS  |  sensors->longRangeSensorsID_                   |
| SEN_PSC1_STATE        |  sensorsHRPowerState.state_                     |
| SEN_PSC1_CHARGING    D|  sensorsHRPowerState.narrowCharging_            |
| SEN_EDC1_PRIORITY    C|  sensorsHREnergyDivision.priority               |
| SEN_EDC1_RATIO        |  sensorsHREnergyDivision.ratio                  |
| SEN_EDC1_MPD          |  sensorsHREnergyDivision.maxPowerDrain          |
| SEN_EDC1_SDOEL        |  sensorsHREnergyDivision.shutDownOnEnergyLack   |
| SEN_PSC2_STATE        |  sensorsLRPowerState.state_                     |
| SEN_PSC2_CHARGING    D|  sensorsLRPowerState.narrowCharging_            |
| SEN_EDC2_PRIORITY    C|  sensorsLREnergyDivision.priority               |
| SEN_EDC2_RATIO        |  sensorsLREnergyDivision.ratio                  |
| SEN_EDC2_MPD          |  sensorsLREnergyDivision.maxPowerDrain          |
| SEN_EDC2_SDOEL        |  sensorsLREnergyDivision.shutDownOnEnergyLack   |
|-------------------------------------------------------------------------|	
|                 #########    cloaking    #########                      |
|-------------------------------------------------------------------------|
| CLO_CLOAKINGDEVICE    |  cloaking->cloakingDeviceID_                    |
| CLO_PSC_STATE         |  cloakingPowerState.state_                      |
| CLO_PSC_CHARGING     D|  cloakingPowerState.narrowCharging_             |
| CLO_EDC_PRIORITY     C|  cloakingEnergyDivision.priority                |
| CLO_EDC_RATIO         |  cloakingEnergyDivision.ratio                   |
| CLO_EDC_MPD           |  cloakingEnergyDivision.maxPowerDrain           |
| CLO_EDC_SDOEL         |  cloakingEnergyDivision.shutDownOnEnergyLack    |
|-------------------------------------------------------------------------|	
|                 #########    crew        #########                      |
|-------------------------------------------------------------------------|
| CRE_CREW_CAPITAN      |  crew->ableCrew_[CREW_CAPITAN]                  |
| CRE_CREW_DOCTOR       |  crew->ableCrew_[CREW_DOCTOR]                   |
| CRE_CREW_OFFICER      |  crew->ableCrew_[CREW_OFFICER]                  |
| CRE_CREW_ENGINEER     |  crew->ableCrew_[CREW_ENGINEER]                 |
| CRE_CREW_PILOT        |  crew->ableCrew_[CREW_PILOT]                    |
| CRE_CREW_SCIENTIST    |  crew->ableCrew_[CREW_SCIENTIST]                |
| CRE_CREW_PASSENGER    |  crew->ableCrew_[CREW_PASSENGER]                |
|-------------------------------------------------------------------------|	
| CRE_WOUNDED_CAPITAN   |  crew->woundedCrew_[WOUNDED_CAPITAN]            |
| CRE_WOUNDED_DOCTOR    |  crew->woundedCrew_[WOUNDED_DOCTOR]             |
| CRE_WOUNDED_OFFICER   |  crew->woundedCrew_[WOUNDED_OFFICER]            |
| CRE_WOUNDED_ENGINEER  |  crew->woundedCrew_[WOUNDED_ENGINEER]           |
| CRE_WOUNDED_PILOT     |  crew->woundedCrew_[WOUNDED_PILOT]              |
| CRE_WOUNDED_SCIENTIST |  crew->woundedCrew_[WOUNDED_SCIENTIST]          |
| CRE_WOUNDED_PASSENGER |  crew->woundedCrew_[WOUNDED_PASSENGER]          |
|-------------------------------------------------------------------------|	
|                 #########    accommodations        #########            |
|-------------------------------------------------------------------------|
| ACC_LUXURYAPARTMENTS  |  accommodations->luxuryApartments_              |
| ACC_COMFORTABLEROOMS  |  accommodations->comfortableRooms_              |
| ACC_COMMONCABINS      |  accommodations->commonCabins_                  |
| ACC_WAREHOUSES        |  accommodations->warehousesWithLifeSupport_     |
|-------------------------------------------------------------------------|	
|                 #########    mechanics        #########                 |
|-------------------------------------------------------------------------|
| MEC_ANDROIDS          |  mechanics->androidsID_                         |
| MEC_PSC_STATE         |  androidsPowerState.state_                      |
| MEC_PSC_CHARGING     D|  androidsPowerState.narrowCharging_             |
| MEC_EDC_PRIORITY     C|  androidsEnergyDivision.priority                |
| MEC_EDC_RATIO         |  androidsEnergyDivision.ratio                   |
| MEC_EDC_MPD           |  androidsEnergyDivision.maxPowerDrain           |
| MEC_EDC_SDOEL         |  androidsEnergyDivision.shutDownOnEnergyLack    |
| MEC_MAX_WORK_ANDR     |  mechanics->maxWorkingAndroids_				  |
| MEC_MAX_REPA_ANDR     |  mechanics->maxRepairingAndroids_				  |
| MEC_ACT_REPA_ANDR     |  mechanics->actualRepairingAndroids_			  |
| MEC_ACT_CONS_ANDR     |  mechanics->actualConstructingAndroids_		  |
|-------------------------------------------------------------------------|	
|                 #########    warehouse        #########                 |
|-------------------------------------------------------------------------|
| WAR_MAGNETICALGRID    |  warehouse->magneticalGridID_                   |
| WAR_CONTAINER         |  warehouse->transportContainerID_               |
| WAR_ENERGETICCELL     |  warehouse->energeticCellID_                    |
|-------------------------------------------------------------------------|
|                 #########    otherEquipment        #########            |
|-------------------------------------------------------------------------|
| OTH_PLASMAFILTER      |  otherEquipment->plasmaFilterID_                |
| OTH_LABS              |  otherEquipment->scientificLabID_               |
| OTH_LIFESUPPORT       |  otherEquipment->lifeSupportID_                 |
| OTH_TRANSMITTER       |  otherEquipment->subspaceTransmitterID_         |
| OTH_EDC_PRIORITY     C|  lifeSupportEnergyDivision.priority             |
| OTH_EDC_RATIO         |  lifeSupportEnergyDivision.ratio                |
| OTH_EDC_MPD           |  lifeSupportEnergyDivision.maxPowerDrain        |
| OTH_EDC_SDOEL         |  lifeSupportEnergyDivision.shutDownOnEnergyLack |
|-------------------------------------------------------------------------|	
|                 #########    mainframeSystem       #########            |
|-------------------------------------------------------------------------|
| MAI_MAINFRAME         |  mainframeSystem->mainframeID_                  |
| MAI_EDC_PRIORITY     C|  mainframeEnergyDivision.priority               |
| MAI_EDC_RATIO         |  mainframeEnergyDivision.ratio                  |
| MAI_EDC_MPD           |  mainframeEnergyDivision.maxPowerDrain          |
| MAI_EDC_SDOEL         |  mainframeEnergyDivision.shutDownOnEnergyLack   |
|-------------------------------------------------------------------------|	

|-------------------------------------------------------------------------|	
|                 #########    dalsi polozky         #########            |
|-------------------------------------------------------------------------|
| IMP_ACTUALFORCE       |  impulsDriveClass->actualJetForce_              |
| POSITIONX             |  position.x              						  |
| POSITIONY             |  position.y                  				      |
| COURSEX              D|  course.x                                       |
| COURSEY              D|  course.y                                       |
| SPEEDNORM             |  speedNorm                                      |
| ACCELERATION          |  acceleration                                   |
| SPOBJACTUALLYIN       |  spaceObjectActuallyIn                          |
| NEARESTSTAR           |  nearestStar                                    |
| WESPOBJ               |  wantEnterSpaceObject                           |
| MOV_STATE             |  movementState_                                 |
| MOV_WARP_TARGET_X     |  warpTarget_.x                                  |
| MOV_WARP_TARGET_Y     |  warpTarget_.y                                  |
| MOV_WARP_START       D|  warpStart_                                     |
| ENGINE_LIMIT         D|  engineLimit_                                   |
| TARGETSPACEOBJECT     |  targetSpaceObject                              |
| TARGETSHIP            |  targetShip                                     |
| TARGETPOSITIONX       |  targetPosition.x                               |
| TARGETPOSITIONY       |  targetPosition.y                               |
| LASTACTUALIZATION    D|  lastActualization                              |
| SHIPMOVEACTION        |  moveAction                                     |
| SHIPMOVETARGET        |  moveTarget                                     |
| FORTRESCLASSCLASS     |  fortressClass_                                 |
| STRUCTINTGRAD         |  struct.structuralIntegrityGradient_            |
|-------------------------------------------------------------------------|	

fortress sections:
VOI, ENE, DEF, WEP, TBM, MIN, PRO, SEN, CLO, CRE, ACC, MEC, WAR, OTH, MAI, SUB, IMP, HAN, FAC 

Seznamy společné pro všechny lodě/základny:
WEP_DRONEMISSILELAUNCHERS     weapons->droneMissileLaunchersIDs_   dtIdentifierEnergyStatePairDeque
WEP_LASERGUNS                 weapons->laserGunsIDs_               dtIdentifierEnergyStatePairDeque
PRO_PROBES                    probeDevices->probesIDs_             dtIdentifierDeque
WAR_STORAGE                   warehouse->storageIDs_               dtIdentifierList

Následuje popis tabulky pro lodě, uvedeny jsou pouze atributy navíc, oproti
tabulce výše:

|-------------------------------------------------------------------------|
|       Tabulka pro lodě (uvedeny jsou pouze atributy navíc)              |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|                 #########    subspaceDrive       #########              |
|-------------------------------------------------------------------------|
| SUB_COMPUTER          |  subspaceDrive->navigationComputerID_           |
| SUB_QGCORE            |  subspaceDrive->quarkGluonCoreID_               |
| SUB_BEACON            |  subspaceDrive->subspaceBeaconID_               |
| SUB_DAMPERS           |  subspaceDrive->inertialDampersID_              |
| SUB_ACTUALSPEEDTOC   D|  subspaceDrive->actualSpeedToC_                 |
|-------------------------------------------------------------------------|	
|                 #########    impulsDrive       #########                |
|-------------------------------------------------------------------------|
| IMP_JETENGINE         |  impulsDrive->impulsJetEngineID_                |
| IMP_MECHDAMPERS       |  impulsDrive->mechanicalDampersID_              |
|-------------------------------------------------------------------------|	

Následuje popis tabulky pro základny, uvedeny jsou pouze atributy navíc, oproti
tabulce pro společné atributy:

|-------------------------------------------------------------------------|
|       Tabulka pro základny (uvedeny jsou pouze atributy navíc)          |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
|                 #########    hangarsPort       #########                |
|-------------------------------------------------------------------------|	
|                 #########    factories         #########                |
|-------------------------------------------------------------------------|
| FAC_MAGNETICALFILTER  |  factories->magneticalFilterID_                 |
| FAC_DEUTERIUMDECOMP   |  factories->deuteriumDecomposerID_              |
| FAC_ZIRCONIUMREACTOR  |  factories->zirconiumReactorID_                 |
| FAC_ILMENITEFURNACE   |  factories->ilmeniteFurnaceID_                  |
|-------------------------------------------------------------------------|	

Seznam speciálně pro základny:
HAN_HANGARS                   hangarsPort->hangarsIDs_			dtIdentifierDeque

====================== IMPLEMENTAČNÍ DETAILY ===================================

Domnívám se, že budou potřeba tyto funkce:
 - nahrání všech dat z databáze do cache listů (cache listu)
 - nahrání jednoho záznamu do cache listu (podle id)
 - update záznamu v cache do databáze (podle id)
 - přidání záznamu do databáze (nové id, které není v databázi)
 - smazání záznamu s určitým id z databáze
 
Poslední čtyři dotazy se budou používat v průběhu celé hry, proto budou muset
být připravené, ten první se provede jen na začátku, proto nemusí být připravený.

IMPLEMENTACE vědeckého stromu (ukládání/nahrávání do/z databáze)

třída scientificTree bude mít dvě hlavní veřejné metody pro nahrávání/ukládání
stromu:
  - void loadTreeFromDB(dtIdentifier userId)
  - void storeTreeToDB(dtIdentifier userId)
  
a třída bude mít několik dalších nespecifikovaných privátních metod pro implementační
věci. Dále bude přidána asi položka int nodeId, která pro každý uzel určí 
jednoznačně jeho pozici ve stromě.

IMPLEMENTACE realm třídy - seznamy lodí a základnu

Třída realm bude mít nově tyto metody:
 - void loadBasesFromDB(dtIdentifier userId)
 - void loadShipsFromDB(dtIdentifier userId)
 - void removeAllBasesDB(dtIdentifier userId)
 - void removeAllShipsDB(dtIdentifier userId)
 - void addShipDB(dtIdentifier userId, dtIdentifier ship)
 - void removeShipDB(dtIdentifier userId, dtIdentifier ship)
 - void addBaseDB(dtIdentifier userId, dtIdentifier base)
 - void removeBaseDB(dtIdentifier userId, dtIdentifier base) 
Které budou obsluhovat seznamy lodí a základen.
 
Otazky:
Pripravovat vsechny dotazy - nektere se pouzivaji opravdu velmi zridka/jednou, viz. výše?

--------------------------------------------------------------------------------

Implementace ukladani hvezd / planet / mesicu / zakladen

|-------------------------------------------------------------------------|
|       Tabulka pro vesmirne objekty                                      |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| SPACEOBJECTID         |  ID objektu                                     |
| PARENTOBJECT          |  parentObject_                                  |
| OBJTYPE               |  object type                                    |
|-------------------------------------------------------------------------|	
|                 #########    spaceFortressObject         #########      |
|-------------------------------------------------------------------------|
| IDFORTRESS            |  idFortress_                                    |
|-------------------------------------------------------------------------|	
|                 #########    spaceRegularObject          #########      |
|-------------------------------------------------------------------------|
| POSX                  |  position_.x                                    |
| POSY                  |  position_.y                                    |
| ARADIUS               |  areaRadius_                                    |
| ORADIUS               |  objectRadius_                                  |
| WEIGHT               D|  objectWeight_                                  |
| DISTANCEFROMPOBJ      |  distanceFromParentObject_                      |
| BROTANGLE             |  basicRotationAngle_                            |
| ANGULARVELOCITY       |  angularVelocity_                               |
|-------------------------------------------------------------------------|	
|                 #########    spaceSunObject              #########      |
|-------------------------------------------------------------------------|
| SUNTYPE               |  sunType_                                       |
|-------------------------------------------------------------------------|	
|                 #########    spaceObjectPlanet           #########      |
|-------------------------------------------------------------------------|
| YEARPERIOD            |  yearPeriod_                                    |
| DAYPERIOD             |  dayPeriod_                                     |
| PLANETTYPE            |  planetType_                                    |
| DAYTEMPERATURE        |  dayTemperature_                                |
| NIGHTTEMPERATURE      |  nightTemperature_                              |
| SEA                   |  sea_                                           |
| HWSOURCE              |  heavyWaterSource_                              |
| ZISOURCE              |  zirconiumSource_                               |
| ILSOURCE              |  ilmeniteSource_                                |
|-------------------------------------------------------------------------|	

--------------------------------------------------------------------------------

Tabulka pro tridy fortressu

|-------------------------------------------------------------------------|
|       Tabulka pro vesmirne objekty                                      |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| FORTRESSCLASSID       |  ID tridy fortressu                             |
| CLASSNAME            S|  className_                                     |
| CLASSTYPE             |  classType_                                     |
| MINWEIGHT             |  minWeight_                                     |
| MAXWEIGHT             |  maxWeight_                                     |
| MINTSI                |  minTotalStructuralIntegrity_                   |
| MAXTSI                |  maxTotalStructuralIntegrity_                   |
| MAXLENGTH            D|  maxLength_                                     |
| MAXWIDTH             D|  maxWidth_                                      |
| MAXHEIGHT            D|  maxHeight_                                     |
| MAXDML                |  maxDroneMissileLaunchers_                      |
| MAXLASERGUNS          |  maxLaserGuns_                                  |
|-------------------------------------------------------------------------|	


tabulka pro hrace

|-------------------------------------------------------------------------|
| Tabulka PLAYERS       |                                                 |
| Atribut               |            Význam / položka v objektu           |
|-------------------------------------------------------------------------|
| IDREALM               |  id hrace                                       |
| PLNAME               S|  playerName_                                    |
| PLLOGIN              S|  login_                                         |
| PLPASSWORD           S|  password_                                      |
|-------------------------------------------------------------------------|
