Graphics.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "Graphics.h"
  2. #include "engine/main.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(320, 240), "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. if (event.type == sf::Event::Closed)
  32. {
  33. WalrusRPG::quit();
  34. }
  35. }
  36. window.setView(view = sf::View(sf::FloatRect(0, 0, winsize.x, winsize.y)));
  37. buffer.display();
  38. window.clear();
  39. sprite.setScale(scale, scale);
  40. sprite.setPosition((winsize.x - 320.f * scale) / 2, (winsize.y - 240.f * scale) / 2);
  41. window.draw(sprite);
  42. window.display();
  43. }
  44. void GRAPHICS::put_sprite(const Texture &sheet, int x, int y,
  45. const WalrusRPG::Utils::Rect &window)
  46. {
  47. sf::Sprite sprite;
  48. sprite.setTexture(sheet.data);
  49. sprite.setTextureRect(sf::IntRect(window.x, window.y, window.width, window.height));
  50. sprite.setPosition(x, y);
  51. buffer.draw(sprite);
  52. }
  53. void GRAPHICS::fill(const WalrusRPG::Graphics::Pixel &color)
  54. {
  55. UNUSED(color);
  56. }