diff options
Diffstat (limited to 'Source/Randomizer2.cpp')
| -rw-r--r-- | Source/Randomizer2.cpp | 25 |
1 files changed, 22 insertions, 3 deletions
| diff --git a/Source/Randomizer2.cpp b/Source/Randomizer2.cpp index 993e7cc..107950d 100644 --- a/Source/Randomizer2.cpp +++ b/Source/Randomizer2.cpp | |||
| @@ -175,20 +175,39 @@ void Randomizer2::RandomizeSymmetry() { | |||
| 175 | p.grid[2][0].end = Cell::Dir::UP; | 175 | p.grid[2][0].end = Cell::Dir::UP; |
| 176 | p.grid[6][0].end = Cell::Dir::UP; | 176 | p.grid[6][0].end = Cell::Dir::UP; |
| 177 | std::vector<Pos> cutEdges = Randomizer2Core::CutSymmetricalEdgePairs(p, 4); | 177 | std::vector<Pos> cutEdges = Randomizer2Core::CutSymmetricalEdgePairs(p, 4); |
| 178 | bool alternate = false; | ||
| 179 | for (int i=0; i<cutEdges.size(); i++) { | 178 | for (int i=0; i<cutEdges.size(); i++) { |
| 180 | Pos pos = cutEdges[i]; | 179 | Pos pos = cutEdges[i]; |
| 181 | if (alternate) { | 180 | if (i%2 == 0) { |
| 182 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; | 181 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; |
| 183 | } else { | 182 | } else { |
| 184 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); | 183 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); |
| 185 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; | 184 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; |
| 186 | } | 185 | } |
| 187 | alternate = !alternate; | ||
| 188 | } | 186 | } |
| 189 | 187 | ||
| 190 | _serializer.WritePuzzle(p, 0x87); | 188 | _serializer.WritePuzzle(p, 0x87); |
| 191 | } | 189 | } |
| 190 | { // Back wall 3 | ||
| 191 | Puzzle p; | ||
| 192 | p.NewGrid(5, 6); | ||
| 193 | p.symmetry = Puzzle::Symmetry::X; | ||
| 194 | p.grid[2][10].start = true; | ||
| 195 | p.grid[8][10].start = true; | ||
| 196 | p.grid[4][0].end = Cell::Dir::UP; | ||
| 197 | p.grid[6][0].end = Cell::Dir::UP; | ||
| 198 | std::vector<Pos> cutEdges = Randomizer2Core::CutSymmetricalEdgePairs(p, 10); | ||
| 199 | for (int i=0; i<cutEdges.size(); i++) { | ||
| 200 | Pos pos = cutEdges[i]; | ||
| 201 | if (i%2 == 0) { | ||
| 202 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; | ||
| 203 | } else { | ||
| 204 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); | ||
| 205 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; | ||
| 206 | } | ||
| 207 | } | ||
| 208 | |||
| 209 | _serializer.WritePuzzle(p, 0x59); | ||
| 210 | } | ||
| 192 | } | 211 | } |
| 193 | 212 | ||
| 194 | void Randomizer2::RandomizeKeep() { | 213 | void Randomizer2::RandomizeKeep() { |
