merged helper and bottle
authorlukel495 <lukel495@su15-111.ad.liu.se>
Tue, 14 Nov 2023 12:46:56 +0000 (13:46 +0100)
committerlukel495 <lukel495@su15-111.ad.liu.se>
Tue, 14 Nov 2023 12:46:56 +0000 (13:46 +0100)
1  2 
src/Helper.cc
src/Helper.h
src/Moving_object.h
src/Object.h
src/States.cc
src/States.h

diff --cc src/Helper.cc
index 89fe1611d8af182d9a7c077bfcd73f21648448c4,e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..df7a5cfa5d74a5636aa6a61cc3e743d974be3d27
@@@ -1,59 -1,0 +1,53 @@@
- bool Helper::collides(Object& other)
- {
- }
 +#include "Helper.h"
 +#include "constants.h"
 +#include "States.h"
 +#include "Context.h"
 +
 +
 +#include <iostream>
 +
 +Helper::Helper() : stop_pos{500}
 +{
 +    texture.loadFromFile("assets/ysex.png");
 +    sprite.setTexture(texture);
 +
 +    sprite.setScale(S_SCALE_KOEFF, S_SCALE_KOEFF);
 +    sf::FloatRect gb {sprite.getGlobalBounds()};
 +    sprite.setOrigin(gb.width / 2, gb.height / 2);
 +    position = {1000, 50};
 +    sprite.setPosition(position);
 +}
 +
 +
-             std::cout << stop_pos << std::endl;
 +void Helper::collision(Object& other)
 +{
 +  
 +
 +}
 +
 +void Helper::update(Context& context)
 +{
 +    direction = {0.35, 1};
 +    if (position.y == stop_pos && stop_pos > 50)
 +    {
 +        position -= direction;
 +        stop_pos -= 1;
 +    }
 +    else
 +    {
 +        position += direction;
 +        if (stop_pos == 50)
 +        {
 +            stop_pos = 500;
 +        }
 +    }
 +    //Game_state* game = static_cast<Game_state*>(context.current_state.get());
 +    sprite.setPosition(position);
 +
 +    return;
 +}
 +
 +void Helper::render(sf::RenderWindow& window) const
 +{
 +    window.draw(sprite);
 +}
diff --cc src/Helper.h
index c848c0991be1dcd9e3314e6a00a4c80a095af986,0aa1c54d700e4d8333d46c996987ac45aa0103d8..08d430e528d3315b9fd3e3d5a62090e380b0c4da
@@@ -2,23 -2,23 +2,22 @@@
  #define HELPER_H
  
  #include <SFML/Graphics.hpp> 
 +#include "Autonomous_object.h"
  
 -#include "Autonomus_object.h
 -
 -#include <vector>
 -
 -class Helper : public Autonomus_object
 +class Helper : public Autonomous_object
  {
 -    public:
 -        bool collides(Object& other) override;
 -        void collision(Object& other) override;
 -        void update() override;
 -        void render(sf::RenderWindow& window) override;
 +public:
 +    Helper();
 +    ~Helper() = default;
  
-     bool collides(Object& other) override;
 -    protected:
 -        void move(Time) override;
 +    void collision(Object& other) override;
 +    void update(Context& context) override;
 +    void render(sf::RenderWindow& window) const override;
  
 -    private:
 +protected:
 +    //void move(Time);
 +private:
 +    int stop_pos;
  };
  
  #endif
