int main(int argc, char* argv[]) { char* fileName; int errLevel; gridCell_t** dungeonGrid; room_t* rooms; int roomCount; // parse arguments int save = 0; int load = 0; for (int i = 0; i < argc; i++) { if (strcmp(argv[1], "--save") == 0) { save = 1; } else if (strcmp(argv[1], "--load") == 0) { load = 1; } else { showUsage(argv[0]); return 0; } } // load or generate dungeon if (load) { fileName = dungeonFileName(); errLevel = loadDungeon(&dungeonGrid, &roomCount, &rooms, fileName); free(fileName); if (errLevel) { printf("Failed to load the dungeon. Read error %d\n", errLevel); return -1; } populateRooms(dungeonGrid, rooms, roomCount); } else { roomCount = generateDungeon(&dungeonGrid, &rooms); if (roomCount < 0) { printf("Failed to allocate memory for the dungeon grid.\n"); return roomCount; } } // print dungeon printRooms(roomCount, rooms); printGrid(dungeonGrid); // save dungeon if (save) { fileName = dungeonFileName(); errLevel = saveDungeon(dungeonGrid, roomCount, rooms, fileName); free(fileName); if (errLevel) { printf("Failed to save the dungeon. Save error %d\n", errLevel); return -1; } } // Clean up free2DGrid(dungeonGrid, HEIGHT); free(rooms); return 0; }
/* room * roomRem (int key1, int key2) { for (it i = rooms_map[key1].begin(); i != rooms_map[key1].end();) { if (i->first == key2) { room * tmp = (room *) i->second; rooms_map[key1].erase(i++); eventRoomDel(key1); return tmp; //removed } else ++i; } return NULL; //no such element } */ room * roomRem(int key) { printRooms(); room* r=roomGet(key); if (r){ eventRoomDel(r->type); bintreeDel(&rooms,key,0); } return r; //no such element }
void printMap(Map map) { if (MAP_SIZE(map) < 1) { printf("Map is not loaded\n"); return; } printf("%d %d\n", map.width, map.height); for (int j=0; j<map.height; j++) { for (int i=0; i<map.width; i++) { printf("%c", map.map[indexOnMap(map, i, j)]); } printf("\n"); } printf("Rooms:\n"); printRooms(&map); }