Graphics.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "Graphics.h"
  2. #include "sfwindow.h"
  3. #include <SFML/Graphics.hpp>
  4. #include "utility/misc.h"
  5. #define GRAPHICS WalrusRPG::Graphics
  6. sf::RenderWindow window;
  7. sf::View view;
  8. sf::RenderTexture buffer;
  9. void GRAPHICS::init()
  10. {
  11. window.create(sf::VideoMode(640, 480), "WalrusRPG");
  12. view = sf::View(window.getDefaultView());
  13. buffer.create(320, 240);
  14. }
  15. void GRAPHICS::deinit()
  16. {
  17. window.close();
  18. }
  19. void GRAPHICS::frame_begin()
  20. {
  21. window.clear(sf::Color::Black);
  22. }
  23. void GRAPHICS::frame_end()
  24. {
  25. sf::Sprite sprite(buffer.getTexture());
  26. sf::Vector2u winsize = window.getSize();
  27. sf::Event event;
  28. float scale = min(winsize.x / 320.f, winsize.y / 240.f);
  29. while (window.pollEvent(event))
  30. {
  31. }
  32. window.setView(view = sf::View(sf::FloatRect(0, 0, winsize.x, winsize.y)));
  33. buffer.display();
  34. window.clear();
  35. sprite.setScale(scale, scale);
  36. sprite.setPosition((winsize.x - 320.f * scale) / 2, (winsize.y - 240.f * scale) / 2);
  37. window.draw(sprite);
  38. window.display();
  39. }
  40. void GRAPHICS::put_sprite(const Texture &sheet, int x, int y,
  41. const WalrusRPG::Utils::Rect &window)
  42. {
  43. sf::Sprite sprite;
  44. sprite.setTexture(sheet.data);
  45. sprite.setTextureRect(sf::IntRect(window.x, window.y, window.width, window.height));
  46. sprite.setPosition(x, y);
  47. buffer.draw(sprite);
  48. }
  49. void GRAPHICS::fill(const WalrusRPG::Graphics::Pixel &color)
  50. {
  51. UNUSED(color);
  52. }