Browse Source

Added ^fXXYYfilename.

This displays an ANSI file starting
at X,Y location.  Y++ for each line.

"skull" is updated with spaces around it
so it shows up better.
skull2 doesn't.  (Compare and see?)
guy also has spaces around him on the
left side.  The right side does not.
bugz 5 years ago
parent
commit
2ff3ba0796
5 changed files with 113 additions and 57 deletions
  1. 1 2
      hh/goofy_head.ans
  2. 8 8
      hh/guy.ans
  3. 12 14
      hh/skull.ans
  4. 5 7
      hh/skull2.ans
  5. 87 26
      mystic.cpp

+ 1 - 2
hh/goofy_head.ans

@@ -20,5 +20,4 @@
 栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢�  賽栢栢栢幡�   蔔栢栢栢栢栢栢栢栢栢栢栢栢栢栢
 栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢�  賽栢栢栢幡�   蔔栢栢栢栢栢栢栢栢栢栢栢栢栢栢
 栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢�  白複複複複蔔  栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢
 栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢�  白複複複複蔔  栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢
 栢栢栢By:栢栢栢栢栢栢栢栢栢栢栢栢  栢栢栢栢栢栢  栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢
 栢栢栢By:栢栢栢栢栢栢栢栢栢栢栢栢  栢栢栢栢栢栢  栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢
-�Pretty Please栢栢栢栢栢栢栢栢栢�  栢栢栢栢栢栢  栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢
-
+�Pretty Please栢栢栢栢栢栢栢栢栢�  栢栢栢栢栢栢  栢栢栢栢栢栢栢栢栢栢栢栢栢栢栢

+ 8 - 8
hh/guy.ans

@@ -1,8 +1,8 @@
-ワ
-   ロ
-゚゚゚゚ロロロ゚゚
-    ロロロ
-    ロロロ
-    ロ ロ
-    ロ ロ
-   ゚゚ ゚゚
+         ワ 
+         ロ 
+ ゚゚゚゚ロロロ゚゚ 
+     ロロロ 
+     ロロロ 
+     ロ ロ 
+     ロ ロ 
+    ゚゚ ゚゚ 

+ 12 - 14
hh/skull.ans

@@ -1,15 +1,13 @@
 
 
-アーーーイイア
-   アーーーロロロロイイーー
-  アーーーロロロロロロイイーー
- アアアアーロロロロロロロイーーアー
- アアロロアーロロロロロロアーローー
- アーーアイアアロロローアイアアーロ
-  アーーアーロロ ロローアアロロ
-   アーーロロ イ ロローーー
-ローロイアロロロロ
-ーー゙ン イン ー
-
-ーイン ンー゙ー
-アーー ーー
-
+      アーーーイイア       
+   アーーーロロロロイイーー     
+  アーーーロロロロロロイイーー   
+ アアアアーロロロロロロロイーーアー 
+ アアロロアーロロロロロロアーローー 
+ アーーアイアアロロローアイアアーロ 
+  アーーアーロロ ロローアアロロ  
+   アーーロロ イ ロローーー     
+     ローロイアロロロロ     
+     ーー゙ン イン ー     
+     ーイン ンー゙ー      
+      アーー ーー       

+ 5 - 7
hh/skull2.ans

@@ -1,5 +1,5 @@
 
 
-アーーーイイア
+      アーーーイイア
    アーーーロロロロイイーー
    アーーーロロロロイイーー
   アーーーロロロロロロイイーー
   アーーーロロロロロロイイーー
  アアアアーロロロロロロロイーーアー
  アアアアーロロロロロロロイーーアー
@@ -7,9 +7,7 @@
  アーーアイアアロロローアイアアーロ
  アーーアイアアロロローアイアアーロ
   アーーアーロロ ロローアアロロ
   アーーアーロロ ロローアアロロ
    アーーロロ イ ロローーー
    アーーロロ イ ロローーー
-ローロイアロロロロ
-ーー゙ン イン ー
-
-ーイン ンー゙ー
-アーー ーー
-
+     ローロイアロロロロ
+     ーー゙ン イン ー
+     ーイン ンー゙ー
+      アーー ーー

+ 87 - 26
mystic.cpp

@@ -150,7 +150,7 @@ const char *repr(const char *data) {
   return buffer;
   return buffer;
 }
 }
 
 
