-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathicebreaker.h
414 lines (359 loc) · 14.9 KB
/
icebreaker.h
1
/****************************************************************************************//* ICEBREAKER.H *//****************************************************************************************//* (c) 1995 by Magnet Interactive Studios, inc. All rights reserved. *//****************************************************************************************//* Revision History: *//* 7/6/94 Began C++ rewrite based on Icebreaker.c. By Andrew Looney. *//* v1.0 8/5/94 First polished version. By Andrew Looney. *//* 8/8/94 Started making changes for next version. *//* v2.0 8/24/94 Seven level version burned onto CD-ROM. By Andrew Looney. *//* v2.1 8/29/94 Comments brought back up to date. By Andrew Looney. *//* v2.2 9/7/94 Sixteen level version. By Andrew Looney. *//* v2.3 9/23/94 Thirty level version burned onto CD-ROM. By Andrew Looney. *//* v2.4 10/19/94 Fifty level version. By Andrew Looney. *//* v2.5 10/31/94 Sixty level version burned onto CD-ROM. By Andrew Looney. *//* v3.0 10/31/94 Began switching over to real artwork. By Andrew Looney. *//* v3.1 11/11/94 COMDEX version. By Andrew Looney. *//* v3.2 12/2/94 Seventy-five level version. By Andrew Looney. *//* v3.3 12/14/94 Ack! Zombies! By Andrew Looney. *//* v3.4 12/23/94 Orange Meanies! By Andrew Looney. *//* v3.5 1/3/95 100 Levels! By Andrew Looney. *//* v3.6 1/5/95 101 Levels. By Andrew Looney. *//* v3.7 1/16/95 New, improved Brainy Seeker logic! By Andrew Looney. *//* v3.8 1/27/95 114 level version burned onto CD-ROM. By Andrew Looney. *//* v3.9 2/3/95 New CD-ROM burned for shipment to 3DO. By Andrew Looney. *//* v4.0 2/9/95 New CD-ROM featuring the big level grid. By Andrew Looney. *//* v4.1 2/22/95 New CD-ROM with rough draft of full interface. By Andrew Looney. *//* v4.2 3/17/95 The St. Patrick's Day Version. By Andrew Looney. *//* v4.3 3/20/95 The last version before the movies get added. By Andrew Looney. *//* v4.4 3/21/95 First version with movies integrated. By Andrew Looney. *//* v4.5 3/22/95 Second version with movies integrated. By Andrew Looney. *//* v4.6 3/27/95 Third version with movies integrated. By Andrew Looney. *//* v5.0 3/28/95 Newest version sent to QA. By Andrew Looney. *//* v5.1 3/28/95 Now, with Easter Eggs! By Andrew Looney. *//* v5.2 3/29/95 Could this be the final version? By Andrew Looney. *//* v5.3 3/30/95 OK, now maybe THIS is the final version! By Andrew Looney. *//* v5.4 4/3/95 Made a couple more minor changes. By Andrew Looney. *//* v5.5 5/4/95 Slight changes made to suit Panasonic. By Andrew Looney. *//* v5.6 5/5/95 Made a couple of minor, last minute user interface changes. *//****************************************************************************************/#ifndef ICEBREAKER#define ICEBREAKER 1#define VERSION "5.6"/* this line is to be removed before the final delivery: *///#define TESTING 1/****************************** Artwork descriptors *************************************/#define AMBIGUOUS 0#define NOTHING 0#define HARMLESS 0#define YELLOW_PYRAMID 1#define LTBLUE_PYRAMID 2#define PINK_PYRAMID 3#define LURKER_PYRAMID 4#define LIME_PYRAMID 5#define BLUE_PYRAMID 6#define RED_PYRAMID 7#define GREEN_PYRAMID 8#define PURPLE_PYRAMID 9#define RAINBOW_PYRAMID 10#define CONCRETE_PYRAMID 11#define YELLOW_SEEKER 12#define LTBLUE_SEEKER 13#define PINK_SEEKER 14#define LIME_SEEKER 15#define ZOMBIE 16#define LURKER 17#define MEANY 18#define NASTY 19#define GRUMPY 20#define DORMANT_CHAMELEON 21#define WAKING_CHAMELEON 22#define ACTIVE_CHAMELEON 23#define PHANTOM_BOULDER 24#define BOULDER0 25#define BOULDER1 26#define BOULDER2 27#define BOULDER3 28#define BOULDER4 29#define BOULDER5 30#define BOULDER6 31#define BOULDER7 32#define BOULDER8 33#define BOULDER9 34#define BOULDERA 35#define BOULDERD 36#define GA_TILE 37#define GB_TILE 38#define GC_TILE 39#define GD_TILE 40#define GE_TILE 41#define GF_TILE 42#define DA_TILE 43#define DB_TILE 44#define DC_TILE 45#define DD_TILE 46#define DE_TILE 47#define HA_TILE 48#define HB_TILE 49#define HC_TILE 50#define HD_TILE 51#define HE_TILE 52#define UA_TILE 53#define UB_TILE 54#define UC_TILE 55#define UD_TILE 56#define UE_TILE 57#define IA_TILE 58#define IB_TILE 59#define IC_TILE 60#define ID_TILE 61#define WA_TILE 62#define WB_TILE 63#define WC_TILE 64#define WD_TILE 65#define S1_TILE 66#define SA_TILE 67#define SB_TILE 68#define L1_TILE 69#define LA_TILE 70#define LB_TILE 71#define PA_TILE 72#define PB_TILE 73#define PC_TILE 74#define PD_TILE 75#define PE_TILE 76#define PF_TILE 77#define PG_TILE 78#define PH_TILE 79#define PI_TILE 80#define PJ_TILE 81#define PL_TILE 82#define PM_TILE 83#define P1_TILE 84#define GB2PA_TILE 85#define IA2PB_TILE 86#define HD2PC_TILE 87#define WA2PD_TILE 88#define GA2PE_TILE 89#define HA2PF_TILE 90#define IB2PG_TILE 91#define DD2PH_TILE 92#define DB2PI_TILE 93#define DA2PJ_TILE 94#define UD2P1_TILE 95#define DC2PJ_TILE 96#define IC2PB_TILE 97#define ID2PB_TILE 98#define GC2PA_TILE 99#define GD2PA_TILE 100#define GE2PA_TILE 101#define GF2PA_TILE 102#define DE2PJ_TILE 103#define HB2PC_TILE 104#define HC2PL_TILE 105#define HE2PC_TILE 106#define UA2P1_TILE 107#define UB2P1_TILE 108#define UC2PM_TILE 109#define UE2PM_TILE 110#define WB2PD_TILE 111#define WC2PD_TILE 112#define WD2PD_TILE 113#define VA2PK_TILE 114#define VA_TILE 115#define VB_TILE 116#define PK_TILE 117#define BIRTH_SCENE 118#define DEATH_SCENE 119#define SPLIT_SCENE 120#define DUDEMEYER 121#define FIREBALL 122#define TOTAL_ART_ELEMENTS 123 /* This should be one greater than the last object */#define FIRST_STATIC_PYRAMID BLUE_PYRAMID#define LAST_STATIC_PYRAMID CONCRETE_PYRAMID#define FIRST_RAINBOW_OPTION YELLOW_PYRAMID#define LAST_RAINBOW_OPTION PURPLE_PYRAMID#define FIRST_PLAIN_TILE GA_TILE#define LAST_PLAIN_TILE UE_TILE#define FIRST_LAVA_TILE L1_TILE#define LAST_LAVA_TILE LB_TILE#define FIRST_SLIME_TILE S1_TILE#define LAST_SLIME_TILE SB_TILE#define FIRST_SWAMP_TILE WA_TILE#define LAST_SWAMP_TILE WD_TILE#define FIRST_ICE_TILE IA_TILE#define LAST_ICE_TILE ID_TILE#define FIRST_PIT_TILE PA_TILE#define LAST_PIT_TILE P1_TILE#define FIRST_SEEKER YELLOW_SEEKER#define LAST_SEEKER ACTIVE_CHAMELEON#define FIRST_RANDOM_SEEKER YELLOW_SEEKER#define LAST_RANDOM_SEEKER MEANY#define FIRST_BOULDER PHANTOM_BOULDER#define LAST_BOULDER BOULDERD#define FIRST_PITFORMATION GB2PA_TILE#define LAST_PITFORMATION VA2PK_TILE/*************************** assorted symbol defintions *********************************/#define ROWS_ON_SCREEN 8#define ROWS_IN_LANDSCAPE 14#define COLUMNS_ON_SCREEN 12 /* this number must be even! */#define COLUMNS_IN_LANDSCAPE 14#define TOTAL_SCREEN_TILES (ROWS_ON_SCREEN * COLUMNS_ON_SCREEN)#define TOTAL_LANDSCAPE_TILES (ROWS_IN_LANDSCAPE * COLUMNS_IN_LANDSCAPE)#define TILE_WIDTH_25 18#define HALF_TILE_WIDTH 36#define TILE_WIDTH_75 54#define TILE_WIDTH 73#define TILE_HEIGHT_25 9#define HALF_TILE_HEIGHT 18#define TILE_HEIGHT_75 27#define TILE_HEIGHT 36#define SCREEN_CENTER_X 160L#define SCREEN_CENTER_Y 120L#define SCREEN_WIDTH 320L#define SCREEN_HEIGHT 240L#define INITIAL_UPPER_LEFT_X ((-74) << 16)#define INITIAL_UPPER_LEFT_Y ((-94) << 16)#define NORTH 0#define NORTHEAST 1#define EAST 2#define SOUTHEAST 3#define SOUTH 4#define SOUTHWEST 5#define WEST 6#define NORTHWEST 7#define NO_DIRECTION 8#define RANDOM 9#define STANDARD_FRAME_RATE (1 << 16)#define LINEHEIGHT (12)#define LEFTMARGIN (30)#define FUDGE_FACTOR (5 << 16)#define PYRAMID_POP_DELAY 3#define FOREVER TRUE#define NO_AXIS 0#define X_AXIS 1#define Y_AXIS 2#define PLUS_DIRECTION 1#define MINUS_DIRECTION 2#define CHAMELEON_RANGE_X TILE_WIDTH#define CHAMELEON_RANGE_Y TILE_HEIGHT#define PICK_AND_PLAY_MODE 0#define GAME_ABORT 1#define SELF_PLAY_MODE 2#define CANNED_DEMO_MODE 3#define DEMO_MODE_ABORT 4#define EASY 0#define MEDIUM 1#define HARD 2#define INSANE 3#define MAX_FILE_BYTES 5000#define BENCHMARK_SAMPLE_SIZE 15#define TAB (9)#define MAX_DETECTABLE_COLLISIONS 7#define FRAME_RATE_12_PER_SECOND 66800 /* microseconds */#define FRAME_RATE_15_PER_SECOND 58000 /* microseconds */#define FRAME_RATE_29_PER_SECOND 34900 /* microseconds */#define MAGNET_3D0_DEVELOPER_ID_NUMBER 1365#define PERIMETER_DISTANCE_X 400#define PERIMETER_DISTANCE_Y 390#define MUSIC_ON 0#define MUSIC_OFF 1#define MUSIC_MUTED 2#define WELCOME_MOVIE 0#define PITS_MOVIE 1#define PURPLE_MOVIE 2#define PINK_MOVIE 3#define RAINBOW_MOVIE 4#define CYANIDE_MOVIE 5#define ICE_MOVIE 6#define LIMEYS_MOVIE 7#define ROCKS_MOVIE 8#define CONCRETE_MOVIE 9#define LAVA_MOVIE 10#define CHAMELEON_MOVIE 11#define SLIME_MOVIE 12#define LURKERS_MOVIE 13#define SWAMP_MOVIE 14#define ZOMBIE_MOVIE 15#define MEANY_MOVIE 16#define VICTORY_MOVIE 17#define PANASONIC_MOVIE 18#define MEMCHECK_MASK 15/*************************** collision detection settings *******************************//* Note: see also: hardcoded values in dudemeyer::initialize_variables() *//* and: hardcoded values in solids::InitializeSolids() (for BOULDERs) */#define PYRAMID_COL_DETECT_X 7#define PYRAMID_COL_DETECT_Y 4#define FIREBALL_COL_DETECT_X 3#define FIREBALL_COL_DETECT_Y 3#define HAZARD_X_COL_DETECT_ADJUSTMENT 4#define HAZARD_Y_COL_DETECT_ADJUSTMENT 3/***************************** movement rate settings ***********************************/#define ICEBREAKER_VERT_SPEED (4 << 16)#define ICEBREAKER_HORZ_SPEED (6 << 16)#define FIREBALL_SPEED (30 << 16)/********************************* health values ****************************************/#define NOT_DEAD 0#define DEAD 1#define STUMBLING 2#define FELL_INTO_A_PIT 3#define CAUGHT_BY_SEEKER 4#define CONSUMED_BY_LAVA 5#define DISSOLVED_IN_SLIME 6#define SPLITTING 7#define SPLITTING_STASIS 8/********************************* macro definitions ************************************/#define FIND_CENTER_X(X) ((X->ccb_XPos + ((X->ccb_Width / 2) << 16)) >> 16)#define FIND_CENTER_Y(X) ((X->ccb_YPos + ((X->ccb_Height / 2) << 16)) >> 16)#define ABS(X) (X) < 0 ? (-(X)) : (X)/*************************** meta level artwork files ***********************************/#define BACKGROUND_IMAGE "$boot/IceFiles/MetaArt/solid_black.cel"#define THREEDO_LOGO "$boot/IceFiles/MetaArt/3DOLogo.cel"#define MAGNET_LOGO "$boot/IceFiles/MetaArt/Magnet_screen.cel"#define ICEBREAKER_SPLASH "$boot/IceFiles/MetaArt/Icebreaker_Logo.cel"#define GAME_OVER "$boot/IceFiles/MetaArt/game_over.cel"#define YOU_WIN "$boot/IceFiles/MetaArt/you_win.cel"#define UNDERWATER_ANIM "$boot/IceFiles/MetaArt/Underwater.anim"#define ARROW_N "$boot/IceFiles/MetaArt/arrows/arrow_n.cel"#define ARROW_S "$boot/IceFiles/MetaArt/arrows/arrow_s.cel"#define ARROW_E "$boot/IceFiles/MetaArt/arrows/arrow_e.cel"#define ARROW_W "$boot/IceFiles/MetaArt/arrows/arrow_w.cel"#define ARROW_NE "$boot/IceFiles/MetaArt/arrows/arrow_ne.cel"#define ARROW_SE "$boot/IceFiles/MetaArt/arrows/arrow_se.cel"#define ARROW_NW "$boot/IceFiles/MetaArt/arrows/arrow_nw.cel"#define ARROW_SW "$boot/IceFiles/MetaArt/arrows/arrow_sw.cel"/********************************** Prototypes ******************************************/extern void Benchmark();extern void RegulateSpeed(int32 speed_limit);extern bool HasThisMuchTimePassedYet(int32 time_in_seconds, bool start_timing_now);extern int32 RandomNumber (int32 lower_bounds, int32 upper_bounds);extern bool GravitateTowardsPoint (CCB *target, int32 speed, int32 desired_x, int32 desired_y);extern bool ObjectVisible (CCB *target);extern bool PointVisible (int32 x, int32 y);extern bool LoadArtwork (void);extern bool InitSystemClock(void);extern void ShutdownSystemClock(void);extern bool Init3D0System (void);extern void ArtworkMissing (int32 missing_element);extern int32 AreWeLost(int32 our_x,int32 our_y,int32 home_x,int32 home_y,int32 modifier);extern bool BootIcebreaker (void);extern void InitializeIcebreaker (int32 leveltoload, int16 difficulty);extern void IceMovementAdjustments(int32 &x_change, int32 &y_change);extern void InputGenerator(int32 &x_change, int32 &y_change);extern void InputHandler (int32 &x_change, int32 &y_change);extern void ResultsHandler (int32 &x_change, int32 &y_change);extern void VideoHandler (void);extern void PullIntoHazard(CCB *tile,int32 tile_type);extern void AngelFliesAway(void);extern void UnderwaterEffects(void);extern void GameOver (bool end_quickly);extern void ShutdownAllLevelSpecificArtwork(void);extern void ShutdownForRestart (void);extern void ShutdownForExit (void);extern void Quit (void);extern int32 PlayALevel(int32 whats_next);extern int main();#endif/***************************************** EOF ******************************************/