if (Style!=S_Active) clr=Mix(0x000000,clr,0.3);
sq(0, 1, Mix(0xFFFFFF,clr,0.5));
sq(0.1, 0.9, Mix(0x000000,clr,0.5));
sq(0.1, 0.8, clr);
rec(0.3, 0.1, 0.1, 0.8, Mix(0x000000,clr,0.05));
rec(0.4, 0.1, 0.1, 0.8, Mix(0x000000,clr,0.1));
rec(0.5, 0.1, 0.1, 0.8, Mix(0x000000,clr,0.15));
rec(0.6, 0.1, 0.1, 0.8, Mix(0x000000,clr,0.2));
rec(0.7, 0.1, 0.1, 0.8, Mix(0x000000,clr,0.25));
rec(0.8, 0.1, 0.1, 0.8, Mix(0x000000,clr,0.3));
}
else if (BlockStyle==BS_Classic) {
sq(0, 1, BoardColor);
sq(0.1, 0.8, clr);
if ((Style==S_Active)&&(lrat>=0.0)) {
sq(0.2, 0.6, Mix(clr,0xFFFFFF,lrat*0.8));
sq(0.1, 0.1, 0xFFFFFF);
sq(0.2, 0.2, 0xFFFFFF);
sq(0.3, 0.1, Mix(clr,0xFFFFFF,lrat*0.8));
}
else {
sq(0.1, 0.1, Mix(0xFFFFFF,clr,0.5));
sq(0.2, 0.2, Mix(0xFFFFFF,clr,0.5));
sq(0.3, 0.1, clr);
}
}
else if (BlockStyle==BS_2D) {
sq(0.15, 0.7, Mix(0xFFFFFF,clr,0.3+(Style==S_Active)*0.2*max(0.0,min(1.0,1.0-lrat))));
sq(0.25, 0.5, clr);
}
else {
if ((Style==S_Default)||(Style==S_Active)) {
sq(0, 1, Mix(0xFFFFFF,clr,0.1));
sq(0.1, 0.9, Mix(0x000000,clr,0.2));
sq(0.1, 0.8, clr);
sq(0.2, 0.65, Mix(0xFFFFFF,clr,0.2));
sq(0.2, 0.6, Mix(0x000000,clr,0.05));
sq(0.3, 0.4, Mix(0xFFFFFF,clr,0.2));
sq(0.35, 0.3, clr);
if ((u)&&(!r)) rec(0,0.9,0.1,0.1,Mix(0x000000,clr,0.2));
if ((l)&&(!d)) rec(0.9,0,0.1,0.1,Mix(0x000000,clr,0.2));
}
if (Style==S_Garbage) {
sq(0, 1, Mix(0xFFFFFF,clr,0.1));
sq(0.1, 0.9, Mix(0x000000,clr,0.2));
sq(0.1, 0.8, clr);
sq(0.2, 0.6, Mix(0x000000,clr,0.05));
sq(0.25, 0.5, Mix(0x000000,clr,0.1));
sq(0.3, 0.4, Mix(0x000000,clr,0.15));
}
if (u) rec(0,0.1,0.1,0.8,clr);
if (l) rec(0.1,0,0.8,0.1,clr);
clr = Mix(0x000000,clr,0.05);
if (d) rec(0.9,0.1,0.1,0.8,clr);
if (r) rec(0.1,0.9,0.8,0.1,clr);
}
}
#undef sq
#undef rec
void Board::PaintGrid(double x, double y, int clr, EStyle Style, double th, double rx, double ry, bool u, bool d, bool l, bool r, double lrat) {
PaintTile(SX-x, y-1, clr, 1.0, Style, th, SX-rx+1, ry-1, u, d, l, r, lrat);
}
void Board::PaintPiece(const Piece &p, double x, double y, double sz, int clr, EStyle Style, int MinSize) {
int LX=p.GetLX(); double ss=sz/double(LX);
if (K*double(GetSize())>=8.0) Square(x,y,sz,BoardColor);
if (LX<MinSize) {
x+=0.5*sz*double(MinSize-LX)/double(MinSize); y+=0.5*sz*double(MinSize-LX)/double(MinSize);
ss = sz/double(MinSize);
}
for (int i=0; i<LX; ++i) {
for (int j=0; j<LX; ++j) {
int val = p.GetGrid(LX-i-1,j);
if (!val) continue;
if (clr>=0) val=clr;
PaintTile(x+i*ss, y+j*ss, abs(val), ss, Style);
}
}
}
using namespace PaintManager;
void PaintHome() {
//AddButton(Str(12)+"Quit", "quit", 1, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton((Pause)?"Resume":"Pause", "pause", 2, 2, 1.5, 3, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton("Retry", "retry", 3, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
PrintStrM("Main Page", 5, 35, 1.5, 0xDDDDDD, 0.15);
AddButton("< Start >", "select", 10, 35, 3, 15, 1, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton("< Settings >", "settings", 13, 35, 3, 15, 1, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton("< Quit >", "quit", 22, 35, 3, 15, 1, -1, -1, 0xBBBBBB, 0x66CCFF);
}
void AddKeyOpt(string ConfigName, string Default, double x, double y) {
bool f = (SelKeyOpt==ToLower(ConfigName));
AddButton(KeyChar(GetConfig(GlobalConfig,ConfigName,Default,KeyList)), "selkey "+ToLower(ConfigName),
x, y, 0.9, 0.9, 0.6,
(f)?0xFDD000:0xBBBBBB, (f)?0xFDD000:0xCCCCCC,
0x000000, 0x000000);
}
void PaintSettings() {
AddButton(Str(12)+"Back", "home", 1, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton((Pause)?"Resume":"Pause", "pause", 2, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton("Retry", "retry", 3, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
AddButton("Game Rule", "select", 1, 50, 2, 8, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
PrintStrM("Settings", 5, 35, 1.5, 0xDDDDDD, 0.15);
PrintStrL("Key Binding", 8, 25, 0.6, 0xDDDDDD, 0.15);
AddButton("Basic", "selkeytab basic", 8, 35, 0.8, 6, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("Advanced", "selkeytab advanced", 8, 42, 0.8, 6, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
if (KeyTab=="basic") {
PrintStrL("Move Left", 9, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyLeft", "left", 9, 34);
PrintStrL("Move Right", 10, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyRight", "right", 10, 34);
PrintStrL("Soft Drop", 11, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeySoft", "down", 11, 34);
PrintStrL("Hard Drop", 12, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyHard", "space", 12, 34);
PrintStrL("Sonic Drop", 13, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeySonic", "s", 13, 34);
PrintStrL("Rotate", 14, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyRotate", "up", 14, 34);
PrintStrL("Rotate CCW", 15, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyCCW", "z", 15, 34);
PrintStrL("Rotate CW", 16, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyCW", "x", 16, 34);
PrintStrL("Rotate Half", 17, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyHalf", "a", 17, 34);
PrintStrL("Hold", 18, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyHold", "c", 18, 34);
PrintStrL("Retry", 19, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyRetry", "u", 19, 34);
}
if (KeyTab=="advanced") {
PrintStrL("Pause", 9, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyPause", "o", 9, 34);
PrintStrL("Reset", 10, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyReset", "e", 10, 34);
PrintStrL("Up", 11, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyUp", "w", 11, 34);
PrintStrL("Flip", 12, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyFlip", "q", 12, 34);
PrintStrL("Waste", 13, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyWaste", "v", 13, 34);
PrintStrL("Lock", 14, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyLock", "r", 14, 34);
PrintStrL("CursorMode", 15, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyCursorMode", "i", 15, 34);
PrintStrL("TargetMode", 16, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyTargetMode", "f", 16, 34);
PrintStrL("Undo", 17, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyUndo", "t", 17, 34);
PrintStrL("Redo", 18, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyRedo", "y", 18, 34);
PrintStrL("Zone", 19, 25, 0.6, 0xBBBBBB);
AddKeyOpt("KeyAction", "g", 19, 34);
}
vector<string> S[5] = {{"1","2","3","4","5","6","7","8","9","0"},
{"tab","q","w","e","r","t","y","u","i","o","p"},
{"caps","a","s","d","f","g","h","j","k","l","","enter"},
{"shift","z","x","c","v","b","n","m","","up"},
{"ctrl","","","space","","","none","","","left","down","right"}};
int Offset[5] = {1,0,1,2,1};
if (!SelKeyOpt.empty()) {
string HoverKey = "Pick a Key";
for (int i=0; i<5; ++i) {
double x=10.5+1.5*i, y=37+Offset[i]*0.75;
int j = 0;
for (string s : S[i]) {
if (s.empty()) {
++j;
if ((i==3)&&(j==S[i].size()-1)) y+=0.75;
y+=1.5; continue;
}
AddButton(KeyChar(s), "choosekey "+s, x, y, 1.3, 1.3, 0.8, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
y += 1.5;
if (CheckButton(Buttons.back())) HoverKey=s;
++j;
}
}
PrintStrM(HoverKey, 9, 44, 0.6, (HoverKey.size()<10)?0x66CCFF:0xCCCCCC);
}
PrintStrL("Handling", 21, 25, 0.6, 0xDDDDDD, 0.15);
PrintStrL("d : "+IToS(AdjustDel)+"ms", 21, 35, 0.6, 0xCCCCCC);
AddButton("-", "adjustdel dec", 21, 41.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjustdel inc", 21, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("DAS", 22, 25, 0.6, 0xBBBBBB);
int v = max(-1,min(Max,GetConfig(GlobalConfig,"DAS",200)));
PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 22, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust das 200 dec -1", 23, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust das 200 inc -1", 23, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust das 200 def -1", 23, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ARR", 24, 25, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"ARR",0)));
PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 24, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust arr 0 dec -1", 25, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust arr 0 inc -1", 25, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust arr 0 def -1", 25, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("SDDAS", 26, 25, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"SDDAS",200)));
PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 26, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust sddas 200 dec -1", 27, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust sddas 200 inc -1", 27, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust sddas 200 def -1", 27, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("SDARR", 28, 25, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"SDARR",20)));
PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 28, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust sdarr 20 dec -1", 29, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust sdarr 20 inc -1", 29, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust sdarr 20 def -1", 29, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("HCD", 22, 35, 0.6, 0xBBBBBB);
PrintStrR(IToS(max(0,min(Max,GetConfig(GlobalConfig,"HCD",100))))+"ms", 22, 43, 0.6, 0xCCCCCC);
AddButton("-", "adjust hcd 100 dec", 23, 40.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust hcd 100 inc", 23, 41.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust hcd 100 def", 23, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("DCD", 24, 35, 0.6, 0xBBBBBB);
PrintStrR(IToS(max(0,min(Max,GetConfig(GlobalConfig,"DCD",0))))+"ms", 24, 43, 0.6, 0xCCCCCC);
AddButton("-", "adjust dcd 0 dec", 25, 40.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust dcd 0 inc", 25, 41.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust dcd 0 def", 25, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Rotate", 26, 35, 0.6, 0xBBBBBB);
AddButton(Str(19), "adjustdefrot", 27, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
v=GetConfig(GlobalConfig,"DefaultRot",3); if (v!=1) v=3;
PrintStrR((v==3)?"CCW":"CW", 26, 43, 0.6, 0xCCCCCC);
PrintStrL("SmoothEff", 28, 35, 0.6, 0xBBBBBB);
AddButton(Str(19), "adjustsmooth", 29, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
v = GetConfig(GlobalConfig,"SmoothLevel",3);
PrintStrR(vector<string>{"None","Less","Mild","More","Full"}[v], 28, 43, 0.6, 0xCCCCCC);
}
void OptionBasic() {
PrintStrL("Height", 7, 20, 0.6, 0xBBBBBB);
int v = max(2,min(100,GetConfig(GlobalConfig,"LX",40)));
PrintStrR(IToS(v), 7, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust lx 40 dec 2 100 1", 8, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust lx 40 inc 2 100 1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust lx 40 def 2 100 1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Width", 9, 20, 0.6, 0xBBBBBB);
v = max(1,min(100,GetConfig(GlobalConfig,"LY",10)));
PrintStrR(IToS(v), 9, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust ly 10 dec 1 100 1", 10, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust ly 10 inc 1 100 1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust ly 10 def 1 100 1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("SpawnHeight", 11, 20, 0.6, 0xBBBBBB);
v = max(2,min(100,GetConfig(GlobalConfig,"SX",22)));
PrintStrR(IToS(v), 11, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust sx 22 dec 2 100 1", 12, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust sx 22 inc 2 100 1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust sx 22 def 2 100 1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("NextLen", 13, 20, 0.6, 0xBBBBBB);
v = max(0,min(100,GetConfig(GlobalConfig,"NextLen",5)));
PrintStrR(IToS(v), 13, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust nextlen 5 dec 0 100 1", 14, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust nextlen 5 inc 0 100 1", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust nextlen 5 def 0 100 1", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("HoldLen", 15, 20, 0.6, 0xBBBBBB);
v = max(0,min(5,GetConfig(GlobalConfig,"HoldLen",1)));
PrintStrR(IToS(v), 15, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust holdlen 1 dec 0 5 1", 16, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust holdlen 1 inc 0 5 1", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust holdlen 1 def 0 5 1", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("HoldType", 17, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"HoldType",1)));
PrintStrR(vector<string>({"None","Default","Infinite"})[v], 17, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust holdtype 1 inc 0 2 -1", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust holdtype 1 def 0 2 -1", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("DefaultDir", 19, 20, 0.6, 0xBBBBBB);
v = max(0,min(3,GetConfig(GlobalConfig,"DefaultDir",0)));
PrintStrR(vector<string>({"Up","Right","Down","Left"})[v], 19, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust defaultdir 0 inc 0 3 -1", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust defaultdir 0 def 0 3 -1", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ARE", 21, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"ARE",0)));
PrintStrR(IToS(v)+"ms", 21, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust are 0 dec", 22, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust are 0 inc", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust are 0 def", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LCD", 23, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LCD",0)));
PrintStrR(IToS(v)+"ms", 23, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust lcd 0 dec", 24, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust lcd 0 inc", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust lcd 0 def", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("DropDelay", 25, 20, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"DropDelay",1000)));
PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 25, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust dropdelay 1000 dec -1 9999998", 26, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust dropdelay 1000 inc -1 9999998", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust dropdelay 1000 def -1 9999998", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LockDelay", 27, 20, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"LockDelay",500)));
PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 27, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust lockdelay 500 dec -1", 28, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust lockdelay 500 inc -1", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust lockdelay 500 def -1", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ResetLim", 29, 20, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"ResetLim",15)));
PrintStrR((v<0)?"Infinite":IToS(v), 29, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust resetlim 15 dec -1 max 1", 30, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust resetlim 15 inc -1 max 1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust resetlim 15 def -1 max 1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("PiecePool", 31, 20, 0.6, 0xBBBBBB);
PrintStrR("["+IToS(SelectPool.size())+"]", 31, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "pool", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "pooldefault", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("RandomType", 33, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"RandomType",1)));
PrintStrR(vector<string>({"Random","Bag","Fixed"})[v], 33, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust randomtype 1 inc 0 2 -1", 34, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust randomtype 1 def 0 2 -1", 34, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Rotation", 7, 35, 0.6, 0xBBBBBB);
v = max(0,min(15,GetConfig(GlobalConfig,"RotateSystem",0)));
PrintStrR(vector<string>({"Default","SRS+","StrictSRS+","ASC-DX","ASC",
"LNRS","RNRS","ARS","C2","Sega","New","DX","Atari",
"TetraX","ZM","None"})[v], 7, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust rotatesystem 0 inc 0 15 -1", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust rotatesystem 0 def 0 15 -1", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Shadow", 9, 35, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"ShadowType",1)));
PrintStrR(vector<string>({"Off","Default","Beam"})[v], 9, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust shadowtype 1 inc 0 2 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust shadowtype 1 def 0 2 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("RandHistory", 11, 35, 0.6, 0xBBBBBB);
v = max(0,min(100,GetConfig(GlobalConfig,"RandHistory",1)));
PrintStrR(IToS(v), 11, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust randhistory 1 dec 0 100 1", 12, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust randhistory 1 inc 0 100 1", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust randhistory 1 def 0 100 1", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("RandRoll", 13, 35, 0.6, 0xBBBBBB);
v = max(0,min(100,GetConfig(GlobalConfig,"RandRoll",1)));
PrintStrR(IToS(v), 13, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust randroll 1 dec 0 100 1", 14, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust randroll 1 inc 0 100 1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust randroll 1 def 0 100 1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("BagExtra", 15, 35, 0.6, 0xBBBBBB);
v = max(0,min(100,GetConfig(GlobalConfig,"BagExtra",0)));
PrintStrR(IToS(v), 15, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust bagextra 0 dec 0 100 1", 16, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust bagextra 0 inc 0 100 1", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust bagextra 0 def 0 100 1", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GravityDelay", 17, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"GravityDelay",0)));
PrintStrR(IToS(v)+"ms", 17, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust gravitydelay 0 dec", 18, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust gravitydelay 0 inc", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust gravitydelay 0 def", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GravityType", 19, 35, 0.6, 0xBBBBBB);
v = max(0,min(7,GetConfig(GlobalConfig,"GravityType",0)));
PrintStrR(vector<string>({"Default","Cascade","None","Sticky","Color","Separate","Avalanche","Fall"})[v], 19, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust gravitytype 0 inc 0 7 -1", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust gravitytype 0 def 0 7 -1", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("CascadeDelay", 21, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"CCD",200)));
PrintStrR(IToS(v)+"ms", 21, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust ccd 200 dec", 22, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust ccd 200 inc", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust ccd 200 def", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("StartHeight", 23, 35, 0.6, 0xBBBBBB);
v = max(0,min(100,GetConfig(GlobalConfig,"StartHeight",0)));
PrintStrR(IToS(v), 23, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust startheight 0 dec 0 100 1", 24, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust startheight 0 inc 0 100 1", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust startheight 0 def 0 100 1", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("StaticHeight", 25, 35, 0.6, 0xBBBBBB);
v = max(0,min(100,GetConfig(GlobalConfig,"StaticHeight",0)));
PrintStrR(IToS(v), 25, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust staticheight 0 dec 0 100 1", 26, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust staticheight 0 inc 0 100 1", 26, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust staticheight 0 def 0 100 1", 26, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("StartDelay", 27, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"StartDelay",3000)));
PrintStrR(IToS(v)+"ms", 27, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust startdelay 3000 dec", 28, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust startdelay 3000 inc", 28, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust startdelay 3000 def", 28, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseZone", 29, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseZone",0)));
PrintStrR(vector<string>({"Off","On"})[v], 29, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usezone 0 inc 0 1 -1", 30, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usezone 0 def 0 1 -1", 30, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ClutchRule", 31, 35, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"ClutchRule",0)));
PrintStrR(vector<string>({"Default","Off","Always"})[v], 31, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust clutchrule 0 inc 0 2 -1", 32, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust clutchrule 0 def 0 2 -1", 32, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionBattle() {
PrintStrL("BaseRule", 7, 20, 0.6, 0xBBBBBB);
int v = max(0,min(5,GetConfig(GlobalConfig,"BaseRule",0)));
PrintStrR(vector<string>({"Default","Equal","Classic","ASC","Arcade","None"})[v], 7, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust baserule 0 inc 0 5 -1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust baserule 0 def 0 5 -1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ComboRule", 9, 20, 0.6, 0xBBBBBB);
v = max(0,min(13,GetConfig(GlobalConfig,"ComboRule",0)));
PrintStrR(vector<string>({"Default","Guildline","Techmino","Friends","Expert",
"Battle","99","PPT","Effect","Zone","C2","Classic","Arcade","None"})[v], 9, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust comborule 0 inc 0 13 -1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust comborule 0 def 0 13 -1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("SpinRule", 11, 20, 0.6, 0xBBBBBB);
v = max(0,min(7,GetConfig(GlobalConfig,"SpinRule",0)));
PrintStrR(vector<string>({"Default","AllMini","Guildline","AllSpin","AllSemi","IO","Easy","None"})[v], 11, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust spinrule 0 inc 0 7 -1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust spinrule 0 def 0 7 -1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("B2BRule", 13, 20, 0.6, 0xBBBBBB);
v = max(0,min(5,GetConfig(GlobalConfig,"B2BRule",2)));
PrintStrR(vector<string>({"Guildline","Chain","Surge","QP","Techmino","None"})[v], 13, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust b2brule 2 inc 0 5 -1", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust b2brule 2 def 0 5 -1", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("AllClearRule", 15, 20, 0.6, 0xBBBBBB);
v = max(0,min(6,GetConfig(GlobalConfig,"AllClearRule",0)));
PrintStrR(vector<string>({"Default","IO","Guildline","QP","Techmino","Arcade","None"})[v], 15, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust allclearrule 0 inc 0 6 -1", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust allclearrule 0 def 0 6 -1", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("IntRule", 17, 20, 0.6, 0xBBBBBB);
v = max(0,min(3,GetConfig(GlobalConfig,"IntRule",0)));
PrintStrR(vector<string>({"Floor","Accumulate","Random","Ceil"})[v], 17, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust intrule 0 inc 0 3 -1", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust intrule 0 def 0 3 -1", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("BotType", 19, 20, 0.6, 0xBBBBBB);
v = max(-1,min(9,GetConfig(GlobalConfig,"BotType",-1)));
PrintStrR(GetBotName(v), 19, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust bottype -1 dec -1 9 1", 20, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust bottype -1 inc -1 9 1", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust bottype -1 def -1 9 1", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("BotSpeed", 21, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"BotSpeed",1000)));
PrintStrR(IToS(v)+"ms", 21, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust botspeed 1000 dec", 22, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust botspeed 1000 inc", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust botspeed 1000 def", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbageDelay", 23, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"GarbageDelay",500)));
PrintStrR(IToS(v)+"ms", 23, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust garbagedelay 500 dec", 24, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust garbagedelay 500 inc", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbagedelay 500 def", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbageGap", 25, 20, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"GarbageGap",8)));
PrintStrR((v<0)?"Off":IToS(v), 25, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust garbagegap 8 dec -1 max 1", 26, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust garbagegap 8 inc -1 max 1", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbagegap 8 def -1 max 1", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbagePush", 27, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"GarbagePush",100)));
PrintStrR(IToS(v)+"ms", 27, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust garbagepush 100 dec", 28, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust garbagepush 100 inc", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbagepush 100 def", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbagePreview", 29, 20, 0.6, 0xBBBBBB);
v = max(0,min(30,GetConfig(GlobalConfig,"GarbagePreview",10)));
PrintStrR((v<0)?"Off":IToS(v), 29, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust garbagepreview 10 dec 0 30 1", 30, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust garbagepreview 10 inc 0 30 1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbagepreview 10 def 0 30 1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbageActive", 31, 20, 0.6, 0xBBBBBB);
v = max(0,min(3,GetConfig(GlobalConfig,"GarbageActive",0)));
PrintStrR(vector<string>({"Default","Attack","None","Instant"})[v], 31, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust garbageactive 0 inc 0 3 -1", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbageactive 0 def 0 3 -1", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbagePass", 33, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"GarbagePass",0)));
PrintStrR(IToS(v)+"ms", 33, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust garbagepass 0 dec", 34, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust garbagepass 0 inc", 34, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbagepass 0 def", 34, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("PlayerCount", 7, 35, 0.6, 0xBBBBBB);
v = max(1,min(201,GetConfig(GlobalConfig,"Player",1)));
PrintStrR(IToS(v), 7, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust player 1 dec 1 201 1", 8, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust player 1 inc 1 201 1", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust player 1 def 1 201 1", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("AllBot", 9, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"AllBot",0)));
PrintStrR((v)?"On":"Off", 9, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust allbot 0 inc 0 1 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust allbot 0 def 0 1 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Stock", 11, 35, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"Stock",0)));
PrintStrR((v<0)?"Infinite":IToS(v), 11, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust stock 0 dec -1 max 1", 12, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust stock 0 inc -1 max 1", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust stock 0 def -1 max 1", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbageSeg", 13, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"GarbageSeg",0)));
PrintStrR(IToS(v), 13, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust garbageseg 0 dec 0 max 1", 14, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust garbageseg 0 inc 0 max 1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbageseg 0 def 0 max 1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("DigBonus", 15, 35, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"DigBonus",2)));
PrintStrR(vector<string>({"Off","Defensive","Default"})[v], 15, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust digbonus 2 inc 0 2 -1", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust digbonus 2 def 0 2 -1", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("OpenerProtect", 17, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"OpenerProtect",14)));
PrintStrR(IToS(v), 17, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust openerprotect 14 dec 0 max 1", 18, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust openerprotect 14 inc 0 max 1", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust openerprotect 14 def 0 max 1", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("0_BotType", 19, 35, 0.6, 0xBBBBBB);
v = max(-1,min(9,GetConfig(GlobalConfig,"0BotType",-1)));
PrintStrR(GetBotName(v), 19, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust 0bottype -1 dec -1 9 1", 20, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust 0bottype -1 inc -1 9 1", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0bottype -1 def -1 9 1", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("0_BotSpeed", 21, 35, 0.6, 0xBBBBBB);
v = max(-1,min(Max,GetConfig(GlobalConfig,"0BotSpeed",-1)));
PrintStrR((v<0)?"Default":IToS(v)+"ms", 21, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust 0botspeed -1 dec -1 max", 22, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust 0botspeed -1 inc -1 max", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0botspeed -1 def -1 max", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("SegMess", 23, 35, 0.6, 0xBBBBBB);
v = max(0,min(1000,GetConfig(GlobalConfig,"SegMess",1000)));
PrintStrR(IToS(v), 23, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust segmess 1000 dec 0 1000", 24, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust segmess 1000 inc 0 1000", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust segmess 1000 def 0 1000", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("InnerMess", 25, 35, 0.6, 0xBBBBBB);
v = max(0,min(1000,GetConfig(GlobalConfig,"InnerMess",0)));
PrintStrR(IToS(v), 25, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust innermess 0 dec 0 1000", 26, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust innermess 0 inc 0 1000", 26, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust innermess 0 def 0 1000", 26, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbageShape", 27, 35, 0.6, 0xBBBBBB);
v = max(0,min(7,GetConfig(GlobalConfig,"GarbageShape",0)));
PrintStrR(vector<string>({"Default","Full","Empty","Bubble","Random","Board","Stair","Copy"})[v], 27, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust garbageshape 0 inc 0 7 -1", 28, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbageshape 0 def 0 7 -1", 28, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("GarbageType", 29, 35, 0.6, 0xBBBBBB);
v = max(0,min(4,GetConfig(GlobalConfig,"GarbageType",0)));
PrintStrR(vector<string>({"Default","Solid","Lock","Bomb","Bricks"})[v], 29, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust garbagetype 0 inc 0 4 -1", 30, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust garbagetype 0 def 0 4 -1", 30, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionLevel() {
PrintStrL("LevelStart", 7, 20, 0.6, 0xBBBBBB);
int v = max(0,min(1000,GetConfig(GlobalConfig,"LevStart",0)));
PrintStrR(IToS(v), 7, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levstart 0 dec 0 1000 1", 8, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levstart 0 inc 0 1000 1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levstart 0 def 0 1000 1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelMax", 9, 20, 0.6, 0xBBBBBB);
v = max(0,min(1000,GetConfig(GlobalConfig,"LevMax",50)));
PrintStrR(IToS(v), 9, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levmax 50 dec 0 1000 1", 10, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levmax 50 inc 0 1000 1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levmax 50 def 0 1000 1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelBase", 11, 20, 0.6, 0xBBBBBB);
v = max(0,min(1000,GetConfig(GlobalConfig,"LevBase",0)));
PrintStrR(IToS(v), 11, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levbase 0 dec 0 1000 1", 12, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levbase 0 inc 0 1000 1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levbase 0 def 0 1000 1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelLine", 13, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevLine",0)));
PrintStrR((v)?IToS(v):"Off", 13, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levline 0 dec 0 max", 14, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levline 0 inc 0 max", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levline 0 def 0 max", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelTime", 15, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevTime",0)));
PrintStrR((v)?IToS(v)+"ms":"Off", 15, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levtime 0 dec", 16, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levtime 0 inc", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levtime 0 def", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelPiece", 17, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevPiece",0)));
PrintStrR((v)?IToS(v):"Off", 17, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levpiece 0 dec 0 max", 18, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levpiece 0 inc 0 max", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levpiece 0 def 0 max", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelAttack", 19, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevAttack",0)));
PrintStrR((v)?IToS(v):"Off", 19, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levattack 0 dec 0 max", 20, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levattack 0 inc 0 max", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levattack 0 def 0 max", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelLineInc", 21, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevLineInc",0)));
PrintStrR((v)?IToS(v):"Off", 21, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levlineinc 0 dec 0 max", 22, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levlineinc 0 inc 0 max", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levlineinc 0 def 0 max", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelTimeInc", 23, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevTimeInc",0)));
PrintStrR((v)?IToS(v)+"ms":"Off", 23, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levtimeinc 0 dec", 24, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levtimeinc 0 inc", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levtimeinc 0 def", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelPieceInc", 25, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevPieceInc",0)));
PrintStrR((v)?IToS(v):"Off", 25, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levpieceinc 0 dec 0 max", 26, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levpieceinc 0 inc 0 max", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levpieceinc 0 def 0 max", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelAttackInc", 27, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"LevAttackInc",0)));
PrintStrR((v)?IToS(v):"Off", 27, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levattackinc 0 dec 0 max", 28, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levattackinc 0 inc 0 max", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levattackinc 0 def 0 max", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelScaleType", 29, 20, 0.6, 0xBBBBBB);
v = max(0,min(3,GetConfig(GlobalConfig,"LevScaleType",0)));
PrintStrR(vector<string>({"Default","Div","Dec","Exp"})[v], 29, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust levscaletype 0 inc 0 3 -1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levscaletype 0 def 0 3 -1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("LevelScaleRate", 31, 20, 0.6, 0xBBBBBB);
v = max(0,min(1000,GetConfig(GlobalConfig,"LevScaleRate",7)));
PrintStrR(IToS(v), 31, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust levscalerate 7 dec 0 1000", 32, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust levscalerate 7 inc 0 1000", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust levscalerate 7 def 0 1000", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetLine", 7, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"TarLine",0)));
PrintStrR((v)?IToS(v):"Off", 7, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust tarline 0 dec 0 max", 8, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust tarline 0 inc 0 max", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust tarline 0 def 0 max", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetLineType", 9, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"TypeLine",0)));
PrintStrR((v)?"Limit":"Goal", 9, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust typeline 0 inc 0 1 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust typeline 0 def 0 1 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetPiece", 11, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"TarPiece",0)));
PrintStrR((v)?IToS(v):"Off", 11, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust tarpiece 0 dec 0 max", 12, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust tarpiece 0 inc 0 max", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust tarpiece 0 def 0 max", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetPieceType", 13, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"TypePiece",0)));
PrintStrR((v)?"Limit":"Goal", 13, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust typepiece 0 inc 0 1 -1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust typepiece 0 def 0 1 -1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetDig", 15, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"TarDig",0)));
PrintStrR((v)?IToS(v):"Off", 15, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust tardig 0 dec 0 max", 16, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust tardig 0 inc 0 max", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust tardig 0 def 0 max", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetDigType", 17, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"TypeDig",0)));
PrintStrR((v)?"Limit":"Goal", 17, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust typedig 0 inc 0 1 -1", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust typedig 0 def 0 1 -1", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetAttack", 19, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"TarAttack",0)));
PrintStrR((v)?IToS(v):"Off", 19, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust tarattack 0 dec 0 max", 20, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust tarattack 0 inc 0 max", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust tarattack 0 def 0 max", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetAttackType", 21, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"TypeAttack",0)));
PrintStrR((v)?"Limit":"Goal", 21, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust typeattack 0 inc 0 1 -1", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust typeattack 0 def 0 1 -1", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetScore", 23, 35, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"TarScore",0)));
PrintStrR((v)?IToS(v):"Off", 23, 48, 0.6, 0xCCCCCC);
AddButton("-", "adjust tarscore 0 dec 0 max", 24, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust tarscore 0 inc 0 max", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust tarscore 0 def 0 max", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("TargetScoreType", 25, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"TypeScore",0)));
PrintStrR((v)?"Limit":"Goal", 25, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust typescore 0 inc 1 -1", 26, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust typescore 0 def 0 1 -1", 26, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionMisc() {
PrintStrL("VanishHeight", 7, 20, 0.6, 0xBBBBBB);
int v = max(0,min(100,GetConfig(GlobalConfig,"VanishHeight",0)));
PrintStrR((v)?IToS(v):"Off", 7, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust vanishheight 0 dec 0 100 1", 8, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust vanishheight 0 inc 0 100 1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust vanishheight 0 def 0 100 1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("RandomRot", 9, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"RandomRot",0)));
PrintStrR((v)?"On":"Off", 9, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust randomrot 0 inc 0 1 -1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust randomrot 0 def 0 1 -1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ShowHint", 11, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseTip",0)));
PrintStrR((v)?"On":"Off", 11, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usetip 0 inc 0 1 -1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usetip 0 def 0 1 -1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("SpeedCap", 13, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"SpeedCap",0)));
PrintStrR(IToS(v)+"ms", 13, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust speedcap 0 dec", 14, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust speedcap 0 inc", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust speedcap 0 def", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ZoneSeg", 15, 20, 0.6, 0xBBBBBB);
v = max(1,min(Max,GetConfig(GlobalConfig,"ZoneSeg",4)));
PrintStrR(IToS(v), 15, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust zoneseg 4 dec 1 max 1", 16, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust zoneseg 4 inc 1 max 1", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust zoneseg 4 def 1 max 1", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ZoneReq", 17, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"ZoneReq",8)));
PrintStrR(IToS(v), 17, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust zonereq 8 dec 0 max 1", 18, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust zonereq 8 inc 0 max 1", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust zonereq 8 def 0 max 1", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ZoneTime", 19, 20, 0.6, 0xBBBBBB);
v = max(0,min(Max,GetConfig(GlobalConfig,"ZoneTime",5000)));
PrintStrR(IToS(v), 19, 33, 0.6, 0xCCCCCC);
AddButton("-", "adjust zonetime 5000 dec", 20, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton("+", "adjust zonetime 5000 inc", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust zonetime 5000 def", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseMove", 21, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseMove",1)));
PrintStrR((v)?"On":"Off", 21, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usemove 1 inc 0 1 -1", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usemove 1 def 0 1 -1", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseRotate", 23, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseRotate",1)));
PrintStrR((v)?"On":"Off", 23, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust userotate 1 inc 0 1 -1", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust userotate 1 def 0 1 -1", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Use2Rot", 25, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"Use2Rot",1)));
PrintStrR((v)?"On":"Off", 25, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust use2rot 1 inc 0 1 -1", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust use2rot 1 def 0 1 -1", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseHalf", 27, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseHalf",1)));
PrintStrR((v)?"On":"Off", 27, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usehalf 1 inc 0 1 -1", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usehalf 1 def 0 1 -1", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseSoftDrop", 29, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseSoftDrop",1)));
PrintStrR((v)?"On":"Off", 29, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usesoftdrop 1 inc 0 1 -1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usesoftdrop 1 def 0 1 -1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseHardDrop", 31, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseHardDrop",1)));
PrintStrR((v)?"On":"Off", 31, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust useharddrop 1 inc 0 1 -1", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust useharddrop 1 def 0 1 -1", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseSonicDrop", 33, 20, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseSonicDrop",1)));
PrintStrR((v)?"On":"Off", 33, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usesonicdrop 1 inc 0 1 -1", 34, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usesonicdrop 1 def 0 1 -1", 34, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseFlip", 7, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseFlip",0)));
PrintStrR((v)?"On":"Off", 7, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust useflip 0 inc 0 1 -1", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust useflip 0 def 0 1 -1", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseUp", 9, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseUp",0)));
PrintStrR((v)?"On":"Off", 9, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust useup 0 inc 0 1 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust useup 0 def 0 1 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseWaste", 11, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseWaste",0)));
PrintStrR((v)?"On":"Off", 11, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usewaste 0 inc 0 1 -1", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usewaste 0 def 0 1 -1", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseLock", 13, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseLock",0)));
PrintStrR((v)?"On":"Off", 13, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust uselock 0 inc 0 1 -1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust uselock 0 def 0 1 -1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UsePlace", 15, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UsePlace",0)));
PrintStrR((v)?"On":"Off", 15, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust useplace 0 inc 0 1 -1", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust useplace 0 def 0 1 -1", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("CursorControl", 17, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseClick",1)));
PrintStrR((v)?"On":"Off", 17, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust useclick 1 inc 0 1 -1", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust useclick 1 def 0 1 -1", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseUndo", 19, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseUndo",0)));
PrintStrR((v)?"On":"Off", 19, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust useundo 0 inc 0 1 -1", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust useundo 0 def 0 1 -1", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("UseDeep", 21, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"UseDeep",0)));
PrintStrR((v)?"On":"Off", 21, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust usedeep 0 inc 0 1 -1", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust usedeep 0 def 0 1 -1", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("ZenithMode", 23, 35, 0.6, 0xBBBBBB);
v = max(0,min(1,GetConfig(GlobalConfig,"QPMode",0)));
PrintStrR((v)?"On":"Off", 23, 48, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust qpmode 0 inc 0 1 -1", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust qpmode 0 def 0 1 -1", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionQPMod() {
int d = 6;
PrintStrL("No Hold", ++d, 20, 0.6, 0xBBBBBB);
int v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod2",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod2 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod2 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Messier", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod3",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod3 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod3 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Gravity", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod4",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod4 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod4 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Votality", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod5",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod5 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod5 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Double Hole", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod6",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod6 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod6 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Invisibility", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod7",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod7 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod7 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("All-Spin", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod8",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod8 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
AddButton(Str(4), "adjust 0_mod8 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
PrintStrL("Expert", ++d, 20, 0.6, 0xBBBBBB);
v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod9",0)));
PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
AddButton(Str(19), "adjust 0_mod9 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);