git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/ttyvaders/trunk@80 92316355-f0b4-4df1-b90c-862c8a59935fmaster
@@ -6,6 +6,6 @@ CPPFLAGS_ncurses = -DUSE_NCURSES | |||
endif | |||
lib_LIBRARIES = libee.a | |||
libee_a_SOURCES = ee.c | |||
libee_a_CPPFLAGS = -I../src $(CPPFLAGS_slang) $(CPPFLAGS_ncurses) | |||
libee_a_SOURCES = ee.c ee.h | |||
libee_a_CPPFLAGS = $(CPPFLAGS_slang) $(CPPFLAGS_ncurses) | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* ttyvaders Textmode shoot'em up | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* libee ASCII-Art library | |||
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id$ | |||
@@ -27,34 +27,44 @@ | |||
#include <sys/time.h> | |||
#include <time.h> | |||
#include "common.h" | |||
#include "ee.h" | |||
int init_graphics( void ) | |||
int ee_init(void) | |||
{ | |||
#ifdef USE_SLANG | |||
static char * colors[] = { "black", "green", "yellow", "white", | |||
"red", "gray", "lightgray", "blue", "cyan", "magenta", NULL }; | |||
int i; | |||
/* Initialize slang library */ | |||
SLsig_block_signals(); | |||
SLtt_get_terminfo(); | |||
if( SLkp_init() == -1 ) | |||
if(SLkp_init() == -1) | |||
{ | |||
SLsig_unblock_signals(); | |||
return 1; | |||
return -1; | |||
} | |||
SLang_init_tty (-1, 0, 1); | |||
SLang_init_tty(-1, 0, 1); | |||
if( SLsmg_init_smg() == -1 ) | |||
if(SLsmg_init_smg() == -1) | |||
{ | |||
SLsig_unblock_signals(); | |||
return 1; | |||
return -1; | |||
} | |||
SLsig_unblock_signals(); | |||
SLsmg_cls(); | |||
SLtt_set_cursor_visibility( 0 ); | |||
SLtt_set_cursor_visibility(0); | |||
SLsmg_refresh(); | |||
for(i = 0; colors[i]; i++) | |||
{ | |||
SLtt_set_color(i + 1, NULL, colors[i], "black"); | |||
} | |||
#elif USE_NCURSES | |||
/* Initialize ncurses library */ | |||
initscr(); | |||
@@ -63,99 +73,68 @@ int init_graphics( void ) | |||
cbreak(); | |||
noecho(); | |||
nodelay(stdscr, TRUE); | |||
curs_set( 0 ); | |||
curs_set(0); | |||
start_color(); | |||
init_pair(EE_BLACK, COLOR_BLACK, COLOR_BLACK); | |||
init_pair(EE_GREEN, COLOR_GREEN, COLOR_BLACK); | |||
init_pair(EE_YELLOW, COLOR_YELLOW, COLOR_BLACK); | |||
init_pair(EE_WHITE, COLOR_WHITE, COLOR_BLACK); | |||
init_pair(EE_RED, COLOR_RED, COLOR_BLACK); | |||
init_pair(EE_GRAY, COLOR_WHITE, COLOR_BLACK); // XXX | |||
init_pair(EE_LIGHTGRAY, COLOR_WHITE, COLOR_BLACK); // XXX | |||
init_pair(EE_BLUE, COLOR_BLUE, COLOR_BLACK); | |||
init_pair(EE_CYAN, COLOR_CYAN, COLOR_BLACK); | |||
init_pair(EE_MAGENTA, COLOR_MAGENTA, COLOR_BLACK); | |||
#else | |||
/* Dummy driver */ | |||
#endif | |||
return 0; | |||
} | |||
void init_game( game *g ) | |||
int ee_get_width(void) | |||
{ | |||
#ifdef USE_SLANG | |||
static char * const colors[] = | |||
{ | |||
"black", "green", "yellow", "white", | |||
"red", "gray", "lightgray", "blue", "cyan", "magenta", NULL | |||
}; | |||
int i; | |||
for( i = 0; colors[i] ; i++ ) | |||
{ | |||
SLtt_set_color( i+1, NULL, colors[i], "black" ); | |||
} | |||
g->w = SLtt_Screen_Cols; | |||
g->h = SLtt_Screen_Rows; | |||
return SLtt_Screen_Cols; | |||
#elif USE_NCURSES | |||
start_color(); | |||
init_pair( BLACK, COLOR_BLACK, COLOR_BLACK ); | |||
init_pair( GREEN, COLOR_GREEN, COLOR_BLACK ); | |||
init_pair( YELLOW, COLOR_YELLOW, COLOR_BLACK ); | |||
init_pair( WHITE, COLOR_WHITE, COLOR_BLACK ); | |||
init_pair( RED, COLOR_RED, COLOR_BLACK ); | |||
init_pair( GRAY, COLOR_WHITE, COLOR_BLACK ); // XXX | |||
init_pair( LIGHTGRAY, COLOR_WHITE, COLOR_BLACK ); // XXX | |||
init_pair( BLUE, COLOR_BLUE, COLOR_BLACK ); | |||
init_pair( CYAN, COLOR_CYAN, COLOR_BLACK ); | |||
init_pair( MAGENTA, COLOR_MAGENTA, COLOR_BLACK ); | |||
g->w = COLS; | |||
g->h = LINES; | |||
return COLS; | |||
#else | |||
/* Use dummy driver */ | |||
g->w = 80; | |||
g->h = 25; | |||
return 80; | |||
#endif | |||
} | |||
char get_key( void ) | |||
int ee_get_height(void) | |||
{ | |||
#ifdef USE_SLANG | |||
if( SLang_input_pending (0) ) | |||
{ | |||
return SLang_getkey(); | |||
} | |||
return SLtt_Screen_Rows; | |||
#elif USE_NCURSES | |||
char key; | |||
if( ( key = getch() ) != ERR ) | |||
{ | |||
return key; | |||
} | |||
return LINES; | |||
#else | |||
/* Use dummy driver */ | |||
char key = GET_RAND(0,256); | |||
if( key != 'q' && key != 'p' && key != '\t' ) | |||
{ | |||
return key; | |||
} | |||
return 25; | |||
#endif | |||
return 0; | |||
} | |||
void clear_graphics( game *g ) | |||
void ee_clear(void) | |||
{ | |||
#ifdef USE_SLANG | |||
//SLsmg_cls(); | |||
int y; | |||
for( y = 0; y < g->h; y++ ) | |||
for(y = 0; y < ee_get_height(); y++) | |||
{ | |||
gfx_goto( 0, y ); | |||
gfx_putstr( " " ); | |||
ee_goto(0, y); | |||
ee_putstr(" "); | |||
} | |||
#elif USE_NCURSES | |||
//clear(); | |||
int y; | |||
for( y = 0; y < g->h; y++ ) | |||
for(y = 0; y < ee_get_height(); y++) | |||
{ | |||
gfx_goto( 0, y ); | |||
gfx_putstr( " " ); | |||
ee_goto(0, y); | |||
ee_putstr(" "); | |||
} | |||
#else | |||
/* Use dummy driver */ | |||
@@ -175,21 +154,20 @@ static int64_t local_time(void) | |||
} | |||
#define DELAY 40000 | |||
void refresh_graphics( void ) | |||
void ee_refresh(void) | |||
{ | |||
static int64_t local_clock = 0; | |||
int64_t now; | |||
gfx_goto( 0, 0 ); | |||
ee_goto(0, 0); | |||
if( !local_clock ) | |||
if(!local_clock) | |||
{ | |||
/* Initialize local_clock */ | |||
local_clock = local_time(); | |||
} | |||
if( local_time() > local_clock + 10000 ) | |||
if(local_time() > local_clock + 10000) | |||
{ | |||
/* If we are late, we shouldn't display anything */ | |||
} | |||
@@ -204,25 +182,47 @@ void refresh_graphics( void ) | |||
now = local_time(); | |||
if( now < local_clock + DELAY - 10000 ) | |||
if(now < local_clock + DELAY - 10000) | |||
{ | |||
usleep( local_clock + DELAY - 10000 - now ); | |||
usleep(local_clock + DELAY - 10000 - now); | |||
} | |||
local_clock += DELAY; | |||
} | |||
void end_graphics( void ) | |||
void ee_end(void) | |||
{ | |||
#ifdef USE_SLANG | |||
SLtt_set_cursor_visibility( 1 ); | |||
SLtt_set_cursor_visibility(1); | |||
SLang_reset_tty(); | |||
SLsmg_reset_smg(); | |||
#elif USE_NCURSES | |||
curs_set( 1 ); | |||
curs_set(1); | |||
endwin(); | |||
#else | |||
/* Use dummy driver */ | |||
#endif | |||
} | |||
char ee_get_key(void) | |||
{ | |||
#ifdef USE_SLANG | |||
if(SLang_input_pending(0)) | |||
{ | |||
return SLang_getkey(); | |||
} | |||
#elif USE_NCURSES | |||
char key = getch(); | |||
if(key != ERR) | |||
{ | |||
return key; | |||
} | |||
#else | |||
return 0; | |||
#endif | |||
return 0; | |||
} | |||
@@ -0,0 +1,74 @@ | |||
/* | |||
* libee ASCII-Art library | |||
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
/* | |||
* Graphics primitives | |||
*/ | |||
#ifdef USE_SLANG | |||
# include <slang.h> | |||
# define ee_color(x) SLsmg_set_color(x) | |||
# define ee_goto(x,y) SLsmg_gotorc(y,x) | |||
# define ee_putchar(x) SLsmg_write_char(x) | |||
# define ee_putstr(x) SLsmg_write_string(x) | |||
#elif USE_NCURSES | |||
# define box box_divert | |||
# include <curses.h> | |||
# undef box | |||
# define ee_color(x) attrset(COLOR_PAIR(x)) | |||
# define ee_goto(x,y) move(y,x) | |||
# define ee_putchar(x) addch(x) | |||
# define ee_putstr(x) addstr(x) | |||
#else | |||
# define ee_color(x) (void)(x) | |||
# define ee_goto(x,y) do{ (void)(x); (void)(y); } while(0) | |||
# define ee_putchar(x) (void)(x) | |||
# define ee_putstr(x) (void)(x) | |||
#endif | |||
#define ee_putcharTO(x,y,c) do{ ee_goto(x,y); ee_putchar(c); }while(0) | |||
/* | |||
* Colours | |||
*/ | |||
#define EE_BLACK 1 | |||
#define EE_GREEN 2 | |||
#define EE_YELLOW 3 | |||
#define EE_WHITE 4 | |||
#define EE_RED 5 | |||
#define EE_GRAY 6 | |||
#define EE_LIGHTGRAY 7 | |||
#define EE_BLUE 8 | |||
#define EE_CYAN 9 | |||
#define EE_MAGENTA 10 | |||
/* | |||
* Prototypes | |||
*/ | |||
int ee_init(void); | |||
int ee_get_width(void); | |||
int ee_get_height(void); | |||
void ee_clear(void); | |||
void ee_refresh(void); | |||
void ee_end(void); | |||
char ee_get_key(void); | |||
@@ -35,6 +35,6 @@ ttyvaders_SOURCES = \ | |||
weapons.c \ | |||
$(NULL) | |||
ttyvaders_CPPFLAGS = $(CPPFLAGS_slang) $(CPPFLAGS_ncurses) | |||
ttyvaders_CPPFLAGS = -I../libee $(CPPFLAGS_slang) $(CPPFLAGS_ncurses) | |||
ttyvaders_LDADD = ../libee/libee.a $(LDFLAGS_slang) $(LDFLAGS_ncurses) | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: aliens.c,v 1.8 2002/12/23 13:46:27 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -133,127 +133,127 @@ static void draw_alien_bar( game *g, int x, int y, int frame ) | |||
switch( frame ) | |||
{ | |||
case 0: | |||
gfx_color( MAGENTA ); | |||
gfx_goto( x, y ); | |||
gfx_putstr( ",---." ); | |||
gfx_goto( x, y+1 ); | |||
gfx_putchar( '\\' ); | |||
gfx_color( WHITE ); | |||
gfx_putstr( "o O" ); | |||
gfx_color( MAGENTA ); | |||
gfx_putchar( '/' ); | |||
gfx_goto( x, y+2 ); | |||
gfx_putstr( "^^^^^" ); | |||
ee_color( EE_MAGENTA ); | |||
ee_goto( x, y ); | |||
ee_putstr( ",---." ); | |||
ee_goto( x, y+1 ); | |||
ee_putchar( '\\' ); | |||
ee_color( EE_WHITE ); | |||
ee_putstr( "o O" ); | |||
ee_color( EE_MAGENTA ); | |||
ee_putchar( '/' ); | |||
ee_goto( x, y+2 ); | |||
ee_putstr( "^^^^^" ); | |||
break; | |||
case 1: | |||
gfx_color( MAGENTA ); | |||
gfx_goto( x, y ); | |||
gfx_putstr( ",---." ); | |||
gfx_goto( x, y+1 ); | |||
gfx_putchar( '\\' ); | |||
gfx_color( WHITE ); | |||
gfx_putstr( "O o" ); | |||
gfx_color( MAGENTA ); | |||
gfx_putchar( '/' ); | |||
gfx_goto( x, y+2 ); | |||
gfx_putstr( "^^^^^" ); | |||
ee_color( EE_MAGENTA ); | |||
ee_goto( x, y ); | |||
ee_putstr( ",---." ); | |||
ee_goto( x, y+1 ); | |||
ee_putchar( '\\' ); | |||
ee_color( EE_WHITE ); | |||
ee_putstr( "O o" ); | |||
ee_color( EE_MAGENTA ); | |||
ee_putchar( '/' ); | |||
ee_goto( x, y+2 ); | |||
ee_putstr( "^^^^^" ); | |||
break; | |||
} | |||
} | |||
static void draw_alien_baz( game *g, int x, int y, int frame ) | |||
{ | |||
gfx_color( GREEN ); | |||
gfx_goto( x, y-1 ); | |||
gfx_putstr( "__" ); | |||
ee_color( EE_GREEN ); | |||
ee_goto( x, y-1 ); | |||
ee_putstr( "__" ); | |||
gfx_goto( x-1, y ); | |||
gfx_putchar( '/' ); | |||
gfx_goto( x+2, y ); | |||
gfx_putchar( '\\' ); | |||
ee_goto( x-1, y ); | |||
ee_putchar( '/' ); | |||
ee_goto( x+2, y ); | |||
ee_putchar( '\\' ); | |||
switch( frame ) | |||
{ | |||
case 3: | |||
gfx_goto( x-2, y+1 ); | |||
gfx_putstr( "//'`\\\\" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "//'`\\\\" ); | |||
break; | |||
case 4: | |||
case 2: | |||
gfx_goto( x-2, y+1 ); | |||
gfx_putstr( "/(~~)\\" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "/(~~)\\" ); | |||
break; | |||
case 5: | |||
case 1: | |||
gfx_goto( x-2, y+1 ); | |||
gfx_putstr( "((^^))" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "((^^))" ); | |||
break; | |||
case 0: | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "\\\\//" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\\\\//" ); | |||
break; | |||
} | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y ); | |||
gfx_putstr( "oo" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y ); | |||
ee_putstr( "oo" ); | |||
} | |||
static void draw_alien_foo( game *g, int x, int y, int frame ) | |||
{ | |||
gfx_color( YELLOW ); | |||
ee_color( EE_YELLOW ); | |||
switch( frame ) | |||
{ | |||
case 0: | |||
gfx_goto( x, y ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( x+6, y ); | |||
gfx_putchar( ',' ); | |||
gfx_goto( x+1, y+1 ); | |||
gfx_putstr( "\\ X /" ); | |||
ee_goto( x, y ); | |||
ee_putchar( '.' ); | |||
ee_goto( x+6, y ); | |||
ee_putchar( ',' ); | |||
ee_goto( x+1, y+1 ); | |||
ee_putstr( "\\ X /" ); | |||
break; | |||
case 7: | |||
case 1: | |||
gfx_goto( x-1, y ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( x+7, y ); | |||
gfx_putchar( ',' ); | |||
gfx_goto( x, y+1 ); | |||
gfx_putstr( "`- X -'" ); | |||
ee_goto( x-1, y ); | |||
ee_putchar( '.' ); | |||
ee_goto( x+7, y ); | |||
ee_putchar( ',' ); | |||
ee_goto( x, y+1 ); | |||
ee_putstr( "`- X -'" ); | |||
break; | |||
case 6: | |||
case 2: | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "`-- X --'" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "`-- X --'" ); | |||
break; | |||
case 5: | |||
case 3: | |||
gfx_goto( x, y+1 ); | |||
gfx_putstr( ",- X -." ); | |||
gfx_goto( x-1, y+2 ); | |||
gfx_putchar( '\'' ); | |||
gfx_goto( x+7, y+2 ); | |||
gfx_putchar( '`' ); | |||
ee_goto( x, y+1 ); | |||
ee_putstr( ",- X -." ); | |||
ee_goto( x-1, y+2 ); | |||
ee_putchar( '\'' ); | |||
ee_goto( x+7, y+2 ); | |||
ee_putchar( '`' ); | |||
break; | |||
case 4: | |||
gfx_goto( x+1, y+1 ); | |||
gfx_putstr( ", X ." ); | |||
gfx_goto( x, y+2 ); | |||
gfx_putchar( '/' ); | |||
gfx_goto( x+6, y+2 ); | |||
gfx_putchar( '\\' ); | |||
ee_goto( x+1, y+1 ); | |||
ee_putstr( ", X ." ); | |||
ee_goto( x, y+2 ); | |||
ee_putchar( '/' ); | |||
ee_goto( x+6, y+2 ); | |||
ee_putchar( '\\' ); | |||
break; | |||
} | |||
gfx_goto( x+2, y+2 ); | |||
gfx_putstr( "`V'" ); | |||
ee_goto( x+2, y+2 ); | |||
ee_putstr( "`V'" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x+2, y+1 ); | |||
gfx_putchar( 'o' ); | |||
gfx_goto( x+4, y+1 ); | |||
gfx_putchar( 'o' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x+2, y+1 ); | |||
ee_putchar( 'o' ); | |||
ee_goto( x+4, y+1 ); | |||
ee_putchar( 'o' ); | |||
} | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: bonus.c,v 1.3 2002/12/22 18:44:12 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -43,30 +43,30 @@ void draw_bonus( game *g, bonus *bo ) | |||
switch( bo->type[i] ) | |||
{ | |||
case BONUS_GREEN: | |||
gfx_color( (bo->n[i]/2 % 3) ? GREEN : WHITE ); | |||
gfx_goto( bo->x[i]+1, bo->y[i]-1 ); | |||
gfx_putchar( '_' ); | |||
gfx_goto( bo->x[i], bo->y[i] ); | |||
gfx_putstr( "/ \\" ); | |||
gfx_goto( bo->x[i], bo->y[i]+1 ); | |||
gfx_putstr( "\\_/" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( bo->x[i]+1, bo->y[i] ); | |||
gfx_putchar( 'g' ); | |||
ee_color( (bo->n[i]/2 % 3) ? EE_GREEN : EE_WHITE ); | |||
ee_goto( bo->x[i]+1, bo->y[i]-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( bo->x[i], bo->y[i] ); | |||
ee_putstr( "/ \\" ); | |||
ee_goto( bo->x[i], bo->y[i]+1 ); | |||
ee_putstr( "\\_/" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( bo->x[i]+1, bo->y[i] ); | |||
ee_putchar( 'g' ); | |||
break; | |||
case BONUS_LIFE: | |||
gfx_color( (bo->n[i] % 3) ? RED : WHITE ); | |||
gfx_goto( bo->x[i]+1, bo->y[i]-1 ); | |||
gfx_putchar( '_' ); | |||
gfx_goto( bo->x[i]+3, bo->y[i]-1 ); | |||
gfx_putchar( '_' ); | |||
gfx_goto( bo->x[i], bo->y[i] ); | |||
gfx_putstr( "( ' )" ); | |||
gfx_goto( bo->x[i]+1, bo->y[i]+1 ); | |||
gfx_putstr( "`v'" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( bo->x[i]+3, bo->y[i] ); | |||
gfx_putchar( '^' ); | |||
ee_color( (bo->n[i] % 3) ? EE_RED : EE_WHITE ); | |||
ee_goto( bo->x[i]+1, bo->y[i]-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( bo->x[i]+3, bo->y[i]-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( bo->x[i], bo->y[i] ); | |||
ee_putstr( "( ' )" ); | |||
ee_goto( bo->x[i]+1, bo->y[i]+1 ); | |||
ee_putstr( "`v'" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( bo->x[i]+3, bo->y[i] ); | |||
ee_putchar( '^' ); | |||
break; | |||
case BONUS_NONE: | |||
break; | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002-2003 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: box.c,v 1.1 2003/02/09 11:17:40 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -41,7 +41,7 @@ void draw_box( game *g, box *b ) | |||
{ | |||
int i, j, frame; | |||
gfx_color( YELLOW ); | |||
ee_color( EE_YELLOW ); | |||
/* Draw the thin horizontal line */ | |||
if( b->frame < 8 ) | |||
@@ -50,8 +50,8 @@ void draw_box( game *g, box *b ) | |||
i < b->x + b->w * b->frame / 16 ; | |||
i++ ) | |||
{ | |||
gfx_goto( i, b->y ); | |||
gfx_putchar( 'X' ); | |||
ee_goto( i, b->y ); | |||
ee_putchar( 'X' ); | |||
} | |||
return; | |||
@@ -64,23 +64,23 @@ void draw_box( game *g, box *b ) | |||
i < b->x + b->w / 2 ; | |||
i++ ) | |||
{ | |||
gfx_goto( i, b->y - b->h * (frame - 8) / 8 ); | |||
gfx_putchar( 'X' ); | |||
gfx_goto( i, b->y + b->h * (frame - 8) / 8 ); | |||
gfx_putchar( 'X' ); | |||
ee_goto( i, b->y - b->h * (frame - 8) / 8 ); | |||
ee_putchar( 'X' ); | |||
ee_goto( i, b->y + b->h * (frame - 8) / 8 ); | |||
ee_putchar( 'X' ); | |||
} | |||
for( j = b->y - b->h * (frame - 8) / 8 ; | |||
j < b->y + b->h * (frame - 8) / 8 ; | |||
j++ ) | |||
{ | |||
gfx_goto( b->x - b->w / 2, j ); | |||
gfx_putchar( 'X' ); | |||
gfx_goto( b->x + b->w / 2 - 1, j ); | |||
gfx_putchar( 'X' ); | |||
ee_goto( b->x - b->w / 2, j ); | |||
ee_putchar( 'X' ); | |||
ee_goto( b->x + b->w / 2 - 1, j ); | |||
ee_putchar( 'X' ); | |||
} | |||
gfx_color( BLACK ); | |||
ee_color( EE_BLACK ); | |||
for( j = b->y - b->h * (frame - 8) / 8 + 1 ; | |||
j < b->y + b->h * (frame - 8) / 8 ; | |||
@@ -90,8 +90,8 @@ void draw_box( game *g, box *b ) | |||
i < b->x + b->w / 2 - 1 ; | |||
i++ ) | |||
{ | |||
gfx_goto( i, j ); | |||
gfx_putchar( 'X' ); | |||
ee_goto( i, j ); | |||
ee_putchar( 'X' ); | |||
} | |||
} | |||
@@ -101,19 +101,19 @@ void draw_box( game *g, box *b ) | |||
} | |||
/* Draw the text inside the frame */ | |||
gfx_color( YELLOW ); | |||
ee_color( EE_YELLOW ); | |||
/* FIXME: use a font */ | |||
gfx_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 2 ); | |||
gfx_putstr( "XXXX. .XXXX X X .XXXX .XXXX XXXX." ); | |||
gfx_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 3 ); | |||
gfx_putstr( "X `X X' X X X X' X' X `X" ); | |||
gfx_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 4 ); | |||
gfx_putstr( "XXXX' XXXXX X X `XXX XXXX X X" ); | |||
gfx_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 5 ); | |||
gfx_putstr( "X' X' `X X. ,X `X X' X ,X" ); | |||
gfx_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 6 ); | |||
gfx_putstr( "X X X `XXXX XXXX' `XXXX XXXX'" ); | |||
ee_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 2 ); | |||
ee_putstr( "XXXX. .XXXX X X .XXXX .XXXX XXXX." ); | |||
ee_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 3 ); | |||
ee_putstr( "X `X X' X X X X' X' X `X" ); | |||
ee_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 4 ); | |||
ee_putstr( "XXXX' XXXXX X X `XXX XXXX X X" ); | |||
ee_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 5 ); | |||
ee_putstr( "X' X' `X X. ,X `X X' X ,X" ); | |||
ee_goto( b->x - b->w / 2 + 12, b->y - b->h / 2 + 6 ); | |||
ee_putstr( "X X X `XXXX XXXX' `XXXX XXXX'" ); | |||
} | |||
void free_box( box *b ) | |||
@@ -33,16 +33,16 @@ void ceo_alert( game *g ) | |||
while( !end ) | |||
{ | |||
clear_graphics( g ); | |||
ee_clear(); | |||
if( get_key() == '\t' ) | |||
if( ee_get_key() == '\t' ) | |||
{ | |||
end = 1; | |||
} | |||
fprintf( stderr, "foo\n" ); | |||
refresh_graphics(); | |||
ee_refresh(); | |||
usleep( 40000 ); | |||
} | |||
@@ -42,28 +42,7 @@ | |||
/* | |||
* Graphics primitives | |||
*/ | |||
#ifdef USE_SLANG | |||
# include <slang.h> | |||
# define gfx_color(x) SLsmg_set_color(x) | |||
# define gfx_goto(x,y) SLsmg_gotorc(y,x) | |||
# define gfx_putchar(x) SLsmg_write_char(x) | |||
# define gfx_putstr(x) SLsmg_write_string(x) | |||
#elif USE_NCURSES | |||
#define box box_other | |||
# include <curses.h> | |||
#undef box | |||
# define gfx_color(x) attrset(COLOR_PAIR(x)) | |||
# define gfx_goto(x,y) move(y,x) | |||
# define gfx_putchar(x) addch(x) | |||
# define gfx_putstr(x) addstr(x) | |||
#else | |||
# define gfx_color(x) (void)(x) | |||
# define gfx_goto(x,y) do{ (void)(x); (void)(y); } while(0) | |||
# define gfx_putchar(x) (void)(x) | |||
# define gfx_putstr(x) (void)(x) | |||
#endif | |||
#define gfx_putcharTO(x,y,c) do{ gfx_goto(x,y); gfx_putchar(c); }while(0) | |||
#include "ee.h" | |||
/* | |||
* Useful macros | |||
@@ -164,17 +143,6 @@ typedef struct | |||
} game; | |||
#define BLACK 1 | |||
#define GREEN 2 | |||
#define YELLOW 3 | |||
#define WHITE 4 | |||
#define RED 5 | |||
#define GRAY 6 | |||
#define LIGHTGRAY 7 | |||
#define BLUE 8 | |||
#define CYAN 9 | |||
#define MAGENTA 10 | |||
/* | |||
* From aliens.c | |||
*/ | |||
@@ -218,16 +186,6 @@ void add_explosion( game *g, explosions *ex, int x, int y, int vx, int vy, int t | |||
void draw_explosions( game *g, explosions *ex ); | |||
void update_explosions( game *g, explosions *ex ); | |||
/* | |||
* From graphics.c | |||
*/ | |||
int init_graphics( void ); | |||
void init_game( game *g ); | |||
char get_key( void ); | |||
void clear_graphics( game *g ); | |||
void refresh_graphics( void ); | |||
void end_graphics( void ); | |||
/* | |||
* From math.c | |||
*/ | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: explosions.c,v 1.4 2002/12/22 18:44:12 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -71,28 +71,28 @@ void draw_explosions( game *g, explosions *ex ) | |||
for( i = 0; i < EXPLOSIONS; i++ ) | |||
{ | |||
#if 0 | |||
gfx_color( GREEN ); | |||
gfx_goto( ex->x[i] + 3, ex->y[i] ); | |||
ee_color( GREEN ); | |||
ee_goto( ex->x[i] + 3, ex->y[i] ); | |||
switch( GET_RAND(0,3) ) | |||
{ | |||
case 0: | |||
gfx_putchar( 'p' ); | |||
gfx_putchar( 'i' ); | |||
gfx_putchar( 'f' ); | |||
ee_putchar( 'p' ); | |||
ee_putchar( 'i' ); | |||
ee_putchar( 'f' ); | |||
break; | |||
case 1: | |||
gfx_putchar( 'p' ); | |||
gfx_putchar( 'a' ); | |||
gfx_putchar( 'f' ); | |||
ee_putchar( 'p' ); | |||
ee_putchar( 'a' ); | |||
ee_putchar( 'f' ); | |||
break; | |||
case 2: | |||
gfx_putchar( 'p' ); | |||
gfx_putchar( 'o' ); | |||
gfx_putchar( 'u' ); | |||
gfx_putchar( 'f' ); | |||
ee_putchar( 'p' ); | |||
ee_putchar( 'o' ); | |||
ee_putchar( 'u' ); | |||
ee_putchar( 'f' ); | |||
break; | |||
} | |||
gfx_putchar( '!' ); | |||
ee_putchar( '!' ); | |||
#endif | |||
switch( ex->type[i] ) | |||
@@ -138,116 +138,116 @@ static void draw_small_explosion( int x, int y, int frame ) | |||
switch( frame ) | |||
{ | |||
case 6: | |||
gfx_color( YELLOW ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '+' ); | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x, y ); | |||
ee_putchar( '+' ); | |||
break; | |||
case 5: | |||
gfx_color( YELLOW ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( 'o' ); | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x, y ); | |||
ee_putchar( 'o' ); | |||
break; | |||
case 4: | |||
gfx_color( YELLOW ); | |||
gfx_goto( x, y-1 ); | |||
gfx_putchar( '_' ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( ")_(" ); | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x, y-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
break; | |||
case 3: | |||
gfx_color( YELLOW ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( "._," ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( ")_(" ); | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "\' `" ); | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( "._," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\' `" ); | |||
break; | |||
case 2: | |||
gfx_color( YELLOW ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( ".v," ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( "> <" ); | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "\'^`" ); | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( ".v," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( "> <" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\'^`" ); | |||
break; | |||
case 1: | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( ". ," ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( " " ); | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "\' `" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( ". ," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( " " ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\' `" ); | |||
break; | |||
} | |||
} | |||
static void draw_medium_explosion( int x, int y, int frame ) | |||
{ | |||
gfx_color( YELLOW ); | |||
ee_color( EE_YELLOW ); | |||
switch( frame ) | |||
{ | |||
case 10: | |||
gfx_goto( x, y ); | |||
gfx_putchar( '+' ); | |||
ee_goto( x, y ); | |||
ee_putchar( '+' ); | |||
break; | |||
case 9: | |||
gfx_goto( x, y ); | |||
gfx_putchar( 'o' ); | |||
ee_goto( x, y ); | |||
ee_putchar( 'o' ); | |||
break; | |||
case 8: | |||
gfx_goto( x, y-1 ); | |||
gfx_putchar( '_' ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( ")_(" ); | |||
ee_goto( x, y-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
break; | |||
case 7: | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( "._," ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( ")_(" ); | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "\' `" ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( "._," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\' `" ); | |||
break; | |||
case 6: | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( ".v," ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( "> <" ); | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "\'^`" ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( ".v," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( "> <" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\'^`" ); | |||
break; | |||
case 5: | |||
gfx_color( RED ); | |||
ee_color( EE_RED ); | |||
case 4: | |||
gfx_goto( x-2, y-1 ); | |||
gfx_putstr( "_\\~/_" ); | |||
gfx_goto( x-2, y ); | |||
gfx_putstr( "> <" ); | |||
gfx_goto( x-2, y+1 ); | |||
gfx_putstr( "~/_\\~" ); | |||
ee_goto( x-2, y-1 ); | |||
ee_putstr( "_\\~/_" ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( "> <" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "~/_\\~" ); | |||
break; | |||
case 3: | |||
gfx_color( RED ); | |||
ee_color( EE_RED ); | |||
case 2: | |||
gfx_goto( x-2, y-1 ); | |||
gfx_putstr( "_\\ /_" ); | |||
gfx_goto( x-2, y ); | |||
gfx_putstr( "_ _" ); | |||
gfx_goto( x-2, y+1 ); | |||
gfx_putstr( " / \\ " ); | |||
ee_goto( x-2, y-1 ); | |||
ee_putstr( "_\\ /_" ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( "_ _" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( " / \\ " ); | |||
break; | |||
case 1: | |||
gfx_color( WHITE ); | |||
gfx_goto( x-2, y-1 ); | |||
gfx_putstr( ". \' ," ); | |||
gfx_goto( x-2, y ); | |||
gfx_putstr( " " ); | |||
gfx_goto( x-2, y+1 ); | |||
gfx_putstr( "\' . `" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-2, y-1 ); | |||
ee_putstr( ". \' ," ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( " " ); | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "\' . `" ); | |||
break; | |||
} | |||
} | |||
@@ -37,19 +37,20 @@ int main (int argc, char **argv) | |||
srand(time(NULL)); | |||
if( init_graphics() ) | |||
if( ee_init() ) | |||
{ | |||
return 1; | |||
} | |||
/* Initialize our program */ | |||
init_game(g); | |||
g->w = ee_get_width(); | |||
g->h = ee_get_height(); | |||
/* Go ! */ | |||
start_game(g); | |||
/* Clean up */ | |||
end_graphics(); | |||
ee_end(); | |||
return 0; | |||
} | |||
@@ -83,7 +84,7 @@ static void start_game (game *g) | |||
{ | |||
char key; | |||
while( ( key = get_key() ) ) | |||
while( ( key = ee_get_key() ) ) | |||
{ | |||
switch( key ) | |||
{ | |||
@@ -214,7 +215,7 @@ static void start_game (game *g) | |||
} | |||
/* Clear screen */ | |||
clear_graphics( g ); | |||
ee_clear(); | |||
/* Print starfield, tunnel, aliens, player and explosions */ | |||
draw_starfield( g, g->sf ); | |||
@@ -234,7 +235,7 @@ static void start_game (game *g) | |||
} | |||
/* Refresh */ | |||
refresh_graphics(); | |||
ee_refresh(); | |||
purcompteur++; | |||
} | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: overlay.c,v 1.3 2003/02/09 11:17:40 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -30,57 +30,57 @@ void draw_status( game *g ) | |||
static char dashes30[] = "=============================="; | |||
/* Draw life jauge */ | |||
gfx_color( GRAY ); | |||
gfx_goto( 4, 1 ); | |||
gfx_putstr( dots30 ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( 4, 1 ); | |||
ee_putstr( dots30 ); | |||
if( g->p->life > MAX_LIFE * 7 / 10 ) | |||
{ | |||
gfx_color( GREEN ); | |||
ee_color( EE_GREEN ); | |||
} | |||
else if( g->p->life > MAX_LIFE * 3 / 10 ) | |||
{ | |||
gfx_color( YELLOW ); | |||
ee_color( EE_YELLOW ); | |||
} | |||
else | |||
{ | |||
gfx_color( RED ); | |||
ee_color( EE_RED ); | |||
} | |||
gfx_goto( 4, 1 ); | |||
gfx_putstr( dashes30 + ( MAX_LIFE - g->p->life ) * 30 / MAX_LIFE ); | |||
ee_goto( 4, 1 ); | |||
ee_putstr( dashes30 + ( MAX_LIFE - g->p->life ) * 30 / MAX_LIFE ); | |||
gfx_color( WHITE ); | |||
gfx_goto( 1, 1 ); | |||
gfx_putstr( "L |" ); | |||
gfx_goto( 34, 1 ); | |||
gfx_putstr( "|" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( 1, 1 ); | |||
ee_putstr( "L |" ); | |||
ee_goto( 34, 1 ); | |||
ee_putstr( "|" ); | |||
/* Draw weapon jauge */ | |||
gfx_color( GRAY ); | |||
gfx_goto( 42, 1 ); | |||
gfx_putstr( dots30 + 10 ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( 42, 1 ); | |||
ee_putstr( dots30 + 10 ); | |||
if( g->p->special > MAX_SPECIAL * 9 / 10 ) | |||
{ | |||
gfx_color( WHITE ); | |||
ee_color( EE_WHITE ); | |||
} | |||
else if( g->p->special > MAX_SPECIAL * 3 / 10 ) | |||
{ | |||
gfx_color( CYAN ); | |||
ee_color( EE_CYAN ); | |||
} | |||
else | |||
{ | |||
gfx_color( BLUE ); | |||
ee_color( EE_BLUE ); | |||
} | |||
gfx_goto( 42, 1 ); | |||
gfx_putstr( dashes30 + 10 + ( MAX_SPECIAL - g->p->special ) * 20 / MAX_SPECIAL ); | |||
ee_goto( 42, 1 ); | |||
ee_putstr( dashes30 + 10 + ( MAX_SPECIAL - g->p->special ) * 20 / MAX_SPECIAL ); | |||
gfx_color( WHITE ); | |||
gfx_goto( 39, 1 ); | |||
gfx_putstr( "S |" ); | |||
gfx_goto( 62, 1 ); | |||
gfx_putstr( "|" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( 39, 1 ); | |||
ee_putstr( "S |" ); | |||
ee_goto( 62, 1 ); | |||
ee_putstr( "|" ); | |||
} | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: player.c,v 1.8 2002/12/23 16:21:38 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -53,18 +53,18 @@ void draw_player( game *g, player *p ) | |||
return; | |||
} | |||
gfx_goto( p->x + 2, p->y - 2 ); | |||
gfx_color( GREEN ); | |||
gfx_putstr( "/\\" ); | |||
gfx_goto( p->x + 1, p->y - 1 ); | |||
gfx_putchar( '(' ); | |||
gfx_color( YELLOW ); | |||
gfx_putstr( "()" ); | |||
gfx_color( GREEN ); | |||
gfx_putchar( ')' ); | |||
gfx_goto( p->x, p->y ); | |||
gfx_color( GREEN ); | |||
gfx_putstr( "I<__>I" ); | |||
ee_goto( p->x + 2, p->y - 2 ); | |||
ee_color( EE_GREEN ); | |||
ee_putstr( "/\\" ); | |||
ee_goto( p->x + 1, p->y - 1 ); | |||
ee_putchar( '(' ); | |||
ee_color( EE_YELLOW ); | |||
ee_putstr( "()" ); | |||
ee_color( EE_GREEN ); | |||
ee_putchar( ')' ); | |||
ee_goto( p->x, p->y ); | |||
ee_color( EE_GREEN ); | |||
ee_putstr( "I<__>I" ); | |||
} | |||
void update_player( game *g, player *p ) | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: starfield.c,v 1.5 2002/12/23 09:28:37 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -51,9 +51,9 @@ void draw_starfield( game *g, starfield *s ) | |||
{ | |||
if( s[i].x >= 0 ) | |||
{ | |||
gfx_color( s[i].c ); | |||
gfx_goto( s[i].x, s[i].y ); | |||
gfx_putchar( s[i].ch ); | |||
ee_color( s[i].c ); | |||
ee_goto( s[i].x, s[i].y ); | |||
ee_putchar( s[i].ch ); | |||
} | |||
} | |||
} | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: tunnel.c,v 1.8 2002/12/23 12:47:36 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -71,7 +71,7 @@ void draw_tunnel( game *g, tunnel *t ) | |||
int i, j; | |||
char c; | |||
gfx_color( GREEN ); | |||
ee_color( EE_GREEN ); | |||
/* Left border */ | |||
for( i = 0; i < g->h ; i++ ) | |||
@@ -90,15 +90,15 @@ void draw_tunnel( game *g, tunnel *t ) | |||
c = ( i == 0 || t->left[i] > t->left[i-1] ) ? '\\' : '<'; | |||
} | |||
gfx_goto( t->left[i] + 1, i ); | |||
gfx_putchar( c ); | |||
ee_goto( t->left[i] + 1, i ); | |||
ee_putchar( c ); | |||
if( i + 1 < g->h ) | |||
{ | |||
for( j = 1; j < t->left[i+1] - t->left[i]; j++ ) | |||
{ | |||
gfx_goto( t->left[i] + j + 1, i ); | |||
gfx_putchar( '_' ); | |||
ee_goto( t->left[i] + j + 1, i ); | |||
ee_putchar( '_' ); | |||
} | |||
} | |||
} | |||
@@ -124,24 +124,24 @@ void draw_tunnel( game *g, tunnel *t ) | |||
{ | |||
for( j = 1; j < t->right[i] - t->right[i+1]; j++ ) | |||
{ | |||
gfx_goto( t->right[i+1] + j - 1, i ); | |||
gfx_putchar( '_' ); | |||
ee_goto( t->right[i+1] + j - 1, i ); | |||
ee_putchar( '_' ); | |||
} | |||
} | |||
gfx_goto( t->right[i] - 1, i ); | |||
gfx_putchar( c ); | |||
ee_goto( t->right[i] - 1, i ); | |||
ee_putchar( c ); | |||
} | |||
gfx_color( RED ); | |||
ee_color( EE_RED ); | |||
/* Left concrete */ | |||
for( i = 0; i < g->h ; i++ ) | |||
{ | |||
for( j = 0 ; j <= t->left[i]; j++ ) | |||
{ | |||
gfx_goto( j, i ); | |||
gfx_putchar( '#' ); | |||
ee_goto( j, i ); | |||
ee_putchar( '#' ); | |||
} | |||
} | |||
@@ -150,8 +150,8 @@ void draw_tunnel( game *g, tunnel *t ) | |||
{ | |||
for( j = t->right[i] ; j < g->w ; j++ ) | |||
{ | |||
gfx_goto( j, i ); | |||
gfx_putchar( '#' ); | |||
ee_goto( j, i ); | |||
ee_putchar( '#' ); | |||
} | |||
} | |||
} | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: weapons.c,v 1.13 2002/12/23 16:44:28 sam Exp $ | |||
* $Id$ | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
@@ -49,35 +49,35 @@ void draw_weapons( game *g, weapons *wp ) | |||
switch( wp->type[i] ) | |||
{ | |||
case WEAPON_LASER: | |||
gfx_color( WHITE ); | |||
gfx_goto( wp->x[i] >> 4, wp->y[i] >> 4 ); | |||
gfx_putchar( '|' ); | |||
gfx_color( CYAN ); | |||
gfx_goto( wp->x[i] >> 4, (wp->y[i] >> 4) + 1 ); | |||
gfx_putchar( '|' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( wp->x[i] >> 4, wp->y[i] >> 4 ); | |||
ee_putchar( '|' ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( wp->x[i] >> 4, (wp->y[i] >> 4) + 1 ); | |||
ee_putchar( '|' ); | |||
break; | |||
case WEAPON_SEEKER: | |||
gfx_color( CYAN ); | |||
gfx_goto( wp->x3[i] >> 4, wp->y3[i] >> 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( wp->x2[i] >> 4, wp->y2[i] >> 4 ); | |||
gfx_putchar( 'o' ); | |||
gfx_color( WHITE ); | |||
gfx_goto( wp->x[i] >> 4, wp->y[i] >> 4 ); | |||
gfx_putchar( '@' ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( wp->x3[i] >> 4, wp->y3[i] >> 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( wp->x2[i] >> 4, wp->y2[i] >> 4 ); | |||
ee_putchar( 'o' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( wp->x[i] >> 4, wp->y[i] >> 4 ); | |||
ee_putchar( '@' ); | |||
break; | |||
case WEAPON_BOMB: | |||
gfx_color( GRAY ); | |||
gfx_goto( (wp->x[i] - wp->vx[i]) >> 4, (wp->y[i] - wp->vy[i]) >> 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( (wp->x3[i] - wp->vx[i]) >> 4, (wp->y3[i] - wp->vy[i]) >> 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( (wp->x2[i] - wp->vx[i]) >> 4, (wp->y2[i] - wp->vy[i]) >> 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( wp->x3[i] >> 4, wp->y3[i] >> 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( wp->x2[i] >> 4, wp->y2[i] >> 4 ); | |||
gfx_putchar( '.' ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( (wp->x[i] - wp->vx[i]) >> 4, (wp->y[i] - wp->vy[i]) >> 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( (wp->x3[i] - wp->vx[i]) >> 4, (wp->y3[i] - wp->vy[i]) >> 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( (wp->x2[i] - wp->vx[i]) >> 4, (wp->y2[i] - wp->vy[i]) >> 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( wp->x3[i] >> 4, wp->y3[i] >> 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( wp->x2[i] >> 4, wp->y2[i] >> 4 ); | |||
ee_putchar( '.' ); | |||
draw_bomb( wp->x[i] >> 4, wp->y[i] >> 4, wp->vx[i], wp->vy[i] ); | |||
break; | |||
case WEAPON_FRAGBOMB: | |||
@@ -289,7 +289,7 @@ void add_weapon( game *g, weapons *wp, int x, int y, int vx, int vy, int type ) | |||
static void draw_bomb( int x, int y, int vx, int vy ) | |||
{ | |||
vy *= 2; | |||
gfx_color( CYAN ); | |||
ee_color( EE_CYAN ); | |||
if( vx > vy ) | |||
{ | |||
@@ -298,39 +298,39 @@ static void draw_bomb( int x, int y, int vx, int vy ) | |||
if( vy > vx/4 ) | |||
{ | |||
/* -1pi/6 */ | |||
gfx_goto( x-4, y-1 ); | |||
gfx_putstr( "/`-." ); | |||
gfx_goto( x-4, y ); | |||
gfx_putstr( "`-._\\" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( "_\\" ); | |||
gfx_goto( x, y+1 ); | |||
gfx_putchar( '`' ); | |||
ee_goto( x-4, y-1 ); | |||
ee_putstr( "/`-." ); | |||
ee_goto( x-4, y ); | |||
ee_putstr( "`-._\\" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( "_\\" ); | |||
ee_goto( x, y+1 ); | |||
ee_putchar( '`' ); | |||
} | |||
else if( vy < -vx/4 ) | |||
{ | |||
/* 1pi/6 */ | |||
gfx_goto( x-4, y ); | |||
gfx_putstr( ",-' " ); | |||
gfx_goto( x-4, y+1 ); | |||
gfx_putstr( "\\,-'" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( "_," ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '/' ); | |||
ee_goto( x-4, y ); | |||
ee_putstr( ",-' " ); | |||
ee_goto( x-4, y+1 ); | |||
ee_putstr( "\\,-'" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( "_," ); | |||
ee_goto( x, y ); | |||
ee_putchar( '/' ); | |||
} | |||
else | |||
{ | |||
/* 0pi/6 */ | |||
gfx_goto( x-4, y-1 ); | |||
gfx_putstr( "____" ); | |||
gfx_goto( x-5, y ); | |||
gfx_putstr( "|____" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '>' ); | |||
ee_goto( x-4, y-1 ); | |||
ee_putstr( "____" ); | |||
ee_goto( x-5, y ); | |||
ee_putstr( "|____" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y ); | |||
ee_putchar( '>' ); | |||
} | |||
} | |||
else /* top quarter */ | |||
@@ -338,43 +338,43 @@ static void draw_bomb( int x, int y, int vx, int vy ) | |||
if( vx > -vy/4 ) | |||
{ | |||
/* 2pi/6 */ | |||
gfx_goto( x-2, y ); | |||
gfx_putstr( "/ " ); | |||
gfx_goto( x-3, y+1 ); | |||
gfx_putstr( "/ /" ); | |||
gfx_goto( x-3, y+2 ); | |||
gfx_putstr( "`'" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( "_," ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '|' ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( "/ " ); | |||
ee_goto( x-3, y+1 ); | |||
ee_putstr( "/ /" ); | |||
ee_goto( x-3, y+2 ); | |||
ee_putstr( "`'" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( "_," ); | |||
ee_goto( x, y ); | |||
ee_putchar( '|' ); | |||
} | |||
else if( vx < vy/4 ) | |||
{ | |||
/* 4pi/6 */ | |||
gfx_goto( x+1, y ); | |||
gfx_putstr( " \\" ); | |||
gfx_goto( x+1, y+1 ); | |||
gfx_putstr( "\\ \\" ); | |||
gfx_goto( x+2, y+2 ); | |||
gfx_putstr( "`'" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y-1 ); | |||
gfx_putstr( "._" ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '|' ); | |||
ee_goto( x+1, y ); | |||
ee_putstr( " \\" ); | |||
ee_goto( x+1, y+1 ); | |||
ee_putstr( "\\ \\" ); | |||
ee_goto( x+2, y+2 ); | |||
ee_putstr( "`'" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y-1 ); | |||
ee_putstr( "._" ); | |||
ee_goto( x, y ); | |||
ee_putchar( '|' ); | |||
} | |||
else | |||
{ | |||
/* 3pi/6 */ | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "| |" ); | |||
gfx_goto( x-1, y+2 ); | |||
gfx_putstr( "|_|" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( ",^." ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "| |" ); | |||
ee_goto( x-1, y+2 ); | |||
ee_putstr( "|_|" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ",^." ); | |||
} | |||
} | |||
} | |||
@@ -385,41 +385,41 @@ static void draw_bomb( int x, int y, int vx, int vy ) | |||
if( vx > vy/4 ) | |||
{ | |||
/* -2pi/6 */ | |||
gfx_goto( x-2, y-2 ); | |||
gfx_putstr( ",." ); | |||
gfx_goto( x-2, y-1 ); | |||
gfx_putstr( "\\ \\" ); | |||
gfx_goto( x-1, y ); | |||
gfx_putchar( '\\' ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y ); | |||
gfx_putstr( "_|" ); | |||
ee_goto( x-2, y-2 ); | |||
ee_putstr( ",." ); | |||
ee_goto( x-2, y-1 ); | |||
ee_putstr( "\\ \\" ); | |||
ee_goto( x-1, y ); | |||
ee_putchar( '\\' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y ); | |||
ee_putstr( "_|" ); | |||
} | |||
else if( vx < -vy/4 ) | |||
{ | |||
/* -4pi/6 */ | |||
gfx_goto( x+1, y-2 ); | |||
gfx_putstr( ",." ); | |||
gfx_goto( x, y-1 ); | |||
gfx_putstr( "/ /" ); | |||
gfx_goto( x+1, y ); | |||
gfx_putchar( '/' ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( "|_/" ); | |||
ee_goto( x+1, y-2 ); | |||
ee_putstr( ",." ); | |||
ee_goto( x, y-1 ); | |||
ee_putstr( "/ /" ); | |||
ee_goto( x+1, y ); | |||
ee_putchar( '/' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( "|_/" ); | |||
} | |||
else | |||
{ | |||
/* -3pi/6 */ | |||
gfx_goto( x, y-3 ); | |||
gfx_putchar( '_' ); | |||
gfx_goto( x-1, y-2 ); | |||
gfx_putstr( "| |" ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( "| |" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y ); | |||
gfx_putstr( "`v'" ); | |||
ee_goto( x, y-3 ); | |||
ee_putchar( '_' ); | |||
ee_goto( x-1, y-2 ); | |||
ee_putstr( "| |" ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( "| |" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( "`v'" ); | |||
} | |||
} | |||
else /* left quarter */ | |||
@@ -427,39 +427,39 @@ static void draw_bomb( int x, int y, int vx, int vy ) | |||
if( vy > -vx/4 ) | |||
{ | |||
/* -5pi/6 */ | |||
gfx_goto( x+1, y-1 ); | |||
gfx_putstr( ",-'\\" ); | |||
gfx_goto( x+2, y ); | |||
gfx_putstr( ",-'" ); | |||
gfx_goto( x, y+1 ); | |||
gfx_putchar( '\'' ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y ); | |||
gfx_putstr( "/_" ); | |||
ee_goto( x+1, y-1 ); | |||
ee_putstr( ",-'\\" ); | |||
ee_goto( x+2, y ); | |||
ee_putstr( ",-'" ); | |||
ee_goto( x, y+1 ); | |||
ee_putchar( '\'' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y ); | |||
ee_putstr( "/_" ); | |||
} | |||
else if( vy < vx/4 ) | |||
{ | |||
/* 5pi/6 */ | |||
gfx_goto( x+1, y ); | |||
gfx_putstr( " `-." ); | |||
gfx_goto( x+1, y+1 ); | |||
gfx_putstr( "`-./" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y-1 ); | |||
gfx_putstr( "._" ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '\\' ); | |||
ee_goto( x+1, y ); | |||
ee_putstr( " `-." ); | |||
ee_goto( x+1, y+1 ); | |||
ee_putstr( "`-./" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y-1 ); | |||
ee_putstr( "._" ); | |||
ee_goto( x, y ); | |||
ee_putchar( '\\' ); | |||
} | |||
else | |||
{ | |||
/* 6pi/6 */ | |||
gfx_goto( x+1, y-1 ); | |||
gfx_putstr( "____" ); | |||
gfx_goto( x+1, y ); | |||
gfx_putstr( "____|" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y ); | |||
gfx_putchar( '<' ); | |||
ee_goto( x+1, y-1 ); | |||
ee_putstr( "____" ); | |||
ee_goto( x+1, y ); | |||
ee_putstr( "____|" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y ); | |||
ee_putchar( '<' ); | |||
} | |||
} | |||
} | |||
@@ -467,93 +467,93 @@ static void draw_bomb( int x, int y, int vx, int vy ) | |||
static void draw_fragbomb( int x, int y, int frame ) | |||
{ | |||
gfx_color( WHITE ); | |||
ee_color( EE_WHITE ); | |||
gfx_color( frame & 1 ? CYAN : WHITE ); | |||
gfx_goto( x-2, y ); | |||
gfx_putstr( "( )" ); | |||
gfx_goto( x-1, y+1 ); | |||
gfx_putstr( "`--'" ); | |||
ee_color( frame & 1 ? EE_CYAN : EE_WHITE ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( "( )" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "`--'" ); | |||
gfx_color( frame & 1 ? WHITE : CYAN ); | |||
gfx_goto( x-1, y-1 ); | |||
gfx_putstr( ",--." ); | |||
gfx_goto( x, y ); | |||
gfx_putstr( "'," ); | |||
ee_color( frame & 1 ? EE_WHITE : EE_CYAN ); | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( ",--." ); | |||
ee_goto( x, y ); | |||
ee_putstr( "'," ); | |||
switch( frame % 4 ) | |||
{ | |||
case 0: | |||
gfx_color( CYAN ); | |||
gfx_goto( x, y + 2 ); | |||
gfx_putchar( 'O' ); | |||
gfx_goto( x + 2, y + 2 ); | |||
gfx_putchar( 'o' ); | |||
gfx_goto( x + 1, y + 3 ); | |||
gfx_putchar( 'o' ); | |||
gfx_color( GRAY ); | |||
gfx_goto( x - 1, y + 3 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x + 2, y + 4 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x, y + 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( x + 1, y + 5 ); | |||
gfx_putchar( '.' ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x, y + 2 ); | |||
ee_putchar( 'O' ); | |||
ee_goto( x + 2, y + 2 ); | |||
ee_putchar( 'o' ); | |||
ee_goto( x + 1, y + 3 ); | |||
ee_putchar( 'o' ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( x - 1, y + 3 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x + 2, y + 4 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x, y + 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( x + 1, y + 5 ); | |||
ee_putchar( '.' ); | |||
break; | |||
case 1: | |||
gfx_color( CYAN ); | |||
//gfx_goto( x, y + 1 ); | |||
//gfx_putchar( 'O' ); | |||
gfx_goto( x + 1, y + 2 ); | |||
gfx_putchar( 'O' ); | |||
gfx_goto( x, y + 3 ); | |||
gfx_putchar( 'o' ); | |||
gfx_color( GRAY ); | |||
gfx_goto( x + 2, y + 3 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x + 1, y + 4 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x - 1, y + 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( x + 2, y + 5 ); | |||
gfx_putchar( '.' ); | |||
ee_color( EE_CYAN ); | |||
//ee_goto( x, y + 1 ); | |||
//ee_putchar( 'O' ); | |||
ee_goto( x + 1, y + 2 ); | |||
ee_putchar( 'O' ); | |||
ee_goto( x, y + 3 ); | |||
ee_putchar( 'o' ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( x + 2, y + 3 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x + 1, y + 4 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x - 1, y + 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( x + 2, y + 5 ); | |||
ee_putchar( '.' ); | |||
break; | |||
case 2: | |||
gfx_color( CYAN ); | |||
//gfx_goto( x - 1, y + 1 ); | |||
//gfx_putchar( 'O' ); | |||
gfx_goto( x + 2, y + 2 ); | |||
gfx_putchar( 'O' ); | |||
gfx_goto( x, y + 2 ); | |||
gfx_putchar( 'o' ); | |||
gfx_goto( x + 1, y + 3 ); | |||
gfx_putchar( 'o' ); | |||
gfx_color( GRAY ); | |||
gfx_goto( x, y + 4 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x + 2, y + 4 ); | |||
gfx_putchar( '.' ); | |||
gfx_goto( x + 1, y + 5 ); | |||
gfx_putchar( '.' ); | |||
ee_color( EE_CYAN ); | |||
//ee_goto( x - 1, y + 1 ); | |||
//ee_putchar( 'O' ); | |||
ee_goto( x + 2, y + 2 ); | |||
ee_putchar( 'O' ); | |||
ee_goto( x, y + 2 ); | |||
ee_putchar( 'o' ); | |||
ee_goto( x + 1, y + 3 ); | |||
ee_putchar( 'o' ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( x, y + 4 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x + 2, y + 4 ); | |||
ee_putchar( '.' ); | |||
ee_goto( x + 1, y + 5 ); | |||
ee_putchar( '.' ); | |||
break; | |||
case 3: | |||
gfx_color( CYAN ); | |||
//gfx_goto( x + 2, y + 1 ); | |||
//gfx_putchar( 'O' ); | |||
gfx_goto( x + 1, y + 2 ); | |||
gfx_putchar( 'O' ); | |||
gfx_goto( x - 1, y + 2 ); | |||
gfx_putchar( 'o' ); | |||
gfx_goto( x + 2, y + 3 ); | |||
gfx_putchar( 'o' ); | |||
gfx_color( GRAY ); | |||
gfx_goto( x, y + 3 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x + 1, y + 4 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x, y + 5 ); | |||
gfx_putchar( '.' ); | |||
ee_color( EE_CYAN ); | |||
//ee_goto( x + 2, y + 1 ); | |||
//ee_putchar( 'O' ); | |||
ee_goto( x + 1, y + 2 ); | |||
ee_putchar( 'O' ); | |||
ee_goto( x - 1, y + 2 ); | |||
ee_putchar( 'o' ); | |||
ee_goto( x + 2, y + 3 ); | |||
ee_putchar( 'o' ); | |||
ee_color( EE_GRAY ); | |||
ee_goto( x, y + 3 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x + 1, y + 4 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x, y + 5 ); | |||
ee_putchar( '.' ); | |||
break; | |||
} | |||
} | |||
@@ -566,132 +566,132 @@ static void draw_beam( int x, int y, int frame ) | |||
switch( frame ) | |||
{ | |||
case 24: | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y-3 ); | |||
gfx_putstr( "__" ); | |||
gfx_goto( x-1, y-2 ); | |||
gfx_putchar( '\'' ); | |||
gfx_goto( x+2, y-2 ); | |||
gfx_putchar( '`' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y-3 ); | |||
ee_putstr( "__" ); | |||
ee_goto( x-1, y-2 ); | |||
ee_putchar( '\'' ); | |||
ee_goto( x+2, y-2 ); | |||
ee_putchar( '`' ); | |||
break; | |||
case 23: | |||
gfx_color( CYAN ); | |||
gfx_goto( x, y-3 ); | |||
gfx_putstr( "__" ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-2, y-2 ); | |||
gfx_putstr( "-'" ); | |||
gfx_goto( x+2, y-2 ); | |||
gfx_putstr( "`-" ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x, y-3 ); | |||
ee_putstr( "__" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-2, y-2 ); | |||
ee_putstr( "-'" ); | |||
ee_goto( x+2, y-2 ); | |||
ee_putstr( "`-" ); | |||
break; | |||
case 22: | |||
gfx_color( CYAN ); | |||
gfx_goto( x, y-3 ); | |||
gfx_putstr( "__" ); | |||
gfx_goto( x-1, y-2 ); | |||
gfx_putchar( '\'' ); | |||
gfx_goto( x+2, y-2 ); | |||
gfx_putchar( '`' ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-3, y-2 ); | |||
gfx_putstr( ",-" ); | |||
gfx_goto( x+3, y-2 ); | |||
gfx_putstr( "-." ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x, y-3 ); | |||
ee_putstr( "__" ); | |||
ee_goto( x-1, y-2 ); | |||
ee_putchar( '\'' ); | |||
ee_goto( x+2, y-2 ); | |||
ee_putchar( '`' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-3, y-2 ); | |||
ee_putstr( ",-" ); | |||
ee_goto( x+3, y-2 ); | |||
ee_putstr( "-." ); | |||
break; | |||
case 21: | |||
gfx_color( CYAN ); | |||
gfx_goto( x-1, y-3 ); | |||
gfx_putstr( "____" ); | |||
gfx_goto( x-2, y-2 ); | |||
gfx_putchar( '\'' ); | |||
gfx_goto( x+3, y-2 ); | |||
gfx_putchar( '`' ); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-4, y-2 ); | |||
gfx_putstr( ",-" ); | |||
gfx_goto( x+4, y-2 ); | |||
gfx_putstr( "-." ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x-1, y-3 ); | |||
ee_putstr( "____" ); | |||
ee_goto( x-2, y-2 ); | |||
ee_putchar( '\'' ); | |||
ee_goto( x+3, y-2 ); | |||
ee_putchar( '`' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-4, y-2 ); | |||
ee_putstr( ",-" ); | |||
ee_goto( x+4, y-2 ); | |||
ee_putstr( "-." ); | |||
break; | |||
case 20: | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y-3 ); | |||
gfx_putstr( "%%" ); | |||
gfx_goto( x-4, y-2 ); | |||
gfx_putchar( ',' ); | |||
gfx_goto( x+5, y-2 ); | |||
gfx_putchar( '.' ); | |||
gfx_color( CYAN ); | |||
gfx_goto( x-1, y-3 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x+2, y-3 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x-3, y-2 ); | |||
gfx_putstr( "-'" ); | |||
gfx_goto( x+3, y-2 ); | |||
gfx_putstr( "`-" ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y-3 ); | |||
ee_putstr( "%%" ); | |||
ee_goto( x-4, y-2 ); | |||
ee_putchar( ',' ); | |||
ee_goto( x+5, y-2 ); | |||
ee_putchar( '.' ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x-1, y-3 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x+2, y-3 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x-3, y-2 ); | |||
ee_putstr( "-'" ); | |||
ee_goto( x+3, y-2 ); | |||
ee_putstr( "`-" ); | |||
break; | |||
case 19: | |||
gfx_color( WHITE ); | |||
gfx_goto( x, y-4 ); | |||
gfx_putstr( "%%" ); | |||
gfx_goto( x, y-3 ); | |||
gfx_putstr( "##" ); | |||
gfx_color( CYAN ); | |||
gfx_goto( x-1, y-4 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x+2, y-4 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x-1, y-3 ); | |||
gfx_putchar( '%' ); | |||
gfx_goto( x+2, y-3 ); | |||
gfx_putchar( '%' ); | |||
gfx_goto( x-4, y-2 ); | |||
gfx_putstr( ",-'" ); | |||
gfx_goto( x+3, y-2 ); | |||
gfx_putstr( "`-." ); | |||
gfx_color( BLUE ); | |||
gfx_goto( x-2, y-3 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x+3, y-3 ); | |||
gfx_putchar( ':' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y-4 ); | |||
ee_putstr( "%%" ); | |||
ee_goto( x, y-3 ); | |||
ee_putstr( "##" ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x-1, y-4 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x+2, y-4 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x-1, y-3 ); | |||
ee_putchar( '%' ); | |||
ee_goto( x+2, y-3 ); | |||
ee_putchar( '%' ); | |||
ee_goto( x-4, y-2 ); | |||
ee_putstr( ",-'" ); | |||
ee_goto( x+3, y-2 ); | |||
ee_putstr( "`-." ); | |||
ee_color( EE_BLUE ); | |||
ee_goto( x-2, y-3 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x+3, y-3 ); | |||
ee_putchar( ':' ); | |||
break; | |||
case 18: | |||
default: | |||
r = (18 - frame) * (18 - frame); | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y-5-r ); | |||
gfx_putstr( ":%%:" ); | |||
gfx_goto( x-1, y-4-r ); | |||
gfx_putstr( "%##%" ); | |||
gfx_color( CYAN ); | |||
gfx_goto( x-2, y-4-r ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x+3, y-4-r ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x-2, y-2 ); | |||
gfx_putchar( '\'' ); | |||
gfx_goto( x+3, y-2 ); | |||
gfx_putchar( '`' ); | |||
gfx_color( BLUE ); | |||
gfx_goto( x-3, y-2 ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x+4, y-2 ); | |||
gfx_putchar( ':' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y-5-r ); | |||
ee_putstr( ":%%:" ); | |||
ee_goto( x-1, y-4-r ); | |||
ee_putstr( "%##%" ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x-2, y-4-r ); | |||
ee_putchar( ':' ); | |||
ee_goto( x+3, y-4-r ); | |||
ee_putchar( ':' ); | |||
ee_goto( x-2, y-2 ); | |||
ee_putchar( '\'' ); | |||
ee_goto( x+3, y-2 ); | |||
ee_putchar( '`' ); | |||
ee_color( EE_BLUE ); | |||
ee_goto( x-3, y-2 ); | |||
ee_putchar( ':' ); | |||
ee_goto( x+4, y-2 ); | |||
ee_putchar( ':' ); | |||
for( i = 0; i <= r; i++ ) | |||
{ | |||
gfx_color( WHITE ); | |||
gfx_goto( x-1, y-3-i ); | |||
gfx_putstr( (i+frame) % 5 ? "####" : "%%%%" ); | |||
gfx_color( CYAN ); | |||
gfx_goto( x-2, y-3-i ); | |||
gfx_putchar( '%' ); | |||
gfx_goto( x+3, y-3-i ); | |||
gfx_putchar( '%' ); | |||
gfx_color( BLUE ); | |||
gfx_goto( x-3, y-3-i ); | |||
gfx_putchar( ':' ); | |||
gfx_goto( x+4, y-3-i ); | |||
gfx_putchar( ':' ); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x-1, y-3-i ); | |||
ee_putstr( (i+frame) % 5 ? "####" : "%%%%" ); | |||
ee_color( EE_CYAN ); | |||
ee_goto( x-2, y-3-i ); | |||
ee_putchar( '%' ); | |||
ee_goto( x+3, y-3-i ); | |||
ee_putchar( '%' ); | |||
ee_color( EE_BLUE ); | |||
ee_goto( x-3, y-3-i ); | |||
ee_putchar( ':' ); | |||
ee_goto( x+4, y-3-i ); | |||
ee_putchar( ':' ); | |||
} | |||
break; | |||
} | |||
@@ -702,11 +702,11 @@ static void draw_nuke( int x, int y, int frame ) | |||
int r = (29 - frame) * (29 - frame) / 8; | |||
/* Lots of duplicate pixels, but we don't care */ | |||
gfx_color( BLUE ); | |||
ee_color( EE_BLUE ); | |||
draw_circle( x, y, r++, ':' ); | |||
gfx_color( CYAN ); | |||
ee_color( EE_CYAN ); | |||
draw_circle( x, y, r++, '%' ); | |||
gfx_color( WHITE ); | |||
ee_color( EE_WHITE ); | |||
draw_circle( x, y, r++, '#' ); | |||
draw_circle( x, y, r++, '#' ); | |||
} | |||
@@ -718,15 +718,15 @@ static void draw_circle( int x, int y, int r, char c ) | |||
/* Optimized Bresenham. Kick ass. */ | |||
for( test = 0, dx = 0, dy = r ; dx <= dy ; dx++ ) | |||
{ | |||
gfx_putcharTO( x + dx, y + dy / 2, c ); | |||
gfx_putcharTO( x - dx, y + dy / 2, c ); | |||
gfx_putcharTO( x + dx, y - dy / 2, c ); | |||
gfx_putcharTO( x - dx, y - dy / 2, c ); | |||
gfx_putcharTO( x + dy, y + dx / 2, c ); | |||
gfx_putcharTO( x - dy, y + dx / 2, c ); | |||
gfx_putcharTO( x + dy, y - dx / 2, c ); | |||
gfx_putcharTO( x - dy, y - dx / 2, c ); | |||
ee_putcharTO( x + dx, y + dy / 2, c ); | |||
ee_putcharTO( x - dx, y + dy / 2, c ); | |||
ee_putcharTO( x + dx, y - dy / 2, c ); | |||
ee_putcharTO( x - dx, y - dy / 2, c ); | |||
ee_putcharTO( x + dy, y + dx / 2, c ); | |||
ee_putcharTO( x - dy, y + dx / 2, c ); | |||
ee_putcharTO( x + dy, y - dx / 2, c ); | |||
ee_putcharTO( x - dy, y - dx / 2, c ); | |||
test += test > 0 ? dx - dy-- : dx; | |||
} | |||