@ -2,6 +2,7 @@
# include "guecs/sfml/backend.hpp"
# include "guecs/sfml/backend.hpp"
# include <cassert>
# include <cassert>
# include <iostream>
# include <iostream>
# include <fmt/core.h>
namespace guecs {
namespace guecs {
using std : : make_shared ;
using std : : make_shared ;
@ -36,18 +37,17 @@ 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 = BACKEND - > texture_get ( name ) ;
auto sprite_texture = BACKEND - > get_sprite ( name ) ;
sprite - > setTexture ( * sprite_texture . texture ) ;
sprite - > setTexture ( * sprite_texture . texture ) ;
sprite - > setTextureRect ( sprite_texture . sprite - > getTextureRect ( ) ) ;
sprite - > setTextureRect ( { { 0 , 0 } , sprite_texture . frame_size } ) ;
}
}
}
}
void Sprite : : init ( lel : : Cell & cell ) {
void Sprite : : init ( lel : : Cell & cell ) {
auto sprite_texture = BACKEND - > texture_get ( name ) ;
auto sprite_texture = BACKEND - > get_sprite ( name ) ;
sprite = make_shared < sf : : Sprite > (
sf : : IntRect rect { { 0 , 0 } , sprite_texture . frame_size } ;
* sprite_texture . texture ,
sprite = make_shared < sf : : Sprite > ( * sprite_texture . texture , rect ) ;
sprite_texture . sprite - > getTextureRect ( ) ) ;
sprite - > setPosition ( {
sprite - > setPosition ( {
float ( cell . x + padding ) ,
float ( cell . x + padding ) ,
@ -64,6 +64,32 @@ namespace guecs {
window . draw ( * sprite , shader_ptr ) ;
window . draw ( * sprite , shader_ptr ) ;
}
}
void Icon : : update ( const string & new_name ) {
if ( new_name ! = name ) {
name = new_name ;
auto sprite_texture = BACKEND - > get_icon ( name ) ;
sprite - > setTexture ( * sprite_texture . texture ) ;
sprite - > setTextureRect ( { { 0 , 0 } , sprite_texture . frame_size } ) ;
}
}
void Icon : : init ( lel : : Cell & cell ) {
auto sprite_texture = BACKEND - > get_icon ( name ) ;
sf : : IntRect rect { { 0 , 0 } , sprite_texture . frame_size } ;
fmt : : println ( " ICON SIZE: {},{}; {},{} " ,
rect . position . x , rect . position . y ,
rect . size . x , rect . size . y ) ;
sprite = make_shared < sf : : Sprite > ( * sprite_texture . texture , rect ) ;
sprite - > setPosition ( { float ( cell . x + padding ) , float ( cell . y + padding ) } ) ;
}
void Icon : : render ( sf : : RenderWindow & window , sf : : Shader * shader_ptr ) {
window . draw ( * sprite , shader_ptr ) ;
}
void Rectangle : : init ( lel : : Cell & cell ) {
void Rectangle : : init ( lel : : Cell & cell ) {
sf : : Vector2f size { float ( cell . w ) - padding * 2 , float ( cell . h ) - padding * 2 } ;
sf : : Vector2f size { float ( cell . w ) - padding * 2 , float ( cell . h ) - padding * 2 } ;
if ( shape = = nullptr ) shape = make_shared < sf : : RectangleShape > ( size ) ;
if ( shape = = nullptr ) shape = make_shared < sf : : RectangleShape > ( size ) ;
@ -126,11 +152,10 @@ namespace guecs {
}
}
void Background : : set_sprite ( const std : : string & name , bool stretch ) {
void Background : : set_sprite ( const std : : string & name , bool stretch ) {
auto sprite_texture = BACKEND - > texture_get ( name ) ;
auto sprite_texture = BACKEND - > get_sprite ( name ) ;
sprite = make_shared < sf : : Sprite > (
sf : : IntRect rect { { 0 , 0 } , sprite_texture . frame_size } ;
* sprite_texture . texture ,
sprite = make_shared < sf : : Sprite > ( * sprite_texture . texture , rect ) ;
sprite_texture . sprite - > getTextureRect ( ) ) ;
sprite - > setPosition ( { float ( x ) , float ( y ) } ) ;
sprite - > setPosition ( { float ( x ) , float ( y ) } ) ;
@ -154,7 +179,7 @@ namespace guecs {
}
}
void Effect : : init ( lel : : Cell & cell ) {
void Effect : : init ( lel : : Cell & cell ) {
$ shader = BACKEND - > shader_get ( name ) ;
$ shader = BACKEND - > get_ shader( 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 > ( ) ;
}
}
@ -182,7 +207,7 @@ namespace guecs {
sf : : Shader * shader_ptr = nullptr ;
sf : : Shader * shader_ptr = nullptr ;
if ( BACKEND - > shader_updated ( ) ) {
if ( BACKEND - > shader_updated ( ) ) {
$ shader = BACKEND - > shader_get ( name ) ;
$ shader = BACKEND - > get_ shader( name ) ;
}
}
if ( $ active ) {
if ( $ active ) {