]> gitweb.ps.run Git - npengine/commitdiff
key repeat, zoom
authorPatrick Schönberger <patrick.schoenberger@posteo.de>
Sat, 26 Sep 2020 14:14:46 +0000 (16:14 +0200)
committerPatrick Schönberger <patrick.schoenberger@posteo.de>
Sat, 26 Sep 2020 14:14:46 +0000 (16:14 +0200)
lvl/0.txt [new file with mode: 0644]
lvl/1.txt
src/main.cpp

diff --git a/lvl/0.txt b/lvl/0.txt
new file mode 100644 (file)
index 0000000..0245359
--- /dev/null
+++ b/lvl/0.txt
@@ -0,0 +1,31 @@
++--------------------------------------------------------+\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                                                        |\r
+|                           ?                            |\r
+|                                                        |\r
+|                                                        |\r
+|                          XXX                         O |\r
+|                                                   XXXXX|\r
+|                                             XXXXXXXXXXX|\r
+|                  XXXXXXXXXXXXXXXX    XXXXXXXXXXXXXXXXXX|\r
+|        S         XXXXXXXXXXXXXXXX/\/\XXXXXXXXXXXXXXXXXX|\r
++--------------------------------------------------------+
\ No newline at end of file
index bc556f61e9e8d9412ad5a6fbff1f17c9d9d5425f..d84bddc2b93cf35f64ce030dd9a6645cd1dbff6f 100644 (file)
--- a/lvl/1.txt
+++ b/lvl/1.txt
@@ -8,24 +8,24 @@
 |                                                        |\r
 |                                                        |\r
 |  S                                                     |\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX-   -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
-|XXXXXXXXXXXXXXXXXXXXXXXXXX- O -XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX>   <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
+|XXXXXXXXXXXXXXXXXXXXXXXXXX> O <XXXXXXXXXXXXXXXXXXXXXXXXX|\r
 +--------------------------------------------------------+
\ No newline at end of file
index 4c7d99d4598e467d228d779e7f64e416b0df93ec..baa447854bfab618f8ab1031b6d4fa5f0d1b937d 100644 (file)
 #pragma comment(lib, "dinput8.lib")\r
 #pragma comment(lib, "dxguid.lib")\r
 \r
+#define CONSOLE\r
+\r
+#ifdef CONSOLE\r
+#pragma comment(linker, "/subsystem:console")\r
+#else\r
+#pragma comment(linker, "/subsystem:windows")\r
+#endif\r
+\r
 HWND hwnd = NULL;\r
 \r
 STARTUPINFOA si;\r
@@ -262,7 +270,7 @@ void update_play(bool can_jump = true, int x_min = 0, int x_max = WIDTH - 1) {
     move(0, +1);\r
 \r
   char b = get_block(x, y);\r
-  if (b == '/' || b == '\\' || b == '-')\r
+  if (b == '/' || b == '\\' || b == '<' || b == '>')\r
     move_to(spawn_x, spawn_y);\r
 }\r
 \r
@@ -334,6 +342,15 @@ void load_level(int l, bool terminate = true) {
   sprintf(title, "%d.txt - Editor", lvl);\r
   hwnd = FindWindowA(NULL, title);\r
 \r
+  SetWindowPos(hwnd, HWND_TOP, 100, 100, 960, 905, SWP_SHOWWINDOW);\r
+  SetFocus(hwnd);\r
+\r
+  for (int i = 0; i < 10; i++) {\r
+    press_down(VK_CONTROL);\r
+    press(VK_OEM_PLUS);\r
+    press_up(VK_CONTROL);\r
+  }\r
+\r
   setup();\r
 }\r
 \r
