git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/ttyvaders/trunk@88 92316355-f0b4-4df1-b90c-862c8a59935fmaster
@@ -24,36 +24,36 @@ | |||
#include "common.h" | |||
static void draw_alien_foo( game *g, int x, int y, int frame ); | |||
static void draw_alien_bar( game *g, int x, int y, int frame ); | |||
static void draw_alien_baz( game *g, int x, int y, int frame ); | |||
static void draw_alien_foo(game *, int, int, int); | |||
static void draw_alien_bar(game *, int, int, int); | |||
static void draw_alien_baz(game *, int, int, int); | |||
void init_aliens( game *g, aliens *al ) | |||
void init_aliens(game *g, aliens *al) | |||
{ | |||
int i; | |||
for( i = 0; i < ALIENS; i++ ) | |||
for(i = 0; i < ALIENS; i++) | |||
{ | |||
al->type[i] = ALIEN_NONE; | |||
} | |||
} | |||
void draw_aliens( game *g, aliens *al ) | |||
void draw_aliens(game *g, aliens *al) | |||
{ | |||
int i; | |||
for( i = 0; i < ALIENS; i++ ) | |||
for(i = 0; i < ALIENS; i++) | |||
{ | |||
switch( al->type[i] ) | |||
switch(al->type[i]) | |||
{ | |||
case ALIEN_FOO: | |||
draw_alien_foo( g, al->x[i], al->y[i], al->img[i] % 8 ); | |||
draw_alien_foo(g, al->x[i], al->y[i], al->img[i] % 8); | |||
break; | |||
case ALIEN_BAR: | |||
draw_alien_bar( g, al->x[i], al->y[i], al->img[i] % 2 ); | |||
draw_alien_bar(g, al->x[i], al->y[i], al->img[i] % 2); | |||
break; | |||
case ALIEN_BAZ: | |||
draw_alien_baz( g, al->x[i], al->y[i], al->img[i] % 6 ); | |||
draw_alien_baz(g, al->x[i], al->y[i], al->img[i] % 6); | |||
break; | |||
case ALIEN_NONE: | |||
break; | |||
@@ -61,22 +61,22 @@ void draw_aliens( game *g, aliens *al ) | |||
} | |||
} | |||
void update_aliens( game *g, aliens *al ) | |||
void update_aliens(game *g, aliens *al) | |||
{ | |||
int i; | |||
for( i = 0; i < ALIENS; i++ ) | |||
for(i = 0; i < ALIENS; i++) | |||
{ | |||
/* If alien died, make it explode */ | |||
if( al->type[i] != ALIEN_NONE && al->life[i] < 0 ) | |||
if(al->type[i] != ALIEN_NONE && al->life[i] < 0) | |||
{ | |||
add_explosion( g, g->ex, al->x[i], al->y[i], 0, 0, EXPLOSION_MEDIUM ); | |||
add_explosion(g, g->ex, al->x[i], al->y[i], 0, 0, EXPLOSION_MEDIUM); | |||
al->type[i] = ALIEN_NONE; | |||
add_bonus( g, g->bo, al->x[i], al->y[i], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE ); | |||
add_bonus(g, g->bo, al->x[i], al->y[i], GET_RAND(0,5) ? BONUS_GREEN : BONUS_LIFE); | |||
} | |||
/* Update coordinates */ | |||
switch( al->type[i] ) | |||
switch(al->type[i]) | |||
{ | |||
case ALIEN_FOO: | |||
case ALIEN_BAR: | |||
@@ -86,8 +86,8 @@ void update_aliens( game *g, aliens *al ) | |||
al->img[i] = al->img[i] + 1; | |||
/* Check bounds */ | |||
if( al->y[i] < 0 ) al->y[i] = 0; | |||
if( al->y[i] > g->w - 1 ) al->y[i] = g->w - 1; | |||
if(al->y[i] < 0 ) al->y[i] = 0; | |||
if(al->y[i] > g->w - 1 ) al->y[i] = g->w - 1; | |||
break; | |||
case ALIEN_NONE: | |||
break; | |||
@@ -95,20 +95,20 @@ void update_aliens( game *g, aliens *al ) | |||
} | |||
} | |||
void add_alien( game *g, aliens *al, int x, int y, int type ) | |||
void add_alien(game *g, aliens *al, int x, int y, int type) | |||
{ | |||
int i; | |||
for( i = 0; i < ALIENS; i++ ) | |||
for(i = 0; i < ALIENS; i++) | |||
{ | |||
if( al->type[i] == ALIEN_NONE ) | |||
if(al->type[i] == ALIEN_NONE) | |||
{ | |||
al->type[i] = type; | |||
al->x[i] = x; | |||
al->y[i] = y; | |||
al->img[i] = 0; | |||
switch( al->type[i] ) | |||
switch(al->type[i]) | |||
{ | |||
case ALIEN_FOO: | |||
al->life[i] = 3; | |||
@@ -128,132 +128,132 @@ void add_alien( game *g, aliens *al, int x, int y, int type ) | |||
} | |||
} | |||
static void draw_alien_bar( game *g, int x, int y, int frame ) | |||
static void draw_alien_bar(game *g, int x, int y, int frame) | |||
{ | |||
switch( frame ) | |||
switch(frame) | |||
{ | |||
case 0: | |||
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( "^^^^^" ); | |||
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: | |||
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( "^^^^^" ); | |||
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 ) | |||
static void draw_alien_baz(game *g, int x, int y, int frame) | |||
{ | |||
ee_color( EE_GREEN ); | |||
ee_goto( x, y-1 ); | |||
ee_putstr( "__" ); | |||
ee_color(EE_GREEN); | |||
ee_goto(x, y-1); | |||
ee_putstr("__"); | |||
ee_goto( x-1, y ); | |||
ee_putchar( '/' ); | |||
ee_goto( x+2, y ); | |||
ee_putchar( '\\' ); | |||
ee_goto(x-1, y); | |||
ee_putchar('/'); | |||
ee_goto(x+2, y); | |||
ee_putchar('\\'); | |||
switch( frame ) | |||
switch(frame) | |||
{ | |||
case 3: | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "//'`\\\\" ); | |||
ee_goto(x-2, y+1); | |||
ee_putstr("//'`\\\\"); | |||
break; | |||
case 4: | |||
case 2: | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "/(~~)\\" ); | |||
ee_goto(x-2, y+1); | |||
ee_putstr("/(~~)\\"); | |||
break; | |||
case 5: | |||
case 1: | |||
ee_goto( x-2, y+1 ); | |||
ee_putstr( "((^^))" ); | |||
ee_goto(x-2, y+1); | |||
ee_putstr("((^^))"); | |||
break; | |||
case 0: | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "\\\\//" ); | |||
ee_goto(x-1, y+1); | |||
ee_putstr("\\\\//"); | |||
break; | |||
} | |||
ee_color( EE_WHITE ); | |||
ee_goto( x, y ); | |||
ee_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 ) | |||
static void draw_alien_foo(game *g, int x, int y, int frame) | |||
{ | |||
ee_color( EE_YELLOW ); | |||
ee_color(EE_YELLOW); | |||
switch( frame ) | |||
switch(frame) | |||
{ | |||
case 0: | |||
ee_goto( x, y ); | |||
ee_putchar( '.' ); | |||
ee_goto( x+6, y ); | |||
ee_putchar( ',' ); | |||
ee_goto( x+1, y+1 ); | |||
ee_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: | |||
ee_goto( x-1, y ); | |||
ee_putchar( '.' ); | |||
ee_goto( x+7, y ); | |||
ee_putchar( ',' ); | |||
ee_goto( x, y+1 ); | |||
ee_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: | |||
ee_goto( x-1, y+1 ); | |||
ee_putstr( "`-- X --'" ); | |||
ee_goto(x-1, y+1); | |||
ee_putstr("`-- X --'"); | |||
break; | |||
case 5: | |||
case 3: | |||
ee_goto( x, y+1 ); | |||
ee_putstr( ",- X -." ); | |||
ee_goto( x-1, y+2 ); | |||
ee_putchar( '\'' ); | |||
ee_goto( x+7, y+2 ); | |||
ee_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: | |||
ee_goto( x+1, y+1 ); | |||
ee_putstr( ", X ." ); | |||
ee_goto( x, y+2 ); | |||
ee_putchar( '/' ); | |||
ee_goto( x+6, y+2 ); | |||
ee_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; | |||
} | |||
ee_goto( x+2, y+2 ); | |||
ee_putstr( "`V'" ); | |||
ee_goto(x+2, y+2); | |||
ee_putstr("`V'"); | |||
ee_color( EE_WHITE ); | |||
ee_goto( x+2, y+1 ); | |||
ee_putchar( 'o' ); | |||
ee_goto( x+4, y+1 ); | |||
ee_putchar( 'o' ); | |||
ee_color(EE_WHITE); | |||
ee_goto(x+2, y+1); | |||
ee_putchar('o'); | |||
ee_goto(x+4, y+1); | |||
ee_putchar('o'); | |||
} | |||
@@ -24,49 +24,49 @@ | |||
#include "common.h" | |||
void init_bonus( game *g, bonus *bo ) | |||
void init_bonus(game *g, bonus *bo) | |||
{ | |||
int i; | |||
for( i = 0; i < BONUS; i++ ) | |||
for(i = 0; i < BONUS; i++) | |||
{ | |||
bo->type[i] = BONUS_NONE; | |||
} | |||
} | |||
void draw_bonus( game *g, bonus *bo ) | |||
void draw_bonus(game *g, bonus *bo) | |||
{ | |||
int i; | |||
for( i = 0; i < BONUS; i++ ) | |||
for(i = 0; i < BONUS; i++) | |||
{ | |||
switch( bo->type[i] ) | |||
switch(bo->type[i]) | |||
{ | |||
case BONUS_GREEN: | |||
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' ); | |||
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: | |||
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( '^' ); | |||
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; | |||
@@ -74,18 +74,18 @@ void draw_bonus( game *g, bonus *bo ) | |||
} | |||
} | |||
void update_bonus( game *g, bonus *bo ) | |||
void update_bonus(game *g, bonus *bo) | |||
{ | |||
int i; | |||
for( i = 0; i < BONUS; i++ ) | |||
for(i = 0; i < BONUS; i++) | |||
{ | |||
switch( bo->type[i] ) | |||
switch(bo->type[i]) | |||
{ | |||
case BONUS_GREEN: | |||
bo->n[i]++; | |||
bo->y[i]++; | |||
if( bo->y[i] > g->h ) | |||
if(bo->y[i] > g->h) | |||
{ | |||
bo->type[i] = BONUS_NONE; | |||
} | |||
@@ -93,7 +93,7 @@ void update_bonus( game *g, bonus *bo ) | |||
case BONUS_LIFE: | |||
bo->n[i]++; | |||
bo->y[i]++; | |||
if( bo->y[i] > g->h ) | |||
if(bo->y[i] > g->h) | |||
{ | |||
bo->type[i] = BONUS_NONE; | |||
} | |||
@@ -104,13 +104,13 @@ void update_bonus( game *g, bonus *bo ) | |||
} | |||
} | |||
void add_bonus( game *g, bonus *bo, int x, int y, int type ) | |||
void add_bonus(game *g, bonus *bo, int x, int y, int type) | |||
{ | |||
int i; | |||
for( i = 0; i < BONUS; i++ ) | |||
for(i = 0; i < BONUS; i++) | |||
{ | |||
if( bo->type[i] == BONUS_NONE ) | |||
if(bo->type[i] == BONUS_NONE) | |||
{ | |||
bo->type[i] = type; | |||
bo->x[i] = x; | |||
@@ -24,9 +24,9 @@ | |||
#include "common.h" | |||
box * create_box( game *g, int x, int y, int w, int h ) | |||
box * create_box(game *g, int x, int y, int w, int h) | |||
{ | |||
box *b = malloc( sizeof( box ) ); | |||
box *b = malloc(sizeof( box )); | |||
b->x = x; | |||
b->y = y; | |||
@@ -37,21 +37,21 @@ box * create_box( game *g, int x, int y, int w, int h ) | |||
return b; | |||
} | |||
void draw_box( game *g, box *b ) | |||
void draw_box(game *g, box *b) | |||
{ | |||
int i, j, frame; | |||
ee_color( EE_YELLOW ); | |||
ee_color(EE_YELLOW); | |||
/* Draw the thin horizontal line */ | |||
if( b->frame < 8 ) | |||
if(b->frame < 8) | |||
{ | |||
for( i = b->x - b->w * b->frame / 16 ; | |||
for(i = b->x - b->w * b->frame / 16 ; | |||
i < b->x + b->w * b->frame / 16 ; | |||
i++ ) | |||
i++) | |||
{ | |||
ee_goto( i, b->y ); | |||
ee_putchar( 'X' ); | |||
ee_goto(i, b->y); | |||
ee_putchar('X'); | |||
} | |||
return; | |||
@@ -60,64 +60,64 @@ void draw_box( game *g, box *b ) | |||
/* Draw the frame */ | |||
frame = b->frame < 12 ? b->frame : 12; | |||
for( i = b->x - b->w / 2 ; | |||
for(i = b->x - b->w / 2 ; | |||
i < b->x + b->w / 2 ; | |||
i++ ) | |||
i++) | |||
{ | |||
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' ); | |||
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 ; | |||
for(j = b->y - b->h * (frame - 8) / 8 ; | |||
j < b->y + b->h * (frame - 8) / 8 ; | |||
j++ ) | |||
j++) | |||
{ | |||
ee_goto( b->x - b->w / 2, j ); | |||
ee_putchar( 'X' ); | |||
ee_goto( b->x + b->w / 2 - 1, j ); | |||
ee_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'); | |||
} | |||
ee_color( EE_BLACK ); | |||
ee_color(EE_BLACK); | |||
for( j = b->y - b->h * (frame - 8) / 8 + 1 ; | |||
for(j = b->y - b->h * (frame - 8) / 8 + 1 ; | |||
j < b->y + b->h * (frame - 8) / 8 ; | |||
j++ ) | |||
j++) | |||
{ | |||
for( i = b->x - b->w / 2 + 1 ; | |||
for(i = b->x - b->w / 2 + 1 ; | |||
i < b->x + b->w / 2 - 1 ; | |||
i++ ) | |||
i++) | |||
{ | |||
ee_goto( i, j ); | |||
ee_putchar( 'X' ); | |||
ee_goto(i, j); | |||
ee_putchar('X'); | |||
} | |||
} | |||
if( b->frame < 12 ) | |||
if(b->frame < 12) | |||
{ | |||
return; | |||
} | |||
/* Draw the text inside the frame */ | |||
ee_color( EE_YELLOW ); | |||
ee_color(EE_YELLOW); | |||
/* FIXME: use a font */ | |||
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'" ); | |||
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 ) | |||
void free_box(box *b) | |||
{ | |||
free( b ); | |||
free(b); | |||
} | |||
@@ -27,23 +27,23 @@ | |||
#include "common.h" | |||
void ceo_alert( game *g ) | |||
void ceo_alert(game *g) | |||
{ | |||
int end = 0; | |||
while( !end ) | |||
while(!end) | |||
{ | |||
ee_clear(); | |||
if( ee_get_key() == '\t' ) | |||
if(ee_get_key() == '\t') | |||
{ | |||
end = 1; | |||
} | |||
fprintf( stderr, "foo\n" ); | |||
fprintf(stderr, "foo\n"); | |||
ee_refresh(); | |||
usleep( 40000 ); | |||
usleep(40000); | |||
} | |||
} |
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: collide.c,v 1.11 2003/01/06 12:22:58 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 | |||
@@ -24,16 +24,16 @@ | |||
#include "common.h" | |||
void collide_weapons_tunnel( game *g, weapons *wp, tunnel *t, explosions *ex ) | |||
void collide_weapons_tunnel(game *g, weapons *wp, tunnel *t, explosions *ex) | |||
{ | |||
int i, j, x, y; | |||
for( i = 0; i < WEAPONS; i++ ) | |||
for(i = 0; i < WEAPONS; i++) | |||
{ | |||
x = wp->x[i] >> 4; | |||
y = wp->y[i] >> 4; | |||
switch( wp->type[i] ) | |||
switch(wp->type[i]) | |||
{ | |||
case WEAPON_LIGHTNING: | |||
case WEAPON_NONE: | |||
@@ -41,36 +41,36 @@ void collide_weapons_tunnel( game *g, weapons *wp, tunnel *t, explosions *ex ) | |||
case WEAPON_SEEKER: | |||
case WEAPON_BOMB: | |||
case WEAPON_FRAGBOMB: | |||
if( y < 0 || y >= g->h ) | |||
if(y < 0 || y >= g->h) | |||
{ | |||
break; | |||
} | |||
if( x <= t->left[y] | |||
|| x >= t->right[y] ) | |||
if(x <= t->left[y] | |||
|| x >= t->right[y]) | |||
{ | |||
int damage = wp->type[i] == WEAPON_SEEKER ? 1 : 2; | |||
add_explosion( g, ex, x, y, 0, 1, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM ); | |||
add_explosion(g, ex, x, y, 0, 1, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM); | |||
if( x <= t->left[y] ) | |||
if(x <= t->left[y]) | |||
{ | |||
if( y-2 >= 0 ) t->left[y-2] -= damage - 1; | |||
if( y-1 >= 0 ) t->left[y-1] -= damage; | |||
if(y-2 >= 0) t->left[y-2] -= damage - 1; | |||
if(y-1 >= 0) t->left[y-1] -= damage; | |||
t->left[y] -= damage + 1; | |||
if( y+1 < g->h ) t->left[y+1] -= damage; | |||
if( y+2 < g->h ) t->left[y+2] -= damage - 1; | |||
if(y+1 < g->h) t->left[y+1] -= damage; | |||
if(y+2 < g->h) t->left[y+2] -= damage - 1; | |||
} | |||
else | |||
{ | |||
if( y-2 >= 0 ) t->right[y-2] += damage - 1; | |||
if( y-1 >= 0 ) t->right[y-1] += damage; | |||
if(y-2 >= 0) t->right[y-2] += damage - 1; | |||
if(y-1 >= 0) t->right[y-1] += damage; | |||
t->right[y] += damage + 1; | |||
if( y+1 < g->h ) t->right[y+1] += damage; | |||
if( y+2 < g->h ) t->right[y+2] += damage - 1; | |||
if(y+1 < g->h) t->right[y+1] += damage; | |||
if(y+2 < g->h) t->right[y+2] += damage - 1; | |||
} | |||
if( wp->type[i] == WEAPON_FRAGBOMB ) | |||
if(wp->type[i] == WEAPON_FRAGBOMB) | |||
{ | |||
wp->n[i] = -1; | |||
} | |||
@@ -81,55 +81,55 @@ void collide_weapons_tunnel( game *g, weapons *wp, tunnel *t, explosions *ex ) | |||
} | |||
break; | |||
case WEAPON_LASER: | |||
for( j = GET_MIN( 0, wp->vy[i] >> 4 ) ; | |||
j < GET_MAX( 0, wp->vy[i] >> 4 ) ; | |||
j++ ) | |||
for(j = GET_MIN(0, wp->vy[i] >> 4); | |||
j < GET_MAX(0, wp->vy[i] >> 4); | |||
j++) | |||
{ | |||
if( y+j >= g->h || y+j < 0 ) | |||
if(y+j >= g->h || y+j < 0) | |||
{ | |||
continue; | |||
} | |||
if( x <= t->left[y+j] || x >= t->right[y+j] ) | |||
if(x <= t->left[y+j] || x >= t->right[y+j]) | |||
{ | |||
add_explosion( g, ex, x, y+j, 0, 1, EXPLOSION_SMALL ); | |||
add_explosion(g, ex, x, y+j, 0, 1, EXPLOSION_SMALL); | |||
wp->type[i] = WEAPON_NONE; | |||
if( x <= t->left[y+j] ) | |||
if(x <= t->left[y+j]) | |||
{ | |||
if( y+j-1 >= 0 ) t->left[y+j-1]--; | |||
if(y+j-1 >= 0) t->left[y+j-1]--; | |||
t->left[y+j] -= 2; | |||
if( y+j+1 < g->h ) t->left[y+j+1]--; | |||
if(y+j+1 < g->h) t->left[y+j+1]--; | |||
} | |||
else | |||
{ | |||
if( y+j-1 >= 0 ) t->right[y+j-1]++; | |||
if(y+j-1 >= 0) t->right[y+j-1]++; | |||
t->right[y+j] += 2; | |||
if( y+j+1 < g->h ) t->right[y+j+1]++; | |||
if(y+j+1 < g->h) t->right[y+j+1]++; | |||
} | |||
break; | |||
} | |||
} | |||
break; | |||
case WEAPON_BEAM: | |||
if( wp->n[i] > 19 ) | |||
if(wp->n[i] > 19) | |||
{ | |||
break; | |||
} | |||
j = (29 - wp->n[i]) * (29 - wp->n[i]) / 8; | |||
j = GET_MIN( y, j ); | |||
j = GET_MIN(y, j); | |||
for( ; j > 0 ; j-- ) | |||
for(; j > 0; j--) | |||
{ | |||
if( x - 2 <= t->left[y-j] ) | |||
if(x - 2 <= t->left[y-j]) | |||
{ | |||
add_explosion( g, ex, GET_MIN(t->left[y-j], x+3), y-j, 0, 1, EXPLOSION_SMALL ); | |||
add_explosion(g, ex, GET_MIN(t->left[y-j], x+3), y-j, 0, 1, EXPLOSION_SMALL); | |||
t->left[y-j] -= GET_RAND(0,3); | |||
} | |||
else if( x + 3 >= t->right[y-j] ) | |||
else if(x + 3 >= t->right[y-j]) | |||
{ | |||
add_explosion( g, ex, GET_MAX(t->right[y-j], x-2), y-j, 0, 1, EXPLOSION_SMALL ); | |||
add_explosion(g, ex, GET_MAX(t->right[y-j], x-2), y-j, 0, 1, EXPLOSION_SMALL); | |||
t->right[y-j] += GET_RAND(0,3); | |||
} | |||
} | |||
@@ -142,11 +142,11 @@ void collide_weapons_tunnel( game *g, weapons *wp, tunnel *t, explosions *ex ) | |||
} | |||
} | |||
void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
void collide_weapons_aliens(game *g, weapons *wp, aliens *al, explosions *ex) | |||
{ | |||
int i, j, k, x, y; | |||
for( i = 0; i < WEAPONS; i++ ) | |||
for(i = 0; i < WEAPONS; i++) | |||
{ | |||
int ok = 0; | |||
int r; | |||
@@ -154,7 +154,7 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
x = wp->x[i] >> 4; | |||
y = wp->y[i] >> 4; | |||
switch( wp->type[i] ) | |||
switch(wp->type[i]) | |||
{ | |||
case WEAPON_LIGHTNING: | |||
case WEAPON_NONE: | |||
@@ -163,17 +163,17 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
/* Big nuke */ | |||
r = (29 - wp->n[i]) * (29 - wp->n[i]) / 8; | |||
for( j = 0; j < ALIENS; j++ ) | |||
for(j = 0; j < ALIENS; j++) | |||
{ | |||
if( al->type[j] == ALIEN_NONE || al->life[j] < 0 ) | |||
if(al->type[j] == ALIEN_NONE || al->life[j] < 0) | |||
{ | |||
continue; | |||
} | |||
if( wp->n[i] == 0 /* Nuke destroys _everything_ */ || | |||
if(wp->n[i] == 0 /* Nuke destroys _everything_ */ || | |||
(al->x[j] - x) * (al->x[j] - x) | |||
+ 4 * (al->y[j] - y) * (al->y[j] - y) | |||
<= r * r ) | |||
<= r * r) | |||
{ | |||
/* Kill alien, not nuke */ | |||
al->life[j] -= 10; | |||
@@ -182,22 +182,22 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
break; | |||
case WEAPON_BEAM: | |||
if( wp->n[i] > 19 ) | |||
if(wp->n[i] > 19) | |||
{ | |||
break; | |||
} | |||
r = (29 - wp->n[i]) * (29 - wp->n[i]) / 8; | |||
for( j = 0; j < ALIENS; j++ ) | |||
for(j = 0; j < ALIENS; j++) | |||
{ | |||
if( al->type[j] == ALIEN_NONE || al->life[j] < 0 ) | |||
if(al->type[j] == ALIEN_NONE || al->life[j] < 0) | |||
{ | |||
continue; | |||
} | |||
if( x >= al->x[j] && x <= al->x[j] + 4 | |||
&& y >= al->y[j] + 2 && y-5-r <= al->y[j] ) | |||
if(x >= al->x[j] && x <= al->x[j] + 4 | |||
&& y >= al->y[j] + 2 && y-5-r <= al->y[j]) | |||
{ | |||
al->life[j] -= 4; | |||
} | |||
@@ -205,19 +205,19 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
break; | |||
case WEAPON_LASER: | |||
for( j = 0; j < ALIENS; j++ ) | |||
for(j = 0; j < ALIENS; j++) | |||
{ | |||
if( al->type[j] == ALIEN_NONE || al->life[j] < 0 ) | |||
if(al->type[j] == ALIEN_NONE || al->life[j] < 0) | |||
{ | |||
continue; | |||
} | |||
for( k = GET_MIN( 0, wp->vy[i] >> 4 ) ; | |||
k < GET_MAX( 0, wp->vy[i] >> 4 ) ; | |||
k++ ) | |||
for(k = GET_MIN(0, wp->vy[i] >> 4); | |||
k < GET_MAX(0, wp->vy[i] >> 4); | |||
k++) | |||
{ | |||
if( x >= al->x[j] && x <= al->x[j] + 4 | |||
&& y+k >= al->y[j] && y+k <= al->y[j] + 2 ) | |||
if(x >= al->x[j] && x <= al->x[j] + 4 | |||
&& y+k >= al->y[j] && y+k <= al->y[j] + 2) | |||
{ | |||
al->life[j]--; | |||
ok = 1; | |||
@@ -226,9 +226,9 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
} | |||
} | |||
if( ok ) | |||
if(ok) | |||
{ | |||
add_explosion( g, ex, x, y+1, 0, 0, EXPLOSION_SMALL ); | |||
add_explosion(g, ex, x, y+1, 0, 0, EXPLOSION_SMALL); | |||
wp->type[i] = WEAPON_NONE; | |||
} | |||
break; | |||
@@ -236,26 +236,26 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
case WEAPON_SEEKER: | |||
case WEAPON_BOMB: | |||
case WEAPON_FRAGBOMB: | |||
for( j = 0; j < ALIENS; j++ ) | |||
for(j = 0; j < ALIENS; j++) | |||
{ | |||
if( al->type[j] == ALIEN_NONE || al->life[j] < 0 ) | |||
if(al->type[j] == ALIEN_NONE || al->life[j] < 0) | |||
{ | |||
continue; | |||
} | |||
if( x >= al->x[j] && x <= al->x[j] + 4 | |||
&& y >= al->y[j] && y <= al->y[j] + 2 ) | |||
if(x >= al->x[j] && x <= al->x[j] + 4 | |||
&& y >= al->y[j] && y <= al->y[j] + 2) | |||
{ | |||
al->life[j] -= wp->type[i] == WEAPON_SEEKER ? 1 : 5; | |||
ok = 1; | |||
} | |||
} | |||
if( ok ) | |||
if(ok) | |||
{ | |||
add_explosion( g, ex, x, y+1, 0, 0, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM ); | |||
add_explosion(g, ex, x, y+1, 0, 0, wp->type[i] == WEAPON_SEEKER ? EXPLOSION_SMALL : EXPLOSION_MEDIUM); | |||
if( wp->type[i] == WEAPON_FRAGBOMB ) | |||
if(wp->type[i] == WEAPON_FRAGBOMB) | |||
{ | |||
wp->n[i] = -1; | |||
} | |||
@@ -269,25 +269,25 @@ void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ) | |||
} | |||
} | |||
void collide_player_tunnel( game *g, player *p, tunnel *t, explosions *ex ) | |||
void collide_player_tunnel(game *g, player *p, tunnel *t, explosions *ex) | |||
{ | |||
if( p->dead ) | |||
if(p->dead) | |||
{ | |||
return; | |||
} | |||
if( p->x <= t->left[p->y] ) | |||
if(p->x <= t->left[p->y]) | |||
{ | |||
p->x += 3; | |||
p->vx = 2; | |||
add_explosion( g, ex, p->x+1, p->y-1, 0, 0, EXPLOSION_SMALL ); | |||
add_explosion(g, ex, p->x+1, p->y-1, 0, 0, EXPLOSION_SMALL); | |||
p->life -= 180; | |||
} | |||
else if( p->x + 5 >= t->right[p->y] ) | |||
else if(p->x + 5 >= t->right[p->y]) | |||
{ | |||
p->x -= 3; | |||
p->vx = -2; | |||
add_explosion( g, ex, p->x+4, p->y-1, 0, 0, EXPLOSION_SMALL ); | |||
add_explosion(g, ex, p->x+4, p->y-1, 0, 0, EXPLOSION_SMALL); | |||
p->life -= 180; | |||
} | |||
} | |||
@@ -146,85 +146,85 @@ typedef struct | |||
/* | |||
* From aliens.c | |||
*/ | |||
void init_aliens( game *g, aliens *al ); | |||
void draw_aliens( game *g, aliens *al ); | |||
void update_aliens( game *g, aliens *al ); | |||
void add_alien( game *g, aliens *al, int x, int y, int type ); | |||
void init_aliens(game *, aliens *); | |||
void draw_aliens(game *, aliens *); | |||
void update_aliens(game *, aliens *); | |||
void add_alien(game *, aliens *, int, int, int); | |||
/* | |||
* From bonus.c | |||
*/ | |||
void init_bonus( game *g, bonus *bo ); | |||
void draw_bonus( game *g, bonus *bo ); | |||
void update_bonus( game *g, bonus *bo ); | |||
void add_bonus( game *g, bonus *bo, int x, int y, int type ); | |||
void init_bonus(game *, bonus *); | |||
void draw_bonus(game *, bonus *); | |||
void update_bonus(game *, bonus *); | |||
void add_bonus(game *, bonus *, int, int, int); | |||
/* | |||
* From box.c | |||
*/ | |||
box * create_box( game *g, int x, int y, int w, int h ); | |||
void draw_box( game *g, box *b ); | |||
void free_box( box *b ); | |||
box * create_box(game *, int, int, int, int); | |||
void draw_box(game *, box *); | |||
void free_box(box *); | |||
/* | |||
* From ceo.c | |||
*/ | |||
void ceo_alert( game *g ); | |||
void ceo_alert(game *); | |||
/* | |||
* From collide.c | |||
*/ | |||
void collide_weapons_tunnel( game *g, weapons *wp, tunnel *t, explosions *ex ); | |||
void collide_weapons_aliens( game *g, weapons *wp, aliens *al, explosions *ex ); | |||
void collide_player_tunnel( game *g, player *p, tunnel *t, explosions *ex ); | |||
void collide_weapons_tunnel(game *, weapons *, tunnel *, explosions *); | |||
void collide_weapons_aliens(game *, weapons *, aliens *, explosions *); | |||
void collide_player_tunnel(game *, player *, tunnel *, explosions *); | |||
/* | |||
* From explosions.c | |||
*/ | |||
void init_explosions( game *g, explosions *ex ); | |||
void add_explosion( game *g, explosions *ex, int x, int y, int vx, int vy, int type ); | |||
void draw_explosions( game *g, explosions *ex ); | |||
void update_explosions( game *g, explosions *ex ); | |||
void init_explosions(game *, explosions *); | |||
void add_explosion(game *, explosions *, int, int, int, int, int); | |||
void draw_explosions(game *, explosions *); | |||
void update_explosions(game *, explosions *); | |||
/* | |||
* From math.c | |||
*/ | |||
int r00t( int a ); | |||
int r00t(int); | |||
/* | |||
* From overlay.c | |||
*/ | |||
void draw_status( game *g ); | |||
void draw_status(game *); | |||
/* | |||
* From player.c | |||
*/ | |||
player * create_player( game *g ); | |||
void free_player( player *p ); | |||
void draw_player( game *g, player *p ); | |||
void update_player( game *g, player *p ); | |||
player * create_player(game *); | |||
void free_player(player *); | |||
void draw_player(game *, player *); | |||
void update_player(game *, player *); | |||
/* | |||
* From starfield.c | |||
*/ | |||
starfield * create_starfield( game *g ); | |||
void draw_starfield( game *g, starfield *s ); | |||
void update_starfield( game *g, starfield *s ); | |||
void free_starfield( game *g, starfield *s ); | |||
starfield * create_starfield(game *); | |||
void draw_starfield(game *, starfield *); | |||
void update_starfield(game *, starfield *); | |||
void free_starfield(game *, starfield *); | |||
/* | |||
* From tunnel.c | |||
*/ | |||
tunnel * create_tunnel( game *g, int w, int h ); | |||
void free_tunnel( tunnel *t ); | |||
void draw_tunnel( game *g, tunnel *t ); | |||
void update_tunnel( game *g, tunnel *t ); | |||
tunnel * create_tunnel(game *, int, int); | |||
void free_tunnel(tunnel *); | |||
void draw_tunnel(game *, tunnel *); | |||
void update_tunnel(game *, tunnel *); | |||
/* | |||
* From weapons.c | |||
*/ | |||
void init_weapons( game *g, weapons *wp ); | |||
void draw_weapons( game *g, weapons *wp ); | |||
void update_weapons( game *g, weapons *wp ); | |||
void add_weapon( game *g, weapons *wp, int x, int y, int vx, int vy, int type ); | |||
void init_weapons(game *, weapons *); | |||
void draw_weapons(game *, weapons *); | |||
void update_weapons(game *, weapons *); | |||
void add_weapon(game *, weapons *, int, int, int, int, int); | |||
@@ -24,33 +24,33 @@ | |||
#include "common.h" | |||
static void draw_small_explosion( int x, int y, int frame ); | |||
static void draw_medium_explosion( int x, int y, int frame ); | |||
static void draw_small_explosion(int x, int y, int frame); | |||
static void draw_medium_explosion(int x, int y, int frame); | |||
void init_explosions( game *g, explosions *ex ) | |||
void init_explosions(game *g, explosions *ex) | |||
{ | |||
int i; | |||
for( i = 0; i < EXPLOSIONS; i++ ) | |||
for(i = 0; i < EXPLOSIONS; i++) | |||
{ | |||
ex->type[i] = EXPLOSION_NONE; | |||
} | |||
} | |||
void add_explosion( game *g, explosions *ex, int x, int y, int vx, int vy, int type ) | |||
void add_explosion(game *g, explosions *ex, int x, int y, int vx, int vy, int type) | |||
{ | |||
int i; | |||
for( i = 0; i < EXPLOSIONS; i++ ) | |||
for(i = 0; i < EXPLOSIONS; i++) | |||
{ | |||
if( ex->type[i] == EXPLOSION_NONE ) | |||
if(ex->type[i] == EXPLOSION_NONE) | |||
{ | |||
ex->type[i] = type; | |||
ex->x[i] = x; | |||
ex->y[i] = y; | |||
ex->vx[i] = vx; | |||
ex->vy[i] = vy; | |||
switch( type ) | |||
switch(type) | |||
{ | |||
case EXPLOSION_MEDIUM: | |||
ex->n[i] = 11; | |||
@@ -64,44 +64,44 @@ 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 draw_explosions(game *g, explosions *ex) | |||
{ | |||
int i; | |||
for( i = 0; i < EXPLOSIONS; i++ ) | |||
for(i = 0; i < EXPLOSIONS; i++) | |||
{ | |||
#if 0 | |||
ee_color( GREEN ); | |||
ee_goto( ex->x[i] + 3, ex->y[i] ); | |||
switch( GET_RAND(0,3) ) | |||
ee_color(GREEN); | |||
ee_goto(ex->x[i] + 3, ex->y[i]); | |||
switch(GET_RAND(0,3)) | |||
{ | |||
case 0: | |||
ee_putchar( 'p' ); | |||
ee_putchar( 'i' ); | |||
ee_putchar( 'f' ); | |||
ee_putchar('p'); | |||
ee_putchar('i'); | |||
ee_putchar('f'); | |||
break; | |||
case 1: | |||
ee_putchar( 'p' ); | |||
ee_putchar( 'a' ); | |||
ee_putchar( 'f' ); | |||
ee_putchar('p'); | |||
ee_putchar('a'); | |||
ee_putchar('f'); | |||
break; | |||
case 2: | |||
ee_putchar( 'p' ); | |||
ee_putchar( 'o' ); | |||
ee_putchar( 'u' ); | |||
ee_putchar( 'f' ); | |||
ee_putchar('p'); | |||
ee_putchar('o'); | |||
ee_putchar('u'); | |||
ee_putchar('f'); | |||
break; | |||
} | |||
ee_putchar( '!' ); | |||
ee_putchar('!'); | |||
#endif | |||
switch( ex->type[i] ) | |||
switch(ex->type[i]) | |||
{ | |||
case EXPLOSION_MEDIUM: | |||
draw_medium_explosion( ex->x[i], ex->y[i], ex->n[i] ); | |||
draw_medium_explosion(ex->x[i], ex->y[i], ex->n[i]); | |||
break; | |||
case EXPLOSION_SMALL: | |||
draw_small_explosion( ex->x[i], ex->y[i], ex->n[i] ); | |||
draw_small_explosion(ex->x[i], ex->y[i], ex->n[i]); | |||
break; | |||
case EXPLOSION_NONE: | |||
break; | |||
@@ -109,20 +109,20 @@ void draw_explosions( game *g, explosions *ex ) | |||
} | |||
} | |||
void update_explosions( game *g, explosions *ex ) | |||
void update_explosions(game *g, explosions *ex) | |||
{ | |||
int i; | |||
for( i = 0; i < EXPLOSIONS; i++ ) | |||
for(i = 0; i < EXPLOSIONS; i++) | |||
{ | |||
switch( ex->type[i] ) | |||
switch(ex->type[i]) | |||
{ | |||
case EXPLOSION_MEDIUM: | |||
case EXPLOSION_SMALL: | |||
ex->x[i] += ex->vx[i]; | |||
ex->y[i] += ex->vy[i]; | |||
ex->n[i]--; | |||
if( ex->n[i] < 0 ) | |||
if(ex->n[i] < 0) | |||
{ | |||
ex->type[i] = EXPLOSION_NONE; | |||
} | |||
@@ -133,121 +133,121 @@ void update_explosions( game *g, explosions *ex ) | |||
} | |||
} | |||
static void draw_small_explosion( int x, int y, int frame ) | |||
static void draw_small_explosion(int x, int y, int frame) | |||
{ | |||
switch( frame ) | |||
switch(frame) | |||
{ | |||
case 6: | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x, y ); | |||
ee_putchar( '+' ); | |||
ee_color(EE_YELLOW); | |||
ee_goto(x, y); | |||
ee_putchar('+'); | |||
break; | |||
case 5: | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x, y ); | |||
ee_putchar( 'o' ); | |||
ee_color(EE_YELLOW); | |||
ee_goto(x, y); | |||
ee_putchar('o'); | |||
break; | |||
case 4: | |||
ee_color( EE_YELLOW ); | |||
ee_goto( x, y-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
ee_color(EE_YELLOW); | |||
ee_goto(x, y-1); | |||
ee_putchar('_'); | |||
ee_goto(x-1, y); | |||
ee_putstr(")_("); | |||
break; | |||
case 3: | |||
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( "\' `" ); | |||
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: | |||
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( "\'^`" ); | |||
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: | |||
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( "\' `" ); | |||
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 ) | |||
static void draw_medium_explosion(int x, int y, int frame) | |||
{ | |||
ee_color( EE_YELLOW ); | |||
ee_color(EE_YELLOW); | |||
switch( frame ) | |||
switch(frame) | |||
{ | |||
case 10: | |||
ee_goto( x, y ); | |||
ee_putchar( '+' ); | |||
ee_goto(x, y); | |||
ee_putchar('+'); | |||
break; | |||
case 9: | |||
ee_goto( x, y ); | |||
ee_putchar( 'o' ); | |||
ee_goto(x, y); | |||
ee_putchar('o'); | |||
break; | |||
case 8: | |||
ee_goto( x, y-1 ); | |||
ee_putchar( '_' ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
ee_goto(x, y-1); | |||
ee_putchar('_'); | |||
ee_goto(x-1, y); | |||
ee_putstr(")_("); | |||
break; | |||
case 7: | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( "._," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( ")_(" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_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: | |||
ee_goto( x-1, y-1 ); | |||
ee_putstr( ".v," ); | |||
ee_goto( x-1, y ); | |||
ee_putstr( "> <" ); | |||
ee_goto( x-1, y+1 ); | |||
ee_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: | |||
ee_color( EE_RED ); | |||
ee_color(EE_RED); | |||
case 4: | |||
ee_goto( x-2, y-1 ); | |||
ee_putstr( "_\\~/_" ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( "> <" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_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: | |||
ee_color( EE_RED ); | |||
ee_color(EE_RED); | |||
case 2: | |||
ee_goto( x-2, y-1 ); | |||
ee_putstr( "_\\ /_" ); | |||
ee_goto( x-2, y ); | |||
ee_putstr( "_ _" ); | |||
ee_goto( x-2, y+1 ); | |||
ee_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: | |||
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( "\' . `" ); | |||
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,7 +37,7 @@ int main (int argc, char **argv) | |||
srand(time(NULL)); | |||
if( ee_init() ) | |||
if(ee_init()) | |||
{ | |||
return 1; | |||
} | |||
@@ -64,174 +64,174 @@ static void start_game (game *g) | |||
box *pausebox = NULL; | |||
g->sf = create_starfield( g ); | |||
g->sf = create_starfield(g); | |||
g->wp = malloc(sizeof(weapons)); | |||
g->ex = malloc(sizeof(explosions)); | |||
g->bo = malloc(sizeof(bonus)); | |||
g->t = create_tunnel( g, g->w, g->h ); | |||
g->p = create_player( g ); | |||
g->t = create_tunnel(g, g->w, g->h); | |||
g->p = create_player(g); | |||
g->al = malloc(sizeof(aliens)); | |||
init_bonus( g, g->bo ); | |||
init_weapons( g, g->wp ); | |||
init_explosions( g, g->ex ); | |||
init_aliens( g, g->al ); | |||
init_bonus(g, g->bo); | |||
init_weapons(g, g->wp); | |||
init_explosions(g, g->ex); | |||
init_aliens(g, g->al); | |||
/* Temporary stuff */ | |||
g->t->w = 25; | |||
while( !quit ) | |||
while(!quit) | |||
{ | |||
char key; | |||
while( ( key = ee_get_key() ) ) | |||
while((key = ee_get_key())) | |||
{ | |||
switch( key ) | |||
switch(key) | |||
{ | |||
case 'q': | |||
quit = 1; | |||
break; | |||
case 'p': | |||
poz = !poz; | |||
if( poz ) | |||
if(poz) | |||
{ | |||
pausebox = create_box( g, g->w / 2, g->h / 2, | |||
g->w - 16, 8 ); | |||
pausebox = create_box(g, g->w / 2, g->h / 2, | |||
g->w - 16, 8); | |||
} | |||
else | |||
{ | |||
free_box( pausebox ); | |||
free_box(pausebox); | |||
} | |||
break; | |||
case '\t': | |||
ceo_alert( g ); | |||
ceo_alert(g); | |||
poz = 1; | |||
break; | |||
case 's': | |||
skip = 1; | |||
break; | |||
default: | |||
if( g->p->dead ) | |||
if(g->p->dead) | |||
{ | |||
break; | |||
} | |||
switch( key ) | |||
switch(key) | |||
{ | |||
case 'h': | |||
g->p->vx = -2; | |||
break; | |||
case 'j': | |||
if( g->p->y < g->h - 2 ) g->p->y += 1; | |||
if(g->p->y < g->h - 2) g->p->y += 1; | |||
break; | |||
case 'k': | |||
if( g->p->y > 1 ) g->p->y -= 1; | |||
if(g->p->y > 1) g->p->y -= 1; | |||
break; | |||
case 'l': | |||
g->p->vx = 2; | |||
break; | |||
case 'n': | |||
if( g->p->special >= COST_NUKE ) | |||
if(g->p->special >= COST_NUKE) | |||
{ | |||
g->p->special -= COST_NUKE; | |||
add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_NUKE ); | |||
add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_NUKE); | |||
} | |||
break; | |||
case 'f': | |||
if( g->p->special >= COST_FRAGBOMB ) | |||
if(g->p->special >= COST_FRAGBOMB) | |||
{ | |||
g->p->special -= COST_FRAGBOMB; | |||
add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_FRAGBOMB ); | |||
add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_FRAGBOMB); | |||
} | |||
break; | |||
case 'b': | |||
if( g->p->special >= COST_BEAM ) | |||
if(g->p->special >= COST_BEAM) | |||
{ | |||
g->p->special -= COST_BEAM; | |||
add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM ); | |||
add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, 0, WEAPON_BEAM); | |||
} | |||
break; | |||
case ' ': | |||
if( g->p->weapon == 0 ) | |||
if(g->p->weapon == 0) | |||
{ | |||
g->p->weapon = 4; | |||
add_weapon( g, g->wp, g->p->x << 4, g->p->y << 4, 0, -32, WEAPON_LASER ); | |||
add_weapon( g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 0, -32, WEAPON_LASER ); | |||
add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, 0, -32, WEAPON_LASER); | |||
add_weapon(g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 0, -32, WEAPON_LASER); | |||
/* Extra schtuph */ | |||
add_weapon( g, g->wp, g->p->x << 4, g->p->y << 4, -24, -16, WEAPON_SEEKER ); | |||
add_weapon( g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 24, -16, WEAPON_SEEKER ); | |||
add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, -24, -16, WEAPON_SEEKER); | |||
add_weapon(g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 24, -16, WEAPON_SEEKER); | |||
/* More schtuph */ | |||
add_weapon( g, g->wp, (g->p->x + 1) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER ); | |||
add_weapon( g, g->wp, (g->p->x + 4) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER ); | |||
add_weapon(g, g->wp, (g->p->x + 1) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
add_weapon(g, g->wp, (g->p->x + 4) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
/* Even more schtuph */ | |||
add_weapon( g, g->wp, (g->p->x + 2) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER ); | |||
add_weapon( g, g->wp, (g->p->x + 3) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER ); | |||
add_weapon(g, g->wp, (g->p->x + 2) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
add_weapon(g, g->wp, (g->p->x + 3) << 4, (g->p->y - 1) << 4, 0, -32, WEAPON_LASER); | |||
/* Extra schtuph */ | |||
add_weapon( g, g->wp, g->p->x << 4, g->p->y << 4, -32, 0, WEAPON_SEEKER ); | |||
add_weapon( g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 32, 0, WEAPON_SEEKER ); | |||
add_weapon(g, g->wp, g->p->x << 4, g->p->y << 4, -32, 0, WEAPON_SEEKER); | |||
add_weapon(g, g->wp, (g->p->x + 5) << 4, g->p->y << 4, 32, 0, WEAPON_SEEKER); | |||
/* MORE SCHTUPH! */ | |||
add_weapon( g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_BOMB ); | |||
add_weapon(g, g->wp, (g->p->x + 2) << 4, g->p->y << 4, 0, -16, WEAPON_BOMB); | |||
} | |||
break; | |||
} | |||
} | |||
} | |||
if( !poz || skip ) | |||
if(!poz || skip) | |||
{ | |||
skip = 0; | |||
/* XXX: to be removed */ | |||
if( GET_RAND(0,10) == 0 ) | |||
if(GET_RAND(0,10) == 0) | |||
{ | |||
int list[3] = { ALIEN_FOO, ALIEN_BAR, ALIEN_BAZ }; | |||
add_alien( g, g->al, 0, rand() % g->h / 2, list[GET_RAND(0,3)] ); | |||
add_alien(g, g->al, 0, rand() % g->h / 2, list[GET_RAND(0,3)]); | |||
} | |||
/* Update game rules */ | |||
if( g->t->right[1] - g->t->left[1] == g->t->w ) | |||
if(g->t->right[1] - g->t->left[1] == g->t->w) | |||
{ | |||
g->t->w = 85 - g->t->w; | |||
} | |||
/* Scroll and update positions */ | |||
collide_player_tunnel( g, g->p, g->t, g->ex ); | |||
update_player( g, g->p ); | |||
collide_player_tunnel( g, g->p, g->t, g->ex ); | |||
update_starfield( g, g->sf ); | |||
update_bonus( g, g->bo ); | |||
update_aliens( g, g->al ); | |||
collide_weapons_tunnel( g, g->wp, g->t, g->ex ); | |||
collide_weapons_aliens( g, g->wp, g->al, g->ex ); | |||
update_weapons( g, g->wp ); | |||
collide_weapons_tunnel( g, g->wp, g->t, g->ex ); | |||
collide_weapons_aliens( g, g->wp, g->al, g->ex ); | |||
update_explosions( g, g->ex ); | |||
update_tunnel( g, g->t ); | |||
collide_player_tunnel(g, g->p, g->t, g->ex); | |||
update_player(g, g->p); | |||
collide_player_tunnel(g, g->p, g->t, g->ex); | |||
update_starfield(g, g->sf); | |||
update_bonus(g, g->bo); | |||
update_aliens(g, g->al); | |||
collide_weapons_tunnel(g, g->wp, g->t, g->ex); | |||
collide_weapons_aliens(g, g->wp, g->al, g->ex); | |||
update_weapons(g, g->wp); | |||
collide_weapons_tunnel(g, g->wp, g->t, g->ex); | |||
collide_weapons_aliens(g, g->wp, g->al, g->ex); | |||
update_explosions(g, g->ex); | |||
update_tunnel(g, g->t); | |||
} | |||
/* Clear screen */ | |||
ee_clear(); | |||
/* Print starfield, tunnel, aliens, player and explosions */ | |||
draw_starfield( g, g->sf ); | |||
draw_aliens( g, g->al ); | |||
draw_tunnel( g, g->t ); | |||
draw_bonus( g, g->bo ); | |||
draw_explosions( g, g->ex ); | |||
draw_weapons( g, g->wp ); | |||
draw_player( g, g->p ); | |||
draw_status( g ); | |||
draw_starfield(g, g->sf); | |||
draw_aliens(g, g->al); | |||
draw_tunnel(g, g->t); | |||
draw_bonus(g, g->bo); | |||
draw_explosions(g, g->ex); | |||
draw_weapons(g, g->wp); | |||
draw_player(g, g->p); | |||
draw_status(g); | |||
/* Print pause box if needed */ | |||
if( poz ) | |||
if(poz) | |||
{ | |||
pausebox->frame++; | |||
draw_box( g, pausebox ); | |||
draw_box(g, pausebox); | |||
} | |||
/* Refresh */ | |||
@@ -240,13 +240,13 @@ static void start_game (game *g) | |||
purcompteur++; | |||
} | |||
if( pausebox ) | |||
if(pausebox) | |||
{ | |||
free_box( pausebox ); | |||
free_box(pausebox); | |||
} | |||
free_starfield( g, g->sf ); | |||
free_tunnel( g->t ); | |||
free_player( g->p ); | |||
free_starfield(g, g->sf); | |||
free_tunnel(g->t); | |||
free_player(g->p); | |||
} | |||
@@ -3,7 +3,7 @@ | |||
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> | |||
* All Rights Reserved | |||
* | |||
* $Id: math.c,v 1.2 2002/12/22 23:01:35 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 | |||
@@ -22,11 +22,11 @@ | |||
#include "common.h" | |||
int r00t( int a ) | |||
int r00t(int a) | |||
{ | |||
int x = a > 100000 ? 1000 : a > 1000 ? 100 : a > 10 ? 10 : 1; | |||
if( a <= 0 ) | |||
if(a <= 0) | |||
{ | |||
return 0; | |||
} | |||
@@ -24,63 +24,63 @@ | |||
#include "common.h" | |||
void draw_status( game *g ) | |||
void draw_status(game *g) | |||
{ | |||
static char dots30[] = "------------------------------"; | |||
static char dashes30[] = "=============================="; | |||
/* Draw life jauge */ | |||
ee_color( EE_GRAY ); | |||
ee_goto( 4, 1 ); | |||
ee_putstr( dots30 ); | |||
ee_color(EE_GRAY); | |||
ee_goto(4, 1); | |||
ee_putstr(dots30); | |||
if( g->p->life > MAX_LIFE * 7 / 10 ) | |||
if(g->p->life > MAX_LIFE * 7 / 10) | |||
{ | |||
ee_color( EE_GREEN ); | |||
ee_color(EE_GREEN); | |||
} | |||
else if( g->p->life > MAX_LIFE * 3 / 10 ) | |||
else if(g->p->life > MAX_LIFE * 3 / 10) | |||
{ | |||
ee_color( EE_YELLOW ); | |||
ee_color(EE_YELLOW); | |||
} | |||
else | |||
{ | |||
ee_color( EE_RED ); | |||
ee_color(EE_RED); | |||
} | |||
ee_goto( 4, 1 ); | |||
ee_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); | |||
ee_color( EE_WHITE ); | |||
ee_goto( 1, 1 ); | |||
ee_putstr( "L |" ); | |||
ee_goto( 34, 1 ); | |||
ee_putstr( "|" ); | |||
ee_color(EE_WHITE); | |||
ee_goto(1, 1); | |||
ee_putstr("L |"); | |||
ee_goto(34, 1); | |||
ee_putstr("|"); | |||
/* Draw weapon jauge */ | |||
ee_color( EE_GRAY ); | |||
ee_goto( 42, 1 ); | |||
ee_putstr( dots30 + 10 ); | |||
ee_color(EE_GRAY); | |||
ee_goto(42, 1); | |||
ee_putstr(dots30 + 10); | |||
if( g->p->special > MAX_SPECIAL * 9 / 10 ) | |||
if(g->p->special > MAX_SPECIAL * 9 / 10) | |||
{ | |||
ee_color( EE_WHITE ); | |||
ee_color(EE_WHITE); | |||
} | |||
else if( g->p->special > MAX_SPECIAL * 3 / 10 ) | |||
else if(g->p->special > MAX_SPECIAL * 3 / 10) | |||
{ | |||
ee_color( EE_CYAN ); | |||
ee_color(EE_CYAN); | |||
} | |||
else | |||
{ | |||
ee_color( EE_BLUE ); | |||
ee_color(EE_BLUE); | |||
} | |||
ee_goto( 42, 1 ); | |||
ee_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); | |||
ee_color( EE_WHITE ); | |||
ee_goto( 39, 1 ); | |||
ee_putstr( "S |" ); | |||
ee_goto( 62, 1 ); | |||
ee_putstr( "|" ); | |||
ee_color(EE_WHITE); | |||
ee_goto(39, 1); | |||
ee_putstr("S |"); | |||
ee_goto(62, 1); | |||
ee_putstr("|"); | |||
} | |||
@@ -25,7 +25,7 @@ | |||
#include "common.h" | |||
/* Init tunnel */ | |||
player * create_player( game *g ) | |||
player * create_player(game *g) | |||
{ | |||
player *p = malloc(sizeof(player)); | |||
@@ -41,59 +41,59 @@ player * create_player( game *g ) | |||
return p; | |||
} | |||
void free_player( player *p ) | |||
void free_player(player *p) | |||
{ | |||
free( p ); | |||
free(p); | |||
} | |||
void draw_player( game *g, player *p ) | |||
void draw_player(game *g, player *p) | |||
{ | |||
if( p->dead ) | |||
if(p->dead) | |||
{ | |||
return; | |||
} | |||
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" ); | |||
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 ) | |||
void update_player(game *g, player *p) | |||
{ | |||
if( p->dead ) | |||
if(p->dead) | |||
{ | |||
return; | |||
} | |||
if( p->life <= 0 ) | |||
if(p->life <= 0) | |||
{ | |||
add_explosion( g, g->ex, p->x, p->y, 0, 0, EXPLOSION_SMALL ); | |||
add_explosion(g, g->ex, p->x, p->y, 0, 0, EXPLOSION_SMALL); | |||
p->dead = 1; | |||
return; | |||
} | |||
/* Update weapon stats */ | |||
if( p->weapon ) | |||
if(p->weapon) | |||
{ | |||
p->weapon--; | |||
} | |||
if( p->special < MAX_SPECIAL ) | |||
if(p->special < MAX_SPECIAL) | |||
{ | |||
p->special++; | |||
} | |||
/* Update life */ | |||
if( p->life < MAX_LIFE ) | |||
if(p->life < MAX_LIFE) | |||
{ | |||
p->life++; | |||
} | |||
@@ -101,20 +101,20 @@ void update_player( game *g, player *p ) | |||
/* Update coords */ | |||
p->x += p->vx; | |||
if( p->vx < 0 ) | |||
if(p->vx < 0) | |||
{ | |||
p->vx++; | |||
} | |||
else if( p->vx > 0 ) | |||
else if(p->vx > 0) | |||
{ | |||
p->vx--; | |||
} | |||
if( p->x < 1 ) | |||
if(p->x < 1) | |||
{ | |||
p->x = 1; | |||
} | |||
else if( p->x > g->w - 7 ) | |||
else if(p->x > g->w - 7) | |||
{ | |||
p->x = g->w - 7; | |||
} | |||
@@ -24,55 +24,55 @@ | |||
#include "common.h" | |||
starfield * create_starfield( game *g ) | |||
starfield * create_starfield(game *g) | |||
{ | |||
int i; | |||
starfield *s; | |||
s = malloc( STARS * sizeof(starfield) ); | |||
s = malloc(STARS * sizeof(starfield)); | |||
for( i = 0; i < STARS; i++ ) | |||
for(i = 0; i < STARS; i++) | |||
{ | |||
s[i].x = GET_RAND( 0, g->w ); | |||
s[i].y = GET_RAND( 0, g->h ); | |||
s[i].z = GET_RAND( 1, 4 ); | |||
s[i].c = GET_RAND( 6, 8 ); | |||
s[i].ch = GET_RAND( 0, 2 ) ? '.' : '\''; | |||
s[i].x = GET_RAND(0, g->w); | |||
s[i].y = GET_RAND(0, g->h); | |||
s[i].z = GET_RAND(1, 4); | |||
s[i].c = GET_RAND(6, 8); | |||
s[i].ch = GET_RAND(0, 2) ? '.' : '\''; | |||
} | |||
return s; | |||
} | |||
void draw_starfield( game *g, starfield *s ) | |||
void draw_starfield(game *g, starfield *s) | |||
{ | |||
int i; | |||
for( i = 0; i < STARS; i++ ) | |||
for(i = 0; i < STARS; i++) | |||
{ | |||
if( s[i].x >= 0 ) | |||
if(s[i].x >= 0) | |||
{ | |||
ee_color( s[i].c ); | |||
ee_goto( s[i].x, s[i].y ); | |||
ee_putchar( s[i].ch ); | |||
ee_color(s[i].c); | |||
ee_goto(s[i].x, s[i].y); | |||
ee_putchar(s[i].ch); | |||
} | |||
} | |||
} | |||
void update_starfield( game *g, starfield *s ) | |||
void update_starfield(game *g, starfield *s) | |||
{ | |||
int i; | |||
for( i = 0; i < STARS; i++ ) | |||
for(i = 0; i < STARS; i++) | |||
{ | |||
if( s[i].x < 0 ) | |||
if(s[i].x < 0) | |||
{ | |||
s[i].x = GET_RAND( 0, g->w ); | |||
s[i].x = GET_RAND(0, g->w); | |||
s[i].y = 0; | |||
s[i].z = GET_RAND( 1, 3 ); | |||
s[i].c = GET_RAND( 6, 8 ); | |||
s[i].ch = GET_RAND( 0, 2 ) ? '.' : '\''; | |||
s[i].z = GET_RAND(1, 3); | |||
s[i].c = GET_RAND(6, 8); | |||
s[i].ch = GET_RAND(0, 2) ? '.' : '\''; | |||
} | |||
else if( s[i].y < g->h-1 ) | |||
else if(s[i].y < g->h-1) | |||
{ | |||
s[i].y += s[i].z; | |||
} | |||
@@ -83,8 +83,8 @@ void update_starfield( game *g, starfield *s ) | |||
} | |||
} | |||
void free_starfield( game *g, starfield *s ) | |||
void free_starfield(game *g, starfield *s) | |||
{ | |||
free( s ); | |||
free(s); | |||
} | |||
@@ -27,7 +27,7 @@ | |||
#include "common.h" | |||
/* Init tunnel */ | |||
tunnel * create_tunnel( game *g, int w, int h ) | |||
tunnel * create_tunnel(game *g, int w, int h) | |||
{ | |||
int i; | |||
tunnel *t = malloc(sizeof(tunnel)); | |||
@@ -37,9 +37,9 @@ tunnel * create_tunnel( game *g, int w, int h ) | |||
t->w = w; | |||
t->h = h; | |||
if( t->w >= g->w ) | |||
if(t->w >= g->w) | |||
{ | |||
for( i = 0; i < g->h; i++ ) | |||
for(i = 0; i < g->h; i++) | |||
{ | |||
t->left[i] = -10; | |||
t->right[i] = g->w + 10; | |||
@@ -50,119 +50,119 @@ tunnel * create_tunnel( game *g, int w, int h ) | |||
t->left[0] = (g->w - w) / 2; | |||
t->right[0] = (g->w + w) / 2; | |||
/* Yeah, sub-efficient, but less code to do :-) */ | |||
for( i = 0; i < g->h; i++ ) | |||
for(i = 0; i < g->h; i++) | |||
{ | |||
update_tunnel( g, t ); | |||
update_tunnel(g, t); | |||
} | |||
} | |||
return t; | |||
} | |||
void free_tunnel( tunnel *t ) | |||
void free_tunnel(tunnel *t) | |||
{ | |||
free( t->left ); | |||
free( t->right ); | |||
free( t ); | |||
free(t->left); | |||
free(t->right); | |||
free(t); | |||
} | |||
void draw_tunnel( game *g, tunnel *t ) | |||
void draw_tunnel(game *g, tunnel *t) | |||
{ | |||
int i, j; | |||
char c; | |||
ee_color( EE_GREEN ); | |||
ee_color(EE_GREEN); | |||
/* Left border */ | |||
for( i = 0; i < g->h ; i++ ) | |||
for(i = 0; i < g->h ; i++) | |||
{ | |||
if( t->left[i] <= -10 ) | |||
if(t->left[i] <= -10) | |||
{ | |||
continue; | |||
} | |||
if( i + 1 == g->h || t->left[i] > t->left[i+1] ) | |||
if(i + 1 == g->h || t->left[i] > t->left[i+1]) | |||
{ | |||
c = ( i == 0 || t->left[i] > t->left[i-1] ) ? '>' : '/'; | |||
c = (i == 0 || t->left[i] > t->left[i-1]) ? '>' : '/'; | |||
} | |||
else | |||
{ | |||
c = ( i == 0 || t->left[i] > t->left[i-1] ) ? '\\' : '<'; | |||
c = (i == 0 || t->left[i] > t->left[i-1]) ? '\\' : '<'; | |||
} | |||
ee_goto( t->left[i] + 1, i ); | |||
ee_putchar( c ); | |||
ee_goto(t->left[i] + 1, i); | |||
ee_putchar(c); | |||
if( i + 1 < g->h ) | |||
if(i + 1 < g->h) | |||
{ | |||
for( j = 1; j < t->left[i+1] - t->left[i]; j++ ) | |||
for(j = 1; j < t->left[i+1] - t->left[i]; j++) | |||
{ | |||
ee_goto( t->left[i] + j + 1, i ); | |||
ee_putchar( '_' ); | |||
ee_goto(t->left[i] + j + 1, i); | |||
ee_putchar('_'); | |||
} | |||
} | |||
} | |||
/* Right border */ | |||
for( i = 0; i < g->h ; i++ ) | |||
for(i = 0; i < g->h ; i++) | |||
{ | |||
if( t->right[i] >= g->w + 10 ) | |||
if(t->right[i] >= g->w + 10) | |||
{ | |||
continue; | |||
} | |||
if( i + 1 == g->h || t->right[i] > t->right[i+1] ) | |||
if(i + 1 == g->h || t->right[i] > t->right[i+1]) | |||
{ | |||
c = ( i == 0 || t->right[i] > t->right[i-1] ) ? '>' : '/'; | |||
c = (i == 0 || t->right[i] > t->right[i-1]) ? '>' : '/'; | |||
} | |||
else | |||
{ | |||
c = ( i == 0 || t->right[i] > t->right[i-1] ) ? '\\' : '<'; | |||
c = (i == 0 || t->right[i] > t->right[i-1]) ? '\\' : '<'; | |||
} | |||
if( i + 1 < g->h ) | |||
if(i + 1 < g->h) | |||
{ | |||
for( j = 1; j < t->right[i] - t->right[i+1]; j++ ) | |||
for(j = 1; j < t->right[i] - t->right[i+1]; j++) | |||
{ | |||
ee_goto( t->right[i+1] + j - 1, i ); | |||
ee_putchar( '_' ); | |||
ee_goto(t->right[i+1] + j - 1, i); | |||
ee_putchar('_'); | |||
} | |||
} | |||
ee_goto( t->right[i] - 1, i ); | |||
ee_putchar( c ); | |||
ee_goto(t->right[i] - 1, i); | |||
ee_putchar(c); | |||
} | |||
ee_color( EE_RED ); | |||
ee_color(EE_RED); | |||
/* Left concrete */ | |||
for( i = 0; i < g->h ; i++ ) | |||
for(i = 0; i < g->h ; i++) | |||
{ | |||
for( j = 0 ; j <= t->left[i]; j++ ) | |||
for(j = 0 ; j <= t->left[i]; j++) | |||
{ | |||
ee_goto( j, i ); | |||
ee_putchar( '#' ); | |||
ee_goto(j, i); | |||
ee_putchar('#'); | |||
} | |||
} | |||
/* Right concrete */ | |||
for( i = 0; i < g->h ; i++ ) | |||
for(i = 0; i < g->h ; i++) | |||
{ | |||
for( j = t->right[i] ; j < g->w ; j++ ) | |||
for(j = t->right[i] ; j < g->w ; j++) | |||
{ | |||
ee_goto( j, i ); | |||
ee_putchar( '#' ); | |||
ee_goto(j, i); | |||
ee_putchar('#'); | |||
} | |||
} | |||
} | |||
void update_tunnel( game *g, tunnel *t ) | |||
void update_tunnel(game *g, tunnel *t) | |||
{ | |||
static int const delta[] = { -3, -2, -1, 1, 2, 3 }; | |||
int i,j,k; | |||
/* Slide tunnel one block vertically */ | |||
for( i = t->h - 1; i--; ) | |||
for(i = t->h - 1; i--;) | |||
{ | |||
t->left[i+1] = t->left[i]; | |||
t->right[i+1] = t->right[i]; | |||
@@ -173,18 +173,18 @@ void update_tunnel( game *g, tunnel *t ) | |||
j = delta[GET_RAND(0,6)]; | |||
/* Check in which direction we need to alter tunnel */ | |||
if( t->right[1] - t->left[1] < t->w ) | |||
if(t->right[1] - t->left[1] < t->w) | |||
{ | |||
/* Not wide enough, make sure i <= j */ | |||
if( i > j ) | |||
if(i > j) | |||
{ | |||
k = j; j = i; i = k; | |||
} | |||
} | |||
else if( t->right[1] - t->left[1] - 2 > t->w ) | |||
else if(t->right[1] - t->left[1] - 2 > t->w) | |||
{ | |||
/* Too wide, make sure i >= j */ | |||
if( i < j ) | |||
if(i < j) | |||
{ | |||
k = j; j = i; i = k; | |||
} | |||
@@ -195,7 +195,7 @@ void update_tunnel( game *g, tunnel *t ) | |||
} | |||
/* If width doesn't exceed game size, update coords */ | |||
if( t->w <= g->w || t->right[1] - t->left[1] < t->w ) | |||
if(t->w <= g->w || t->right[1] - t->left[1] < t->w) | |||
{ | |||
t->left[0] = t->left[1] + i; | |||
t->right[0] = t->right[1] + j; | |||
@@ -206,26 +206,26 @@ void update_tunnel( game *g, tunnel *t ) | |||
t->right[0] = g->w + 10; | |||
} | |||
if( t->w > g->w ) | |||
if(t->w > g->w) | |||
{ | |||
if( t->left[0] < 0 && t->right[0] < g->w - 2 ) | |||
if(t->left[0] < 0 && t->right[0] < g->w - 2) | |||
{ | |||
t->left[0] = t->left[1] + 1; | |||
} | |||
if( t->left[0] > 1 && t->right[0] > g->w - 1 ) | |||
if(t->left[0] > 1 && t->right[0] > g->w - 1) | |||
{ | |||
t->right[0] = t->right[1] - 1; | |||
} | |||
} | |||
else | |||
{ | |||
if( t->left[0] < 0 ) | |||
if(t->left[0] < 0) | |||
{ | |||
t->left[0] = t->left[1] + 1; | |||
} | |||
if( t->right[0] > g->w - 1 ) | |||
if(t->right[0] > g->w - 1) | |||
{ | |||
t->right[0] = t->right[1] - 1; | |||
} | |||