bool App::init() { _scene = new Scene; _core = new Core; _core->initialize(); connect(_core, SIGNAL(exit()), this, SLOT(quit())); // delete later _background = new GraphicObject; _background->setSurface(_core->getSurface("background.png")); SDL_Rect backRect = {0, 0, 1500, 843}; _background->setRect(backRect); qsrand(time(NULL)); _scene->setBack(_background); connect(_core->getEH(), SIGNAL(eventMsg(SDL_Event*)), this, SLOT(event(SDL_Event*))); // creating state ------------------------------ Battle *battle = new Battle; Scene *batScene = new Scene; battle->setScene(_scene); loadUnits(battle); // gates SDL_Rect gateRect; gateRect.x = 0; gateRect.y = 0; gateRect.w = 30; gateRect.h = 30; CombinedAnimation gateAnLeft; gateAnLeft.setSurface(_core->getSurface("leftgate.png")); gateAnLeft.setFrameLines(2); gateAnLeft.setMaxFrames(7); gateAnLeft.setFrames(0, 4); gateAnLeft.setFrames(1, 7); CombinedAnimation gateAnRight; gateAnRight.setSurface(_core->getSurface("rightgate.png")); gateAnRight.setFrameLines(2); gateAnRight.setMaxFrames(7); gateAnRight.setFrames(0, 4); gateAnRight.setFrames(1, 7); gateAnRight.flipHorizontal(); DamageableItem g1(1000, Position(310, SPAWN_LINE),Size(100, 90), 9); DamageableItem g2(1000, Position(1200, SPAWN_LINE),Size(100, 90), 19); // left castle SDL_Rect wallRect = {0, 0, 297, 230}; Animation leftWallAn; leftWallAn.setSurface(_core->getSurface("castle.png")); leftWallAn.setFrames(1); leftWallAn.setRect(wallRect); leftWallAn.flipHorizontal(); AreaItem leftWallItem(147, SPAWN_LINE, 220, 195); QSharedPointer<Castle> lCastle = QSharedPointer<Castle>(new Castle(leftWallItem, g1, leftWallAn, gateAnLeft, Position(100, SPAWN_LINE), 5, 1, 1500)); battle->setLeftCastle(lCastle); // right castle Animation wallAn; wallAn.setSurface(_core->getSurface("castle.png")); wallAn.setFrames(1); wallAn.setRect(wallRect); AreaItem wallItem(1365, SPAWN_LINE, 220, 195); QSharedPointer<Castle> rCastle = QSharedPointer<Castle>(new Castle(wallItem, g2, wallAn, gateAnRight, Position(1400, SPAWN_LINE), 5, 0, 1500)); battle->setRightCastle(rCastle); // Player stats QList<SDL_Surface*> iconSurfs; iconSurfs << _core->getSurface("warrior_icon.png"); iconSurfs << _core->getSurface("ranger_icon.png"); iconSurfs << _core->getSurface("rangerwall_icon.png"); iconSurfs << _core->getSurface("knight_icon.png"); iconSurfs << _core->getSurface("evilwarrior_icon.png"); iconSurfs << _core->getSurface("evilranger_icon.png"); iconSurfs << _core->getSurface("evilrangerwall_icon.png"); iconSurfs << _core->getSurface("evilknight_icon.png"); PlayerStats *stats = new PlayerStats(iconSurfs); battle->setPlayerStats(stats); // barrier floor QSharedPointer<AreaItem> floor = QSharedPointer<AreaItem>(new AreaItem(450, SPAWN_LINE + 700, 3000, 699, 0, true, true)); battle->setFloor(floor); // win sets GraphicObject *right = new GraphicObject(); GraphicObject *left = new GraphicObject(); GraphicObject *draw = new GraphicObject(); right->setSurface(_core->getSurface("rightwin.png")); left->setSurface(_core->getSurface("leftwin.png")); draw->setSurface(_core->getSurface("draw.png")); SDL_Rect winrect = {500, 300, 500, 200}; right->setRect(winrect); left->setRect(winrect); draw->setRect(winrect); battle->setWinPics(*left, *right, *draw); // starting _core->pushState(battle); _core->startStateTimer(17); int id = _core->addTimer(); _core->getTimer(id)->start(17); connect(_core->getTimer(id), SIGNAL(timeout()), this, SLOT(draw())); //---------------------------------------------- return true; }