X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_mm%2Fexport.h;h=1d063969510dadd2c37382dd25e1875d9ef50b76;hb=HEAD;hp=7b6167bc3137e9e8218c9a131a4e57ae7a50459c;hpb=8a70906dda704f6f2c9f7a55792fb26404ff5cde;p=rocksndiamonds.git diff --git a/src/game_mm/export.h b/src/game_mm/export.h index 7b6167bc..1d063969 100644 --- a/src/game_mm/export.h +++ b/src/game_mm/export.h @@ -1,13 +1,13 @@ #ifndef GAME_MM_EXPORT_H #define GAME_MM_EXPORT_H -/* ========================================================================= */ -/* functions and definitions exported from game_mm to main program */ -/* ========================================================================= */ +// ============================================================================ +// functions and definitions exported from game_mm to main program +// ============================================================================ -/* ------------------------------------------------------------------------- */ -/* constant definitions */ -/* ------------------------------------------------------------------------- */ +// ---------------------------------------------------------------------------- +// constant definitions +// ---------------------------------------------------------------------------- #define MM_MAX_PLAYFIELD_WIDTH MAX_PLAYFIELD_WIDTH #define MM_MAX_PLAYFIELD_HEIGHT MAX_PLAYFIELD_HEIGHT @@ -27,36 +27,39 @@ #define MM_LEVEL_SCORE_ELEMENTS 16 +#define MM_MAX_BALL_CONTENTS 16 + #define MM_MAX_LEVEL_NAME_LEN 32 #define MM_MAX_LEVEL_AUTHOR_LEN 32 -#define EL_EMPTY_NATIVE_MM 0 -#define EL_DF_EMPTY_NATIVE_MM 304 +#define EL_MM_START_1_NATIVE 0 +#define EL_MM_END_1_NATIVE 159 -#define EL_MM_START_NATIVE_MM 0 -#define EL_MM_END_NATIVE_MM 430 +#define EL_MM_CHAR_START_NATIVE 160 +#define EL_MM_CHAR_END_NATIVE 239 -#define EL_CHAR_START_NATIVE_MM 160 -#define EL_CHAR_END_NATIVE_MM 239 +#define EL_MM_START_2_NATIVE 240 +#define EL_MM_END_2_NATIVE 430 -#define EL_DF_START_NATIVE_MM 240 -#define EL_DF_END_NATIVE_MM 355 +#define EL_MM_START_3_NATIVE 431 +#define EL_MM_END_3_NATIVE 450 -#define EL_MM_RUNTIME_START_NATIVE_MM 500 -#define EL_MM_RUNTIME_END_NATIVE_MM 504 +#define EL_MM_RUNTIME_START_NATIVE 500 +#define EL_MM_RUNTIME_END_NATIVE 504 -#define EL_MM_DUMMY_START_NATIVE_MM 700 -#define EL_MM_DUMMY_END_NATIVE_MM 709 +// elements to be specially mapped +#define EL_MM_EMPTY_NATIVE 0 +#define EL_DF_EMPTY_NATIVE 304 +// sounds +#define SND_MM_GAME_LEVELTIME_CHARGING 0 +#define SND_MM_GAME_HEALTH_CHARGING 1 -/* ------------------------------------------------------------------------- */ -/* data structure definitions */ -/* ------------------------------------------------------------------------- */ -struct GlobalInfo_MM -{ -}; +// ---------------------------------------------------------------------------- +// data structure definitions +// ---------------------------------------------------------------------------- struct CycleList { @@ -114,6 +117,9 @@ struct LaserInfo int fuse_x, fuse_y; int dest_element; + int dest_element_last; + int dest_element_last_x; + int dest_element_last_y; boolean stops_inside_element; boolean redraw; @@ -137,77 +143,125 @@ struct GameInfo_MM int kettles_still_needed; int lights_still_needed; int num_keys; + int ball_choice_pos; // current content element choice position + boolean laser_red, laser_green, laser_blue; + boolean has_mcduffin; boolean level_solved; boolean game_over; int game_over_cause; + char *game_over_message; boolean cheat_no_overload; boolean cheat_no_explosion; + + int laser_overload_value; + boolean laser_enabled; }; struct LevelInfo_MM { - int file_version; /* version of file the level was stored with */ - int game_version; /* version of game engine to play this level */ - boolean encoding_16bit_field; /* level contains 16-bit elements */ + int file_version; // version of file the level was stored with + int game_version; // version of game engine to play this level + boolean encoding_16bit_field; // level contains 16-bit elements int fieldx; int fieldy; int time; int kettles_needed; boolean auto_count_kettles; - boolean laser_red, laser_green, laser_blue; + boolean mm_laser_red, mm_laser_green, mm_laser_blue; + boolean df_laser_red, df_laser_green, df_laser_blue; char name[MM_MAX_LEVEL_NAME_LEN + 1]; char author[MM_MAX_LEVEL_AUTHOR_LEN + 1]; int score[MM_LEVEL_SCORE_ELEMENTS]; int amoeba_speed; int time_fuse; + int time_bomb; + int time_ball; + int time_block; - short field[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT]; -}; + int num_ball_contents; + int ball_choice_mode; + int ball_content[MM_MAX_BALL_CONTENTS]; + boolean rotate_ball_content; + boolean explode_ball; -struct GraphicInfo_MM -{ + short field[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT]; }; struct EngineSnapshotInfo_MM { struct GameInfo_MM game_mm; + + struct LaserInfo laser; + + short Ur[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT]; + short Hit[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT]; + short Box[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT]; + short Angle[MAX_PLAYFIELD_WIDTH][MAX_PLAYFIELD_HEIGHT]; + + short LX, LY; + short XS, YS; + short ELX, ELY; + short CT, Ct; + + int last_LX, last_LY, last_hit_mask; + int hold_x, hold_y; + int pacman_nr; + + DelayCounter rotate_delay; + DelayCounter pacman_delay; + DelayCounter energy_delay; + DelayCounter overload_delay; }; -/* ------------------------------------------------------------------------- */ -/* exported functions */ -/* ------------------------------------------------------------------------- */ +// ---------------------------------------------------------------------------- +// exported functions +// ---------------------------------------------------------------------------- -extern struct GlobalInfo_MM global_mm_info; extern struct GameInfo_MM game_mm; extern struct LevelInfo_MM native_mm_level; extern struct EngineSnapshotInfo_MM engine_snapshot_mm; -extern void mm_open_all(); -extern void mm_close_all(); +extern short Ur[MM_MAX_PLAYFIELD_WIDTH][MM_MAX_PLAYFIELD_HEIGHT]; + +void mm_open_all(void); + +void InitElementProperties_MM(void); + +void InitGfxBuffers_MM(void); + +void InitGameEngine_MM(void); +void InitGameActions_MM(void); +void GameActions_MM(struct MouseActionInfo); + +void DrawLaser_MM(void); +void DrawTileCursor_MM(int, int, boolean); + +boolean ClickElement(int, int, int); -extern void InitGfxBuffers_MM(); +unsigned int InitEngineRandom_MM(int); -extern void InitGameEngine_MM(); -extern void GameActions_MM(byte *, boolean); +void setLevelInfoToDefaults_MM(void); +void copyInternalEngineVars_MM(void); +boolean LoadNativeLevel_MM(char *, boolean); +void SaveNativeLevel_MM(char *); -extern unsigned int InitEngineRandom_MM(int); +int getFieldbufferOffsetX_MM(void); +int getFieldbufferOffsetY_MM(void); -extern void setLevelInfoToDefaults_MM(); -extern void copyInternalEngineVars_MM(); -extern boolean LoadNativeLevel_MM(char *, boolean); -extern void SaveNativeLevel_MM(char *); +int getFlippedTileX_MM(int); +int getFlippedTileY_MM(int); +int getFlippedTileXY_MM(int); -extern int getFieldbufferOffsetX_MM(); -extern int getFieldbufferOffsetY_MM(); +void BlitScreenToBitmap_MM(Bitmap *); +void RedrawPlayfield_MM(void); -extern void BlitScreenToBitmap_MM(Bitmap *); -extern void RedrawPlayfield_MM(); +void LoadEngineSnapshotValues_MM(void); +void SaveEngineSnapshotValues_MM(void); -extern void LoadEngineSnapshotValues_MM(); -extern void SaveEngineSnapshotValues_MM(ListNode **); +int getButtonFromTouchPosition(int, int, int, int); -#endif /* GAME_MM_EXPORT_H */ +#endif // GAME_MM_EXPORT_H