Graphics.cpp 1.4 KB

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