Changeset 76 for ttyvaders


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
Files:
1 added
5 edited
1 moved

Legend:

Unmodified
Added
Removed
  • ttyvaders/trunk/doc/shapes.txt

    r42 r76  
    151151        #######
    152152
     153        #######
     154     ###       ###
     155   ##             ##
     156  #                 #
     157  #                 #
     158  #                 #
     159   ##             ##
     160     ###       ###
     161        #######
     162
    153163        _______
    154164     ,-'_______`-.
  • 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
  • ttyvaders/trunk/src/Makefile.am

    r70 r76  
    2727        common.h \
    2828        explosions.c \
    29         graphics.c \
     29        ../libee/ee.c \
    3030        main.c \
    3131        math.c \
  • ttyvaders/trunk/src/ceo.c

    r72 r76  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: ceo.c,v 1.5 2002/12/23 10:06:27 sam Exp $
     6 *   $Id$
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    2828#include "common.h"
    2929
    30 void ceo_alert( void )
     30void ceo_alert( game *g )
    3131{
    3232    int end = 0;
     
    3434    while( !end )
    3535    {
    36         clear_graphics();
     36        clear_graphics( g );
    3737
    3838        if( get_key() == '\t' )
  • ttyvaders/trunk/src/common.h

    r72 r76  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: common.h,v 1.16 2003/02/09 11:17:40 sam Exp $
     6 *   $Id$
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    5050#   define gfx_putstr(x) SLsmg_write_string(x)
    5151#elif USE_NCURSES
     52#define box box_other
    5253#   include <curses.h>
     54#undef box
    5355#   define gfx_color(x) attrset(COLOR_PAIR(x))
    5456#   define gfx_goto(x,y) move(y,x)
     
    200202 * From ceo.c
    201203 */
    202 void ceo_alert( void );
     204void ceo_alert( game *g );
    203205
    204206/*
     
    223225void init_game( game *g );
    224226char get_key( void );
    225 void gfx_delay( void );
    226 void clear_graphics( void );
     227void clear_graphics( game *g );
    227228void refresh_graphics( void );
    228229void end_graphics( void );
  • ttyvaders/trunk/src/main.c

    r72 r76  
    44 *                 All Rights Reserved
    55 *
    6  *   $Id: main.c,v 1.17 2003/02/09 11:17:40 sam Exp $
     6 *   $Id$
    77 *
    88 *   This program is free software; you can redistribute it and/or modify
     
    104104                break;
    105105            case '\t':
    106                 ceo_alert();
     106                ceo_alert( g );
    107107                poz = 1;
    108108                break;
     
    177177        }
    178178
    179         gfx_delay();
    180 
    181179        if( !poz || skip )
    182180        {
     
    217215
    218216        /* Clear screen */
    219         clear_graphics();
     217        clear_graphics( g );
    220218
    221219        /* Print starfield, tunnel, aliens, player and explosions */
Note: See TracChangeset for help on using the changeset viewer.