diff options
author | jbzdarkid <jbzdarkid@gmail.com> | 2019-11-18 10:03:00 -0800 |
---|---|---|
committer | jbzdarkid <jbzdarkid@gmail.com> | 2019-11-18 10:03:00 -0800 |
commit | 7a13ef0a94f6ed4989677530b1b37e1af0692fc7 (patch) | |
tree | c3be1b561d426b076c2e620cfcaf8def81e84228 | |
parent | c282663a96ae9704a59c55c9300dbc8c49e0ef39 (diff) | |
download | witness-tutorializer-7a13ef0a94f6ed4989677530b1b37e1af0692fc7.tar.gz witness-tutorializer-7a13ef0a94f6ed4989677530b1b37e1af0692fc7.tar.bz2 witness-tutorializer-7a13ef0a94f6ed4989677530b1b37e1af0692fc7.zip |
Done with most of tutorial
-rw-r--r-- | Source/PuzzleSerializer.cpp | 2 | ||||
-rw-r--r-- | Source/Randomizer2.cpp | 42 |
2 files changed, 32 insertions, 12 deletions
diff --git a/Source/PuzzleSerializer.cpp b/Source/PuzzleSerializer.cpp index e845578..5c91b56 100644 --- a/Source/PuzzleSerializer.cpp +++ b/Source/PuzzleSerializer.cpp | |||
@@ -10,6 +10,8 @@ PuzzleSerializer::PuzzleSerializer(const std::shared_ptr<Memory>& memory) : _mem | |||
10 | Puzzle PuzzleSerializer::ReadPuzzle(int id) { | 10 | Puzzle PuzzleSerializer::ReadPuzzle(int id) { |
11 | int width = 2 * _memory->ReadEntityData<int>(id, GRID_SIZE_X, 1)[0] - 1; | 11 | int width = 2 * _memory->ReadEntityData<int>(id, GRID_SIZE_X, 1)[0] - 1; |
12 | int height = 2 * _memory->ReadEntityData<int>(id, GRID_SIZE_Y, 1)[0] - 1; | 12 | int height = 2 * _memory->ReadEntityData<int>(id, GRID_SIZE_Y, 1)[0] - 1; |
13 | if (width == 0) width = height; | ||
14 | if (height == 0) height = width; | ||
13 | if (width < 0 || height < 0) return Puzzle(); // @Error: Grid size should be always positive? Looks like the starting panels break this rule, though. | 15 | if (width < 0 || height < 0) return Puzzle(); // @Error: Grid size should be always positive? Looks like the starting panels break this rule, though. |
14 | 16 | ||
15 | int numIntersections = _memory->ReadEntityData<int>(id, NUM_DOTS, 1)[0]; | 17 | int numIntersections = _memory->ReadEntityData<int>(id, NUM_DOTS, 1)[0]; |
diff --git a/Source/Randomizer2.cpp b/Source/Randomizer2.cpp index c28795a..83427d7 100644 --- a/Source/Randomizer2.cpp +++ b/Source/Randomizer2.cpp | |||
@@ -30,7 +30,7 @@ void Randomizer2::RandomizeTutorial() { | |||
30 | _serializer.WritePuzzle(p, 0x293); | 30 | _serializer.WritePuzzle(p, 0x293); |
31 | } | 31 | } |
32 | 32 | ||
33 | { | 33 | { // Center left |
34 | Puzzle p; | 34 | Puzzle p; |
35 | p.NewGrid(6, 6); | 35 | p.NewGrid(6, 6); |
36 | 36 | ||
@@ -48,17 +48,8 @@ void Randomizer2::RandomizeTutorial() { | |||
48 | p.grid[p.width-1][Random::RandInt(0, p.height-1)].end = Cell::Dir::RIGHT; | 48 | p.grid[p.width-1][Random::RandInt(0, p.height-1)].end = Cell::Dir::RIGHT; |
49 | break; | 49 | break; |
50 | } | 50 | } |
51 | switch (Random::RandInt(1, 3)) { | 51 | // [4/6/8][4/6/8] |
52 | case 1: // Horiz (6) [5/7][4/6/8] | 52 | p.grid[Random::RandInt(0, 2)*2 + 4][Random::RandInt(0, 2)*2 + 4].start = true; |
53 | p.grid[Random::RandInt(0, 1)*2 + 5][Random::RandInt(0, 2)*2 + 4].start = true; | ||
54 | break; | ||
55 | case 2: // Verti (6) [4/6/8][5/7] | ||
56 | p.grid[Random::RandInt(0, 2)*2 + 4][Random::RandInt(0, 1)*2 + 5].start = true; | ||
57 | break; | ||
58 | case 3: // Inter (9) [4/6/8][4/6/8] | ||
59 | p.grid[Random::RandInt(0, 2)*2 + 4][Random::RandInt(0, 2)*2 + 4].start = true; | ||
60 | break; | ||
61 | } | ||
62 | 53 | ||
63 | for (Pos pos : Randomizer2Core::CutEdges(p, 35, true)) { | 54 | for (Pos pos : Randomizer2Core::CutEdges(p, 35, true)) { |
64 | p.grid[pos.x][pos.y].gap = Cell::Gap::FULL; | 55 | p.grid[pos.x][pos.y].gap = Cell::Gap::FULL; |
@@ -66,6 +57,33 @@ void Randomizer2::RandomizeTutorial() { | |||
66 | 57 | ||
67 | _serializer.WritePuzzle(p, 0x295); | 58 | _serializer.WritePuzzle(p, 0x295); |
68 | } | 59 | } |
60 | |||
61 | { // Far left | ||
62 | Puzzle p; | ||
63 | p.NewGrid(10, 10); | ||
64 | |||
65 | p.grid[0][20].start = true; | ||
66 | p.grid[20][0].end = Cell::Dir::RIGHT; | ||
67 | |||
68 | for (Pos pos : Randomizer2Core::CutEdges(p, 96, true)) { | ||
69 | p.grid[pos.x][pos.y].gap = Cell::Gap::FULL; | ||
70 | } | ||
71 | _serializer.WritePuzzle(p, 0x2C2); | ||
72 | } | ||
73 | |||
74 | { // Back left | ||
75 | Puzzle p; | ||
76 | p.NewGrid(6, 6); | ||
77 | |||
78 | p.grid[0][12].start = true; | ||
79 | p.grid[12][0].end = Cell::Dir::RIGHT; | ||
80 | p.grid[12][12].end = Cell::Dir::RIGHT; | ||
81 | |||
82 | for (Pos pos : Randomizer2Core::CutEdges(p, 27, true)) { | ||
83 | p.grid[pos.x][pos.y].gap = Cell::Gap::BREAK; | ||
84 | } | ||
85 | _serializer.WritePuzzle(p, 0xA3B5); | ||
86 | } | ||
69 | } | 87 | } |
70 | 88 | ||
71 | void Randomizer2::RandomizeKeep() { | 89 | void Randomizer2::RandomizeKeep() { |