X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fgameloop.h;h=b7e048b2dd5826790bc6437d7ca222a9bdb25c42;hb=f87231eab36e900a5f96e24e5c0c6fb90ab7bf62;hp=acde442678902e6968b02344ae78c129f4a5a28d;hpb=6a189fa082c146f1a2532d2945bd2f6fec059bb4;p=supertux.git diff --git a/src/gameloop.h b/src/gameloop.h index acde44267..b7e048b2d 100644 --- a/src/gameloop.h +++ b/src/gameloop.h @@ -3,166 +3,65 @@ Super Tux - Game Loop! - by Bill Kendrick + by Bill Kendrick & Tobias Glaesser bill@newbreedsoftware.com http://www.newbreedsoftware.com/supertux/ - April 11, 2000 - November 7, 2001 + April 11, 2000 - March 15, 2004 */ +#ifndef SUPERTUX_GAMELOOP_H +#define SUPERTUX_GAMELOOP_H -/* Direction (keyboard/joystick) states: */ +#include "sound.h" +#include "type.h" +#include "level.h" -#define UP 0 -#define DOWN 1 +/* GameLoop modes */ +#define ST_GL_PLAY 0 +#define ST_GL_TEST 1 +#define ST_GL_LOAD_GAME 2 +#define ST_GL_LOAD_LEVEL_FILE 3 -/* Directions: */ +// FIXME: Make this local to the gamesession +extern Level current_level; -#define LEFT 0 -#define RIGHT 1 +extern int game_started; +class GameSession +{ + private: + timer_type fps_timer, frame_timer; -/* Sizes: */ - -#define SMALL 0 -#define BIG 1 - - -/* Bounciness of distros: */ - -#define NO_BOUNCE 0 -#define BOUNCE 1 - - -/* One-ups... */ - -#define DISTROS_LIFEUP 100 - - -/* Dying types: */ - -/* ---- NO 0 */ -#define SQUISHED 1 -#define FALLING 2 - - -/* Enemy modes: */ - -#define NORMAL 0 -#define FLAT 1 -#define KICK 2 - - -/* Hurt modes: */ - -#define KILL 0 -#define SHRINK 1 - - -/* Upgrade types: */ - -enum { - UPGRADE_MINTS, - UPGRADE_COFFEE, - UPGRADE_HERRING -}; - - -/* Bad guy kinds: */ - -enum { - BAD_BSOD, - BAD_LAPTOP, - BAD_MONEY + public: + GameSession(const char * subset, int levelnb, int mode); + int run(); + void draw(); + int action(); }; +void activate_bad_guys(Level* plevel); +void savegame(int slot); +void loadgame(int slot); +std::string slotinfo(int slot); -/* Speed constraints: */ - -#define MAX_WALK_XM 16 -#define MAX_RUN_XM 24 -#define MAX_YM 24 -#define MAX_JUMP_COUNT 3 - -#define WALK_SPEED 2 -#define RUN_SPEED 4 -#define JUMP_SPEED 8 -#define BULLET_STARTING_YM 8 -#define BULLET_XM 16 - -#define GRAVITY 2 -#define YM_FOR_JUMP 40 -#define KILL_BOUNCE_YM 8 - -#define SKID_XM 8 -#define SKID_TIME 8 - - -#define BOUNCY_BRICK_MAX_OFFSET 8 -#define BOUNCY_BRICK_SPEED 4 - - -/* Times: */ - -#define TUX_SAFE_TIME 16 - - -/* Size constraints: */ - -#define OFFSCREEN_DISTANCE 256 - -#define LEVEL_WIDTH 375 - - -/* Array sizes: */ - -#define NUM_BOUNCY_DISTROS 8 -#define NUM_BROKEN_BRICKS 32 -#define NUM_BOUNCY_BRICKS 4 -#define NUM_BAD_GUYS 128 -#define NUM_FLOATING_SCORES 6 -#define NUM_UPGRADES 2 -#define NUM_BULLETS 3 - - -/* Scores: */ - -#define SCORE_BRICK 5 -#define SCORE_DISTRO 25 - - -/* Types: */ - -typedef struct bouncy_distro_type { - int alive, x, y, ym; -} bouncy_distro_type; - -typedef struct broken_brick_type { - int alive, x, y, xm, ym; -} broken_brick_type; - -typedef struct bouncy_brick_type { - int alive, x, y, offset, offset_m, shape; -} bouncy_brick_type; - -typedef struct bad_guy_type { - int alive, mode, dying, timer, kind, seen, dir, x, y, xm, ym; -} bad_guy_type; +bool rectcollision(base_type* one, base_type* two); +void drawshape(float x, float y, unsigned int c, Uint8 alpha = 255); +void bumpbrick(float x, float y); -typedef struct floating_score_type { - int alive, timer, x, y, value; -} floating_score_type; +/** Try to grab the coin at the given coordinates */ +void trygrabdistro(float x, float y, int bounciness); -typedef struct upgrade_type { - int alive, kind, height, x, y, xm, ym; -} upgrade_type; +/** Try to break the brick at the given coordinates */ +void trybreakbrick(float x, float y, bool small); -typedef struct bullet_type { - int alive, x, y, xm, ym; -} bullet_type; +/** Try to get the content out of a bonus box, thus emptying it */ +void tryemptybox(float x, float y, int col_side); +/** Try to bumb a badguy that might we walking above Tux, thus shaking + the tile which the badguy is walking on an killing him this way */ +void trybumpbadguy(float x, float y); -/* Function prototypes: */ +#endif /*SUPERTUX_GAMELOOP_H*/ -int gameloop(void);