Ignore:
Timestamp:
Nov 9, 2003, 12:26:08 PM (16 years ago)
Author:
Sam Hocevar
Message:
  • libee/ee.c: + First file in libee, from src/graphics.c. + Disable cursor upon initialisation. + Added delay code for constant framerate.
  • src/common.h: + Minor compilation fix for latest ncurses.
Location:
ttyvaders/trunk/libee
Files:
1 added
1 moved

Legend:

Unmodified
Added
Removed
  • ttyvaders/trunk/libee/ee.c

    r74 r76  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: graphics.c,v 1.6 2002/12/23 16:21:38 sam Exp $
     6 *   $Id$
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    2525#include <stdlib.h>
    2626#include <unistd.h>
     27#include <sys/time.h>
     28#include <time.h>
    2729
    2830#include "common.h"
     
    5254
    5355    SLsmg_cls();
     56    SLtt_set_cursor_visibility( 0 );
    5457    SLsmg_refresh();
    5558#elif USE_NCURSES
     
    6164    noecho();
    6265    nodelay(stdscr, TRUE);
     66    curs_set( 0 );
    6367#else
    6468    /* Dummy driver */
     
    136140}
    137141
    138 void gfx_delay( void )
    139 {
    140 #ifdef USE_SLANG
    141     usleep(40000);
    142 #elif USE_NCURSES
    143     usleep(40000);
    144 #else
    145     /* Use dummy driver */
    146 #endif
    147 }
    148 
    149 void clear_graphics( void )
    150 {
    151 #ifdef USE_SLANG
    152     SLsmg_cls();
    153 #elif USE_NCURSES
    154     clear();
    155 #else
    156     /* Use dummy driver */
    157 #endif
    158 }
     142void clear_graphics( game *g )
     143{
     144#ifdef USE_SLANG
     145    //SLsmg_cls();
     146    int y;
     147    for( y = 0; y < g->h; y++ )
     148    {
     149        gfx_goto( 0, y );
     150        gfx_putstr( "                                                                                " );
     151    }
     152#elif USE_NCURSES
     153    //clear();
     154    int y;
     155    for( y = 0; y < g->h; y++ )
     156    {
     157        gfx_goto( 0, y );
     158        gfx_putstr( "                                                                                " );
     159    }
     160#else
     161    /* Use dummy driver */
     162#endif
     163}
     164
     165static int64_t local_time(void)
     166{
     167    struct timeval tv;
     168    int64_t now;
     169
     170    gettimeofday(&tv, NULL);
     171    now = tv.tv_sec;
     172    now *= 1000000;
     173    now += tv.tv_usec;
     174    return now;
     175}
     176
     177#define DELAY 40000
    159178
    160179void refresh_graphics( void )
    161180{
     181    static int64_t local_clock = 0;
     182    int64_t now;
     183
    162184    gfx_goto( 0, 0 );
     185
     186    if( !local_clock )
     187    {
     188        /* Initialize local_clock */
     189        local_clock = local_time();
     190    }
     191
     192    if( local_time() > local_clock + 10000 )
     193    {
     194        /* If we are late, we shouldn't display anything */
     195    }
     196
    163197#ifdef USE_SLANG
    164198    SLsmg_refresh();
     
    168202    /* Use dummy driver */
    169203#endif
     204
     205    now = local_time();
     206
     207    if( now < local_clock + DELAY - 10000 )
     208    {
     209        usleep( local_clock + DELAY - 10000 - now );
     210    }
     211
     212    local_clock += DELAY;
    170213}
    171214
     
    173216{
    174217#ifdef USE_SLANG
     218    SLtt_set_cursor_visibility( 1 );
    175219    SLang_reset_tty();
    176220    SLsmg_reset_smg();
    177221#elif USE_NCURSES
     222    curs_set( 1 );
    178223    endwin();
    179224#else
Note: See TracChangeset for help on using the changeset viewer.