From 7dde4148368e876186fcaa8c4902d6b466473605 Mon Sep 17 00:00:00 2001 From: sam Date: Tue, 17 Feb 2004 13:53:14 +0000 Subject: [PATCH] * configure.ac: + No longer check for ncurses etc., we use caca-config. * src/*: + Updated to new libcaca API, mainly caca_get_event() and caca_set_color() calls. git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/ttyvaders/trunk@365 92316355-f0b4-4df1-b90c-862c8a59935f --- configure.ac | 47 ++++++++++------------------------- src/Makefile.am | 12 ++------- src/box.c | 6 ++--- src/ceo.c | 3 ++- src/intro.c | 10 ++++---- src/main.c | 6 +++-- src/overlay.c | 20 +++++++-------- src/starfield.c | 2 +- src/tunnel.c | 4 +-- src/weapons.c | 66 ++++++++++++++++++++++++++----------------------- 10 files changed, 77 insertions(+), 99 deletions(-) diff --git a/configure.ac b/configure.ac index d8c9f7d..86032de 100644 --- a/configure.ac +++ b/configure.ac @@ -12,47 +12,26 @@ AM_CONFIG_HEADER(config.h) AM_PROG_CC_C_O AC_PROG_CPP -AC_PROG_RANLIB dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right dnl now otherwise it might be set in an obscure if statement. AC_EGREP_CPP(foo,foo) -AC_ARG_ENABLE(slang, - [ --enable-slang slang graphics support (default enabled)]) -AC_ARG_ENABLE(ncurses, - [ --enable-ncurses ncurses graphics support (default disabled)]) -AC_ARG_ENABLE(conio, - [ --enable-conio DOS conio.h graphics support (default disabled)]) - -USE_SLANG=false -USE_NCURSES=false -USE_CONIO=false -if test "${enable_conio}" = "yes"; then - AC_CHECK_HEADER(conio.h,:,AC_MSG_ERROR([cannot find conio.h header])) - AC_MSG_CHECKING(for ScreenUpdate in pc.h) - AC_EGREP_HEADER(ScreenUpdate,pc.h,[ - AC_MSG_RESULT(yes) - AC_DEFINE(SCREENUPDATE_IN_PC_H, 1, - Define if defines ScreenUpdate.)],[ - AC_MSG_RESULT(no)]) - AC_DEFINE(USE_CONIO, 1, Define if the backend driver is conio.h) - USE_CONIO=: -elif test "${enable_ncurses}" = "yes"; then - 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_DEFINE(USE_NCURSES, 1, Define if the backend driver is ncurses) - USE_NCURSES=: -elif 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])) - AC_DEFINE(USE_SLANG, 1, Define if the backend driver is slang) - USE_SLANG=: +AC_MSG_CHECKING(for libcaca support) +video_caca=no +AC_TRY_COMPILE([ + #include +],[ ],[video_caca=yes]) +AC_MSG_RESULT($video_caca) +if test "$video_caca" = "yes"; then + CACA_CFLAGS="${CFLAGS} `caca-config --cflags`" + CACA_LIBS="${LIBS} `caca-config --libs`" + AC_SUBST(CACA_CFLAGS) + AC_SUBST(CACA_LIBS) +else + AC_MSG_ERROR([cannot find libcaca]) fi -AM_CONDITIONAL(USE_SLANG, ${USE_SLANG}) -AM_CONDITIONAL(USE_NCURSES, ${USE_NCURSES}) - # Optimizations CFLAGS="${CFLAGS} -g -O2 -fno-strength-reduce -fomit-frame-pointer" # Code qui fait des warnings == code de porc == deux baffes dans ta gueule diff --git a/src/Makefile.am b/src/Makefile.am index 5cab224..8b967c3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,15 +2,6 @@ # Automake targets and declarations for ttyvaders ############################################################################### -AM_CPPFLAGS = -I$(top_srcdir)/../libcaca/src - -if USE_SLANG -LDFLAGS_slang = -lslang -endif -if USE_NCURSES -LDFLAGS_ncurses = -lncurses -endif - bin_PROGRAMS = ttyvaders ttyvaders_SOURCES = \ @@ -29,5 +20,6 @@ ttyvaders_SOURCES = \ tunnel.c \ weapons.c \ $(NULL) -ttyvaders_LDADD = ../../libcaca/src/libcaca.a $(LDFLAGS_slang) $(LDFLAGS_ncurses) -lm +ttyvaders_CFLAGS = @CACA_CFLAGS@ +ttyvaders_LDADD = @CACA_LIBS@ -lm diff --git a/src/box.c b/src/box.c index 7a9a925..eb6cb54 100644 --- a/src/box.c +++ b/src/box.c @@ -45,7 +45,7 @@ void draw_box(game *g, box *b) { int j, frame; - caca_set_color(CACA_COLOR_YELLOW); + caca_set_color(CACA_COLOR_YELLOW, CACA_COLOR_BLACK); /* Draw the thin horizontal line */ if(b->frame < 8) @@ -68,7 +68,7 @@ void draw_box(game *g, box *b) caca_draw_line(b->x + b->w / 2 - 1, b->y - b->h * (frame - 8) / 8, b->x + b->w / 2 - 1, b->y + b->h * (frame - 8) / 8 - 1, 'X'); - caca_set_color(CACA_COLOR_BLACK); + caca_set_color(CACA_COLOR_BLACK, CACA_COLOR_BLACK); for(j = b->y - b->h * (frame - 8) / 8 + 1; j < b->y + b->h * (frame - 8) / 8; @@ -84,7 +84,7 @@ void draw_box(game *g, box *b) } /* Draw the text inside the frame */ - caca_set_color(CACA_COLOR_YELLOW); + caca_set_color(CACA_COLOR_YELLOW, CACA_COLOR_BLACK); /* FIXME: use a font */ caca_putstr(b->x - b->w / 2 + 12, b->y - b->h / 2 + 2, diff --git a/src/ceo.c b/src/ceo.c index c807df8..b3ab074 100644 --- a/src/ceo.c +++ b/src/ceo.c @@ -35,7 +35,8 @@ void ceo_alert(game *g) { caca_clear(); - if(caca_get_key() == '\t') + if(caca_get_event(CACA_EVENT_KEY_PRESS) + == (CACA_EVENT_KEY_PRESS | '\t')) { end = 1; } diff --git a/src/intro.c b/src/intro.c index 09f08c3..e32a9db 100644 --- a/src/intro.c +++ b/src/intro.c @@ -36,7 +36,7 @@ void intro(void) int frame = 0; - while(caca_get_key() == 0) + while(caca_get_event(CACA_EVENT_KEY_PRESS) == 0) { int i, xo, yo, x[5], y[5]; @@ -47,9 +47,9 @@ void intro(void) xo = caca_get_width() / 2; yo = caca_get_height() / 2; - caca_set_color(CACA_COLOR_RED); + caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK); caca_fill_ellipse(xo, yo, 16, 8, '#'); - caca_set_color(CACA_COLOR_GREEN); + caca_set_color(CACA_COLOR_GREEN, CACA_COLOR_BLACK); caca_draw_thin_ellipse(xo, yo, 16, 8); for(i = 0; i < 4; i ++) @@ -60,11 +60,11 @@ void intro(void) x[4] = x[0]; y[4] = y[0]; - caca_set_color(CACA_COLOR_BLACK); + caca_set_color(CACA_COLOR_BLACK, CACA_COLOR_BLACK); caca_fill_triangle(x[0], y[0], x[1], y[1], x[2], y[2], ' '); caca_fill_triangle(x[0], y[0], x[3], y[3], x[2], y[2], ' '); caca_draw_line(x[0], y[0], x[2], y[2], ' '); - caca_set_color(CACA_COLOR_GREEN); + caca_set_color(CACA_COLOR_GREEN, CACA_COLOR_BLACK); caca_draw_thin_polyline(x, y, 4); caca_draw_sprite(xo, yo, foo_sprite, frame % 5); diff --git a/src/main.c b/src/main.c index f16f5fc..a296f2e 100644 --- a/src/main.c +++ b/src/main.c @@ -98,10 +98,12 @@ static void start_game (game *g) while(!quit) { - char key; + int event, key; - while((key = caca_get_key())) + while((event = caca_get_event(CACA_EVENT_KEY_PRESS))) { + key = event & 0xffffff; + switch(key) { case 'q': diff --git a/src/overlay.c b/src/overlay.c index 06fd504..e053f0e 100644 --- a/src/overlay.c +++ b/src/overlay.c @@ -32,49 +32,49 @@ void draw_status(game *g) static char dashes30[] = "=============================="; /* Draw life jauge */ - caca_set_color(CACA_COLOR_DARKGRAY); + caca_set_color(CACA_COLOR_DARKGRAY, CACA_COLOR_BLACK); caca_putstr(4, 1, dots30); if(g->p->life > MAX_LIFE * 7 / 10) { - caca_set_color(CACA_COLOR_GREEN); + caca_set_color(CACA_COLOR_GREEN, CACA_COLOR_BLACK); } else if(g->p->life > MAX_LIFE * 3 / 10) { - caca_set_color(CACA_COLOR_YELLOW); + caca_set_color(CACA_COLOR_YELLOW, CACA_COLOR_BLACK); } else { - caca_set_color(CACA_COLOR_RED); + caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK); } caca_putstr(4, 1, dashes30 + (MAX_LIFE - g->p->life) * 30 / MAX_LIFE); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(1, 1, "L |"); caca_putstr(34, 1, "|"); /* Draw weapon jauge */ - caca_set_color(CACA_COLOR_DARKGRAY); + caca_set_color(CACA_COLOR_DARKGRAY, CACA_COLOR_BLACK); caca_putstr(42, 1, dots30 + 10); if(g->p->special > MAX_SPECIAL * 9 / 10) { - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); } else if(g->p->special > MAX_SPECIAL * 3 / 10) { - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); } else { - caca_set_color(CACA_COLOR_BLUE); + caca_set_color(CACA_COLOR_BLUE, CACA_COLOR_BLACK); } caca_putstr(42, 1, dashes30 + 10 + (MAX_SPECIAL - g->p->special) * 20 / MAX_SPECIAL); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(39, 1, "S |"); caca_putstr(62, 1, "|"); } diff --git a/src/starfield.c b/src/starfield.c index 59986c0..b216501 100644 --- a/src/starfield.c +++ b/src/starfield.c @@ -55,7 +55,7 @@ void draw_starfield(game *g, starfield *s) { if(s[i].x >= 0) { - caca_set_color(s[i].c); + caca_set_color(s[i].c, CACA_COLOR_BLACK); caca_putchar(s[i].x, s[i].y, s[i].ch); } } diff --git a/src/tunnel.c b/src/tunnel.c index fb1d5fb..252725f 100644 --- a/src/tunnel.c +++ b/src/tunnel.c @@ -77,7 +77,7 @@ void draw_tunnel(game *g, tunnel *t) int i, j; char c; - caca_set_color(CACA_COLOR_GREEN); + caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK); /* Left border */ for(i = 0; i < g->h ; i++) @@ -115,7 +115,7 @@ void draw_tunnel(game *g, tunnel *t) caca_putchar(t->right[i] - 1, i, c); } - caca_set_color(CACA_COLOR_RED); + caca_set_color(CACA_COLOR_LIGHTRED, CACA_COLOR_RED); /* Left concrete */ for(i = 0; i < g->h ; i++) diff --git a/src/weapons.c b/src/weapons.c index 380fc9e..719e791 100644 --- a/src/weapons.c +++ b/src/weapons.c @@ -56,20 +56,20 @@ void draw_weapons(game *g, weapons *wp) switch(wp->type[i]) { case WEAPON_LASER: - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putchar(wp->x[i] >> 4, wp->y[i] >> 4, '|'); - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putchar(wp->x[i] >> 4, (wp->y[i] >> 4) + 1, '|'); break; case WEAPON_SEEKER: - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putchar(wp->x3[i] >> 4, wp->y3[i] >> 4, '.'); caca_putchar(wp->x2[i] >> 4, wp->y2[i] >> 4, 'o'); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putchar(wp->x[i] >> 4, wp->y[i] >> 4, '@'); break; case WEAPON_BOMB: - caca_set_color(CACA_COLOR_DARKGRAY); + caca_set_color(CACA_COLOR_DARKGRAY, CACA_COLOR_BLACK); caca_putchar((wp->x[i] - wp->vx[i]) >> 4, (wp->y[i] - wp->vy[i]) >> 4, '.'); caca_putchar((wp->x3[i] - wp->vx[i]) >> 4, (wp->y3[i] - wp->vy[i]) >> 4, '.'); caca_putchar((wp->x2[i] - wp->vx[i]) >> 4, (wp->y2[i] - wp->vy[i]) >> 4, '.'); @@ -354,84 +354,84 @@ static void draw_beam(int x, int y, int frame) switch(frame) { case 24: - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x, y-3, "__"); caca_putchar(x-1, y-2, '\''); caca_putchar(x+2, y-2, '`'); break; case 23: - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putstr(x, y-3, "__"); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x-2, y-2, "-'"); caca_putstr(x+2, y-2, "`-"); break; case 22: - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putstr(x, y-3, "__"); caca_putchar(x-1, y-2, '\''); caca_putchar(x+2, y-2, '`'); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x-3, y-2, ",-"); caca_putstr(x+3, y-2, "-."); break; case 21: - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putstr(x-1, y-3, "____"); caca_putchar(x-2, y-2, '\''); caca_putchar(x+3, y-2, '`'); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x-4, y-2, ",-"); caca_putstr(x+4, y-2, "-."); break; case 20: - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x, y-3, "%%"); caca_putchar(x-4, y-2, ','); caca_putchar(x+5, y-2, '.'); - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putchar(x-1, y-3, ':'); caca_putchar(x+2, y-3, ':'); caca_putstr(x-3, y-2, "-'"); caca_putstr(x+3, y-2, "`-"); break; case 19: - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x, y-4, "%%"); caca_putstr(x, y-3, "##"); - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putchar(x-1, y-4, ':'); caca_putchar(x+2, y-4, ':'); caca_putchar(x-1, y-3, '%'); caca_putchar(x+2, y-3, '%'); caca_putstr(x-4, y-2, ",-'"); caca_putstr(x+3, y-2, "`-."); - caca_set_color(CACA_COLOR_BLUE); + caca_set_color(CACA_COLOR_BLUE, CACA_COLOR_BLACK); caca_putchar(x-2, y-3, ':'); caca_putchar(x+3, y-3, ':'); break; case 18: default: r = (18 - frame) * (18 - frame); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x-1, y-5-r, ":%%:"); caca_putstr(x-1, y-4-r, "%##%"); - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putchar(x-2, y-4-r, ':'); caca_putchar(x+3, y-4-r, ':'); caca_putchar(x-2, y-2, '\''); caca_putchar(x+3, y-2, '`'); - caca_set_color(CACA_COLOR_BLUE); + caca_set_color(CACA_COLOR_BLUE, CACA_COLOR_BLACK); caca_putchar(x-3, y-2, ':'); caca_putchar(x+4, y-2, ':'); for(i = 0; i <= r; i++) { - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_BLACK); caca_putstr(x-1, y-3-i, ((i+frame) % 5) ? "####" : "%%%%"); - caca_set_color(CACA_COLOR_CYAN); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_BLACK); caca_putchar(x-2, y-3-i, '%'); caca_putchar(x+3, y-3-i, '%'); - caca_set_color(CACA_COLOR_BLUE); + caca_set_color(CACA_COLOR_BLUE, CACA_COLOR_BLACK); caca_putchar(x-3, y-3-i, ':'); caca_putchar(x+4, y-3-i, ':'); } @@ -444,16 +444,20 @@ 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 */ - caca_set_color(CACA_COLOR_BLUE); + caca_set_color(CACA_COLOR_BLUE, CACA_COLOR_BLACK); caca_draw_ellipse(x, y, r, r / 2, ':'); - caca_draw_ellipse(x, y, r + 1, r / 2, ':'); - caca_draw_ellipse(x, y, r + 2, r / 2, ':'); - caca_set_color(CACA_COLOR_CYAN); - caca_draw_ellipse(x, y, r + 2, r / 2 + 1, '%'); - caca_draw_ellipse(x, y, r + 3, r / 2 + 1, '%'); - caca_set_color(CACA_COLOR_WHITE); + caca_set_color(CACA_COLOR_LIGHTBLUE, CACA_COLOR_BLUE); + caca_draw_ellipse(x, y, r + 1, r / 2, '#'); + caca_set_color(CACA_COLOR_BLUE, CACA_COLOR_LIGHTBLUE); + caca_draw_ellipse(x, y, r + 2, r / 2, '#'); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_LIGHTBLUE); + caca_draw_ellipse(x, y, r + 2, r / 2 + 1, '#'); + caca_set_color(CACA_COLOR_LIGHTBLUE, CACA_COLOR_CYAN); + caca_draw_ellipse(x, y, r + 3, r / 2 + 1, '#'); + caca_set_color(CACA_COLOR_WHITE, CACA_COLOR_CYAN); caca_draw_ellipse(x, y, r + 3, r / 2 + 2, '#'); + caca_set_color(CACA_COLOR_CYAN, CACA_COLOR_WHITE); caca_draw_ellipse(x, y, r + 4, r / 2 + 2, '#'); - caca_draw_ellipse(x, y, r + 4, r / 2 + 3, '#'); + caca_draw_ellipse(x, y, r + 4, r / 2 + 3, ' '); }