X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=1754e225f0f26d2ce3d978c6f60cbc5e53c37b43;hb=c2a639c0b2c1a9a2bd14de86932a47429ae918a4;hp=f0136b3ee02e114bbf0d4b5fa225948740f84612;hpb=c2904baf5b039f6ac7982554fae2c4a9c9c2e5d2;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index f0136b3e..1754e225 100644 --- a/src/main.c +++ b/src/main.c @@ -53,7 +53,8 @@ boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; boolean Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; unsigned long Changed[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; unsigned long ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -short JustStopped[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +short WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short AmoebaCnt[MAX_NUM_AMOEBA]; short AmoebaCnt2[MAX_NUM_AMOEBA]; @@ -63,9 +64,10 @@ short ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; unsigned long Properties[MAX_NUM_ELEMENTS][NUM_EP_BITFIELDS]; int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; -int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +int GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; +int GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; int lev_fieldx, lev_fieldy; int scroll_x, scroll_y; @@ -89,6 +91,7 @@ int TimeFrames, TimePlayed, TimeLeft; boolean network_player_action_received = FALSE; +struct LevelSetInfo levelset; struct LevelInfo level, level_template; struct PlayerInfo stored_player[MAX_PLAYERS], *local_player = NULL; struct HiScore highscore[MAX_SCORE_ENTRIES]; @@ -100,6 +103,10 @@ struct MenuInfo menu; struct DoorInfo door_1, door_2; struct GraphicInfo *graphic_info = NULL; struct SoundInfo *sound_info = NULL; +struct MusicInfo *music_info = NULL; +struct MusicFileInfo *music_file_info = NULL; +struct DemoAnimInfo *demo_anim_info = NULL; +SetupFileHash *demo_anim_text = NULL; /* ------------------------------------------------------------------------- */ @@ -3471,12 +3478,12 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] = "-" }, { - "nut_breaking", + "nut.breaking", "-", "-" }, { - "diamond_breaking", + "diamond.breaking", "-", "-" }, @@ -3491,12 +3498,12 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] = "-" }, { - "amoeba_growing", + "amoeba.growing", "-", "-" }, { - "amoeba_shrinking", + "amoeba.shrinking", "-", "-" }, @@ -3635,6 +3642,11 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] = "-", "-" }, + { + "amoeba", + "amoeba", + "-" + }, { "[default]", "default", @@ -3655,6 +3667,11 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] = "sb_default", "-" }, + { + "dummy", + "dummy", + "-" + }, /* keyword to stop parser: "ELEMENT_INFO_END" <-- do not change! */ @@ -3672,38 +3689,59 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] = struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] = { - { ".[DEFAULT]", ACTION_DEFAULT, TRUE }, - { ".waiting", ACTION_WAITING, TRUE }, - { ".falling", ACTION_FALLING, TRUE }, - { ".moving", ACTION_MOVING, TRUE }, - { ".digging", ACTION_DIGGING, FALSE }, - { ".snapping", ACTION_SNAPPING, FALSE }, - { ".collecting", ACTION_COLLECTING, FALSE }, - { ".dropping", ACTION_DROPPING, FALSE }, - { ".pushing", ACTION_PUSHING, FALSE }, - { ".walking", ACTION_WALKING, FALSE }, - { ".passing", ACTION_PASSING, FALSE }, - { ".impact", ACTION_IMPACT, FALSE }, - { ".breaking", ACTION_BREAKING, FALSE }, - { ".activating", ACTION_ACTIVATING, FALSE }, - { ".deactivating", ACTION_DEACTIVATING, FALSE }, - { ".opening", ACTION_OPENING, FALSE }, - { ".closing", ACTION_CLOSING, FALSE }, - { ".attacking", ACTION_ATTACKING, TRUE }, - { ".growing", ACTION_GROWING, TRUE }, - { ".shrinking", ACTION_SHRINKING, FALSE }, - { ".active", ACTION_ACTIVE, TRUE }, - { ".filling", ACTION_FILLING, FALSE }, - { ".emptying", ACTION_EMPTYING, FALSE }, - { ".changing", ACTION_CHANGING, FALSE }, - { ".exploding", ACTION_EXPLODING, FALSE }, - { ".dying", ACTION_DYING, FALSE }, - { ".other", ACTION_OTHER, FALSE }, + { ".[DEFAULT]", ACTION_DEFAULT, TRUE }, + { ".waiting", ACTION_WAITING, TRUE }, + { ".falling", ACTION_FALLING, TRUE }, + { ".moving", ACTION_MOVING, TRUE }, + { ".digging", ACTION_DIGGING, FALSE }, + { ".snapping", ACTION_SNAPPING, FALSE }, + { ".collecting", ACTION_COLLECTING, FALSE }, + { ".dropping", ACTION_DROPPING, FALSE }, + { ".pushing", ACTION_PUSHING, FALSE }, + { ".walking", ACTION_WALKING, FALSE }, + { ".passing", ACTION_PASSING, FALSE }, + { ".impact", ACTION_IMPACT, FALSE }, + { ".breaking", ACTION_BREAKING, FALSE }, + { ".activating", ACTION_ACTIVATING, FALSE }, + { ".deactivating", ACTION_DEACTIVATING, FALSE }, + { ".opening", ACTION_OPENING, FALSE }, + { ".closing", ACTION_CLOSING, FALSE }, + { ".attacking", ACTION_ATTACKING, TRUE }, + { ".growing", ACTION_GROWING, TRUE }, + { ".shrinking", ACTION_SHRINKING, FALSE }, + { ".active", ACTION_ACTIVE, TRUE }, + { ".filling", ACTION_FILLING, FALSE }, + { ".emptying", ACTION_EMPTYING, FALSE }, + { ".changing", ACTION_CHANGING, FALSE }, + { ".exploding", ACTION_EXPLODING, FALSE }, + { ".boring", ACTION_BORING, FALSE }, + { ".boring[1]", ACTION_BORING_1, FALSE }, + { ".boring[2]", ACTION_BORING_2, FALSE }, + { ".boring[3]", ACTION_BORING_3, FALSE }, + { ".boring[4]", ACTION_BORING_4, FALSE }, + { ".boring[5]", ACTION_BORING_5, FALSE }, + { ".boring[6]", ACTION_BORING_6, FALSE }, + { ".boring[7]", ACTION_BORING_7, FALSE }, + { ".boring[8]", ACTION_BORING_8, FALSE }, + { ".boring[9]", ACTION_BORING_9, FALSE }, + { ".boring[10]", ACTION_BORING_10, FALSE }, + { ".sleeping", ACTION_SLEEPING, FALSE }, + { ".sleeping[1]", ACTION_SLEEPING_1, FALSE }, + { ".sleeping[2]", ACTION_SLEEPING_2, FALSE }, + { ".sleeping[3]", ACTION_SLEEPING_3, FALSE }, + { ".awakening", ACTION_AWAKENING, FALSE }, + { ".dying", ACTION_DYING, FALSE }, + { ".turning", ACTION_TURNING, FALSE }, + { ".turning_from_left", ACTION_TURNING_FROM_LEFT, FALSE }, + { ".turning_from_right", ACTION_TURNING_FROM_RIGHT, FALSE }, + { ".turning_from_up", ACTION_TURNING_FROM_UP, FALSE }, + { ".turning_from_down", ACTION_TURNING_FROM_DOWN, FALSE }, + { ".other", ACTION_OTHER, FALSE }, /* empty suffix always matches -- check as last entry in InitSoundInfo() */ - { "", ACTION_DEFAULT, TRUE }, + { "", ACTION_DEFAULT, TRUE }, - { NULL, 0, 0 } + { NULL, 0, 0 } }; struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS + 1] = @@ -3716,8 +3754,9 @@ struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS + 1] = { NULL, 0 } }; -struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1] = +struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] = { + { ".[DEFAULT]", GAME_MODE_DEFAULT, }, { ".MAIN", GAME_MODE_MAIN, }, { ".LEVELS", GAME_MODE_LEVELS }, { ".SCORES", GAME_MODE_SCORES, }, @@ -3729,6 +3768,9 @@ struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1] = { ".PREVIEW", GAME_MODE_PSEUDO_PREVIEW, }, { ".CRUMBLED", GAME_MODE_PSEUDO_CRUMBLED, }, + /* empty suffix always matches -- check as last entry in InitMusicInfo() */ + { "", GAME_MODE_DEFAULT, }, + { NULL, 0, } }; @@ -3765,6 +3807,11 @@ struct TokenIntPtrInfo image_config_vars[] = { "door_2.step_delay", &door_2.step_delay }, { "door_2.anim_mode", &door_2.anim_mode }, + { "[player].boring_delay_fixed", &game.player_boring_delay_fixed }, + { "[player].boring_delay_random", &game.player_boring_delay_random }, + { "[player].sleeping_delay_fixed", &game.player_sleeping_delay_fixed }, + { "[player].sleeping_delay_random", &game.player_sleeping_delay_random }, + { NULL, NULL, } }; @@ -3813,10 +3860,52 @@ struct FontInfo font_info[NUM_FONTS + 1] = }; +/* ------------------------------------------------------------------------- */ +/* music token prefix definitions */ +/* ------------------------------------------------------------------------- */ + +struct MusicPrefixInfo music_prefix_info[NUM_MUSIC_PREFIXES + 1] = +{ + { "background", TRUE }, + + { NULL, 0 } +}; + + /* ========================================================================= */ /* main() */ /* ========================================================================= */ +static void print_usage() +{ + printf("\n" + "Usage: %s [OPTION]... [HOSTNAME [PORT]]\n" + "\n" + "Options:\n" + " -d, --display HOSTNAME[:SCREEN] specify X server display\n" + " -b, --basepath DIRECTORY alternative base DIRECTORY\n" + " -l, --level DIRECTORY alternative level DIRECTORY\n" + " -g, --graphics DIRECTORY alternative graphics DIRECTORY\n" + " -s, --sounds DIRECTORY alternative sounds DIRECTORY\n" + " -m, --music DIRECTORY alternative music DIRECTORY\n" + " -n, --network network multiplayer game\n" + " --serveronly only start network server\n" + " -v, --verbose verbose mode\n" + " --debug display debugging information\n" + " -e, --execute COMMAND execute batch COMMAND:\n" + "\n" + "Valid commands for '--execute' option:\n" + " \"print graphicsinfo.conf\" print default graphics config\n" + " \"print soundsinfo.conf\" print default sounds config\n" + " \"print musicinfo.conf\" print default music config\n" + " \"print editorsetup.conf\" print default editor config\n" + " \"dump level FILE\" dump level data from FILE\n" + " \"dump tape FILE\" dump tape data from FILE\n" + " \"autoplay LEVELDIR\" play level tapes for LEVELDIR\n" + "\n", + program.command_basename); +} + int main(int argc, char *argv[]) { InitProgramInfo(argv[0], USERDATA_DIRECTORY, @@ -3828,7 +3917,7 @@ int main(int argc, char *argv[]) InitExitFunction(CloseAllAndExit); InitPlatformDependentStuff(); - GetOptions(argv); + GetOptions(argv, print_usage); OpenAll(); EventLoop();