fixed compiler warnings (after adding "-Wstrict-prototypes")
[rocksndiamonds.git] / src / game_mm / mm_init.c
index 9d945a3894f616daefb879a49868555fffbd44c4..1906c97d3bbb69fb75d58cc868aac7d0bcb91e82 100644 (file)
@@ -11,6 +11,8 @@
 
 #include "main_mm.h"
 
+#include "mm_main.h"
+
 
 struct EngineSnapshotInfo_MM engine_snapshot_mm;
 
@@ -20,21 +22,224 @@ unsigned int InitEngineRandom_MM(int seed)
   return InitEngineRandom(seed);
 }
 
+void InitElementProperties_MM(void)
+{
+  int i,j;
 
-/* ------------------------------------------------------------------------- */
-/* Mirror Magic game engine snapshot handling functions                      */
-/* ------------------------------------------------------------------------- */
+  static int ep_grid[] =
+  {
+    EL_GRID_STEEL_00,
+    EL_GRID_STEEL_01,
+    EL_GRID_STEEL_02,
+    EL_GRID_STEEL_03,
+    EL_GRID_WOOD_00,
+    EL_GRID_WOOD_01,
+    EL_GRID_WOOD_02,
+    EL_GRID_WOOD_03,
+  };
+  static int ep_grid_num = sizeof(ep_grid) / sizeof(int);
 
-void SaveEngineSnapshotValues_MM(ListNode **buffers)
-{
-  engine_snapshot_mm.game_mm = game_mm;
+  static int ep_mcduffin[] =
+  {
+    EL_MCDUFFIN_RIGHT,
+    EL_MCDUFFIN_UP,
+    EL_MCDUFFIN_LEFT,
+    EL_MCDUFFIN_DOWN,
+  };
+  static int ep_mcduffin_num = sizeof(ep_mcduffin) / sizeof(int);
+
+  static int ep_rectangle[] =
+  {
+    EL_EXIT_CLOSED,
+    EL_EXIT_OPENING_1,
+    EL_EXIT_OPENING_2,
+    EL_EXIT_OPEN,
+    EL_BLOCK_STONE,
+    EL_BLOCK_WOOD,
+    EL_GATE_STONE,
+    EL_GATE_WOOD
+  };
+  static int ep_rectangle_num = sizeof(ep_rectangle) / sizeof(int);
+
+  static int ep_mirror[] =
+  {
+    EL_MIRROR_00,
+    EL_MIRROR_01,
+    EL_MIRROR_02,
+    EL_MIRROR_03,
+    EL_MIRROR_04,
+    EL_MIRROR_05,
+    EL_MIRROR_06,
+    EL_MIRROR_07,
+    EL_MIRROR_08,
+    EL_MIRROR_09,
+    EL_MIRROR_10,
+    EL_MIRROR_11,
+    EL_MIRROR_12,
+    EL_MIRROR_13,
+    EL_MIRROR_14,
+    EL_MIRROR_15,
+  };
+  static int ep_mirror_num = sizeof(ep_mirror) / sizeof(int);
+
+  static int ep_mirror_fixed[] =
+  {
+    EL_MIRROR_FIXED_00,
+    EL_MIRROR_FIXED_01,
+    EL_MIRROR_FIXED_02,
+    EL_MIRROR_FIXED_03,
+  };
+  static int ep_mirror_fixed_num = sizeof(ep_mirror_fixed) / sizeof(int);
+
+  static int ep_polar[] =
+  {
+    EL_POLAR_00,
+    EL_POLAR_01,
+    EL_POLAR_02,
+    EL_POLAR_03,
+    EL_POLAR_04,
+    EL_POLAR_05,
+    EL_POLAR_06,
+    EL_POLAR_07,
+    EL_POLAR_08,
+    EL_POLAR_09,
+    EL_POLAR_10,
+    EL_POLAR_11,
+    EL_POLAR_12,
+    EL_POLAR_13,
+    EL_POLAR_14,
+    EL_POLAR_15,
+  };
+  static int ep_polar_num = sizeof(ep_polar) / sizeof(int);
+
+  static int ep_polar_cross[] =
+  {
+    EL_POLAR_CROSS_00,
+    EL_POLAR_CROSS_01,
+    EL_POLAR_CROSS_02,
+    EL_POLAR_CROSS_03,
+  };
+  static int ep_polar_cross_num = sizeof(ep_polar_cross) / sizeof(int);
+
+  static int ep_beamer[] =
+  {
+    EL_BEAMER_00,
+    EL_BEAMER_01,
+    EL_BEAMER_02,
+    EL_BEAMER_03,
+    EL_BEAMER_04,
+    EL_BEAMER_05,
+    EL_BEAMER_06,
+    EL_BEAMER_07,
+    EL_BEAMER_08,
+    EL_BEAMER_09,
+    EL_BEAMER_10,
+    EL_BEAMER_11,
+    EL_BEAMER_12,
+    EL_BEAMER_13,
+    EL_BEAMER_14,
+    EL_BEAMER_15,
+  };
+  static int ep_beamer_num = sizeof(ep_beamer) / sizeof(int);
+
+  static int ep_reflecting[] =
+  {
+  };
+  static int ep_reflecting_num = sizeof(ep_reflecting) / sizeof(int);
+
+  static int ep_absorbing[] =
+  {
+  };
+  static int ep_absorbing_num = sizeof(ep_absorbing) / sizeof(int);
+
+  static int ep_inactive[] =
+  {
+  };
+  static int ep_inactive_num = sizeof(ep_inactive) / sizeof(int);
+
+  static int ep_wall[] =
+  {
+  };
+  static int ep_wall_num = sizeof(ep_wall) / sizeof(int);
+
+  static int ep_pacman[] =
+  {
+    EL_PACMAN_RIGHT,
+    EL_PACMAN_UP,
+    EL_PACMAN_LEFT,
+    EL_PACMAN_DOWN,
+  };
+  static int ep_pacman_num = sizeof(ep_pacman) / sizeof(int);
+
+  static long ep_bit[] =
+  {
+    EP_BIT_GRID,
+    EP_BIT_MCDUFFIN,
+    EP_BIT_RECTANGLE,
+    EP_BIT_MIRROR,
+    EP_BIT_MIRROR_FIXED,
+    EP_BIT_POLAR,
+    EP_BIT_POLAR_CROSS,
+    EP_BIT_BEAMER,
+    EP_BIT_REFLECTING,
+    EP_BIT_ABSORBING,
+    EP_BIT_INACTIVE,
+    EP_BIT_WALL,
+    EP_BIT_PACMAN,
+  };
+  static int *ep_array[] =
+  {
+    ep_grid,
+    ep_mcduffin,
+    ep_rectangle,
+    ep_mirror,
+    ep_mirror_fixed,
+    ep_polar,
+    ep_polar_cross,
+    ep_beamer,
+    ep_reflecting,
+    ep_absorbing,
+    ep_inactive,
+    ep_wall,
+    ep_pacman,
+  };
+  static int *ep_num[] =
+  {
+    &ep_grid_num,
+    &ep_mcduffin_num,
+    &ep_rectangle_num,
+    &ep_mirror_num,
+    &ep_mirror_fixed_num,
+    &ep_polar_num,
+    &ep_polar_cross_num,
+    &ep_beamer_num,
+    &ep_reflecting_num,
+    &ep_absorbing_num,
+    &ep_inactive_num,
+    &ep_wall_num,
+    &ep_pacman_num,
+  };
+  static int num_properties = sizeof(ep_num) / sizeof(int *);
+
+  for(i = 0; i < MAX_ELEMENTS; i++)
+    Elementeigenschaften[i] = 0;
+
+  for(i = 0; i < num_properties; i++)
+    for(j = 0; j < *(ep_num[i]); j++)
+      Elementeigenschaften[(ep_array[i])[j]] |= ep_bit[i];
+
+  for(i = EL_CHAR_START; i <= EL_CHAR_END; i++)
+    Elementeigenschaften[i] |= (EP_BIT_CHAR | EP_BIT_INACTIVE);
+
+  for(i = EL_WALL_START; i <= EL_WALL_END; i++)
+    Elementeigenschaften[i] |= EP_BIT_WALL;
 }
 
-void LoadEngineSnapshotValues_MM()
+void mm_open_all(void)
 {
-  /* stored engine snapshot buffers already restored at this point */
-
-  game_mm = engine_snapshot_mm.game_mm;
+  InitElementProperties_MM();
+}
 
-  RedrawPlayfield_MM(TRUE);
+void mm_close_all(void)
+{
 }