1 // ============================================================================
2 // Mirror Magic -- McDuffin's Revenge
3 // ----------------------------------------------------------------------------
4 // (c) 1994-2017 by Artsoft Entertainment
7 // http://www.artsoft.org/
8 // ----------------------------------------------------------------------------
10 // ============================================================================
17 struct EngineSnapshotInfo_MM engine_snapshot_mm;
20 unsigned int InitEngineRandom_MM(int seed)
22 return InitEngineRandom(seed);
25 void InitElementProperties_MM(void)
29 static int ep_grid[] =
40 static int ep_grid_num = sizeof(ep_grid) / sizeof(int);
42 static int ep_mcduffin[] =
49 static int ep_mcduffin_num = sizeof(ep_mcduffin) / sizeof(int);
51 static int ep_rectangle[] =
62 static int ep_rectangle_num = sizeof(ep_rectangle) / sizeof(int);
64 static int ep_mirror[] =
83 static int ep_mirror_num = sizeof(ep_mirror) / sizeof(int);
85 static int ep_mirror_fixed[] =
92 static int ep_mirror_fixed_num = sizeof(ep_mirror_fixed) / sizeof(int);
94 static int ep_polar[] =
113 static int ep_polar_num = sizeof(ep_polar) / sizeof(int);
115 static int ep_polar_cross[] =
122 static int ep_polar_cross_num = sizeof(ep_polar_cross) / sizeof(int);
124 static int ep_beamer[] =
143 static int ep_beamer_num = sizeof(ep_beamer) / sizeof(int);
145 static int ep_reflecting[] =
148 static int ep_reflecting_num = sizeof(ep_reflecting) / sizeof(int);
150 static int ep_absorbing[] =
153 static int ep_absorbing_num = sizeof(ep_absorbing) / sizeof(int);
155 static int ep_inactive[] =
158 static int ep_inactive_num = sizeof(ep_inactive) / sizeof(int);
160 static int ep_wall[] =
163 static int ep_wall_num = sizeof(ep_wall) / sizeof(int);
165 static int ep_pacman[] =
172 static int ep_pacman_num = sizeof(ep_pacman) / sizeof(int);
174 static long ep_bit[] =
190 static int *ep_array[] =
206 static int *ep_num[] =
212 &ep_mirror_fixed_num,
222 static int num_properties = sizeof(ep_num) / sizeof(int *);
224 for(i = 0; i < MAX_ELEMENTS; i++)
225 Elementeigenschaften[i] = 0;
227 for(i = 0; i < num_properties; i++)
228 for(j = 0; j < *(ep_num[i]); j++)
229 Elementeigenschaften[(ep_array[i])[j]] |= ep_bit[i];
231 for(i = EL_CHAR_START; i <= EL_CHAR_END; i++)
232 Elementeigenschaften[i] |= (EP_BIT_CHAR | EP_BIT_INACTIVE);
234 for(i = EL_WALL_START; i <= EL_WALL_END; i++)
235 Elementeigenschaften[i] |= EP_BIT_WALL;
238 void mm_open_all(void)
240 InitElementProperties_MM();
243 void mm_close_all(void)