source: ttyvaders/trunk/src/box.c @ 2990

Last change on this file since 2990 was 2990, checked in by Sam Hocevar, 11 years ago

Port ttyvaders to the unified libcaca 0.99.beta15 API.

  • Property svn:keywords set to Id
File size: 2.9 KB
Line 
1/*
2 *  ttyvaders     Textmode shoot'em up
3 *  Copyright (c) 2002-2003 Sam Hocevar <sam@zoy.org>
4 *                All Rights Reserved
5 *
6 *  $Id: box.c 2990 2008-10-18 21:42:24Z sam $
7 *
8 *  This program is free software. It comes without any warranty, to
9 *  the extent permitted by applicable law. You can redistribute it
10 *  and/or modify it under the terms of the Do What The Fuck You Want
11 *  To Public License, Version 2, as published by Sam Hocevar. See
12 *  http://sam.zoy.org/wtfpl/COPYING for more details.
13 */
14
15#include "config.h"
16
17#include <stdlib.h>
18
19#include "common.h"
20
21box * create_box(game *g, int x, int y, int w, int h)
22{
23    box *b = malloc(sizeof(box));
24    if(b == NULL)
25        exit(1);
26
27    b->x = x;
28    b->y = y;
29    b->w = w;
30    b->h = h;
31    b->frame = 0;
32
33    return b;
34}
35
36void draw_box(game *g, box *b)
37{
38    int j, frame;
39
40    caca_set_color(g->cv, CACA_COLOR_YELLOW, CACA_COLOR_BLACK);
41
42    /* Draw the thin horizontal line */
43    if(b->frame < 8)
44    {
45        caca_draw_line(g->cv, b->x - b->w * b->frame / 16, b->y,
46                               b->x + b->w * b->frame / 16 - 1, b->y, "X");
47        return;
48    }
49
50    /* Draw the frame */
51    frame = b->frame < 12 ? b->frame : 12;
52
53    caca_draw_line(g->cv, b->x - b->w / 2, b->y - b->h * (frame - 8) / 8,
54                    b->x + b->w / 2 - 1, b->y - b->h * (frame - 8) / 8, "X");
55    caca_draw_line(g->cv, b->x - b->w / 2, b->y + b->h * (frame - 8) / 8,
56                    b->x + b->w / 2 - 1, b->y + b->h * (frame - 8) / 8, "X");
57
58    caca_draw_line(g->cv, b->x - b->w / 2, b->y - b->h * (frame - 8) / 8,
59                    b->x - b->w / 2, b->y + b->h * (frame - 8) / 8 - 1, "X");
60    caca_draw_line(g->cv, b->x + b->w / 2 - 1, b->y - b->h * (frame - 8) / 8,
61               b->x + b->w / 2 - 1, b->y + b->h * (frame - 8) / 8 - 1, "X");
62
63    caca_set_color(g->cv, CACA_COLOR_BLACK, CACA_COLOR_BLACK);
64
65    for(j = b->y - b->h * (frame - 8) / 8 + 1;
66         j < b->y + b->h * (frame - 8) / 8;
67         j++)
68    {
69        caca_draw_line(g->cv, b->x - b->w / 2 + 1, j,
70                        b->x + b->w / 2 - 2, j, "X");
71    }
72
73    if(b->frame < 12)
74    {
75        return;
76    }
77
78    /* Draw the text inside the frame */
79    caca_set_color(g->cv, CACA_COLOR_YELLOW, CACA_COLOR_BLACK);
80
81    /* FIXME: use a font */
82    caca_putstr(g->cv, b->x - b->w / 2 + 12, b->y - b->h / 2 + 2,
83                 "XXXX.  .XXXX  X   X  .XXXX  .XXXX  XXXX.");
84    caca_putstr(g->cv, b->x - b->w / 2 + 12, b->y - b->h / 2 + 3,
85                 "X  `X  X'  X  X   X  X'     X'     X  `X");
86    caca_putstr(g->cv, b->x - b->w / 2 + 12, b->y - b->h / 2 + 4,
87                 "XXXX'  XXXXX  X   X  `XXX   XXXX   X   X");
88    caca_putstr(g->cv, b->x - b->w / 2 + 12, b->y - b->h / 2 + 5,
89                 "X'     X' `X  X. ,X     `X  X'     X  ,X");
90    caca_putstr(g->cv, b->x - b->w / 2 + 12, b->y - b->h / 2 + 6,
91                 "X      X   X  `XXXX  XXXX'  `XXXX  XXXX'");
92}
93
94void free_box(box *b)
95{
96    free(b);
97}
98
Note: See TracBrowser for help on using the repository browser.