private int[] getLevelMapBorder(ref LevelMap lmap, LevelMapOrientation orientation) { int[] result = new int[side_tile_count]; if (lmap.index_x < 0) { // no neighbor for (int i = 0; i < side_tile_count; ++i) { result[i] = 0; } return(result); } switch (orientation) { case LevelMapOrientation.N: for (int i = 0; i < side_tile_count; ++i) { result[i] = lmap.levels[0, i]; } break; case LevelMapOrientation.NE: result[0] = lmap.levels[0, side_tile_count - 1]; break; case LevelMapOrientation.E: for (int i = 0; i < side_tile_count; ++i) { result[i] = lmap.levels[i, side_tile_count - 1]; } break; case LevelMapOrientation.SE: result[0] = lmap.levels[side_tile_count - 1, side_tile_count - 1]; break; case LevelMapOrientation.S: for (int i = 0; i < side_tile_count; ++i) { result[i] = lmap.levels[side_tile_count - 1, i]; } break; case LevelMapOrientation.SW: result[0] = lmap.levels[side_tile_count - 1, 0]; break; case LevelMapOrientation.W: for (int i = 0; i < side_tile_count; ++i) { result[i] = lmap.levels[i, 0]; } break; case LevelMapOrientation.NW: result[0] = lmap.levels[0, 0]; break; } return(result); }
private LevelMap getNeighborLevelMap(LevelMap original, LevelMapOrientation orientation, ref LevelMap[,] WorldLevelMaps) { LevelMap result = new LevelMap(); result.invalidate(); int n_ind_x = original.index_x; int n_ind_y = original.index_y; switch (orientation) { case LevelMapOrientation.N: if (original.index_y == 0) { return(result); } else { n_ind_y -= 1; } break; case LevelMapOrientation.NE: if (original.index_y == 0 || original.index_x == terrain_chunks_x - 1) { return(result); } else { n_ind_y -= 1; n_ind_x += 1; } break; case LevelMapOrientation.E: if (original.index_x == terrain_chunks_x - 1) { return(result); } else { n_ind_x += 1; } break; case LevelMapOrientation.SE: if (original.index_y == terrain_chunks_y - 1 || original.index_x == terrain_chunks_x - 1) { return(result); } else { n_ind_y += 1; n_ind_x += 1; } break; case LevelMapOrientation.S: if (original.index_y == terrain_chunks_y - 1) { return(result); } else { n_ind_y += 1; } break; case LevelMapOrientation.SW: if (original.index_y == terrain_chunks_y - 1 || original.index_x == 0) { return(result); } else { n_ind_y += 1; n_ind_x -= 1; } break; case LevelMapOrientation.W: if (original.index_x == 0) { return(result); } else { n_ind_x -= 1; } break; case LevelMapOrientation.NW: if (original.index_y == 0 || original.index_x == 0) { return(result); } else { n_ind_y -= 1; n_ind_x -= 1; } break; } result = WorldLevelMaps [n_ind_y, n_ind_x]; return(result); }