Simple merge
diff --cc src/Object.h
index 56e11e3f0af8cdf98b483c85c3370ad2e6ec705b,1262cffa5858a4fe91b48ea20884091bdaf0653c..a7b7170b71d091ce37352ef89bdc0ed2928a8979
@@@ -8,10 -8,13 +8,13 @@@ struct Context
  class Object
  {
  public:
 -    Object() : position{}, sprite{}, texture{} {};
 +    Object() : position{}, sprite{}, texture{}, direction{} {};
      virtual ~Object() = default;
  
-     virtual bool collides(Object& other) = 0;
+     bool collides(Object& other)
+     {
+         return get_hitbox().intersects(other.get_hitbox());
+     }
      virtual void collision(Object& other) = 0;
      virtual void update(Context& context) = 0;
      virtual void render(sf::RenderWindow& window) const = 0;
diff --cc src/States.cc
index 4b6631017fea406b27df9f35462b34c035b9a505,0d1422f6e8a226321c61b3f4e0dc6a399abf361b..5a35d060fa7fcd38c08196cc1e6746ea43a5c31b
@@@ -4,38 -5,77 +5,77 @@@
  #include "Context.h"
  #include "constants.h"
  
- Game_state::Game_state() : game_map{}, player{}, helper{}, pause_game{false}
 -Game_state::Game_state() : game_map{}, player{}, pause_game{false}, bottles{}, time_since_last_bottle{0.0f}
++Game_state::Game_state() : game_map{}, player{}, helper{}, pause_game{false}, bottles{}, time_since_last_bottle{0.0f}
  {
 -    
 -    bottles.push_back(std::make_unique<Bottle> ());
++
++    bottles.push_back(std::make_unique<Bottle>());
  }
  
--void Game_state::update(Contextcontext)
++void Game_state::update(Context &context)
  {
      if (pause_game)
--    {   
--        context.saved_game.reset(static_cast<Game_state*>(context.current_state.release()));
--        
++    {
++        context.saved_game.reset(static_cast<Game_state *>(context.current_state.release()));
++
          context.next_state = std::make_unique<Pause_menu>();
          pause_game = false;
          return;
      }
 -    //std::vector<Bottle> :: iterator it = bottles.begin();
++    // std::vector<Bottle> :: iterator it = bottles.begin();
+     /*for(std::unique_ptr<Bottle> &b: bottles)
+     {
+         if(player.collides(*b))
+         {
+             std::cout <<"crash" << std::endl;
 -            
++
+             player.add_collected();
+         }
+     }*/
 -    for(unsigned int i = 0; i < bottles.size(); ++i)
++    for (unsigned int i = 0; i < bottles.size(); ++i)
+     {
 -        if(player.collides(*(bottles[i])))
++        if (player.collides(*(bottles[i])))
+         {
 -            //std::cout <<"crash" << std::endl;
++            // std::cout <<"crash" << std::endl;
+             bottles.erase(bottles.begin() + i);
+             player.add_collected();
+         }
+     }
+     time_since_last_bottle += context.time.asSeconds();
 -    //std::cout << std::fixed << std::setprecision(3) << time_since_last_bottle << std::endl;
++    // std::cout << std::fixed << std::setprecision(3) << time_since_last_bottle << std::endl;
+     if (time_since_last_bottle >= 2)
+     {
+         if (bottles.size() > 10)
+         {
+             bottles.erase(bottles.begin());
+         }
 -        
++
+         bottles.push_back(std::make_unique<Bottle>());
 -        //std::cout << "placed bottle"<< std::endl;
++        // std::cout << "placed bottle"<< std::endl;
+         time_since_last_bottle = 0;
 -
+     }
      game_map.update(context);
      player.update(context);
 +    helper.update(context);
  }
  
--void Game_state::render(sf::RenderWindowwindow) const
++void Game_state::render(sf::RenderWindow &window) const
  {
      game_map.render(window);
      player.render(window);
 -    for (int i {}; i < int(bottles.size()); ++i)
 +    helper.render(window);
++    for (int i{}; i < int(bottles.size()); ++i)
+     {
+         bottles[i]->render(window);
 -    } 
 -        
++    }
  }
  
--void Game_state::handle_input(sf::Eventevent)
++void Game_state::handle_input(sf::Event &event)
  {
      switch (event.type)
      {
      case sf::Event::KeyPressed:
--        switch(event.key.code)
++        switch (event.key.code)
          {
          case sf::Keyboard::Escape:
              pause_game = true;
@@@ -57,12 -97,12 +97,12 @@@ Start_menu::Start_menu() : texture{}, s
      texture.loadFromFile("assets/sack.png");
      sprite.setTexture(texture);
  
--    sf::FloatRect gb {sprite.getGlobalBounds()};
++    sf::FloatRect gb{sprite.getGlobalBounds()};
      sprite.setOrigin(gb.width / 2, gb.height / 2);
      sprite.setPosition(S_WIDTH / 2, S_HEIGHT / 2);
  }
  
--void Start_menu::update(Contextcontext)
++void Start_menu::update(Context &context)
  {
      if (exit_menu)
      {
      }
  }
  
--void Start_menu::render(sf::RenderWindowwindow) const
++void Start_menu::render(sf::RenderWindow &window) const
  {
      window.draw(sprite);
  }
  
--void Start_menu::handle_input(sf::Eventevent)
++void Start_menu::handle_input(sf::Event &event)
  {
      switch (event.type)
      {
      case sf::Event::KeyPressed:
--        switch(event.key.code)
++        switch (event.key.code)
          {
          case sf::Keyboard::Enter:
              exit_menu = true;
@@@ -99,12 -139,12 +139,12 @@@ Pause_menu::Pause_menu() : texture{}, s
      texture.loadFromFile("assets/kir.png");
      sprite.setTexture(texture);
  
--    sf::FloatRect gb {sprite.getGlobalBounds()};
++    sf::FloatRect gb{sprite.getGlobalBounds()};
      sprite.setOrigin(gb.width / 2, gb.height / 2);
      sprite.setPosition(S_WIDTH / 2, S_HEIGHT / 2);
  }
  
--void Pause_menu::update(Contextcontext)
++void Pause_menu::update(Context &context)
  {
      if (resume_game)
      {
      }
  }
  
--void Pause_menu::render(sf::RenderWindowwindow) const
++void Pause_menu::render(sf::RenderWindow &window) const
  {
      window.draw(sprite);
  }
  
--void Pause_menu::handle_input(sf::Eventevent)
++void Pause_menu::handle_input(sf::Event &event)
  {
      switch (event.type)
      {
      case sf::Event::KeyPressed:
--        switch(event.key.code)
++        switch (event.key.code)
          {
          case sf::Keyboard::Enter:
              resume_game = true;
diff --cc src/States.h
index a2340e3416652ee30cbda3874e489e3ff11aac24,f311abaa2fcc94fafb8eee667e20a62105ea874c..eba4f92a60056094ef6d62f2927d32a547dca808
@@@ -5,7 -7,7 +7,8 @@@
  
  #include "Map.h"
  #include "Player.h"
 +#include "Helper.h"
+ #include "Bottle.h"
  
  struct Context; //finns en strukt som säger att Context finns innan den är deklarerad
  
@@@ -29,9 -31,10 +32,11 @@@ public
      void handle_input(sf::Event& event) override;
  protected:
  private:
+     float time_since_last_bottle;
+     std::vector<std::unique_ptr<Bottle>> bottles;
      Map game_map;
      Player player;
 +    Helper helper;
      bool pause_game;
  };