From 4d87d010de00fec32829f4c3497ffaa7b87714a9 Mon Sep 17 00:00:00 2001 From: Ted John Date: Sat, 8 Oct 2016 18:47:44 +0100 Subject: [PATCH] Support mirror calls for helix --- test/testpaint/generate.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/testpaint/generate.cpp b/test/testpaint/generate.cpp index 6b3006a087..aca46a968e 100644 --- a/test/testpaint/generate.cpp +++ b/test/testpaint/generate.cpp @@ -180,6 +180,11 @@ private: { 7, TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL, TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG }, { 8, TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL, TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG }, { 8, TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL, TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG }, + + { 9, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL }, + { 10, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL }, + { 11, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE }, + { 12, TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE, TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE }, }; for (int i = 0; i < (sizeof(mirrorTable) / sizeof(mirrorTable[0])); i++) @@ -221,6 +226,38 @@ private: WriteLine(tabs, "trackSequence = mapLeftEighthTurnToOrthogonal[trackSequence];"); WriteLine(tabs, "%s(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement);", destFuncName.c_str()); break; + case 9: + WriteLine(tabs, "if (trackSequence >= 4) {"); + WriteLine(tabs + 1, "trackSequence -= 4;"); + WriteLine(tabs + 1, "direction = (direction + 1) & 3;"); + WriteLine(tabs, "}"); + WriteLine(tabs, "trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];"); + WriteLine(tabs, "%s(rideIndex, trackSequence, (direction - 1) & 3, height, mapElement);", destFuncName.c_str()); + break; + case 10: + WriteLine(tabs, "if (trackSequence >= 4) {"); + WriteLine(tabs + 1, "trackSequence -= 4;"); + WriteLine(tabs + 1, "direction = (direction - 1) & 3;"); + WriteLine(tabs, "}"); + WriteLine(tabs, "trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];"); + WriteLine(tabs, "%s(rideIndex, trackSequence, (direction + 1) & 3, height, mapElement);", destFuncName.c_str()); + break; + case 11: + WriteLine(tabs, "if (trackSequence >= 7) {"); + WriteLine(tabs + 1, "trackSequence -= 7;"); + WriteLine(tabs + 1, "direction = (direction + 1) & 3;"); + WriteLine(tabs, "}"); + WriteLine(tabs, "trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];"); + WriteLine(tabs, "%s(rideIndex, trackSequence, (direction - 1) & 3, height, mapElement);", destFuncName.c_str()); + break; + case 12: + WriteLine(tabs, "if (trackSequence >= 7) {"); + WriteLine(tabs + 1, "trackSequence -= 7;"); + WriteLine(tabs + 1, "direction = (direction - 1) & 3;"); + WriteLine(tabs, "}"); + WriteLine(tabs, "trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];"); + WriteLine(tabs, "%s(rideIndex, trackSequence, (direction + 1) & 3, height, mapElement);", destFuncName.c_str()); + break; } return true; }