#ifndef LOADER_H #define LOADER_H #include #include #include #include #include #include "game_data.h" struct tbHeader { int id; QString name; }; struct tbAlien : tbHeader { float speed; float health; float armor; float regeneration; bool isFlying; unsigned int score; int imgType; unsigned int prise; }; struct tbSplash : tbHeader { float speed; unsigned int lifetime; bool autoControl; int imgType; }; struct tbTrigger : tbHeader { float damage; float radius; int chance; bool delParent; srcTriggerType::aimType childAim; srcTriggerType::triggerType type; unsigned int timer; int count; float randomPosRadius; }; struct tbTower : tbHeader { float radius; unsigned int cost; unsigned int reload; unsigned int buildTime; float expByShot; float expByKill; float expByDamage; int splashId; int imgType; }; struct tbChain { int towerId; int parentSplashId; int childSplashId; int triggerId; }; struct tbUpgrade { int towerId; int triggerId; unsigned int cost; float towRadius; unsigned int towReload; float trigDamage; float trigDamageRadius; }; struct tbMorph { int fromId; int toId; int cost; float expRequired; }; struct tbWavePart { int waveId; int alienId; unsigned int count; }; struct tbWave { int id; unsigned int timeout; unsigned int prise; //int type; }; struct tbWaveOnLevel { int levelId; int waveId; }; struct tbMap : tbHeader { unsigned int maxPlayers; //QVector < QVector > cells; QByteArray data; QSize size; int imgType; }; struct tbTowerOnLevel { int levelId; int towerId; //int enableWaveId; }; struct tbLevel : tbHeader { int mapId; unsigned int score; }; class Loader : public QObject { Q_OBJECT public: explicit Loader(QObject *parent = 0); //void create(); void save(QString filename); void load(QString filename); Game_Data * loadlevel(int id); QHash aliens; QHash maps; QHash levels; QHash splashes; QHash towers; QHash triggers; QHash waves; QMultiHash levWaves; QMultiHash waveParts; QMultiHash chains; QMultiHash morphs; QMultiHash levTowers; QMultiHash upgrades; signals: public slots: private: QDomDocument * doc; QFile * file; void readAliens(); void readMaps(); void readLevels(); void readMorphs(); void readSplashes(); void readTowers(); void readLevTowers(); void readTriggers(); void readChains(); void readWaves(); void readLevWaves(); void readWaveParts(); void readUpgrades(); void fillTowerChains(QList * chlist, QList * trigIds, srcTowerType * stt, int parId, int parIndex, int * recursiveCheck); void validate(QString filename); QString createMapExample(); }; #endif // LOADER_H