|
|
@ -1,11 +1,15 @@ |
|
|
|
#include "guecs.hpp" |
|
|
|
#include "guecs.hpp" |
|
|
|
#include "sfml/shaders.hpp" |
|
|
|
#include "sfml/backend.hpp" |
|
|
|
#include "sfml/sound.hpp" |
|
|
|
|
|
|
|
#include "sfml/textures.hpp" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace guecs { |
|
|
|
namespace guecs { |
|
|
|
|
|
|
|
static Backend* BACKEND = nullptr; |
|
|
|
|
|
|
|
|
|
|
|
using std::make_shared; |
|
|
|
using std::make_shared; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void init(Backend* backend) { |
|
|
|
|
|
|
|
BACKEND = backend; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Textual::init(lel::Cell &cell, shared_ptr<sf::Font> font_ptr) { |
|
|
|
void Textual::init(lel::Cell &cell, shared_ptr<sf::Font> font_ptr) { |
|
|
|
dbc::check(font_ptr != nullptr, "you failed to initialize this WideText"); |
|
|
|
dbc::check(font_ptr != nullptr, "you failed to initialize this WideText"); |
|
|
|
if(font == nullptr) font = font_ptr; |
|
|
|
if(font == nullptr) font = font_ptr; |
|
|
@ -32,14 +36,14 @@ namespace guecs { |
|
|
|
void Sprite::update(const string& new_name) { |
|
|
|
void Sprite::update(const string& new_name) { |
|
|
|
if(new_name != name) { |
|
|
|
if(new_name != name) { |
|
|
|
name = new_name; |
|
|
|
name = new_name; |
|
|
|
auto sprite_texture = textures::get(name); |
|
|
|
auto sprite_texture = BACKEND->texture_get(name); |
|
|
|
sprite->setTexture(*sprite_texture.texture); |
|
|
|
sprite->setTexture(*sprite_texture.texture); |
|
|
|
sprite->setTextureRect(sprite_texture.sprite->getTextureRect()); |
|
|
|
sprite->setTextureRect(sprite_texture.sprite->getTextureRect()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Sprite::init(lel::Cell &cell) { |
|
|
|
void Sprite::init(lel::Cell &cell) { |
|
|
|
auto sprite_texture = textures::get(name); |
|
|
|
auto sprite_texture = BACKEND->texture_get(name); |
|
|
|
|
|
|
|
|
|
|
|
sprite = make_shared<sf::Sprite>( |
|
|
|
sprite = make_shared<sf::Sprite>( |
|
|
|
*sprite_texture.texture, |
|
|
|
*sprite_texture.texture, |
|
|
@ -78,13 +82,13 @@ namespace guecs { |
|
|
|
|
|
|
|
|
|
|
|
void Sound::play(bool hover) { |
|
|
|
void Sound::play(bool hover) { |
|
|
|
if(!hover) { |
|
|
|
if(!hover) { |
|
|
|
sound::play(on_click); |
|
|
|
BACKEND->sound_play(on_click); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Sound::stop(bool hover) { |
|
|
|
void Sound::stop(bool hover) { |
|
|
|
if(!hover) { |
|
|
|
if(!hover) { |
|
|
|
sound::stop(on_click); |
|
|
|
BACKEND->sound_stop(on_click); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -96,8 +100,7 @@ namespace guecs { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Effect::init(lel::Cell &cell) { |
|
|
|
void Effect::init(lel::Cell &cell) { |
|
|
|
$shader_version = shaders::version(); |
|
|
|
$shader = BACKEND->shader_get(name); |
|
|
|
$shader = shaders::get(name); |
|
|
|
|
|
|
|
$shader->setUniform("u_resolution", sf::Vector2f({float(cell.w), float(cell.h)})); |
|
|
|
$shader->setUniform("u_resolution", sf::Vector2f({float(cell.w), float(cell.h)})); |
|
|
|
$clock = std::make_shared<sf::Clock>(); |
|
|
|
$clock = std::make_shared<sf::Clock>(); |
|
|
|
} |
|
|
|
} |
|
|
@ -122,9 +125,8 @@ namespace guecs { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
shared_ptr<sf::Shader> Effect::checkout_ptr() { |
|
|
|
shared_ptr<sf::Shader> Effect::checkout_ptr() { |
|
|
|
if(shaders::updated($shader_version)) { |
|
|
|
if(BACKEND->shader_updated()) { |
|
|
|
$shader = shaders::get(name); |
|
|
|
$shader = BACKEND->shader_get(name); |
|
|
|
$shader_version = shaders::version(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $shader; |
|
|
|
return $shader; |
|
|
|