6 #include <unordered_map>
32 using std::make_unique;
36 using std::unique_ptr;
37 using std::unordered_map;
64 const vector<string> GUIMiniScript::CONTEXTFUNCTION_GUI = {};
73 return "tdme::gui::scripting::GUIMiniScript";
77 auto transpilationUnits = EngineMiniScript::getTranspilationUnits();
78 transpilationUnits.push_back(
"src/tdme/gui/scripting/GUIMiniScript.cpp");
79 return transpilationUnits;
83 EngineMiniScript::registerStateMachineStates();
87 EngineMiniScript::registerMethods();
91 class ScriptMethodInputKeyboardKEYCODE_LEFT:
public ScriptMethod {
95 ScriptMethodInputKeyboardKEYCODE_LEFT(
GUIMiniScript* miniScript):
96 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
97 miniScript(miniScript) {}
98 const string getMethodName()
override {
99 return "input.keyboard.KEYCODE_LEFT";
101 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
102 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_LEFT);
104 const vector<string>& getContextFunctions() {
108 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_LEFT(
this));
112 class ScriptMethodInputKeyboardKEYCODE_RIGHT:
public ScriptMethod {
116 ScriptMethodInputKeyboardKEYCODE_RIGHT(
GUIMiniScript* miniScript):
117 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
118 miniScript(miniScript) {}
119 const string getMethodName()
override {
120 return "input.keyboard.KEYCODE_RIGHT";
122 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
123 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_RIGHT);
125 const vector<string>& getContextFunctions() {
129 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_RIGHT(
this));
133 class ScriptMethodInputKeyboardKEYCODE_UP:
public ScriptMethod {
137 ScriptMethodInputKeyboardKEYCODE_UP(
GUIMiniScript* miniScript):
138 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
139 miniScript(miniScript) {}
140 const string getMethodName()
override {
141 return "input.keyboard.KEYCODE_UP";
143 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
144 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_UP);
146 const vector<string>& getContextFunctions() {
150 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_UP(
this));
154 class ScriptMethodInputKeyboardKEYCODE_DOWN:
public ScriptMethod {
158 ScriptMethodInputKeyboardKEYCODE_DOWN(
GUIMiniScript* miniScript):
159 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
160 miniScript(miniScript) {}
161 const string getMethodName()
override {
162 return "input.keyboard.KEYCODE_DOWN";
164 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
165 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_DOWN);
167 const vector<string>& getContextFunctions() {
171 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_DOWN(
this));
175 class ScriptMethodInputKeyboardKEYCODE_POS1:
public ScriptMethod {
179 ScriptMethodInputKeyboardKEYCODE_POS1(
GUIMiniScript* miniScript):
180 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
181 miniScript(miniScript) {}
182 const string getMethodName()
override {
183 return "input.keyboard.KEYCODE_POS1";
185 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
186 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_POS1);
188 const vector<string>& getContextFunctions() {
192 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_POS1(
this));
196 class ScriptMethodInputKeyboardKEYCODE_END:
public ScriptMethod {
200 ScriptMethodInputKeyboardKEYCODE_END(
GUIMiniScript* miniScript):
201 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
202 miniScript(miniScript) {}
203 const string getMethodName()
override {
204 return "input.keyboard.KEYCODE_END";
206 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
207 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_END);
209 const vector<string>& getContextFunctions() {
213 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_END(
this));
217 class ScriptMethodInputKeyboardKEYCODE_PAGEUP:
public ScriptMethod {
221 ScriptMethodInputKeyboardKEYCODE_PAGEUP(
GUIMiniScript* miniScript):
222 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
223 miniScript(miniScript) {}
224 const string getMethodName()
override {
225 return "input.keyboard.KEYCODE_PAGEUP";
227 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
228 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_PAGE_UP);
230 const vector<string>& getContextFunctions() {
234 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_PAGEUP(
this));
238 class ScriptMethodInputKeyboardKEYCODE_PAGEDOWN:
public ScriptMethod {
242 ScriptMethodInputKeyboardKEYCODE_PAGEDOWN(
GUIMiniScript* miniScript):
243 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
244 miniScript(miniScript) {}
245 const string getMethodName()
override {
246 return "input.keyboard.KEYCODE_PAGEDOWN";
248 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
249 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_PAGE_DOWN);
251 const vector<string>& getContextFunctions() {
255 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_PAGEDOWN(
this));
259 class ScriptMethodInputKeyboardKEYCODE_BACKSPACE:
public ScriptMethod {
263 ScriptMethodInputKeyboardKEYCODE_BACKSPACE(
GUIMiniScript* miniScript):
264 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
265 miniScript(miniScript) {}
266 const string getMethodName()
override {
267 return "input.keyboard.KEYCODE_BACKSPACE";
269 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
270 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_BACKSPACE);
272 const vector<string>& getContextFunctions() {
276 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_BACKSPACE(
this));
280 class ScriptMethodInputKeyboardKEYCODE_DELETE:
public ScriptMethod {
284 ScriptMethodInputKeyboardKEYCODE_DELETE(
GUIMiniScript* miniScript):
285 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
286 miniScript(miniScript) {}
287 const string getMethodName()
override {
288 return "input.keyboard.KEYCODE_DELETE";
290 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
291 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_DELETE);
293 const vector<string>& getContextFunctions() {
297 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_DELETE(
this));
301 class ScriptMethodInputKeyboardKEYCODE_SPACE:
public ScriptMethod {
305 ScriptMethodInputKeyboardKEYCODE_SPACE(
GUIMiniScript* miniScript):
306 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
307 miniScript(miniScript) {}
308 const string getMethodName()
override {
309 return "input.keyboard.KEYCODE_SPACE";
311 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
312 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_SPACE);
314 const vector<string>& getContextFunctions() {
318 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_SPACE(
this));
322 class ScriptMethodInputKeyboardKEYCODE_RETURN:
public ScriptMethod {
326 ScriptMethodInputKeyboardKEYCODE_RETURN(
GUIMiniScript* miniScript):
327 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
328 miniScript(miniScript) {}
329 const string getMethodName()
override {
330 return "input.keyboard.KEYCODE_RETURN";
332 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
333 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_RETURN);
335 const vector<string>& getContextFunctions() {
339 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_RETURN(
this));
343 class ScriptMethodInputKeyboardKEYCODE_ESCAPE:
public ScriptMethod {
347 ScriptMethodInputKeyboardKEYCODE_ESCAPE(
GUIMiniScript* miniScript):
348 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
349 miniScript(miniScript) {}
350 const string getMethodName()
override {
351 return "input.keyboard.KEYCODE_ESCAPE";
353 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
354 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_ESCAPE);
356 const vector<string>& getContextFunctions() {
360 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_ESCAPE(
this));
364 class ScriptMethodInputKeyboardKEYCODE_F1:
public ScriptMethod {
368 ScriptMethodInputKeyboardKEYCODE_F1(
GUIMiniScript* miniScript):
369 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
370 miniScript(miniScript) {}
371 const string getMethodName()
override {
372 return "input.keyboard.KEYCODE_F1";
374 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
375 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F1);
377 const vector<string>& getContextFunctions() {
381 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F1(
this));
385 class ScriptMethodInputKeyboardKEYCODE_F2:
public ScriptMethod {
389 ScriptMethodInputKeyboardKEYCODE_F2(
GUIMiniScript* miniScript):
390 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
391 miniScript(miniScript) {}
392 const string getMethodName()
override {
393 return "input.keyboard.KEYCODE_F2";
395 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
396 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F2);
398 const vector<string>& getContextFunctions() {
402 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F2(
this));
406 class ScriptMethodInputKeyboardKEYCODE_F3:
public ScriptMethod {
410 ScriptMethodInputKeyboardKEYCODE_F3(
GUIMiniScript* miniScript):
411 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
412 miniScript(miniScript) {}
413 const string getMethodName()
override {
414 return "input.keyboard.KEYCODE_F3";
416 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
417 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F3);
419 const vector<string>& getContextFunctions() {
423 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F3(
this));
427 class ScriptMethodInputKeyboardKEYCODE_F4:
public ScriptMethod {
431 ScriptMethodInputKeyboardKEYCODE_F4(
GUIMiniScript* miniScript):
432 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
433 miniScript(miniScript) {}
434 const string getMethodName()
override {
435 return "input.keyboard.KEYCODE_F4";
437 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
438 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F4);
440 const vector<string>& getContextFunctions() {
444 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F4(
this));
448 class ScriptMethodInputKeyboardKEYCODE_F5:
public ScriptMethod {
452 ScriptMethodInputKeyboardKEYCODE_F5(
GUIMiniScript* miniScript):
453 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
454 miniScript(miniScript) {}
455 const string getMethodName()
override {
456 return "input.keyboard.KEYCODE_F5";
458 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
459 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F5);
461 const vector<string>& getContextFunctions() {
465 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F5(
this));
469 class ScriptMethodInputKeyboardKEYCODE_F6:
public ScriptMethod {
473 ScriptMethodInputKeyboardKEYCODE_F6(
GUIMiniScript* miniScript):
474 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
475 miniScript(miniScript) {}
476 const string getMethodName()
override {
477 return "input.keyboard.KEYCODE_F6";
479 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
480 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F6);
482 const vector<string>& getContextFunctions() {
486 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F6(
this));
490 class ScriptMethodInputKeyboardKEYCODE_F7:
public ScriptMethod {
494 ScriptMethodInputKeyboardKEYCODE_F7(
GUIMiniScript* miniScript):
495 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
496 miniScript(miniScript) {}
497 const string getMethodName()
override {
498 return "input.keyboard.KEYCODE_F7";
500 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
501 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F7);
503 const vector<string>& getContextFunctions() {
507 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F7(
this));
511 class ScriptMethodInputKeyboardKEYCODE_F8:
public ScriptMethod {
515 ScriptMethodInputKeyboardKEYCODE_F8(
GUIMiniScript* miniScript):
516 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
517 miniScript(miniScript) {}
518 const string getMethodName()
override {
519 return "input.keyboard.KEYCODE_F8";
521 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
522 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F8);
524 const vector<string>& getContextFunctions() {
528 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F8(
this));
532 class ScriptMethodInputKeyboardKEYCODE_F9:
public ScriptMethod {
536 ScriptMethodInputKeyboardKEYCODE_F9(
GUIMiniScript* miniScript):
537 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
538 miniScript(miniScript) {}
539 const string getMethodName()
override {
540 return "input.keyboard.KEYCODE_F9";
542 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
543 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F9);
545 const vector<string>& getContextFunctions() {
549 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F9(
this));
553 class ScriptMethodInputKeyboardKEYCODE_F10:
public ScriptMethod {
557 ScriptMethodInputKeyboardKEYCODE_F10(
GUIMiniScript* miniScript):
558 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
559 miniScript(miniScript) {}
560 const string getMethodName()
override {
561 return "input.keyboard.KEYCODE_F10";
563 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
564 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F10);
566 const vector<string>& getContextFunctions() {
570 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F10(
this));
574 class ScriptMethodInputKeyboardKEYCODE_F11:
public ScriptMethod {
578 ScriptMethodInputKeyboardKEYCODE_F11(
GUIMiniScript* miniScript):
579 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
580 miniScript(miniScript) {}
581 const string getMethodName()
override {
582 return "input.keyboard.KEYCODE_F11";
584 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
585 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F11);
587 const vector<string>& getContextFunctions() {
591 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F11(
this));
595 class ScriptMethodInputKeyboardKEYCODE_F12:
public ScriptMethod {
599 ScriptMethodInputKeyboardKEYCODE_F12(
GUIMiniScript* miniScript):
600 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
601 miniScript(miniScript) {}
602 const string getMethodName()
override {
603 return "input.keyboard.KEYCODE_F12";
605 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
606 returnValue =
static_cast<int64_t
>(GUIKeyboardEvent::KEYCODE_F12);
608 const vector<string>& getContextFunctions() {
612 registerMethod(
new ScriptMethodInputKeyboardKEYCODE_F12(
this));
616 class ScriptMethodInputKeyboardIsKeyDown:
public ScriptMethod {
620 ScriptMethodInputKeyboardIsKeyDown(
GUIMiniScript* miniScript):
623 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"keyCode", .optional =
false, .reference =
false, .nullable =
false }
625 ScriptVariableType::TYPE_BOOLEAN
627 miniScript(miniScript) {}
628 const string getMethodName()
override {
629 return "input.keyboard.isKeyDown";
631 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
633 if (miniScript->getIntegerValue(argumentValues, 0, keyCode) ==
true) {
636 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
637 miniScript->startErrorScript();
640 const vector<string>& getContextFunctions() {
644 registerMethod(
new ScriptMethodInputKeyboardIsKeyDown(
this));
648 class ScriptMethodInputKeyboardIsCharDown:
public ScriptMethod {
652 ScriptMethodInputKeyboardIsCharDown(
GUIMiniScript* miniScript):
655 { .type = ScriptVariableType::TYPE_STRING, .name =
"charAsString", .optional =
false, .reference =
false, .nullable =
false }
657 ScriptVariableType::TYPE_BOOLEAN
659 miniScript(miniScript) {}
660 const string getMethodName()
override {
661 return "input.keyboard.isCharDown";
663 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
665 if (miniScript->getStringValue(argumentValues, 0, charAsString) ==
true) {
667 auto keyChar = u8It.
hasNext() ==
true?u8It.
next():-1;
670 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
671 miniScript->startErrorScript();
674 const vector<string>& getContextFunctions() {
678 registerMethod(
new ScriptMethodInputKeyboardIsCharDown(
this));
682 class ScriptMethodInputKeyboardGetTypedString:
public ScriptMethod {
686 ScriptMethodInputKeyboardGetTypedString(
GUIMiniScript* miniScript):
687 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
688 miniScript(miniScript) {}
689 const string getMethodName()
override {
690 return "input.keyboard.getTypedString";
692 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
695 const vector<string>& getContextFunctions() {
699 registerMethod(
new ScriptMethodInputKeyboardGetTypedString(
this));
703 class ScriptMethodInputKeyboardIsControlDown:
public ScriptMethod {
707 ScriptMethodInputKeyboardIsControlDown(
GUIMiniScript* miniScript):
708 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
709 miniScript(miniScript) {}
710 const string getMethodName()
override {
711 return "input.keyboard.isControlDown";
713 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
716 const vector<string>& getContextFunctions() {
720 registerMethod(
new ScriptMethodInputKeyboardIsControlDown(
this));
724 class ScriptMethodInputKeyboardIsMetaDown:
public ScriptMethod {
728 ScriptMethodInputKeyboardIsMetaDown(
GUIMiniScript* miniScript):
729 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
730 miniScript(miniScript) {}
731 const string getMethodName()
override {
732 return "input.keyboard.isMetaDown";
734 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
737 const vector<string>& getContextFunctions() {
741 registerMethod(
new ScriptMethodInputKeyboardIsMetaDown(
this));
745 class ScriptMethodInputKeyboardIsAltDown:
public ScriptMethod {
749 ScriptMethodInputKeyboardIsAltDown(
GUIMiniScript* miniScript):
750 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
751 miniScript(miniScript) {}
752 const string getMethodName()
override {
753 return "input.keyboard.isAltDown";
755 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
758 const vector<string>& getContextFunctions() {
762 registerMethod(
new ScriptMethodInputKeyboardIsAltDown(
this));
766 class ScriptMethodInputKeyboardIsShiftDown:
public ScriptMethod {
770 ScriptMethodInputKeyboardIsShiftDown(
GUIMiniScript* miniScript):
771 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
772 miniScript(miniScript) {}
773 const string getMethodName()
override {
774 return "input.keyboard.isShiftDown";
776 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
779 const vector<string>& getContextFunctions() {
783 registerMethod(
new ScriptMethodInputKeyboardIsShiftDown(
this));
788 class ScriptMethodInputMouseBUTTON_LEFT:
public ScriptMethod {
792 ScriptMethodInputMouseBUTTON_LEFT(
GUIMiniScript* miniScript):
793 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
794 miniScript(miniScript) {}
795 const string getMethodName()
override {
796 return "input.mouse.BUTTON_LEFT";
798 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
799 returnValue =
static_cast<int64_t
>(GUIMouseEvent::MOUSEEVENT_BUTTON_LEFT - 1);
801 const vector<string>& getContextFunctions() {
805 registerMethod(
new ScriptMethodInputMouseBUTTON_LEFT(
this));
809 class ScriptMethodInputMouseBUTTON_MIDDLE:
public ScriptMethod {
813 ScriptMethodInputMouseBUTTON_MIDDLE(
GUIMiniScript* miniScript):
814 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
815 miniScript(miniScript) {}
816 const string getMethodName()
override {
817 return "input.mouse.BUTTON_MIDDLE";
819 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
820 returnValue =
static_cast<int64_t
>(GUIMouseEvent::MOUSEEVENT_BUTTON_MIDDLE - 1);
822 const vector<string>& getContextFunctions() {
826 registerMethod(
new ScriptMethodInputMouseBUTTON_MIDDLE(
this));
830 class ScriptMethodInputMouseBUTTON_RIGHT:
public ScriptMethod {
834 ScriptMethodInputMouseBUTTON_RIGHT(
GUIMiniScript* miniScript):
835 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
836 miniScript(miniScript) {}
837 const string getMethodName()
override {
838 return "input.mouse.BUTTON_RIGHT";
840 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
841 returnValue =
static_cast<int64_t
>(GUIMouseEvent::MOUSEEVENT_BUTTON_RIGHT - 1);
843 const vector<string>& getContextFunctions() {
847 registerMethod(
new ScriptMethodInputMouseBUTTON_RIGHT(
this));
851 class ScriptMethodInputMouseIsButtonDown:
public ScriptMethod {
855 ScriptMethodInputMouseIsButtonDown(
GUIMiniScript* miniScript):
858 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"button", .optional =
false, .reference =
false, .nullable =
false }
860 ScriptVariableType::TYPE_BOOLEAN),
861 miniScript(miniScript) {}
862 const string getMethodName()
override {
863 return "input.mouse.isButtonDown";
865 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
867 if (miniScript->getIntegerValue(argumentValues, 0, button) ==
true) {
868 returnValue = button >= 0 && button <= 3?miniScript->
mouseDown[button]:
false;
870 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
871 miniScript->startErrorScript();
874 const vector<string>& getContextFunctions() {
878 registerMethod(
new ScriptMethodInputMouseIsButtonDown(
this));
882 class ScriptMethodInputMouseIsButtonUp:
public ScriptMethod {
889 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"button", .optional =
false, .reference =
false, .nullable =
false }
891 ScriptVariableType::TYPE_BOOLEAN),
892 miniScript(miniScript) {}
893 const string getMethodName()
override {
894 return "input.mouse.isButtonUp";
896 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
898 if (miniScript->getIntegerValue(argumentValues, 0, button) ==
true) {
899 returnValue = button >= 0 && button <= 3?miniScript->
mouseUp[button]:
false;
901 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
902 miniScript->startErrorScript();
905 const vector<string>& getContextFunctions() {
909 registerMethod(
new ScriptMethodInputMouseIsButtonUp(
this));
913 class ScriptMethodInputMouseIsDragging:
public ScriptMethod {
920 { .type = ScriptVariableType::TYPE_INTEGER, .name =
"button", .optional =
false, .reference =
false, .nullable =
false }
922 ScriptVariableType::TYPE_BOOLEAN),
923 miniScript(miniScript) {}
924 const string getMethodName()
override {
925 return "input.mouse.isDragging";
927 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
929 if (miniScript->getIntegerValue(argumentValues, 0, button) ==
true) {
930 returnValue = button >= 0 && button <= 3?miniScript->
mouseDragging[button]:
false;
932 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
933 miniScript->startErrorScript();
936 const vector<string>& getContextFunctions() {
940 registerMethod(
new ScriptMethodInputMouseIsDragging(
this));
944 class ScriptMethodInputMouseHasMoved:
public ScriptMethod {
949 ScriptMethod({}, ScriptVariableType::TYPE_BOOLEAN),
950 miniScript(miniScript) {}
951 const string getMethodName()
override {
952 return "input.mouse.hasMoved";
954 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
957 const vector<string>& getContextFunctions() {
961 registerMethod(
new ScriptMethodInputMouseHasMoved(
this));
965 class ScriptMethodInputMouseGetX:
public ScriptMethod {
970 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
971 miniScript(miniScript) {}
972 const string getMethodName()
override {
973 return "input.mouse.getX";
975 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
976 returnValue =
static_cast<int64_t
>(miniScript->
mouseX);
978 const vector<string>& getContextFunctions() {
982 registerMethod(
new ScriptMethodInputMouseGetX(
this));
986 class ScriptMethodInputMouseGetXUnscaled:
public ScriptMethod {
990 ScriptMethodInputMouseGetXUnscaled(
GUIMiniScript* miniScript):
991 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
992 miniScript(miniScript) {}
993 const string getMethodName()
override {
994 return "input.mouse.getXUnscaled";
996 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
999 const vector<string>& getContextFunctions() {
1003 registerMethod(
new ScriptMethodInputMouseGetXUnscaled(
this));
1007 class ScriptMethodInputMouseGetY:
public ScriptMethod {
1012 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1013 miniScript(miniScript) {}
1014 const string getMethodName()
override {
1015 return "input.mouse.getY";
1017 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1018 returnValue =
static_cast<int64_t
>(miniScript->
mouseY);
1020 const vector<string>& getContextFunctions() {
1024 registerMethod(
new ScriptMethodInputMouseGetY(
this));
1028 class ScriptMethodInputMouseGetYUnscaled:
public ScriptMethod {
1032 ScriptMethodInputMouseGetYUnscaled(
GUIMiniScript* miniScript):
1033 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1034 miniScript(miniScript) {}
1035 const string getMethodName()
override {
1036 return "input.mouse.getYUnscaled";
1038 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1041 const vector<string>& getContextFunctions() {
1045 registerMethod(
new ScriptMethodInputMouseGetYUnscaled(
this));
1049 class ScriptMethodInputMouseGetWheelX:
public ScriptMethod {
1054 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1055 miniScript(miniScript) {}
1056 const string getMethodName()
override {
1057 return "input.mouse.getWheelX";
1059 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1062 const vector<string>& getContextFunctions() {
1066 registerMethod(
new ScriptMethodInputMouseGetWheelX(
this));
1070 class ScriptMethodInputMouseGetWheelY:
public ScriptMethod {
1075 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1076 miniScript(miniScript) {}
1077 const string getMethodName()
override {
1078 return "input.mouse.getWheelY";
1080 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1083 const vector<string>& getContextFunctions() {
1087 registerMethod(
new ScriptMethodInputMouseGetWheelY(
this));
1091 class ScriptMethodInputMouseGetWheelZ:
public ScriptMethod {
1096 ScriptMethod({}, ScriptVariableType::TYPE_FLOAT),
1097 miniScript(miniScript) {}
1098 const string getMethodName()
override {
1099 return "input.mouse.getWheelZ";
1101 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1104 const vector<string>& getContextFunctions() {
1108 registerMethod(
new ScriptMethodInputMouseGetWheelZ(
this));
1113 class ScriptMethodGUIScreenSetEnabled:
public ScriptMethod {
1120 { .type = ScriptVariableType::TYPE_STRING, .name =
"screenId", .optional =
false, .reference =
false, .nullable =
false },
1121 { .type = ScriptVariableType::TYPE_BOOLEAN, .name =
"enabled", .optional =
false, .reference =
false, .nullable =
false }
1123 ScriptVariableType::TYPE_NULL
1125 miniScript(miniScript) {}
1126 const string getMethodName()
override {
1127 return "gui.screen.setEnabled";
1129 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1132 if (miniScript->getStringValue(argumentValues, 0, screenId,
false) ==
false ||
1133 miniScript->getBooleanValue(argumentValues, 1, enabled,
false) ==
false) {
1134 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1135 miniScript->startErrorScript();
1138 if (screen !=
nullptr) {
1141 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no screen with given id: " + screenId);
1142 miniScript->startErrorScript();
1146 const vector<string>& getContextFunctions() {
1150 registerMethod(
new ScriptMethodGUIScreenSetEnabled(
this));
1154 class ScriptMethodGUIScreenIsEnabled:
public ScriptMethod {
1161 { .type = ScriptVariableType::TYPE_STRING, .name =
"screenId", .optional =
false, .reference =
false, .nullable =
false },
1163 ScriptVariableType::TYPE_BOOLEAN
1165 miniScript(miniScript) {}
1166 const string getMethodName()
override {
1167 return "gui.screen.isEnabled";
1169 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1171 if (miniScript->getStringValue(argumentValues, 0, screenId,
false) ==
false) {
1172 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1173 miniScript->startErrorScript();
1176 if (screen !=
nullptr) {
1177 returnValue.setValue(screen->isEnabled());
1179 returnValue.setValue(
false);
1183 const vector<string>& getContextFunctions() {
1187 registerMethod(
new ScriptMethodGUIScreenIsEnabled(
this));
1191 class ScriptMethodGUIScreenGoto:
public ScriptMethod {
1198 { .type = ScriptVariableType::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
1199 { .type = ScriptVariableType::TYPE_MAP, .name =
"variables", .optional =
true, .reference =
false, .nullable =
false },
1200 { .type = ScriptVariableType::TYPE_PSEUDO_MIXED, .name =
"arguments", .optional =
true, .reference =
false, .nullable =
false }
1202 ScriptVariableType::TYPE_NULL
1204 miniScript(miniScript) {}
1205 const string getMethodName()
override {
1206 return "gui.screen.goto";
1208 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1210 if (argumentValues.size() > 3 ||
1211 EngineMiniScript::getStringValue(argumentValues, 0, fileName,
false) ==
false) {
1212 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1213 miniScript->startErrorScript();
1218 unordered_map<string, string> variables;
1219 if (argumentValues.size() >= 2) {
1220 auto mapPtr = argumentValues[1].getMapPointer();
1221 if (mapPtr !=
nullptr) {
1222 for (
const auto& [mapEntryKey, mapEntryValue]: *mapPtr) {
1223 variables[mapEntryKey] = mapEntryValue->getValueAsString();
1229 string screenPathName;
1230 string screenFileName;
1238 argumentValues.size() == 3?argumentValues[2]:EngineMiniScript::ScriptVariable(),
1243 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": an error occurred with goto screen to '" + fileName +
"': " +
string(exception.what()));
1244 miniScript->startErrorScript();
1248 const vector<string>& getContextFunctions() {
1252 registerMethod(
new ScriptMethodGUIScreenGoto(
this));
1256 class ScriptMethodGUIScreenPush:
public ScriptMethod {
1263 { .type = ScriptVariableType::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
1264 { .type = ScriptVariableType::TYPE_MAP, .name =
"variables", .optional =
true, .reference =
false, .nullable =
false },
1265 { .type = ScriptVariableType::TYPE_PSEUDO_MIXED, .name =
"arguments", .optional =
true, .reference =
false, .nullable =
false }
1267 ScriptVariableType::TYPE_NULL
1269 miniScript(miniScript) {}
1270 const string getMethodName()
override {
1271 return "gui.screen.push";
1273 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1275 if (argumentValues.size() > 3 ||
1276 EngineMiniScript::getStringValue(argumentValues, 0, fileName,
false) ==
false) {
1277 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1278 miniScript->startErrorScript();
1281 unordered_map<string, string> variables;
1282 if (argumentValues.size() >= 2) {
1283 auto mapPtr = argumentValues[1].getMapPointer();
1284 if (mapPtr !=
nullptr) {
1285 for (
const auto& [mapEntryKey, mapEntryValue]: *mapPtr) {
1286 variables[mapEntryKey] = mapEntryValue->getValueAsString();
1292 string screenPathName;
1293 string screenFileName;
1300 argumentValues.size() == 3?argumentValues[2]:EngineMiniScript::ScriptVariable(),
1306 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": an error occurred with pushing screen '" + fileName +
"': " +
string(exception.what()));
1307 miniScript->startErrorScript();
1311 const vector<string>& getContextFunctions() {
1315 registerMethod(
new ScriptMethodGUIScreenPush(
this));
1319 class ScriptMethodGUIScreenPop:
public ScriptMethod {
1326 ScriptVariableType::TYPE_NULL
1328 miniScript(miniScript) {}
1329 const string getMethodName()
override {
1331 return "gui.screen.pop";
1333 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1334 miniScript->
popped =
true;
1336 const vector<string>& getContextFunctions() {
1340 registerMethod(
new ScriptMethodGUIScreenPop(
this));
1344 class ScriptMethodGUIScreenCall:
public ScriptMethod {
1351 { .type = ScriptVariableType::TYPE_STRING, .name =
"screenId", .optional =
false, .reference =
false, .nullable =
false },
1352 { .type = ScriptVariableType::TYPE_STRING, .name =
"function", .optional =
false, .reference =
false, .nullable =
false }
1354 ScriptVariableType::TYPE_PSEUDO_MIXED
1356 miniScript(miniScript) {}
1357 const string getMethodName()
override {
1358 return "gui.screen.call";
1360 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1363 if (miniScript->getStringValue(argumentValues, 0, screenId) ==
false ||
1364 miniScript->getStringValue(argumentValues, 1,
function) ==
false) {
1365 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1366 miniScript->startErrorScript();
1369 auto screenMiniScript = screen !=
nullptr?screen->
getMiniScript():
nullptr;
1370 auto scriptIdx = screenMiniScript !=
nullptr?screenMiniScript->getFunctionScriptIdx(
function):SCRIPTIDX_NONE;
1371 if (screen ==
nullptr) {
1372 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": screen not found: " + screenId);
1373 miniScript->startErrorScript();
1375 if (screenMiniScript ==
nullptr) {
1376 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": screen mini script not found for given screen: " + screenId);
1377 miniScript->startErrorScript();
1379 if (scriptIdx == SCRIPTIDX_NONE) {
1380 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": screen: " + screenId +
", function not found: " +
function);
1381 miniScript->startErrorScript();
1383 #if defined (__APPLE__)
1386 vector<ScriptVariable> callArgumentValues;
1387 for (
auto i = 2; i < argumentValues.size(); i++) callArgumentValues.push_back(argumentValues[i]);
1389 span callArgumentValuesSpan(callArgumentValues);
1390 screenMiniScript->call(scriptIdx, callArgumentValuesSpan, returnValue);
1392 span callArgumentValuesSpan(argumentValues.begin() + 2, argumentValues.end());
1393 screenMiniScript->call(scriptIdx, callArgumentValuesSpan, returnValue);
1398 bool isVariadic()
const override {
1401 const vector<string>& getContextFunctions() {
1405 registerMethod(
new ScriptMethodGUIScreenCall(
this));
1409 class ScriptMethodScreenNodeGetId:
public ScriptMethod {
1414 ScriptMethod({}, ScriptVariableType::TYPE_STRING),
1415 miniScript(miniScript) {}
1416 const string getMethodName()
override {
1417 return "gui.screennode.getId";
1419 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1422 const vector<string>& getContextFunctions() {
1426 registerMethod(
new ScriptMethodScreenNodeGetId(
this));
1430 class ScriptMethodGUIEventACTIONTYPE_PERFORMING:
public ScriptMethod {
1434 ScriptMethodGUIEventACTIONTYPE_PERFORMING(
GUIMiniScript* miniScript):
1435 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1436 miniScript(miniScript) {}
1437 const string getMethodName()
override {
1438 return "gui.event.ACTIONTYPE_PERFORMING";
1440 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1443 const vector<string>& getContextFunctions() {
1447 registerMethod(
new ScriptMethodGUIEventACTIONTYPE_PERFORMING(
this));
1451 class ScriptMethodGUIEventACTIONTYPE_PERFORMED:
public ScriptMethod {
1455 ScriptMethodGUIEventACTIONTYPE_PERFORMED(
GUIMiniScript* miniScript):
1456 ScriptMethod({}, ScriptVariableType::TYPE_INTEGER),
1457 miniScript(miniScript) {}
1458 const string getMethodName()
override {
1459 return "gui.event.ACTIONTYPE_PERFORMED";
1461 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1464 const vector<string>& getContextFunctions() {
1468 registerMethod(
new ScriptMethodGUIEventACTIONTYPE_PERFORMED(
this));
1472 class ScriptMethodGUINodeControllerGetValue:
public ScriptMethod {
1476 ScriptMethodGUINodeControllerGetValue(
GUIMiniScript* miniScript):
1479 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false }
1481 ScriptVariableType::TYPE_STRING
1483 miniScript(miniScript) {}
1484 const string getMethodName()
override {
1485 return "gui.node.controller.getValue";
1487 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1489 if (EngineMiniScript::getStringValue(argumentValues, 0, nodeId,
false) ==
false) {
1490 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1491 miniScript->startErrorScript();
1494 auto controller = node !=
nullptr?node->
getController():
nullptr;
1495 if (controller !=
nullptr) {
1496 returnValue.
setValue(controller->getValue().getString());
1498 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no node controller found for given node id '" + nodeId +
"'");
1499 miniScript->startErrorScript();
1503 const vector<string>& getContextFunctions() {
1507 registerMethod(
new ScriptMethodGUINodeControllerGetValue(
this));
1511 class ScriptMethodGUINodeControllerSetValue:
public ScriptMethod {
1515 ScriptMethodGUINodeControllerSetValue(
GUIMiniScript* miniScript):
1518 { .type = ScriptVariableType::TYPE_STRING, .name =
"nodeId", .optional =
false, .reference =
false, .nullable =
false },
1519 { .type = ScriptVariableType::TYPE_STRING, .name =
"value", .optional =
false, .reference =
false, .nullable =
false }
1521 ScriptVariableType::TYPE_NULL
1523 miniScript(miniScript) {}
1524 const string getMethodName()
override {
1525 return "gui.node.controller.setValue";
1527 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1530 if (EngineMiniScript::getStringValue(argumentValues, 0, nodeId,
false) ==
false ||
1531 EngineMiniScript::getStringValue(argumentValues, 1, value,
false) ==
false) {
1532 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1533 miniScript->startErrorScript();
1536 auto controller = node !=
nullptr?node->
getController():
nullptr;
1537 if (controller !=
nullptr) {
1540 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no node controller found for given node id '" + nodeId +
"'");
1541 miniScript->startErrorScript();
1545 const vector<string>& getContextFunctions() {
1549 registerMethod(
new ScriptMethodGUINodeControllerSetValue(
this));
1553 class ScriptMethodGUITextNodeGetText:
public ScriptMethod {
1560 { .type = ScriptVariableType::TYPE_STRING, .name =
"textNodeId", .optional =
false, .reference =
false, .nullable =
false },
1562 ScriptVariableType::TYPE_STRING
1564 miniScript(miniScript) {}
1565 const string getMethodName()
override {
1566 return "gui.textnode.getText";
1568 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1570 if (EngineMiniScript::getStringValue(argumentValues, 0, textNodeId,
false) ==
false) {
1571 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1572 miniScript->startErrorScript();
1576 if (textNode !=
nullptr) {
1577 returnValue.setValue(textNode->getText().getString());
1579 if (styledTextNode !=
nullptr) {
1580 returnValue.setValue(styledTextNode->getText().getString());
1582 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no text or styled text node found for given node id '" + textNodeId +
"'");
1583 miniScript->startErrorScript();
1587 const vector<string>& getContextFunctions() {
1591 registerMethod(
new ScriptMethodGUITextNodeGetText(
this));
1595 class ScriptMethodGUITextNodeSetText:
public ScriptMethod {
1602 { .type = ScriptVariableType::TYPE_STRING, .name =
"textNodeId", .optional =
false, .reference =
false, .nullable =
false },
1603 { .type = ScriptVariableType::TYPE_STRING, .name =
"text", .optional =
false, .reference =
false, .nullable =
false }
1605 ScriptVariableType::TYPE_NULL
1607 miniScript(miniScript) {}
1608 const string getMethodName()
override {
1609 return "gui.textnode.setText";
1611 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1614 if (EngineMiniScript::getStringValue(argumentValues, 0, textNodeId,
false) ==
false ||
1615 EngineMiniScript::getStringValue(argumentValues, 1, text,
false) ==
false) {
1616 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1617 miniScript->startErrorScript();
1621 if (textNode !=
nullptr) {
1624 if (styledTextNode !=
nullptr) {
1627 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no text or styled text node found for given node id '" + textNodeId +
"'");
1628 miniScript->startErrorScript();
1632 const vector<string>& getContextFunctions() {
1636 registerMethod(
new ScriptMethodGUITextNodeSetText(
this));
1640 class ScriptMethodGUIElementNodeConditionsHas:
public ScriptMethod {
1644 ScriptMethodGUIElementNodeConditionsHas(
GUIMiniScript* miniScript):
1647 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false },
1648 { .type = ScriptVariableType::TYPE_STRING, .name =
"condition", .optional =
false, .reference =
false, .nullable =
false },
1650 ScriptVariableType::TYPE_BOOLEAN
1652 miniScript(miniScript) {}
1653 const string getMethodName()
override {
1654 return "gui.elementnode.conditions.has";
1656 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1657 string elementNodeId;
1659 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false ||
1660 EngineMiniScript::getStringValue(argumentValues, 1, condition,
false) ==
false) {
1661 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1662 miniScript->startErrorScript();
1665 if (elementNode !=
nullptr) {
1666 returnValue.setValue(elementNode->getActiveConditions().has(condition));
1668 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1669 miniScript->startErrorScript();
1673 const vector<string>& getContextFunctions() {
1677 registerMethod(
new ScriptMethodGUIElementNodeConditionsHas(
this));
1681 class ScriptMethodGUIElementNodeConditionsGet:
public ScriptMethod {
1685 ScriptMethodGUIElementNodeConditionsGet(
GUIMiniScript* miniScript):
1688 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false }
1690 ScriptVariableType::TYPE_ARRAY
1692 miniScript(miniScript) {}
1693 const string getMethodName()
override {
1694 return "gui.elementnode.conditions.get";
1696 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1697 string elementNodeId;
1698 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false) {
1699 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1700 miniScript->startErrorScript();
1703 if (elementNode !=
nullptr) {
1705 returnValue.setType(TYPE_ARRAY);
1706 for (
const auto& condition: conditions) {
1707 returnValue.pushArrayEntry(condition);
1710 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1711 miniScript->startErrorScript();
1715 const vector<string>& getContextFunctions() {
1719 registerMethod(
new ScriptMethodGUIElementNodeConditionsGet(
this));
1723 class ScriptMethodGUIElementNodeConditionsSet:
public ScriptMethod {
1727 ScriptMethodGUIElementNodeConditionsSet(
GUIMiniScript* miniScript):
1730 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false },
1731 { .type = ScriptVariableType::TYPE_STRING, .name =
"condition", .optional =
false, .reference =
false, .nullable =
false },
1733 ScriptVariableType::TYPE_NULL
1735 miniScript(miniScript) {}
1736 const string getMethodName()
override {
1737 return "gui.elementnode.conditions.set";
1739 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1740 string elementNodeId;
1742 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false ||
1743 EngineMiniScript::getStringValue(argumentValues, 1, condition,
false) ==
false) {
1744 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1745 miniScript->startErrorScript();
1748 if (elementNode !=
nullptr) {
1751 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1752 miniScript->startErrorScript();
1756 const vector<string>& getContextFunctions() {
1760 registerMethod(
new ScriptMethodGUIElementNodeConditionsSet(
this));
1764 class ScriptMethodGUIElementNodeConditionsAdd:
public ScriptMethod {
1768 ScriptMethodGUIElementNodeConditionsAdd(
GUIMiniScript* miniScript):
1771 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false },
1772 { .type = ScriptVariableType::TYPE_STRING, .name =
"condition", .optional =
false, .reference =
false, .nullable =
false },
1774 ScriptVariableType::TYPE_NULL
1776 miniScript(miniScript) {}
1777 const string getMethodName()
override {
1778 return "gui.elementnode.conditions.add";
1780 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1781 string elementNodeId;
1783 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false ||
1784 EngineMiniScript::getStringValue(argumentValues, 1, condition,
false) ==
false) {
1785 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1786 miniScript->startErrorScript();
1789 if (elementNode !=
nullptr) {
1792 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1793 miniScript->startErrorScript();
1797 const vector<string>& getContextFunctions() {
1801 registerMethod(
new ScriptMethodGUIElementNodeConditionsAdd(
this));
1805 class ScriptMethodGUIElementNodeConditionsSetAll:
public ScriptMethod {
1809 ScriptMethodGUIElementNodeConditionsSetAll(
GUIMiniScript* miniScript):
1812 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false },
1813 { .type = ScriptVariableType::TYPE_ARRAY, .name =
"conditions", .optional =
false, .reference =
false, .nullable =
false },
1815 ScriptVariableType::TYPE_NULL
1817 miniScript(miniScript) {}
1818 const string getMethodName()
override {
1819 return "gui.elementnode.conditions.setAll";
1821 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1822 string elementNodeId;
1823 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false ||
1824 argumentValues.size() <= 1 || argumentValues[1].getType() != ScriptVariableType::TYPE_ARRAY) {
1825 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1826 miniScript->startErrorScript();
1829 if (elementNode !=
nullptr) {
1830 vector<string> conditions;
1831 for (
auto i = 0; i < argumentValues[1].getArraySize(); i++) {
1833 if (argumentValues[1].getArrayEntry(i).getStringValue(condition,
false) ==
false) {
1834 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1836 conditions.push_back(condition);
1839 elementNode->getActiveConditions().set(conditions);
1841 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1842 miniScript->startErrorScript();
1846 const vector<string>& getContextFunctions() {
1850 registerMethod(
new ScriptMethodGUIElementNodeConditionsSetAll(
this));
1854 class ScriptMethodGUIElementNodeConditionsRemove:
public ScriptMethod {
1858 ScriptMethodGUIElementNodeConditionsRemove(
GUIMiniScript* miniScript):
1861 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false },
1862 { .type = ScriptVariableType::TYPE_STRING, .name =
"condition", .optional =
false, .reference =
false, .nullable =
false },
1864 ScriptVariableType::TYPE_NULL
1866 miniScript(miniScript) {}
1867 const string getMethodName()
override {
1868 return "gui.elementnode.conditions.remove";
1870 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1871 string elementNodeId;
1873 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false ||
1874 EngineMiniScript::getStringValue(argumentValues, 1, condition,
false) ==
false) {
1875 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1876 miniScript->startErrorScript();
1879 if (elementNode !=
nullptr) {
1882 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1883 miniScript->startErrorScript();
1887 const vector<string>& getContextFunctions() {
1891 registerMethod(
new ScriptMethodGUIElementNodeConditionsRemove(
this));
1895 class ScriptMethodGUIElementNodeConditionsRemoveAll:
public ScriptMethod {
1899 ScriptMethodGUIElementNodeConditionsRemoveAll(
GUIMiniScript* miniScript):
1902 { .type = ScriptVariableType::TYPE_STRING, .name =
"elementNodeId", .optional =
false, .reference =
false, .nullable =
false }
1904 ScriptVariableType::TYPE_NULL
1906 miniScript(miniScript) {}
1907 const string getMethodName()
override {
1908 return "gui.elementnode.conditions.removeAll";
1910 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1911 string elementNodeId;
1912 if (EngineMiniScript::getStringValue(argumentValues, 0, elementNodeId,
false) ==
false) {
1913 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1914 miniScript->startErrorScript();
1917 if (elementNode !=
nullptr) {
1920 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no element node found for given node id '" + elementNodeId +
"'");
1921 miniScript->startErrorScript();
1925 const vector<string>& getContextFunctions() {
1929 registerMethod(
new ScriptMethodGUIElementNodeConditionsRemoveAll(
this));
1933 class ScriptMethodGUIImageNodeGetSource:
public ScriptMethod {
1937 ScriptMethodGUIImageNodeGetSource(
GUIMiniScript* miniScript):
1940 { .type = ScriptVariableType::TYPE_STRING, .name =
"imageNodeId", .optional =
false, .reference =
false, .nullable =
false }
1942 ScriptVariableType::TYPE_STRING
1944 miniScript(miniScript) {}
1945 const string getMethodName()
override {
1946 return "gui.imagenode.getSource";
1948 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1950 if (EngineMiniScript::getStringValue(argumentValues, 0, imageNodeId,
false) ==
false) {
1951 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1952 miniScript->startErrorScript();
1955 if (imageNode !=
nullptr) {
1956 returnValue.setValue(imageNode->getSource());
1958 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no image node found for given image node id '" + imageNodeId +
"'");
1959 miniScript->startErrorScript();
1963 const vector<string>& getContextFunctions() {
1967 registerMethod(
new ScriptMethodGUIImageNodeGetSource(
this));
1971 class ScriptMethodGUIImageNodeSetSource:
public ScriptMethod {
1975 ScriptMethodGUIImageNodeSetSource(
GUIMiniScript* miniScript):
1978 { .type = ScriptVariableType::TYPE_STRING, .name =
"imageNodeId", .optional =
false, .reference =
false, .nullable =
false },
1979 { .type = ScriptVariableType::TYPE_STRING, .name =
"source", .optional =
false, .reference =
false, .nullable =
false }
1981 ScriptVariableType::TYPE_NULL
1983 miniScript(miniScript) {}
1984 const string getMethodName()
override {
1985 return "gui.imagenode.setSource";
1987 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
1990 if (EngineMiniScript::getStringValue(argumentValues, 0, imageNodeId,
false) ==
false ||
1991 EngineMiniScript::getStringValue(argumentValues, 1, source,
false) ==
false) {
1992 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
1993 miniScript->startErrorScript();
1996 if (imageNode !=
nullptr) {
1999 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no image node found for given image node id '" + imageNodeId +
"'");
2000 miniScript->startErrorScript();
2004 const vector<string>& getContextFunctions() {
2008 registerMethod(
new ScriptMethodGUIImageNodeSetSource(
this));
2012 class ScriptMethodGUIVideoNodeGetSource:
public ScriptMethod {
2016 ScriptMethodGUIVideoNodeGetSource(
GUIMiniScript* miniScript):
2019 { .type = ScriptVariableType::TYPE_STRING, .name =
"videoNodeId", .optional =
false, .reference =
false, .nullable =
false }
2021 ScriptVariableType::TYPE_STRING
2023 miniScript(miniScript) {}
2024 const string getMethodName()
override {
2025 return "gui.videonode.getSource";
2027 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2029 if (EngineMiniScript::getStringValue(argumentValues, 0, videoNodeId,
false) ==
false) {
2030 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2031 miniScript->startErrorScript();
2034 if (videoNode !=
nullptr) {
2035 returnValue.setValue(videoNode->getSource());
2037 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no video node found for given video node id '" + videoNodeId +
"'");
2038 miniScript->startErrorScript();
2042 const vector<string>& getContextFunctions() {
2046 registerMethod(
new ScriptMethodGUIVideoNodeGetSource(
this));
2050 class ScriptMethodGUIVideoNodeSetSource:
public ScriptMethod {
2054 ScriptMethodGUIVideoNodeSetSource(
GUIMiniScript* miniScript):
2057 { .type = ScriptVariableType::TYPE_STRING, .name =
"videoNodeId", .optional =
false, .reference =
false, .nullable =
false },
2058 { .type = ScriptVariableType::TYPE_STRING, .name =
"source", .optional =
false, .reference =
false, .nullable =
false }
2060 ScriptVariableType::TYPE_NULL
2062 miniScript(miniScript) {}
2063 const string getMethodName()
override {
2064 return "gui.videonode.setSource";
2066 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2069 if (EngineMiniScript::getStringValue(argumentValues, 0, videoNodeId,
false) ==
false ||
2070 EngineMiniScript::getStringValue(argumentValues, 1, source,
false) ==
false) {
2071 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2072 miniScript->startErrorScript();
2075 if (videoNode !=
nullptr) {
2078 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no video node found for given video node id '" + videoNodeId +
"'");
2079 miniScript->startErrorScript();
2083 const vector<string>& getContextFunctions() {
2087 registerMethod(
new ScriptMethodGUIVideoNodeSetSource(
this));
2091 class ScriptMethodGUIParentNodeClearSubNodes:
public ScriptMethod {
2095 ScriptMethodGUIParentNodeClearSubNodes(
GUIMiniScript* miniScript):
2098 { .type = ScriptVariableType::TYPE_STRING, .name =
"parentNodeId", .optional =
false, .reference =
false, .nullable =
false }
2100 ScriptVariableType::TYPE_NULL
2102 miniScript(miniScript) {}
2103 const string getMethodName()
override {
2104 return "gui.parentnode.clearSubNodes";
2106 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2107 string parentNodeId;
2108 if (EngineMiniScript::getStringValue(argumentValues, 0, parentNodeId,
false) ==
false) {
2109 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2110 miniScript->startErrorScript();
2113 if (parentNode !=
nullptr) {
2116 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no parent node found for given parent node id '" + parentNodeId +
"'");
2117 miniScript->startErrorScript();
2121 const vector<string>& getContextFunctions() {
2125 registerMethod(
new ScriptMethodGUIParentNodeClearSubNodes(
this));
2129 class ScriptMethodGUIParentNodeAddSubNodes:
public ScriptMethod {
2133 ScriptMethodGUIParentNodeAddSubNodes(
GUIMiniScript* miniScript):
2136 { .type = ScriptVariableType::TYPE_STRING, .name =
"parentNodeId", .optional =
false, .reference =
false, .nullable =
false },
2137 { .type = ScriptVariableType::TYPE_STRING, .name =
"xml", .optional =
false, .reference =
false, .nullable =
false },
2138 { .type = ScriptVariableType::TYPE_BOOLEAN, .name =
"resetScrollOffsets", .optional =
true, .reference =
false, .nullable =
false }
2140 ScriptVariableType::TYPE_NULL
2142 miniScript(miniScript) {}
2143 const string getMethodName()
override {
2144 return "gui.parentnode.addSubNodes";
2146 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2147 string parentNodeId;
2149 bool resetScrollOffsets =
true;
2150 if (EngineMiniScript::getStringValue(argumentValues, 0, parentNodeId,
false) ==
false ||
2151 EngineMiniScript::getStringValue(argumentValues, 1, xml,
false) ==
false ||
2152 EngineMiniScript::getBooleanValue(argumentValues, 2, resetScrollOffsets,
true) ==
false) {
2153 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2154 miniScript->startErrorScript();
2157 if (parentNode !=
nullptr) {
2160 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no parent node found for given parent node id '" + parentNodeId +
"'");
2161 miniScript->startErrorScript();
2165 const vector<string>& getContextFunctions() {
2169 registerMethod(
new ScriptMethodGUIParentNodeAddSubNodes(
this));
2173 class ScriptMethodGUIParentNodeReplaceSubNodes:
public ScriptMethod {
2177 ScriptMethodGUIParentNodeReplaceSubNodes(
GUIMiniScript* miniScript):
2180 { .type = ScriptVariableType::TYPE_STRING, .name =
"parentNodeId", .optional =
false, .reference =
false, .nullable =
false },
2181 { .type = ScriptVariableType::TYPE_STRING, .name =
"xml", .optional =
false, .reference =
false, .nullable =
false },
2182 { .type = ScriptVariableType::TYPE_BOOLEAN, .name =
"resetScrollOffsets", .optional =
true, .reference =
false, .nullable =
false }
2184 ScriptVariableType::TYPE_NULL
2186 miniScript(miniScript) {}
2187 const string getMethodName()
override {
2188 return "gui.parentnode.replaceSubNodes";
2190 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2191 string parentNodeId;
2193 bool resetScrollOffsets =
true;
2194 if (EngineMiniScript::getStringValue(argumentValues, 0, parentNodeId,
false) ==
false ||
2195 EngineMiniScript::getStringValue(argumentValues, 1, xml,
false) ==
false ||
2196 EngineMiniScript::getBooleanValue(argumentValues, 2, resetScrollOffsets,
true) ==
false) {
2197 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2198 miniScript->startErrorScript();
2201 if (parentNode !=
nullptr) {
2204 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no parent node found for given parent node id '" + parentNodeId +
"'");
2205 miniScript->startErrorScript();
2209 const vector<string>& getContextFunctions() {
2213 registerMethod(
new ScriptMethodGUIParentNodeReplaceSubNodes(
this));
2217 class ScriptMethodLogicSignalSend:
public ScriptMethod {
2223 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
2224 { .type = ScriptVariableType::TYPE_STRING, .name =
"signal", .optional =
false, .reference =
false, .nullable =
false }
2226 miniScript(miniScript) {}
2227 const string getMethodName()
override {
2228 return "logic.signal.send";
2230 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2232 if (context !=
nullptr) {
2235 if (EngineMiniScript::getStringValue(argumentValues, 0, logicId) ==
true &&
2236 EngineMiniScript::getStringValue(argumentValues, 1, signal) ==
true) {
2238 auto logic =
static_cast<Logic*
>(context->getLogic(logicId));
2239 if (logic ==
nullptr) {
2240 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no logic with given id: " + logicId);
2241 miniScript->startErrorScript();
2243 vector<ScriptVariable> arguments(argumentValues.size() - 2);
2244 for (
auto i = 2; i < argumentValues.size(); i++) arguments.push_back(argumentValues[i]);
2245 logic->addSignal(signal, arguments);
2247 context->getLogicsMutex()->unlock();
2249 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2250 miniScript->startErrorScript();
2253 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no application logic context available");
2254 miniScript->startErrorScript();
2257 bool isVariadic()
const override {
2260 const vector<string>& getContextFunctions() {
2264 registerMethod(
new ScriptMethodLogicSignalSend(
this));
2268 class ScriptMethodLogicHas:
public ScriptMethod {
2275 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
2276 { .type = ScriptVariableType::TYPE_STRING, .name =
"callable", .optional =
false, .reference =
false, .nullable =
false }
2278 ScriptVariableType::TYPE_BOOLEAN
2280 miniScript(miniScript) {}
2281 const string getMethodName()
override {
2284 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2286 if (context !=
nullptr) {
2289 if (EngineMiniScript::getStringValue(argumentValues, 0, logicId) ==
false ||
2290 EngineMiniScript::getStringValue(argumentValues, 1, callable) ==
false) {
2291 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2292 miniScript->startErrorScript();
2294 context->getLogicsMutex()->lock();
2295 auto logic =
dynamic_cast<MiniScriptLogic*
>(context->getLogic(logicId));
2296 if (logic ==
nullptr || logic->getMiniScript() ==
nullptr) {
2297 returnValue.setValue(
false);
2300 auto scriptIdx = logicMiniScript->getFunctionScriptIdx(callable);
2301 if (scriptIdx == SCRIPTIDX_NONE || logicMiniScript->getScripts()[scriptIdx].callable ==
false) {
2304 returnValue.setValue(
true);
2307 context->getLogicsMutex()->unlock();
2310 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no application logic context available");
2311 miniScript->startErrorScript();
2314 const vector<string>& getContextFunctions() {
2318 registerMethod(
new ScriptMethodLogicHas(
this));
2322 class ScriptMethodLogicCall:
public ScriptMethod {
2329 { .type = ScriptVariableType::TYPE_STRING, .name =
"logicId", .optional =
false, .reference =
false, .nullable =
false },
2330 { .type = ScriptVariableType::TYPE_STRING, .name =
"callable", .optional =
false, .reference =
false, .nullable =
false }
2332 ScriptVariableType::TYPE_PSEUDO_MIXED
2334 miniScript(miniScript) {}
2335 const string getMethodName()
override {
2336 return "logic.call";
2338 void executeMethod(span<ScriptVariable>& argumentValues, ScriptVariable& returnValue,
const ScriptStatement& statement)
override {
2340 if (context !=
nullptr) {
2343 if (EngineMiniScript::getStringValue(argumentValues, 0, logicId) ==
false ||
2344 EngineMiniScript::getStringValue(argumentValues, 1, callable) ==
false) {
2345 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
2346 miniScript->startErrorScript();
2348 context->getLogicsMutex()->lock();
2349 auto logic =
dynamic_cast<MiniScriptLogic*
>(context->getLogic(logicId));
2350 if (logic ==
nullptr || logic->getMiniScript() ==
nullptr) {
2351 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no mini script logic with given id: " + logicId);
2352 miniScript->startErrorScript();
2354 auto logicMiniScript = logic->getMiniScript();
2355 auto scriptIdx = logicMiniScript->getFunctionScriptIdx(callable);
2356 if (scriptIdx == SCRIPTIDX_NONE || logicMiniScript->getScripts()[scriptIdx].callable ==
false) {
2357 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": callable not found: " + callable);
2358 miniScript->startErrorScript();
2360 #if defined (__APPLE__)
2363 vector<ScriptVariable> callArgumentValues;
2364 for (
auto i = 2; i < argumentValues.size(); i++) callArgumentValues.push_back(argumentValues[i]);
2366 span callArgumentValuesSpan(callArgumentValues);
2367 logicMiniScript->call(scriptIdx, callArgumentValuesSpan, returnValue);
2369 span callArgumentValuesSpan(argumentValues.begin() + 2, argumentValues.end());
2370 logicMiniScript->call(scriptIdx, callArgumentValuesSpan, returnValue);
2374 context->getLogicsMutex()->unlock();
2377 Console::println(getMethodName() +
"(): " + miniScript->getStatementInformation(statement) +
": no application logic context available");
2378 miniScript->startErrorScript();
2381 bool isVariadic()
const override {
2384 const vector<string>& getContextFunctions() {
2388 registerMethod(
new ScriptMethodLogicCall(
this));
2402 for (
const auto& event: keyEvents) {
2404 if (event.isProcessed() ==
true)
continue;
2406 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_PRESSED) {
2411 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_RELEASED) {
2416 if (event.getType() == GUIKeyboardEvent::KEYBOARDEVENT_KEY_TYPED) {
2434 for (
const auto& event: mouseEvents) {
2436 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_MOVED) {
2441 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_PRESSED) {
2442 if (event.getButton() != GUIMouseEvent::MOUSEEVENT_BUTTON_NONE) {
2443 mouseDown[
event.getButton() - 1] =
true;
2446 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_DRAGGED) {
2447 if (event.getButton() != GUIMouseEvent::MOUSEEVENT_BUTTON_NONE) {
2453 if (event.getType() == GUIMouseEvent::MOUSEEVENT_RELEASED) {
2454 if (event.getButton() != GUIMouseEvent::MOUSEEVENT_BUTTON_NONE) {
2455 mouseUp[
event.getButton() - 1] =
true;
2459 if (event.isProcessed() ==
false && event.getType() == GUIMouseEvent::MOUSEEVENT_WHEEL_MOVED) {
LogicMiniScript * getMiniScript()
static GUIScreenNode * parse(const string &pathName, const string &fileName, const unordered_map< string, string > &variables={}, const EngineMiniScript::ScriptVariable &miniScriptArguments=EngineMiniScript::ScriptVariable(), Context *context=nullptr)
Parses a GUI XML file.
void addRenderScreen(const string &screenId, int screenIdx=-1)
Add render screen.
GUIScreenNode * getScreen(const string &id)
Get screen.
void addScreen(const string &id, GUIScreenNode *screen)
Add screen.
GUINodeConditions & getActiveConditions()
void setSource(const string &source)
Set image source.
bool add(const string &condition)
Add a condition.
bool removeAll()
Remove all.
bool remove(const string &condition)
Remove a condition.
void set(const string &condition)
Set condition.
const vector< string > & getConditions() const
GUI node controller base class.
virtual void setValue(const MutableString &value)=0
Set value.
GUINodeController * getController()
GUI parent node base class thats supporting child nodes.
void replaceSubNodes(const string &xml, bool resetScrollOffsets)
Replace sub nodes with given XML.
void clearSubNodes()
Clear sub nodes.
void addSubNodes(const string &xml, bool resetScrollOffsets)
Add sub nodes with given XML.
GUI screen node that represents a screen that can be rendered via GUI system.
void getProjectFilePathNameAndFileName(const string &fileName, string &projectFilePathName, string &projectFileFileName)
Get project path and filename of given file name.
void setEnabled(bool enabled)
Set enabled.
GUIMiniScript * getMiniScript()
GUINode * getNodeById(const string &nodeId)
Get GUI node by id.
void setText(const MutableString &text)
Set text.
void setSource(const string &source)
Set image source.
array< bool, 8 > mouseDragging
array< bool, 8 > mouseDown
const string getBaseClass()
virtual ~GUIMiniScript()
Destructor.
void collectHIDEvents(vector< GUIMouseEvent > &mouseEvents, vector< GUIKeyboardEvent > &keyEvents)
Collect HID events.
unique_ptr< GUIScreenNode > nextScreenNode
unordered_set< int32_t > keyboardKeys
static STATIC_DLL_IMPEXT const vector< string > CONTEXTFUNCTION_GUI
string keyboardTypedChars
GUIScreenNode * screenNode
void registerStateMachineStates() override
const vector< string > getTranspilationUnits()
unordered_set< int32_t > keyboardChars
void registerVariables() override
void registerMethods() override
File system singleton class.
void lock()
Locks the mutex, additionally mutex locks will block until other locks have been unlocked.
void setValue(ScriptVariable &variable, bool value)
Set boolean value from given value into variable.
Mutable utf8 aware string class.
UTF8 string character iterator.
std::exception Exception
Exception base class.
GUI action listener interface.