GameState::GameState(StateManager* _stateManager) : State(_stateManager), tileSize(64.0f, 64.0f), playerPosition(0.0f, 4.0f), ballPosition(0.0f, 0.0f), ballVelocity(0.0f, 0.1f), ballSize(40.0f, 40.0f), playerSize(150, 35.0f), tilesSize(90.0f, 40.0f) { tileAmount = 10; boxWorld = new b2World(yam2d::vec2(0.0f, 0.0f)); boxWorld->SetAllowSleeping(false); contactListener = new ContactListener(); boxWorld->SetContactListener(contactListener); map = new yam2d::Map(tileSize.x, tileSize.y); background = new yam2d::Layer(map, "Background", 1.0f, true, true); objects = new yam2d::Layer(map, "Objects", 1.0f, true, false); map->addLayer(yam2d::Map::BACKGROUND0, background); map->addLayer(yam2d::Map::MAPLAYER0, objects); backgroundObject = createSpriteGameObject("Textures/menu_background.png", 1280.0f, 720.0f); playerObject = createSpriteGameObject("Textures/player.png", playerSize.x, playerSize.y); PhysicsBody* Playerbody = new PhysicsBody(playerObject, boxWorld, 1.0f, 1.0f); Playerbody->setBoxFixture(playerSize / tileSize, yam2d::vec2(0.0f, 0.0f), playerObject->getRotation(), true); playerObject->addComponent(Playerbody); playerObject->setName("Player"); playerObject->getComponent<PhysicsBody>()->getBody()->SetTransform(playerPosition, 0.0f); ballObject = createSpriteGameObject("Textures/ball.png", ballSize.x, ballSize.y); PhysicsBody* ballBody = new PhysicsBody(ballObject, boxWorld, 1.0f, 1.0f); ballBody->setCircleFixture((ballSize.x / tileSize.x) / 2 , true); ballObject->addComponent(ballBody); ballObject->setName("Ball"); ballObject->getComponent<PhysicsBody>()->getBody()->SetTransform(ballPosition, 0.0f); for (int i = 0; i < tileAmount; i++) { tileObjects.push_back(createSpriteGameObject("Textures/tile.png", tilesSize.x, tilesSize.y)); objects->addGameObject(tileObjects.back()); PhysicsBody* tileBody = new PhysicsBody(tileObjects.back(), boxWorld, 1.0f, 1.0f); tileBody->setBoxFixture(tilesSize / tileSize, yam2d::vec2(0.0f, 0.0f), tileObjects.back()->getRotation(), true); tileObjects.back()->addComponent(tileBody); tileObjects.back()->setName("Tile"); tileObjects.back()->getComponent<PhysicsBody>()->getBody()->SetTransform(yam2d::vec2(-3.0f + 2 * i, -2.0f), 0.0f); } textObject = createTextObject(); textObject->setPosition(8.0f, -5.0f); background->addGameObject(backgroundObject); objects->addGameObject(playerObject); objects->addGameObject(ballObject); objects->addGameObject(textObject); }
MainMenuState::MainMenuState(GameApp* app) : GameState(app), m_app(app), m_map(0), backgroundLayer(0), objectsLayer(0) { // Tile size vec2 tileSize(64.0f, 64.0f); // Create new map, with width == tile, heigh == 32pixels/tile m_map = new Map(tileSize.x, tileSize.y); // Background layer backgroundLayer = new Layer(m_map, "Background", 1.0f, true, false); m_map->addLayer(Map::BACKGROUND0, backgroundLayer); // Create new sprite GameObject from texture (background sprite) size is same than screen size. GameObject* backgroundGameObject = createSpriteGameObject("../assets/menuBG.png", 1280.0f, 720.0f, false); // Add GameObject to background layer. backgroundLayer->addGameObject(backgroundGameObject); // Objects layer objectsLayer = new Layer(m_map, "Objects", 1.0f, true, false); m_map->addLayer(Map::MAPLAYER0, objectsLayer); // Create new start button object, and clip it, white color shall be transparent GameObject* startButtonObject = createSpriteGameObject("../assets/buttons.png", 242.0f, 96.0f, 0, 0, 242, 96, false); // Add start button to level objectsLayer->addGameObject(startButtonObject); // Set Start button position startButtonObject->setPosition(-6.0f, 2.0f); // Set button name startButtonObject->setName("Start"); // Create new start button object, and clip it, white color shall be transparent GameObject* exitButtonObject = createSpriteGameObject("../assets/buttons.png", 242.0f, 96.0f, 242, 0, 242, 96, false); // Add exit button to level objectsLayer->addGameObject(exitButtonObject); // Set button size //exitButtonObject->setSize(tileSize.x / 2.0, tileSize.y / 2.0); // Set exit button position exitButtonObject->setPosition(-6.0f, 4.5f); // Setting object names exitButtonObject->setName("Exit"); }