mirror of
https://github.com/DarkStore-3DS/DarkStore.git
synced 2026-07-03 00:39:02 +00:00
My work until I got extremly annoyed.
Next work on the Script Creator maybe tomorrow or so.
This commit is contained in:
+124
-18
@@ -14,6 +14,27 @@ extern C3D_RenderTarget* bottom;
|
||||
bool caps = false, enter = false;
|
||||
int shift = 0;
|
||||
|
||||
Structs::Key keysQWERTY[] = {
|
||||
{"1", 0, 0}, {"2", 25, 0}, {"3", 50, 0}, {"4", 75, 0}, {"5", 100, 0}, {"6", 125, 0}, {"7", 150, 0}, {"8", 175, 0}, {"9", 200, 0}, {"0", 225, 0}, {"-", 250, 0}, {"=", 275, 0},
|
||||
{"q", 12, 22}, {"w", 37, 22}, {"e", 62, 22}, {"r", 87, 22}, {"t", 112, 22}, {"y", 137, 22}, {"u", 162, 22}, {"i", 187, 22}, {"o", 212, 22}, {"p", 237, 22}, {"[", 262, 22}, {"]", 287, 22},
|
||||
{"a", 25, 45}, {"s", 50, 45}, {"d", 75, 45}, {"f", 100, 45}, {"g", 125, 45}, {"h", 150, 45}, {"j", 175, 45}, {"k", 200, 45}, {"l", 225, 45}, {";", 250, 45}, {"'", 275, 45},
|
||||
{"z", 35, 67}, {"x", 60, 67}, {"c", 85, 67}, {"v", 110, 67}, {"b", 135, 67}, {"n", 160, 67}, {"m", 185, 67}, {",", 210, 67}, {".", 235, 67}, {"/", 260, 67}, {"\\", 210, 90},
|
||||
};
|
||||
Structs::Key keysQWERTYShift[] = {
|
||||
{"!", 0, 0}, {"@", 25, 0}, {"#", 50, 0}, {"$", 75, 0}, {"%", 100, 0}, {"^", 125, 0}, {"&", 150, 0}, {"*", 175, 0}, {"(", 200, 0}, {")", 225, 0}, {"_", 250, 0}, {"+", 275, 0},
|
||||
{"Q", 12, 22}, {"W", 37, 22}, {"E", 62, 22}, {"R", 87, 22}, {"T", 112, 22}, {"Y", 137, 22}, {"U", 162, 22}, {"I", 187, 22}, {"O", 212, 22}, {"P", 237, 22}, {"{", 262, 22}, {"}", 287, 22},
|
||||
{"A", 25, 45}, {"S", 50, 45}, {"D", 75, 45}, {"F", 100, 45}, {"G", 125, 45}, {"H", 150, 45}, {"J", 175, 45}, {"K", 200, 45}, {"L", 225, 45}, {":", 250, 45}, {"\"", 275, 45},
|
||||
{"Z", 35, 67}, {"X", 60, 67}, {"C", 85, 67}, {"V", 110, 67}, {"B", 135, 67}, {"N", 160, 67}, {"M", 185, 67}, {"<,", 210, 67}, {">", 235, 67}, {"?", 260, 67}, {"\\", 210, 90},
|
||||
};
|
||||
Structs::Key modifierKeys[] = {
|
||||
{"bksp", 300, 0, 20}, // Backspace
|
||||
{"caps", 0, 45, 20}, // Caps Lock
|
||||
{"entr", 300, 45, 20}, // Enter
|
||||
{"lsft", 0, 67, 30}, // Left Shift
|
||||
{"rsft", 285, 67, 35}, // Right Shift
|
||||
{" ", 60, 90, 20}, // Tab
|
||||
{" ", 85, 90, 120}, // Space
|
||||
};
|
||||
|
||||
Structs::Key NumpadStruct[] = {
|
||||
{"1", 10, 30},
|
||||
@@ -35,7 +56,6 @@ Structs::Key NumpadStruct[] = {
|
||||
{"Backspace", 250, 30},
|
||||
};
|
||||
|
||||
|
||||
Structs::ButtonPos Numbers [] = {
|
||||
{10, 30, 60, 50}, // 1
|
||||
{90, 30, 60, 50}, // 2
|
||||
@@ -68,6 +88,22 @@ void Input::DrawNumpad()
|
||||
}
|
||||
}
|
||||
|
||||
void Input::drawKeyboard() {
|
||||
for(uint i=0;i<(sizeof(keysQWERTY)/sizeof(keysQWERTY[0]));i++) {
|
||||
C2D_DrawRectSolid(keysQWERTY[i].x, keysQWERTY[i].y+103, 0.5f, 20, 20, Config::ColorKeys & C2D_Color32(255, 255, 255, 200));
|
||||
if(shift) {
|
||||
char c[2] = {caps ? (char)toupper(keysQWERTYShift[i].character[0]) : keysQWERTYShift[i].character[0]};
|
||||
Gui::DrawString(keysQWERTYShift[i].x+(10-(Gui::GetStringWidth(0.50, c)/2)), keysQWERTYShift[i].y+103+(10-(Gui::GetStringHeight(0.50, c)/2)), 0.50, Config::TxtColor, c);
|
||||
} else {
|
||||
char c[2] = {caps ? (char)toupper(keysQWERTY[i].character[0]) : keysQWERTY[i].character[0]};
|
||||
Gui::DrawString(keysQWERTY[i].x+(10-(Gui::GetStringWidth(0.50, c)/2)), keysQWERTY[i].y+103+(10-(Gui::GetStringHeight(0.50, c)/2)), 0.50, Config::TxtColor, c);
|
||||
}
|
||||
}
|
||||
for(uint i=0;i<(sizeof(modifierKeys)/sizeof(modifierKeys[0]));i++) {
|
||||
C2D_DrawRectSolid(modifierKeys[i].x, modifierKeys[i].y+103, 0.5f, modifierKeys[i].w, 20, Config::ColorKeys & C2D_Color32(255, 255, 255, 200));
|
||||
}
|
||||
}
|
||||
|
||||
std::string Input::Numpad(std::string Text) { return Input::Numpad(-1, Text); }
|
||||
|
||||
std::string Input::Numpad(uint maxLength, std::string Text)
|
||||
@@ -151,23 +187,93 @@ int Input::getUint(int max, std::string Text) {
|
||||
return i;
|
||||
}
|
||||
|
||||
std::string Input::getString(const std::string &hint, uint maxLength)
|
||||
{
|
||||
std::string Input::getString(std::string Text) { return Input::getString(-1, Text); }
|
||||
|
||||
std::string Input::getString(uint maxLength, std::string Text) {
|
||||
int hDown;
|
||||
touchPosition touch;
|
||||
std::string string;
|
||||
C3D_FrameEnd(0);
|
||||
SwkbdState state;
|
||||
const char *hintText = hint.c_str();
|
||||
swkbdInit(&state, SWKBD_TYPE_NORMAL, 2, maxLength);
|
||||
swkbdSetHintText(&state, hintText);
|
||||
swkbdSetValidation(&state, SWKBD_NOTBLANK_NOTEMPTY, SWKBD_FILTER_PROFANITY, 0);
|
||||
char input[maxLength + 1] = {0};
|
||||
SwkbdButton ret = swkbdInputText(&state, input, sizeof(input));
|
||||
input[maxLength] = '\0';
|
||||
if (ret == SWKBD_BUTTON_CONFIRM)
|
||||
{
|
||||
string = input;
|
||||
return string;
|
||||
} else {
|
||||
return "";
|
||||
int keyDownDelay = 10, cursorBlink = 20;
|
||||
caps = false, shift = 0, enter = false;
|
||||
while(1) {
|
||||
do {
|
||||
C3D_FrameEnd(0);
|
||||
Gui::clearTextBufs();
|
||||
C3D_FrameBegin(C3D_FRAME_SYNCDRAW);
|
||||
Gui::DrawTop();
|
||||
Gui::DrawString((400-Gui::GetStringWidth(0.55f, Text))/2, 2, 0.55f, WHITE, Text, 400);
|
||||
Gui::DrawBottom();
|
||||
drawKeyboard();
|
||||
C2D_DrawRectSolid(0, 81, 0.5f, 320, 20, Config::ColorKeys & C2D_Color32(200, 200, 200, 200));
|
||||
Gui::DrawString(5, 82, 0.6, Config::TxtColor, (string+(cursorBlink-- > 0 ? "_" : "")).c_str());
|
||||
if(cursorBlink < -20) cursorBlink = 20;
|
||||
scanKeys();
|
||||
hDown = keysDown();
|
||||
if(keyDownDelay > 0) {
|
||||
keyDownDelay--;
|
||||
} else if(keyDownDelay == 0) {
|
||||
keyDownDelay--;
|
||||
}
|
||||
} while(!hDown);
|
||||
if(keyDownDelay > 0) {
|
||||
}
|
||||
keyDownDelay = 10;
|
||||
|
||||
if(hDown & KEY_TOUCH) {
|
||||
touchRead(&touch);
|
||||
if(string.length() < maxLength) {
|
||||
// Check if a regular key was pressed
|
||||
for(uint i=0;i<(sizeof(keysQWERTY)/sizeof(keysQWERTY[0]));i++) {
|
||||
if((touch.px > keysQWERTY[i].x-2 && touch.px < keysQWERTY[i].x+18) && (touch.py > keysQWERTY[i].y+(103)-2 && touch.py < keysQWERTY[i].y+18+(103))) {
|
||||
char c = (shift ? keysQWERTYShift[i] : keysQWERTY[i]).character[0];
|
||||
string += (shift || caps ? toupper(c) : c);
|
||||
shift = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Check if a modifier key was pressed
|
||||
for(uint i=0;i<(sizeof(modifierKeys)/sizeof(modifierKeys[0]));i++) {
|
||||
if((touch.px > modifierKeys[i].x-2 && touch.px < modifierKeys[i].x+modifierKeys[i].w+2) && (touch.py > modifierKeys[i].y+(103)-2 && touch.py < modifierKeys[i].y+18+(103))) {
|
||||
if(modifierKeys[i].character == "bksp") {
|
||||
string = string.substr(0, string.length()-1);
|
||||
} else if(modifierKeys[i].character == "caps") {
|
||||
caps = !caps;
|
||||
} else if(modifierKeys[i].character == "entr") {
|
||||
enter = true;
|
||||
} else if(modifierKeys[i].character == "lsft") {
|
||||
if(shift) shift = 0;
|
||||
else shift = 1;
|
||||
if(shift) {
|
||||
keyDownDelay = -1;
|
||||
} else {
|
||||
keyDownDelay = 0;
|
||||
}
|
||||
} else if(modifierKeys[i].character == "rsft") {
|
||||
if(shift) shift = 0;
|
||||
else shift = 2;
|
||||
if(shift) {
|
||||
keyDownDelay = -1;
|
||||
} else {
|
||||
keyDownDelay = 0;
|
||||
}
|
||||
} else if(modifierKeys[i].character == " " || modifierKeys[i].character == " ") {
|
||||
if(string.length() < maxLength) {
|
||||
shift = 0;
|
||||
string += modifierKeys[i].character[0];
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if(hDown & KEY_B) {
|
||||
string = string.substr(0, string.length()-1);
|
||||
Gui::DrawString(0, 103, 0.5, BLACK, string.c_str(), 320);
|
||||
}
|
||||
|
||||
if(hDown & KEY_START || enter) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return string;
|
||||
}
|
||||
Reference in New Issue
Block a user