Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
main.cc 2.97 KiB
#include <SFML/Graphics.hpp>
#include "Player.h"
#include "indestructable_block.h"
#include "destructable_block.h"
#include "mystery_block.h"
#include "Enemy.h"
#include "power_up.h"
#include <vector>

//Mystery blocks update ska kalla på både update för block men också power_up:s update. Hur?

#include <iostream>

int main()
{
    sf::RenderWindow window{sf::VideoMode(1024,768), "Our game"}; //
    Player player{40,50,50,718, 350.0f, 300.0f}; //Width, height, x-pos, y-pos, movement_speed, jump_height


    std::vector<Block*> blocks{};
    blocks.push_back(new Indestructable_block{50, 0, 718}); //size, x-pos, y-pos. Color: Red //BEGIN
    blocks.push_back(new Indestructable_block{50, 974, 718}); //size, x-pos, y-pos. Color: Blue //END
    blocks.push_back(new Indestructable_block{50, 150, 718}); //size, x-pos, y-pos. Color: Green

    blocks.push_back(new Indestructable_block{50, 200, 668});

    blocks.push_back(new Destructable_block{50, 250, 618});

    blocks.push_back(new Mystery_block{50, 300, 568});
    blocks.push_back(new Destructable_block{50, 350, 568});
    blocks.push_back(new Destructable_block{50, 400, 568});

    blocks.push_back(new Indestructable_block{50, 200, 718});
    blocks.push_back(new Indestructable_block{50, 250, 718});
    blocks.push_back(new Indestructable_block{50, 300, 718}); //Ground
    blocks.push_back(new Indestructable_block{50, 350, 718});
    blocks.push_back(new Indestructable_block{50, 400, 718});
    blocks.push_back(new Indestructable_block{50, 450, 718});

    //std::vector<Enemy*> enemies{};
    //enemies.push_back(new Enemy{100, 60, 200, 718, 350.0f}); //width, height, x-pos, y-pos, movement_speed
    //enemies.push_back(new Enemy{70,60,150, 718, 350.0f});

    sf::Clock clock;

    bool closed{false};

    while(!closed)
    {
      sf::Event event;
      while(window.pollEvent(event))
      {
        if(event.type == sf::Event::Closed || sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
        {
          closed = true;
        }
      }
      window.clear();
      player.update(clock, window);
      for(auto it : blocks) //Checks collision between player and blocks
      {
        bool destruct{false};
        destruct = player.check_collision(it, it->get_otype());
        if(destruct)
        {
          delete it;
          it = nullptr;
        }
      }
      for(auto it : blocks)
      {
        it->update(window);
      }
      /*for(auto enemy : enemies)
      {
        for(auto block : blocks)
        {
          enemy->update(clock, window, *block);
        }
      }*/
      window.display();
    }
    std::cout << blocks.size() << std::endl;
    for(auto it : blocks)
    {
      if(it == nullptr)
      {
        std::cout << "nullptr" << std::endl;
      }
    }
    blocks.erase(remove_if(begin(blocks), end(blocks), [](Block* b){return b == nullptr;}), end(blocks));
    std::cout << blocks.size() << std::endl;
    for(auto it : blocks)
    {
      delete it;
    }
    /*for(auto it : enemies)
    {
      delete it;
    }*/
}