Browse Source

* added support for --disable-slang.

* fixed an overflow in the tunnel update code.
  * fragbomb is now 'f', not 'd'.
  * added a missing call to init_bonus().


git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/ttyvaders/trunk@52 92316355-f0b4-4df1-b90c-862c8a59935f
master
sam 22 years ago
parent
commit
c43bfbd085
7 changed files with 55 additions and 31 deletions
  1. +11
    -3
      configure.ac
  2. +8
    -7
      src/Makefile.am
  3. +2
    -1
      src/ceo.c
  4. +7
    -2
      src/common.h
  5. +21
    -8
      src/graphics.c
  6. +4
    -6
      src/main.c
  7. +2
    -4
      src/tunnel.c

+ 11
- 3
configure.ac View File

@@ -13,18 +13,26 @@ AM_CONFIG_HEADER(config.h)
AM_PROG_CC_C_O AM_PROG_CC_C_O
AC_PROG_CPP AC_PROG_CPP


AC_ARG_ENABLE(slang,
[ --enable-slang slang graphics support (default enabled)])
AC_ARG_ENABLE(ncurses, AC_ARG_ENABLE(ncurses,
[ --enable-ncurses ncurses interface support (default is slang)])
[ --enable-ncurses ncurses graphics support (default disabled)])


if test "${enable_ncurses}" = "yes" if test "${enable_ncurses}" = "yes"
then then
AC_CHECK_HEADER(ncurses.h,:,AC_MSG_ERROR([cannot find ncurses headers])) AC_CHECK_HEADER(ncurses.h,:,AC_MSG_ERROR([cannot find ncurses headers]))
AC_CHECK_LIB(ncurses,initscr,:,AC_MSG_ERROR([cannot find ncurses library])) AC_CHECK_LIB(ncurses,initscr,:,AC_MSG_ERROR([cannot find ncurses library]))
else else
AC_CHECK_HEADER(slang.h,:,AC_MSG_ERROR([cannot find slang headers]))
AC_CHECK_LIB(slang,SLkp_init,:,AC_MSG_ERROR([cannot find slang library]))
if test "${enable_slang}" != "no"
then
AC_CHECK_HEADER(slang.h,:,AC_MSG_ERROR([cannot find slang headers]))
AC_CHECK_LIB(slang,SLkp_init,:,AC_MSG_ERROR([cannot find slang library]))
else
:
fi
fi fi


AM_CONDITIONAL(USE_SLANG, test "${enable_slang}" != "no")
AM_CONDITIONAL(USE_NCURSES, test "${enable_ncurses}" = "yes") AM_CONDITIONAL(USE_NCURSES, test "${enable_ncurses}" = "yes")