-#define CHUNKSIZE 32
+#define CHUNKSIZE 40
 
 
 void zf_repr_chunk(int LOG_LEVEL, const char *chunk) {
 void zf_repr_chunk(int LOG_LEVEL, const char *chunk) {
   const char *output = repr(chunk);
   const char *output = repr(chunk);
@@ -760,6 +760,45 @@ int send_file(int fd, char *filename) {
   return 1;
   return 1;
 }
 }
 
 
+void send_goto(int fd, int x, int y) {
+  char gbuffer[16];
+  char * cp;
+
+  sprintf(gbuffer, "\x1b[%d;%dH", y, x);
+  write(fd, gbuffer, strlen(gbuffer));
+}
+
+int send_file(int fd, int x, int y, char *filename) {
+  FILE *fp;
+  char buffer[100];
+  int read;
+  int pos;
+  fp = fopen(filename, "rb");
+  if (fp == NULL) {
+    ZF_LOGD("Failed to open %s", filename);
+    return 0;
+  }
+
+  send_goto(fd, x,y);
+  y++;
+  char *cp, * last_cp;
+
+  while ((read = fread(buffer, 1, sizeof(buffer), fp)) > 0) {
+    buffer[read] = 0;
+    last_cp = buffer;
+    while ( ( cp = strchr(last_cp, '\n')) != NULL) {
+      *cp = 0;
+      write(fd, last_cp, strlen(last_cp)); 
+      send_goto(fd, x,y);
+      y++;
+      last_cp = cp + 1;
+    };
+    write(fd, last_cp, strlen(last_cp));
+  };
+  fclose(fp);
+  return 1;
+}
+
 /**
 /**
  * process_trigger( fd, *cp )
  * process_trigger( fd, *cp )
  *
  *
@@ -772,7 +811,7 @@ int send_file(int fd, char *filename) {
 const char *process_trigger(int fd, const char *cp) {
 const char *process_trigger(int fd, const char *cp) {
   char ch;
   char ch;
   int i, x, y;
   int i, x, y;
-  ch = toupper(*cp);
+  ch = *cp;
   cp++;
   cp++;
 
 
   switch (ch) {
   switch (ch) {
@@ -817,7 +856,23 @@ const char *process_trigger(int fd, const char *cp) {
     write_color(fd, i);
     write_color(fd, i);
   } break;
   } break;
 
 
-  case 'F': {
+  case 'F':
+  case 'f': {
+    int x, y, pos = 0;
+    if (ch == 'f') {
+      pos = 1;
+      x = (*cp) - '0';
+      cp++;
+      x *= 10;
+      x += (*cp) - '0';
+      cp++;
+      y = (*cp) - '0';
+      cp++;
+      y *= 10;
+      y += (*cp) - '0';
+      cp++;
+      ZF_LOGI( "file at (%d, %d)", x, y);
+    }
     // Ok, look for filename
     // Ok, look for filename
     char ansifile[32] = "./hh/";
     char ansifile[32] = "./hh/";
     char *ap = ansifile + strlen(ansifile);
     char *ap = ansifile + strlen(ansifile);
@@ -830,7 +885,11 @@ const char *process_trigger(int fd, const char *cp) {
     strcat(ansifile, ".ans");
     strcat(ansifile, ".ans");
     cp++;
     cp++;
     ZF_LOGD("FILE [%s]", ansifile);
     ZF_LOGD("FILE [%s]", ansifile);
-    send_file(fd, ansifile);
+    if (pos) {
+      send_file(fd, x, y, ansifile);
+    } else {
+      send_file(fd, ansifile);
+    };
   } break;
   } break;
 
 
   case 'G': {
   case 'G': {
@@ -966,7 +1025,7 @@ void render(int fd, const char *string_out) {
 
 
   reset_render();
   reset_render();
 
 
-  ZF_LOGD("render(%d, %s)", fd, repr(string_out));
+  ZF_LOGV("render(%d, %s)", fd, repr(string_out));
 
 
   // Check our time from time to time.
   // Check our time from time to time.
   // If we start running long, disable sleeps.
   // If we start running long, disable sleeps.
@@ -1066,9 +1125,7 @@ void harry_idle_event(int fd) {
   */
   */
 
 
   sprintf(buffer, "^S2^C%02d%s^P2^CR^D%02d", color, cp, (int)strlen(cp));
   sprintf(buffer, "^S2^C%02d%s^P2^CR^D%02d", color, cp, (int)strlen(cp));
-
   ZF_LOGD("harry_event: render(%d, \"%s\")", fd, buffer);
   ZF_LOGD("harry_event: render(%d, \"%s\")", fd, buffer);
-
   render(fd, buffer);
   render(fd, buffer);
 }
 }
 
 
