@ -24,6 +24,10 @@ namespace guecs {
text - > setCharacterSize ( size ) ;
}
void Textual : : render ( sf : : RenderWindow & window , sf : : Shader * shader_ptr ) {
window . draw ( * text , shader_ptr ) ;
}
void Textual : : update ( const wstring & new_content ) {
content = new_content ;
text - > setString ( content ) ;
@ -56,6 +60,10 @@ namespace guecs {
float ( cell . h - padding * 2 ) / bounds . size . y } ) ;
}
void Sprite : : render ( sf : : RenderWindow & window , sf : : Shader * shader_ptr ) {
window . draw ( * sprite , shader_ptr ) ;
}
void Rectangle : : init ( lel : : Cell & cell ) {
sf : : Vector2f size { float ( cell . w ) - padding * 2 , float ( cell . h ) - padding * 2 } ;
if ( shape = = nullptr ) shape = make_shared < sf : : RectangleShape > ( size ) ;
@ -65,15 +73,24 @@ namespace guecs {
shape - > setOutlineThickness ( border_px ) ;
}
void Rectangle : : render ( sf : : RenderWindow & window , sf : : Shader * shader_ptr ) {
window . draw ( * shape , shader_ptr ) ;
}
void Meter : : init ( lel : : Cell & cell , Rectangle & bg ) {
bg . shape - > setFillColor ( color ) ;
init ( cell ) ;
}
void Meter : : init ( lel : : Cell & cell ) {
bar . init ( cell ) ;
}
void Meter : : render ( lel : : Cell & cell ) {
void Meter : : render ( lel : : Cell & cell , sf : : RenderWindow & window , sf : : Shader * shader_ptr ) {
float level = std : : clamp ( percent , 0.0f , 1.0f ) * float ( cell . w ) ;
// ZED: this 6 is a border width, make it a thing
bar . shape - > setSize ( { std : : max ( level , 0.0f ) , float ( cell . h - 6 ) } ) ;
window . draw ( * bar . shape , shader_ptr ) ;
}
void Sound : : play ( bool hover ) {
@ -104,13 +121,17 @@ namespace guecs {
assert ( shape ! = nullptr & & " failed to make rectangle " ) ;
}
void Background : : render ( sf : : RenderWindow & window ) {
window . draw ( * shape ) ;
}
void Effect : : init ( lel : : Cell & cell ) {
$ shader = BACKEND - > shader_get ( name ) ;
$ shader - > setUniform ( " u_resolution " , sf : : Vector2f ( { float ( cell . w ) , float ( cell . h ) } ) ) ;
$ clock = std : : make_shared < sf : : Clock > ( ) ;
}
void Effect : : step ( ) {
void Effect : : render ( ) {
sf : : Time cur_time = $ clock - > getElapsedTime ( ) ;
float u_time = cur_time . asSeconds ( ) ;
@ -129,12 +150,20 @@ namespace guecs {
$ u_time_end = u_time . asSeconds ( ) + duration ;
}
shared_ptr < sf : : Shader > Effect : : checkout_ptr ( ) {
sf : : Shader * Effect : : get_shader ( bool is_shape ) {
sf : : Shader * shader_ptr = nullptr ;
if ( BACKEND - > shader_updated ( ) ) {
$ shader = BACKEND - > shader_get ( name ) ;
}
return $ shader ;
if ( $ active ) {
$ shader - > setUniform ( " is_shape " , is_shape ) ;
// NOTE: this is needed because SFML doesn't handle shared_ptr
shader_ptr = $ shader . get ( ) ;
}
return shader_ptr ;
}
void Effect : : stop ( ) {