2 * Copyright (c) 2007, 2008, 2009, Czirkos Zoltan <cirix@fw.hu>
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 #define GAME_INT_INVALID -100
25 // prepare cave, gfx buffer
26 #define GAME_INT_LOAD_CAVE -73
28 // show description/note of cave.
29 #define GAME_INT_SHOW_STORY -72
31 // waiting fire button after showing the story.
32 #define GAME_INT_SHOW_STORY_WAIT -71
35 #define GAME_INT_START_UNCOVER -70
37 // ...70 frames until full uncover...
38 #define GAME_INT_UNCOVER_ALL -1
40 // normal running state.
41 #define GAME_INT_CAVE_RUNNING 0
43 // add points for remaining time
44 #define GAME_INT_CHECK_BONUS_TIME 1
46 // ...2..99 = wait and do nothing, after adding time
47 #define GAME_INT_WAIT_BEFORE_COVER 2
50 #define GAME_INT_COVER_START 100
52 // ... 8 frames of cover animation
53 #define GAME_INT_COVER_ALL 108
56 typedef struct _gd_game
58 GdString player_name; // Name of player
59 int player_score; // Score of player
60 int player_lives; // Remaining lives of player
62 GdDirection player_move;
63 boolean player_move_stick;
66 GdCave *cave; // Copy of the cave. This is the iterated, changed (ruined...) one
67 GdCave *original_cave; // original cave from caveset. used to record highscore
69 boolean out_of_window; // will be set to true, if player is not visible in the window,
70 // and we have to wait for scrolling
72 int cave_num; // actual playing cave number
73 int cave_score; // score collected in this cave
74 int level_num; // actual playing level
75 int bonus_life_flash; // different kind of flashing, for bonus life
77 int state_counter; // counter used to control the game flow, rendering of caves
79 int **last_element_buffer;
81 int **gfx_buffer; // contains the indexes to the cells;
82 // created by *start_level, deleted by *stop_game
87 int milliseconds_game;
88 int milliseconds_anim;
90 int replay_no_more_movements;
91 boolean show_story; // to remember that story for a particular cave was already shown.
94 typedef enum _gd_game_state
96 GD_GAME_INVALID_STATE,
98 GD_GAME_SHOW_STORY_WAIT,
101 GD_GAME_LABELS_CHANGED,
102 GD_GAME_TIMEOUT_NOW, // this signals the moment of time out
103 GD_GAME_NO_MORE_LIVES,
108 GdCave *gd_create_snapshot(GdGame *gameplay);
110 void gd_game_free(GdGame *gameplay);
111 GdGame *gd_game_new(const int cave, const int level);
112 GdGame *gd_game_new_snapshot(GdCave *snapshot);
113 GdGame *gd_game_new_test(GdCave *cave, int level);
115 void play_game_func(GdGame *game, int action);
117 #endif // BD_GAMEPLAY_H