AC_OUTPUT([ AC_OUTPUT([


+ 8
- 7
src/Makefile.am View File

@@ -7,12 +7,13 @@ AM_CFLAGS = -g -O2 -fno-strength-reduce -fomit-frame-pointer
# Code qui fait des warnings == code de porc == deux baffes dans ta gueule # Code qui fait des warnings == code de porc == deux baffes dans ta gueule
AM_CFLAGS += -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs AM_CFLAGS += -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wstrict-prototypes -Wshadow -Waggregate-return -Wmissing-prototypes -Wnested-externs


if USE_SLANG
CPPFLAGS_slang = -DUSE_SLANG
LDFLAGS_slang = -lslang
endif
if USE_NCURSES if USE_NCURSES
CPPFLAGS_gfx = -DUSE_NCURSES
LDFLAGS_gfx = -lncurses
else
CPPFLAGS_gfx = -DUSE_SLANG
LDFLAGS_gfx = -lslang
CPPFLAGS_ncurses = -DUSE_NCURSES
LDFLAGS_ncurses = -lncurses
endif endif


bin_PROGRAMS = ttyvaders bin_PROGRAMS = ttyvaders
@@ -33,6 +34,6 @@ ttyvaders_SOURCES = \
tunnel.c \ tunnel.c \
$(NULL) $(NULL)


ttyvaders_CPPFLAGS = $(CPPFLAGS_gfx)
ttyvaders_LDADD = $(LDFLAGS_gfx)
ttyvaders_CPPFLAGS = $(CPPFLAGS_slang) $(CPPFLAGS_ncurses)
ttyvaders_LDADD = $(LDFLAGS_slang) $(LDFLAGS_ncurses)



+ 2
- 1
src/ceo.c View File

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> * Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* All Rights Reserved * All Rights Reserved
* *
* $Id: ceo.c,v 1.4 2002/12/22 22:17:41 sam Exp $
* $Id: ceo.c,v 1.5 2002/12/23 10:06:27 sam Exp $
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -22,6 +22,7 @@


#include "config.h" #include "config.h"


#include <stdio.h>
#include <unistd.h> #include <unistd.h>


#include "common.h" #include "common.h"


+ 7
- 2
src/common.h View File

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> * Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* All Rights Reserved * All Rights Reserved
* *
* $Id: common.h,v 1.10 2002/12/23 09:28:37 sam Exp $
* $Id: common.h,v 1.11 2002/12/23 10:06:27 sam Exp $
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -32,12 +32,17 @@
# define gfx_goto(x,y) SLsmg_gotorc(y,x) # define gfx_goto(x,y) SLsmg_gotorc(y,x)
# define gfx_putchar(x) SLsmg_write_char(x) # define gfx_putchar(x) SLsmg_write_char(x)
# define gfx_putstr(x) SLsmg_write_string(x) # define gfx_putstr(x) SLsmg_write_string(x)
#else
#elif USE_NCURSES
# include <curses.h> # include <curses.h>
# define gfx_color(x) attrset(COLOR_PAIR(x)) # define gfx_color(x) attrset(COLOR_PAIR(x))
# define gfx_goto(x,y) move(y,x) # define gfx_goto(x,y) move(y,x)
# define gfx_putchar(x) addch(x) # define gfx_putchar(x) addch(x)
# define gfx_putstr(x) addstr(x) # define gfx_putstr(x) addstr(x)
#else
# define gfx_color(x) do{}while(0)
# define gfx_goto(x,y) do{}while(0)
# define gfx_putchar(x) do{}while(0)
# define gfx_putstr(x) do{}while(0)
#endif #endif


#define gfx_putcharTO(x,y,c) do{ gfx_goto(x,y); gfx_putchar(c); }while(0) #define gfx_putcharTO(x,y,c) do{ gfx_goto(x,y); gfx_putchar(c); }while(0)


+ 21
- 8
src/graphics.c View File

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> * Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* All Rights Reserved * All Rights Reserved
* *
* $Id: graphics.c,v 1.4 2002/12/22 18:44:12 sam Exp $
* $Id: graphics.c,v 1.5 2002/12/23 10:06:27 sam Exp $
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -49,7 +49,7 @@ int init_graphics( void )


SLsmg_cls(); SLsmg_cls();
SLsmg_refresh(); SLsmg_refresh();
#else
#elif USE_NCURSES
/* Initialize ncurses library */ /* Initialize ncurses library */
initscr(); initscr();
keypad(stdscr, TRUE); keypad(stdscr, TRUE);
@@ -57,6 +57,8 @@ int init_graphics( void )
cbreak(); cbreak();
noecho(); noecho();
nodelay(stdscr, TRUE); nodelay(stdscr, TRUE);
#else
/* Dummy driver */
#endif #endif


return 0; return 0;
@@ -80,7 +82,7 @@ void init_game( game *g )


g->w = SLtt_Screen_Cols; g->w = SLtt_Screen_Cols;
g->h = SLtt_Screen_Rows; g->h = SLtt_Screen_Rows;
#else
#elif USE_NCURSES
start_color(); start_color();


init_pair( BLACK, COLOR_BLACK, COLOR_BLACK ); init_pair( BLACK, COLOR_BLACK, COLOR_BLACK );
@@ -96,6 +98,10 @@ void init_game( game *g )


g->w = COLS; g->w = COLS;
g->h = LINES; g->h = LINES;
#else
/* Use dummy driver */
g->w = 80;
g->h = 25;
#endif #endif
} }


@@ -106,13 +112,15 @@ char get_key( void )
{ {
return SLang_getkey(); return SLang_getkey();
} }
#else
#elif USE_NCURSES
char key; char key;


if( ( key = getch() ) != ERR ) if( ( key = getch() ) != ERR )
{ {
return key; return key;
} }
#else
/* Use dummy driver */
#endif #endif


return 0; return 0;
@@ -122,8 +130,10 @@ void clear_graphics( void )
{ {
#ifdef USE_SLANG #ifdef USE_SLANG
SLsmg_cls(); SLsmg_cls();
#else
#elif USE_NCURSES
clear(); clear();
#else
/* Use dummy driver */
#endif #endif
} }


@@ -132,8 +142,10 @@ void refresh_graphics( void )
gfx_goto( 0, 0 ); gfx_goto( 0, 0 );
#ifdef USE_SLANG #ifdef USE_SLANG
SLsmg_refresh(); SLsmg_refresh();
#else
#elif USE_NCURSES
refresh(); refresh();
#else
/* Use dummy driver */
#endif #endif
} }


