viric@4: #include viric@4: #include viric@4: #include viric@4: #include "general.h" viric@4: viric@4: void CopyMap (struct Map *Mdest, const struct Map *Morig) viric@4: { viric@4: memcpy((void *) Mdest, (void *) Morig, sizeof (struct Map)); viric@4: } viric@4: viric@8: static int are_boxes_equal(const struct Position b1[], const struct Position b2[], viric@6: int n) viric@4: { viric@6: int i; viric@6: char tmp[MAX_Y][MAX_X]; /* !!!argh */ viric@4: viric@6: memset(tmp, 0, sizeof(tmp)); viric@4: viric@6: for (i=0; i < n; i++) viric@6: { viric@6: tmp[b1[i].y][b1[i].x] = 1; viric@6: } viric@6: for (i=0; i < n; i++) viric@6: { viric@6: if (tmp[b2[i].y][b2[i].x] != 1) viric@6: return FALSE; viric@6: } viric@6: return TRUE; viric@4: } viric@4: viric@10: int is_new_map(const struct Map maps[], const int depth) viric@8: { viric@10: const struct Map *m = &maps[depth]; viric@8: int i; viric@10: extern int max_depth; viric@8: viric@8: for(i=0; iNumBoxesInPlatform != maps[i].NumBoxesInPlatform) viric@8: continue; viric@8: else viric@8: { viric@8: if (!are_boxes_equal(m->Box, maps[i].Box, m->NumBoxes)) viric@8: continue; viric@8: } viric@8: return FALSE; viric@8: } viric@8: return TRUE; viric@8: }