diff options
| author | jbzdarkid <jbzdarkid@gmail.com> | 2019-11-26 10:06:47 -0800 |
|---|---|---|
| committer | jbzdarkid <jbzdarkid@gmail.com> | 2019-11-26 10:06:47 -0800 |
| commit | da6dcacf4314463e33c29a0a2831fb3bf80f4d4c (patch) | |
| tree | 6ae737be53c8be2f306e769cc3dc9853e180cee0 /Source/Randomizer2.cpp | |
| parent | a0e7ec171d68a17f8bcaeb5d8f4af881c3510280 (diff) | |
| download | witness-tutorializer-da6dcacf4314463e33c29a0a2831fb3bf80f4d4c.tar.gz witness-tutorializer-da6dcacf4314463e33c29a0a2831fb3bf80f4d4c.tar.bz2 witness-tutorializer-da6dcacf4314463e33c29a0a2831fb3bf80f4d4c.zip | |
WIP on end of glass factory
Diffstat (limited to 'Source/Randomizer2.cpp')
| -rw-r--r-- | Source/Randomizer2.cpp | 56 |
1 files changed, 54 insertions, 2 deletions
| diff --git a/Source/Randomizer2.cpp b/Source/Randomizer2.cpp index 4968666..b1cdc1f 100644 --- a/Source/Randomizer2.cpp +++ b/Source/Randomizer2.cpp | |||
| @@ -270,14 +270,66 @@ void Randomizer2::RandomizeSymmetry() { | |||
| 270 | p.grid[1][6].gap = Cell::Gap::BREAK; | 270 | p.grid[1][6].gap = Cell::Gap::BREAK; |
| 271 | 271 | ||
| 272 | for (Pos pos : Randomizer2Core::CutSymmetricalEdgePairs(p, 1)) { | 272 | for (Pos pos : Randomizer2Core::CutSymmetricalEdgePairs(p, 1)) { |
| 273 | std::string text = std::to_string(pos.x) + " " + std::to_string(pos.y); | ||
| 274 | OutputDebugStringA(text.c_str()); | ||
| 275 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; | 273 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; |
| 276 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); | 274 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); |
| 277 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; | 275 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; |
| 278 | } | 276 | } |
| 279 | _serializer.WritePuzzle(p, 0x8D); | 277 | _serializer.WritePuzzle(p, 0x8D); |
| 280 | } | 278 | } |
| 279 | { // Rotational 2 | ||
| 280 | Puzzle p; | ||
| 281 | p.NewGrid(3, 3); | ||
| 282 | p.symmetry = Puzzle::Symmetry::XY; | ||
| 283 | p.grid[6][0].start = true; | ||
| 284 | p.grid[0][6].start = true; | ||
| 285 | p.grid[4][0].end = Cell::Dir::UP; | ||
| 286 | p.grid[2][6].end = Cell::Dir::DOWN; | ||
| 287 | |||
| 288 | p.grid[5][0].gap = Cell::Gap::BREAK; | ||
| 289 | p.grid[1][6].gap = Cell::Gap::BREAK; | ||
| 290 | |||
| 291 | std::vector<Pos> cutEdges = Randomizer2Core::CutSymmetricalEdgePairs(p, 3); | ||
| 292 | for (int i=0; i<cutEdges.size(); i++) { | ||
| 293 | Pos pos = cutEdges[i]; | ||
| 294 | if (i%2 == 0) { | ||
| 295 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; | ||
| 296 | } else { | ||
| 297 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); | ||
| 298 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; | ||
| 299 | } | ||
| 300 | } | ||
| 301 | |||
| 302 | p.grid[1][6].gap = Cell::Gap::NONE; | ||
| 303 | |||
| 304 | _serializer.WritePuzzle(p, 0x81); | ||
| 305 | } | ||
| 306 | { // Rotational 3 | ||
| 307 | Puzzle p; | ||
| 308 | p.NewGrid(4, 4); | ||
| 309 | p.symmetry = Puzzle::Symmetry::XY; | ||
| 310 | p.grid[6][0].start = true; | ||
| 311 | p.grid[0][6].start = true; | ||
| 312 | p.grid[4][0].end = Cell::Dir::UP; | ||
| 313 | p.grid[2][6].end = Cell::Dir::DOWN; | ||
| 314 | |||
| 315 | p.grid[5][0].gap = Cell::Gap::BREAK; | ||
| 316 | p.grid[1][6].gap = Cell::Gap::BREAK; | ||
| 317 | |||
| 318 | std::vector<Pos> cutEdges = Randomizer2Core::CutSymmetricalEdgePairs(p, 3); | ||
| 319 | for (int i=0; i<cutEdges.size(); i++) { | ||
| 320 | Pos pos = cutEdges[i]; | ||
| 321 | if (i%2 == 0) { | ||
| 322 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; | ||
| 323 | } else { | ||
| 324 | Pos sym = p.GetSymmetricalPos(pos.x, pos.y); | ||
| 325 | p.grid[sym.x][sym.y].gap = Cell::Gap::BREAK; | ||
| 326 | } | ||
| 327 | } | ||
| 328 | |||
| 329 | p.grid[1][6].gap = Cell::Gap::NONE; | ||
| 330 | |||
| 331 | _serializer.WritePuzzle(p, 0x81); | ||
| 332 | } | ||
| 281 | } | 333 | } |
| 282 | 334 | ||
| 283 | void Randomizer2::RandomizeKeep() { | 335 | void Randomizer2::RandomizeKeep() { |