@@ -347,7 +364,7 @@ void intro() {
     break;\r
   case 1:\r
     update_play(false);\r
-    if (x == 5) {\r
+    if (x == 17) {\r
       print_text(4, 4, "Jump with up.", text_speed);\r
       print_text(4, 6, "Stand on x.", text_speed);\r
       progress++;\r
@@ -355,13 +372,13 @@ void intro() {
     break;\r
   case 2:\r
     update_play();\r
-    if (x == 8) {\r
+    if (x == 22) {\r
       print_text(4, 8, "Collect ? for ???.", text_speed);\r
       progress++;\r
     }\r
     break;\r
   case 3:\r
-    update_play(true, 0, 22);\r
+    update_play(true, 0, 33);\r
     if (get_block(x, y) == '?') {\r
       print_text(4, 10, "Avoid /\\.", text_speed);\r
       progress++;\r
@@ -383,7 +400,18 @@ void intro() {
   }\r
 }\r
 \r
-void lvl1() { update_play(); }\r
+void lvl1() {\r
+  static int progress = 0;\r
+  switch (progress) {\r
+  case 0:\r
+    print_text(4, 2, "Also avoid > and <.", text_speed);\r
+    progress++;\r
+    break;\r
+  case 1:\r
+    update_play();\r
+    break;\r
+  }\r
+}\r
 \r
 void update_game() {\r
   switch (lvl) {\r
@@ -396,14 +424,75 @@ void update_game() {
   }\r
 }\r
 \r
+void enter_keys(std::string input, int delay) {\r
+  for (int i = 0; i < input.size(); i++) {\r
+    if (input[i] == 't') {\r
+      press(VK_TAB);\r
+      Sleep(delay);\r
+    }\r
+    else if (input[i] == 's') {\r
+      press(VK_SPACE);\r
+      Sleep(delay);\r
+    }\r
+    else if (input[i] == '~') {\r
+      press_down(VK_LSHIFT);\r
+      enter_keys(input.substr(i+1, 1), delay);\r
+      press_up(VK_LSHIFT);\r
+      i++;\r
+    }\r
+    else {\r
+      int n = 0;\r
+      int len = 0;\r
+      while (input[i+len] >= '0' && input[i+len] <= '9') {\r
+        n *= 10;\r
+        n += input[i+len] - '0';\r
+        len++;\r
+      }\r
+      for (int j = 0; j < n; j++) {\r
+        if (input[i+len] == '~') {\r
+          enter_keys(input.substr(i+len, 2), delay);\r
+        }\r
+        else {\r
+          enter_keys(input.substr(i+len, 1), delay);\r
+        }          \r
+      }\r
+      if (input[i+len] == '~')\r
+        i++;\r
+      i += len;\r
+    }\r
+  }\r
+}\r
+\r
+void toggle_key_repeat() {\r
+  WinExec("c:\\windows\\system32\\control.exe /name Microsoft.EaseOfAccessCenter /page pageKeyboardEasierToUse", SW_NORMAL);\r
+  Sleep(500);\r
+\r
+  enter_keys("6ts9ts7~ts13ts5~tss6ts", 10);\r
+\r
+  Sleep(100);\r
+\r
+  press_down(VK_CONTROL);\r
+  press('W');\r
+  press_up(VK_CONTROL);\r
+\r
+  Sleep(1000);\r
+}\r
+\r
 /*\r
   Todo:\r
   - Msg Box Intro\r
   - Multi Jump\r
   - more blocks/lvls\r
   - Set Accessibility \r
+  - Lua?\r
+  - Scrolling?\r
 */\r
+#ifdef CONSOLE\r
 int main(int argc, char **argv) {\r
+#else\r
+int WinMain(HINSTANCE a0, HINSTANCE a1, LPSTR a2, int a3) {\r
+#endif\r
+  toggle_key_repeat();\r
   // Dies zu programmieren mit der reduzierten Inputrate.\r
   // Ist nicht angenehm. Ich werde es ändern.......\r
 \r
@@ -452,10 +541,10 @@ int main(int argc, char **argv) {
     keys_old[3] = keys[3];\r
 \r
     WaitForSingleObject(pi.hProcess, wait_time);\r
-\r
-    SetWindowPos(hwnd, HWND_TOPMOST, 100, 100, 500, 500, SWP_SHOWWINDOW);\r
   }\r
 \r
+  toggle_key_repeat();\r
+\r
   destroydikeyboard();\r
 \r
   // Close process and thread handles.\r