aboutsummaryrefslogtreecommitdiffstats
path: root/oldrunner.h
diff options
context:
space:
mode:
Diffstat (limited to 'oldrunner.h')
-rw-r--r--oldrunner.h282
1 files changed, 282 insertions, 0 deletions
diff --git a/oldrunner.h b/oldrunner.h
new file mode 100644
index 0000000..5e32306
--- /dev/null
+++ b/oldrunner.h
@@ -0,0 +1,282 @@
+/* $Id: oldrunner.h,v 1.2 2012/01/06 10:11:30 culot Exp $ */
+
+/*
+ * Copyright (c) 2010, 2012 Frederic Culot <frederic@culot.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the
+ * following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef OLDRUNNER_H
+#define OLDRUNNER_H
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "config.h"
+#include "compat.h"
+#include "cfg.h"
+
+/* Option to set auto-center mode on/off */
+#define AUTO_CENTER_MODE 0
+
+/* Game level screen properties. */
+#define LEVEL_DEFAULT_WIDTH 26
+#define LEVEL_DEFAULT_HEIGHT 16
+#define LEVEL_MAX_WIDTH 128
+#define LEVEL_MAX_HEIGHT 128
+#define VIEWPORT_WIDTH 80
+#define VIEWPORT_HEIGHT 24
+
+/* Possible characters states. */
+#define STATE_ALIVE 0x01
+#define STATE_FALLING 0x02
+#define STATE_DIGGING 0x04
+#define STATE_TRAPPED 0x08
+
+/* Game sprites. */
+enum sprite {
+ /* Sprites used to draw a level. */
+ SP_NONE,
+ SP_BRICK,
+ SP_BRICK_SCRACK,
+ SP_BRICK_LCRACK,
+ SP_BRICK_BROKEN,
+ SP_CIMENT,
+ SP_FAKE_BRICK,
+ SP_LADDER,
+ SP_ROPE,
+ SP_ESCAPE_LADDER,
+
+ /* Sprites used for objects. */
+ SP_MONEY,
+
+ /* Sprites used to draw characters. */
+ SP_HERO,
+ SP_FOE,
+ SP_INVALID,
+ SPRITES
+};
+
+enum move {
+ MOV_UP,
+ MOV_DOWN,
+ MOV_LEFT,
+ MOV_RIGHT,
+ MOV_FALL,
+ MOV_NONE,
+ MOVES
+};
+
+struct size {
+ unsigned h; /* height */
+ unsigned w; /* width */
+};
+
+struct coord {
+ int y; /* Position on the vertical axis. */
+ int x; /* Position on the horizontal axis. */
+};
+
+struct timer {
+ double time; /* time in usec. */
+ double elapsed;
+};
+
+/* Structure defining all possible user inputs. */
+struct usr_input {
+ int key;
+};
+
+struct game_info {
+#define NO_CHANGE 0x0
+#define LEVEL_CHANGE 0x1
+#define SCORE_CHANGE 0x2
+#define LIVES_CHANGE 0x4
+ int state;
+
+ unsigned level;
+ unsigned score;
+ unsigned lives;
+};
+
+#define STRINGIFY(x) #x
+#define TOSTRING(x) STRINGIFY(x)
+#define __FILE_POS__ __FILE__ ":" TOSTRING(__LINE__)
+
+#define ERROR_MSG(...) do { \
+ char msg[BUFSIZ]; \
+ int len; \
+ \
+ len = snprintf (msg, BUFSIZ, "%s: %d: ", __FILE__, __LINE__); \
+ (void)snprintf (msg + len, BUFSIZ - len, __VA_ARGS__); \
+ (void)fprintf (stderr, "%s\n", msg); \
+} while (0)
+
+#define EXIT(...) do { \
+ ERROR_MSG(__VA_ARGS__); \
+ exit (1); \
+} while (0)
+
+#define EXIT_IF(cond, ...) do { \
+ if ((cond)) \
+ EXIT(__VA_ARGS__); \
+} while (0)
+
+/* bricks.c */
+#define BRICK_COMEBACK_TIME (OLDRUNNER_TIMEOUT * 80)
+void bricks_init (void);
+void bricks_free (void);
+void bricks_break (const struct coord *);
+void bricks_draw (void);
+void bricks_update (void);
+unsigned bricks_broken_at (const struct coord *);
+
+/* coord.c */
+void coord_copy (const struct coord *, struct coord *);
+void coord_below (const struct coord *, struct coord *);
+void coord_above (const struct coord *, struct coord *);
+enum move coord_opposite_dir (enum move);
+void coord_compute (const struct coord *, enum move, struct coord *);
+void coord_set_yx (struct coord *, int, int);
+unsigned coord_equal (const struct coord *, const struct coord *);
+void coord_diff (const struct coord *, const struct coord *,
+ struct coord *);
+
+/* foes.c */
+void foes_init (void);
+void foes_free (void);
+void foes_add (const struct coord *);
+void foes_draw (void);
+unsigned foes_at_pos (const struct coord *);
+void foes_update_pos (void);
+unsigned foes_wallup_at (const struct coord *);
+
+/* game.c */
+void game_won (void);
+void game_init (int);
+void game_end (void);
+void game_update (void);
+unsigned game_load (const char *);
+void game_score_inc (void);
+int game_level_num (void);
+void game_level_inc (void);
+void game_level_dec (void);
+void game_lives_inc (void);
+void game_lives_dec (void);
+
+/* gfx.c */
+void gfx_init (void);
+void gfx_end (void);
+void gfx_alert (void);
+void gfx_center_at (struct coord *);
+void gfx_update (void);
+void gfx_get_input (struct usr_input *);
+void gfx_show_sprite (enum sprite, const struct coord *);
+void gfx_move_sprite (enum sprite, const struct coord *, const struct coord *);
+void gfx_update_info (const struct game_info *);
+void gfx_popup (const char *, const char *);
+void gfx_game_over (void);
+void gfx_game_won (void);
+
+/* hero.c */
+void hero_init (void);
+void hero_draw (void);
+void hero_set_pos (const struct coord *);
+void hero_set_initpos (const struct coord *);
+void hero_get_pos (struct coord *);
+void hero_get_initpos (struct coord *);
+unsigned hero_at_pos (const struct coord *);
+void hero_move (enum move);
+void hero_dig (enum move);
+void hero_dig_done (void);
+void hero_trapped (void);
+void hero_die (void);
+unsigned hero_wallup_at (const struct coord *);
+
+/* io.c */
+FILE *io_fopen (const char *);
+void io_fclose (FILE *);
+char *io_getln (FILE *);
+
+/* lvl.c */
+void lvl_started (void);
+enum sprite lvl_decor_at_pos (const struct coord *);
+void lvl_init (void);
+unsigned lvl_load (int);
+unsigned lvl_load_next (void);
+unsigned lvl_load_prev (void);
+void lvl_won (void);
+void lvl_lost (void);
+void lvl_draw_escape_ladder (void);
+unsigned lvl_set_name (const char *);
+unsigned lvl_set_author (const char *);
+unsigned lvl_set_size (char *);
+unsigned lvl_set_row (int, int, const char *);
+unsigned lvl_width (void);
+unsigned lvl_height (void);
+unsigned lvl_add_new (void);
+unsigned lvl_valid_move (const struct coord *, enum move, struct coord *,
+ enum sprite);
+unsigned lvl_valid_dig (const struct coord *);
+unsigned lvl_nothing_below (const struct coord *);
+unsigned lvl_obstacle_at (const struct coord *);
+void lvl_objects_update (void);
+unsigned lvl_got_hole_below (const struct coord *);
+enum move lvl_shortest_way (const struct coord *, enum move, enum move);
+int lvl_random_xpos (void);
+enum move lvl_random_hdir (void);
+
+/* mem.c */
+void *xmalloc (size_t);
+void *xcalloc (size_t, size_t);
+void *xrealloc (void *, size_t, size_t);
+char *xstrdup (const char *);
+void xfree (void *);
+
+/* money.c */
+void money_init (void);
+void money_free (void);
+void money_add (const struct coord *);
+void money_draw (void);
+void money_check_at (const struct coord *);
+unsigned money_all_collected (void);
+
+/* timer.c */
+void timer_get_time (struct timer *);
+void timer_start (struct timer *);
+void timer_stop (struct timer *);
+double timer_diff (const struct timer *, const struct timer *);
+double timer_elapsed (const struct timer *);
+void timer_set (const struct timer *, struct timer *);
+void timer_add (struct timer *, double);
+unsigned timer_delay_elapsed (struct timer *, double);
+
+/* usr.c */
+void usr_input (void);
+void usr_reset_input (void);
+
+#endif /* OLDRUNNER_H */
Un proyecto texto-plano.xyz