snake5 icon

basic SGScript threading test v2

snake5 | PRO | 11/29/15 05:27:41 PM UTC | 0 ⭐ | 769 👁️ | Never ⏰ | []
C++ |

1.63 KB

|

None

|

0 👍

/

0 👎

function draw_ticking_text()
{
    str = "Gradually appearing text...";
    i = 0;
    subthread_create( function() use( i ){ for(;;){ i++; yield( 0.2 ); } } );
    for(;;)
    {
        tx = string_part( str, 0, i % str.length );
        SS_DrawTextLine( tx, Font, 20, 20, color(1,1,1) );
        yield();
    }
}
 
function draw_moveline( from, to )
{
    from = clone( from );
    to = clone( to );
    
    yield();
    fade = 1.0;
    subthread_create( function() use( fade ){ for(;;){ fade -= 1/60; yield( 1/60 ); } } );
    while( fade > 0 )
    {
        SS_DrawColorLine( from.x, from.y, to.x, to.y, 1, 0, 0, fade );
        yield();
    }
}
 
function initialize()
{
    global mpos = vec2( 0, 0 );
    global opos = vec2( 0, 0 );
    global W = 1024, H = 576;
    global Window = SS_CreateWindow( "SGS-SDL Game Framework", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 1024, 576, SDL_WINDOW_OPENGLMAYBE );
    Window.initRenderer( SS_RENDERER_DONTCARE, 0&SS_RENDERER_VSYNC );
    global Font = SS_CreateFont( "fonts/lato-regular.ttf", 12 );
    SS_InitDrawFunctions();
    
    thread_create( draw_ticking_text );
}
 
global prevTime = ftime();
function update()
{
    SS_Clear( color(0.25,0.3,0.4) );
    SS_SetCameraUI( 0, W, 0, H );
    curTime = ftime();
    deltaTime = curTime - prevTime;
    global prevTime = curTime;
    if( deltaTime > 1/15 )
        deltaTime = 1/15;
    process_threads( deltaTime );
    SS_Present();
}
 
function on_event( e )
{
    if( e.type == SDL_QUIT )
        global sys_exit = true;
    if( e.type == SDL_MOUSEMOTION )
    {
        npos = vec2( e.x, e.y );
        if( ( opos - npos ).length > 2 )
        {
            thread_create( draw_moveline, null, opos, npos );
            global opos = npos;
        }
        global mpos = npos;
    }
}

Comments