@@ -1358,7 +1415,6 @@ int mangle(int fd, char *buffer) {
 
 
   ZF_LOGI("mangle:");
   ZF_LOGI("mangle:");
   ZF_LOGI_REPR(buffer);
   ZF_LOGI_REPR(buffer);
-  ZF_LOGI("mangle(%s)", repr(buffer));
   // strcpy(work, buffer);
   // strcpy(work, buffer);
 
 
   /*
   /*
@@ -1375,11 +1431,10 @@ int mangle(int fd, char *buffer) {
       display ANSI graphic file, with delays ... then CLS
       display ANSI graphic file, with delays ... then CLS
    */
    */
   const char *ANSI_CLS = "\x1b[2J";
   const char *ANSI_CLS = "\x1b[2J";
-  static int ANSI_CLS_count = 0; // count the number we've seen
-
   cp = strstr(buffer, ANSI_CLS);
   cp = strstr(buffer, ANSI_CLS);
 
 
   if (cp != NULL) {
   if (cp != NULL) {
+    static int ANSI_CLS_count = 0; // count the number we've seen
     ZF_LOGI("seen: ANSI_CLS");
     ZF_LOGI("seen: ANSI_CLS");
     ANSI_CLS_count++;
     ANSI_CLS_count++;
 
 
@@ -1398,23 +1453,20 @@ int mangle(int fd, char *buffer) {
       if (random_activate(3)) {
       if (random_activate(3)) {
         char display[100] = "";
         char display[100] = "";
         int needs_cls = 0;
         int needs_cls = 0;
+
         struct file_need {
         struct file_need {
           const char *filename;
           const char *filename;
           int cls;
           int cls;
-        } possibles[] = {
-            {"goofy_head", 1},
-            {
-                "bat",
-                1,
-            },
-            {"panther", 1},
-            {"wolf", 1}
-
-            //          bat.ans       creature.ans  goofy_head.ans  panther.ans
-            //          skull.ans
-            // blinkman.ans  dog.ans       guy.ans         skull2.ans   wolf.ans
+          int rand_pos;
+        } possibles[] = {{"goofy_head", 1, 0}, {"bat", 1, 0},
+                         {"panther", 1, 0},    {"wolf", 1, 0},
+                         {"skull", 0, 1},      {"skull2", 0, 1},
+                         {"guy", 0, 1},        {"blinkman", 0, 1}};
+
+        //          bat.ans       creature.ans  goofy_head.ans  panther.ans
+        //          skull.ans
+        // blinkman.ans  dog.ans       guy.ans         skull2.ans   wolf.ans
 
 
-        };
         static LastSeen last_files(2);
         static LastSeen last_files(2);
         int r;
         int r;
 
 
@@ -1422,6 +1474,16 @@ int mangle(int fd, char *buffer) {
           r = randint((sizeof(possibles) / sizeof(file_need)));
           r = randint((sizeof(possibles) / sizeof(file_need)));
         } while (last_files.seen_before(r));
         } while (last_files.seen_before(r));
 
 
+        int x, y;
+        x = randint(50) + 1;
+        y = randint(12) + 1;
+        char fgoto[10];
+        if (possibles[r].rand_pos) {
+          sprintf(fgoto, "^f%02d%02d", x, y);
+        } else {
+          strcpy(fgoto, "^F");
+        }
+
         // (2); // (sizeof(possibles) / sizeof(file_need)) - 1);
         // (2); // (sizeof(possibles) / sizeof(file_need)) - 1);
         needs_cls = possibles[r].cls;
         needs_cls = possibles[r].cls;
 
 
@@ -1433,8 +1495,8 @@ int mangle(int fd, char *buffer) {
         // I tried a ^P2 before doing this .. but I'd rather have the picture up
         // I tried a ^P2 before doing this .. but I'd rather have the picture up
         // right away I think.
         // right away I think.
 
 
-        sprintf(display, "%s^F%s.^P3%s", needs_cls ? "\x1b[2J" : "\n\r\n\r",
-                possibles[r].filename, restore_color);
+        sprintf(display, "%s%s%s.^P3%s", needs_cls ? "\x1b[2J" : "",
+                fgoto, possibles[r].filename, restore_color);
 
 
         ZF_LOGI("mangle(ANSI_CLS): %d file inserted %s", r, repr(display));
         ZF_LOGI("mangle(ANSI_CLS): %d file inserted %s", r, repr(display));
 
 
@@ -1507,7 +1569,6 @@ int mangle(int fd, char *buffer) {
           if (string_insert(buffer, BSIZE * 4, cp - buffer, display)) {
           if (string_insert(buffer, BSIZE * 4, cp - buffer, display)) {
             ZF_LOGI("mangle(ANSI_CLS):");
             ZF_LOGI("mangle(ANSI_CLS):");
             ZF_LOGI_REPR(buffer);
             ZF_LOGI_REPR(buffer);
-            ZF_LOGI("mangle(ANSI_CLS): [%s]", repr(buffer));
             need_render = 1;
             need_render = 1;
 
 
             /*
             /*