@@ -142,9 +154,10 @@ void end_graphics( void )
#ifdef USE_SLANG #ifdef USE_SLANG
SLang_reset_tty(); SLang_reset_tty();
SLsmg_reset_smg(); SLsmg_reset_smg();
#else
#elif USE_NCURSES
endwin(); endwin();
#else
/* Use dummy driver */
#endif #endif
} }




+ 4
- 6
src/main.c View File

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> * Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* All Rights Reserved * All Rights Reserved
* *
* $Id: main.c,v 1.9 2002/12/23 09:28:37 sam Exp $
* $Id: main.c,v 1.10 2002/12/23 10:06:27 sam Exp $
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -69,6 +69,7 @@ static void start_game (game *g)
g->p = create_player( g ); g->p = create_player( g );
g->al = malloc(sizeof(aliens)); g->al = malloc(sizeof(aliens));


init_bonus( g, g->bo );
init_weapons( g, g->wp ); init_weapons( g, g->wp );
init_explosions( g, g->ex ); init_explosions( g, g->ex );
init_aliens( g, g->al ); init_aliens( g, g->al );
@@ -128,7 +129,7 @@ static void start_game (game *g)
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; break;
case 'd':
case 'f':
if( g->p->nuke == 0 ) if( g->p->nuke == 0 )
{ {
g->p->nuke = 40; g->p->nuke = 40;
@@ -222,10 +223,7 @@ static void start_game (game *g)
} }


free_starfield( g, g->sf ); free_starfield( g, g->sf );

#if 0
free_player( p );
free_tunnel( g->t ); free_tunnel( g->t );
#endif
// free_player( g->p );
} }



+ 2
- 4
src/tunnel.c View File

@@ -3,7 +3,7 @@
* Copyright (c) 2002 Sam Hocevar <sam@zoy.org> * Copyright (c) 2002 Sam Hocevar <sam@zoy.org>
* All Rights Reserved * All Rights Reserved
* *
* $Id: tunnel.c,v 1.5 2002/12/23 09:28:37 sam Exp $
* $Id: tunnel.c,v 1.6 2002/12/23 10:06:27 sam Exp $
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -39,8 +39,6 @@ tunnel * create_tunnel( game *g, int w, int h )


if( t->w >= g->w ) if( t->w >= g->w )
{ {
t->left[0] = -10;
t->right[0] = g->w + 10;
for( i = 0; i < g->h; i++ ) for( i = 0; i < g->h; i++ )
{ {
t->left[i] = -10; t->left[i] = -10;
@@ -81,7 +79,7 @@ void update_tunnel( game *g, tunnel *t )
int i,j,k; int i,j,k;


/* Slide tunnel one block vertically */ /* Slide tunnel one block vertically */
for( i = t->h; i--; )
for( i = t->h - 1; i--; )
{ {
t->left[i+1] = t->left[i]; t->left[i+1] = t->left[i];
t->right[i+1] = t->right[i]; t->right[i+1] = t->right[i];


Loading…
Cancel
Save