123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /**
- * Triangles
- * Copyright (C) 2016 POSITIVE MENTAL ATTITUDE
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- #include "TrianglesWindow.hpp"
- #include "InputTarget.hpp"
- TrianglesWindow::TrianglesWindow(const std::string& title, sf::Vector2u size):
- InputTarget(_inputMap),
- _size(size),
- _title(title),
- _mouseLocked(false)
- {
- _context = nullptr;
- _inputMap.map(0, Input(sf::Keyboard::R, Input::Type::Pressed));
- bind(0, [this](const sf::Event&, float power)
- {
- if(_size == sf::Vector2u(640u, 480u))
- _size = sf::Vector2u(1366u, 768u);
- else
- _size = sf::Vector2u(640u, 480u);
- close();
- open();
- });
- }
- TrianglesWindow::~TrianglesWindow()
- {
- close();
- }
- void TrianglesWindow::setContext(Context* context)
- {
- _context = context;
- }
- void TrianglesWindow::clear()
- {
- _window.clear(sf::Color::Black);
- }
- void TrianglesWindow::clear(sf::Color color)
- {
- _window.clear(color);
- }
- void TrianglesWindow::render()
- {
- _window.display();
- _window.setMouseCursorVisible(true);
- }
- void TrianglesWindow::recreate()
- {
- close();
- open();
- }
- void TrianglesWindow::lockFramerate(bool locked)
- {
- if(_context->vsync)
- return;
- if(locked)
- _window.setFramerateLimit(30);
- else
- _window.setFramerateLimit(240);
- }
- bool TrianglesWindow::setActive(bool active)
- {
- return _window.setActive(active);
- }
- void TrianglesWindow::setSize(sf::Vector2u& size)
- {
- _size = size;
- }
- void TrianglesWindow::setSize(unsigned width, unsigned height)
- {
- _size = sf::Vector2u(width, height);
- }
- sf::Vector2u TrianglesWindow::getSize()
- {
- return _window.getSize();
- }
- void TrianglesWindow::setView(const sf::View* view)
- {
- _window.setView(*view);
- }
- void TrianglesWindow::setView()
- {
- _window.setView(_window.getDefaultView());
- }
- void TrianglesWindow::draw(sf::Drawable& drawable)
- {
- _window.draw(drawable);
- }
- void TrianglesWindow::draw(sf::Drawable& drawable, sf::RenderStates states)
- {
- _window.draw(drawable, states);
- }
- void TrianglesWindow::draw(sf::Drawable& drawable, sf::Shader* shader)
- {
- _window.draw(drawable, shader);
- }
- bool TrianglesWindow::pollEvent(sf::Event& event)
- {
- return _window.pollEvent(event);
- }
- sf::Vector2i TrianglesWindow::getMousePosition()
- {
- return sf::Mouse::getPosition(_window);
- }
- void TrianglesWindow::lockMouse()
- {
- lockMouse(sf::Vector2i(_size.x / 2.f, _size.y / 2.f));
- }
- void TrianglesWindow::lockMouse(sf::Vector2i position)
- {
- _window.setMouseCursorVisible(false);
- sf::Mouse::setPosition(position, _window);
- }
- #include "Utility.hpp"
- void TrianglesWindow::open()
- {
- sf::ContextSettings settings;
- settings.majorVersion = 3;
- settings.minorVersion = 0;
- settings.antialiasingLevel = 8;
- _window.create(sf::VideoMode(_size.x, _size.y), _title, (_context->fullscreen ? sf::Style::Fullscreen : (sf::Style::Titlebar | sf::Style::Close)), settings);
- _window.setKeyRepeatEnabled(false);
- Echo::debug("Debug window position set to 1200 800");
- _window.setPosition(sf::Vector2i(1200, 800));
- if(_context->vsync)
- _window.setVerticalSyncEnabled(true);
- if(_context)
- _context->needsUpdate = true;
- }
- void TrianglesWindow::close()
- {
- if(_window.isOpen())
- _window.close();
- }
|