/* * globals.h * Copyright (C) 1998 Brainchild Design - http://brainchilddesign.com/ * * Copyright (C) 2001 Chuck Mason * * Copyright (C) 2002 Florian Schulze * * This file is part of Jump'n'Bump. * * Jump'n'Bump is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Jump'n'Bump is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __GLOBALS_H #define __GLOBALS_H #ifdef __cplusplus extern "C" { #endif #include "config.h" #include #include #include #include #ifndef _MSC_VER #include #endif #include #include #include #ifdef DOS # include # include # include # include #endif #ifdef _MSC_VER # define WIN32_LEAN_AND_MEAN # include # include # include # include "SDL.h" # if USE_SDL_MIXER # include "SDL_mixer.h" # endif #else # ifdef USE_SDL # include # include "SDL.h" # if USE_SDL_MIXER # include "SDL_mixer.h" # endif # endif #endif #define JNB_MAX_PLAYERS 4 #define JNB_INETPORT 11111 extern int client_player_num; void tellServerPlayerMoved(int playerid, int movement_type, int newval); #define MOVEMENT_LEFT 1 #define MOVEMENT_RIGHT 2 #define MOVEMENT_UP 3 #define JNB_VERSION "1.51" #define JNB_WIDTH 400 #define JNB_HEIGHT 256 extern int screen_width; extern int screen_height; extern int screen_pitch; extern int scale_up; extern int ai[JNB_MAX_PLAYERS]; #ifndef USE_SDL #define KEY_PL1_LEFT 0xcb #define KEY_PL1_RIGHT 0xcd #define KEY_PL1_JUMP 0xc8 #define KEY_PL2_LEFT 0x1e #define KEY_PL2_RIGHT 0x20 #define KEY_PL2_JUMP 0x11 #else #define KEY_PL1_LEFT SDLK_LEFT #define KEY_PL1_RIGHT SDLK_RIGHT #define KEY_PL1_JUMP SDLK_UP #define KEY_PL2_LEFT SDLK_a #define KEY_PL2_RIGHT SDLK_d #define KEY_PL2_JUMP SDLK_w #define KEY_PL3_LEFT SDLK_j #define KEY_PL3_RIGHT SDLK_l #define KEY_PL3_JUMP SDLK_i #define KEY_PL4_LEFT SDLK_KP4 #define KEY_PL4_RIGHT SDLK_KP6 #define KEY_PL4_JUMP SDLK_KP8 #endif #define NUM_POBS 200 #define NUM_OBJECTS 200 #define NUM_FLIES 20 #define NUM_LEFTOVERS 50 #define OBJ_SPRING 0 #define OBJ_SPLASH 1 #define OBJ_SMOKE 2 #define OBJ_YEL_BUTFLY 3 #define OBJ_PINK_BUTFLY 4 #define OBJ_FUR 5 #define OBJ_FLESH 6 #define OBJ_FLESH_TRACE 7 #define OBJ_ANIM_SPRING 0 #define OBJ_ANIM_SPLASH 1 #define OBJ_ANIM_SMOKE 2 #define OBJ_ANIM_YEL_BUTFLY_RIGHT 3 #define OBJ_ANIM_YEL_BUTFLY_LEFT 4 #define OBJ_ANIM_PINK_BUTFLY_RIGHT 5 #define OBJ_ANIM_PINK_BUTFLY_LEFT 6 #define OBJ_ANIM_FLESH_TRACE 7 #define MOD_MENU 0 #define MOD_GAME 1 #define MOD_SCORES 2 #define SFX_JUMP 0 #define SFX_LAND 1 #define SFX_DEATH 2 #define SFX_SPRING 3 #define SFX_SPLASH 4 #define SFX_FLY 5 #define NUM_SFX 6 #define SFX_JUMP_FREQ 15000 #define SFX_LAND_FREQ 15000 #define SFX_DEATH_FREQ 20000 #define SFX_SPRING_FREQ 15000 #define SFX_SPLASH_FREQ 12000 #define SFX_FLY_FREQ 12000 #define BAN_VOID 0 #define BAN_SOLID 1 #define BAN_WATER 2 #define BAN_ICE 3 #define BAN_SPRING 4 #ifndef DATA_PATH #ifdef __APPLE__ #define DATA_PATH "data/jumpbump.dat" #elif _WIN32 #define DATA_PATH "data/jumpbump.dat" #else #define DATA_PATH "jumpbump.dat" #endif #endif typedef struct { int num_images; int *width; int *height; int *hs_x; int *hs_y; void **data; void **orig_data; } gob_t; typedef struct { int joy_enabled, mouse_enabled; int no_sound, music_no_sound, no_gore, fireworks; char error_str[256]; int draw_page, view_page; struct { int num_pobs; struct { int x, y; int image; gob_t *pob_data; int back_buf_ofs; } pobs[NUM_POBS]; } page_info[2]; void *pob_backbuf[2]; } main_info_t; typedef struct { int action_left,action_up,action_right; int enabled, dead_flag; int bumps; int bumped[JNB_MAX_PLAYERS]; int x, y; int x_add, y_add; int direction, jump_ready, jump_abort, in_water; int anim, frame, frame_tick, image; } player_t; typedef struct { int num_frames; int restart_frame; struct { int image; int ticks; } frame[4]; } player_anim_t; typedef struct { int used, type; int x, y; int x_add, y_add; int x_acc, y_acc; int anim; int frame, ticks; int image; } object_t; typedef struct { int x, y; int raw_x, raw_y; int but1, but2; struct { int x1, x2, x3; int y1, y2, y3; } calib_data; } joy_t; typedef struct { int but1, but2, but3; } mouse_t; extern main_info_t main_info; extern player_t player[JNB_MAX_PLAYERS]; extern player_anim_t player_anims[7]; extern object_t objects[NUM_OBJECTS]; extern joy_t joy; extern mouse_t mouse; extern char datfile_name[2048]; extern char *background_pic; extern char *mask_pic; extern gob_t rabbit_gobs; extern gob_t font_gobs; extern gob_t object_gobs; extern gob_t number_gobs; /* fireworks.c */ void fireworks(void); /* main.c */ void steer_players(void); void position_player(int player_num); void fireworks(void); void add_object(int type, int x, int y, int x_add, int y_add, int anim, int frame); void update_objects(void); int add_pob(int page, int x, int y, int image, gob_t *pob_data); void draw_flies(int page); void draw_pobs(int page); void redraw_flies_background(int page); void redraw_pob_backgrounds(int page); int add_leftovers(int page, int x, int y, int image, gob_t *pob_data); void draw_leftovers(int page); int init_level(int level, char *pal); void deinit_level(void); int init_program(int argc, char *argv[], char *pal); void deinit_program(void); unsigned short rnd(unsigned short max); int read_level(void); unsigned char *dat_open(char *file_name); int dat_filelen(char *file_name); void write_calib_data(void); /* input.c */ void update_player_actions(void); void init_inputs(void); int calib_joy(int type); /* menu.c */ int menu(void); int menu_init(void); void menu_deinit(void); /* gfx.c */ void set_scaling(int scale); void open_screen(void); void wait_vrt(int mix); void draw_begin(void); void draw_end(void); void flippage(int page); void draw_begin(void); void draw_end(void); void clear_lines(int page, int y, int count, int color); int get_color(int color, char pal[768]); int get_pixel(int page, int x, int y); void set_pixel(int page, int x, int y, int color); void setpalette(int index, int count, char *palette); void fillpalette(int red, int green, int blue); #ifdef DOS void get_block(char page, short x, short y, short width, short height, char *buffer); void put_block(char page, short x, short y, short width, short height, char *buffer); #else void get_block(int page, int x, int y, int width, int height, void *buffer); void put_block(int page, int x, int y, int width, int height, void *buffer); #endif void put_text(int page, int x, int y, char *text, int align); void put_pob(int page, int x, int y, int image, gob_t *gob, int mask, void *mask_pic); int pob_width(int image, gob_t *gob); int pob_height(int image, gob_t *gob); int pob_hs_x(int image, gob_t *gob); int pob_hs_y(int image, gob_t *gob); int read_pcx(unsigned char * handle, void *buffer, int buf_len, char *pal); void register_background(char *pixels, char pal[768]); int register_gob(unsigned char *handle, gob_t *gob, int len); void recalculate_gob(gob_t *gob, char pal[768]); void register_mask(void *pixels); /* gfx.c */ #ifdef USE_SDL /* long filelength(int handle); */ void fs_toggle(); int intr_sysupdate(); #endif /* interrpt.c */ extern char last_keys[50]; int hook_keyb_handler(void); void remove_keyb_handler(void); int key_pressed(int key); int addkey(unsigned int key); /* sound-linux.c */ #ifdef LINUX #endif #ifdef __cplusplus } #endif #endif