gamebook
[mirrors/Programs.git] / misc / gbook_offline / gb_console.php
diff --git a/misc/gbook_offline/gb_console.php b/misc/gbook_offline/gb_console.php
new file mode 100644 (file)
index 0000000..efa343f
--- /dev/null
@@ -0,0 +1,189 @@
+<?php\r
+\r
+//READLINE Function\r
+function readline($prompt="") {\r
+  echo $prompt;\r
+  \r
+  /*\r
+  $ifp = fopen("php://stdin", "r");  //PHP <= 4\r
+  $line = fgets($ifp, 999); //PHP <= 4\r
+  fclose($ifp); //PHP <= 4\r
+  */\r
+  \r
+  $line = fgets(STDIN, 999); //PHP >= 5\r
+  return trim($line);\r
+}\r
+//READLINE End\r
+\r
+//Hobit-01.txt\r
+\r
+//Settings:\r
+$prompt = "\n> ";\r
+$random_out = "Random judged: ";\r
+$nextf_out = "\nNext file: ";\r
+exec("chcp 1250"); //Only Windows - set CP1250 - national alphabets - needed for Cestina ;)\r
+\r
+//CODE\r
+//Init:\r
+$game = ""; //Hra natazena v pameti\r
+$file = ""; //Posledni otevreny soubor\r
+$nextf = ""; //Soubor nacteny z odkazu\r
+$pos = 2; //Pozice ve hre\r
+$histpos = "1";\r
+$hist[$histpos] = "START";\r
+\r
+\r
+echo(\r
+"OGB Engine 0.6\n".\r
+"Harvie 2oo7\n".\r
+"http://gbook.wz.cz/\n".\r
+"-----------------------\n".\r
+"Type h[ENTER] for help.\n"\r
+);\r
+\r
+while(1) {\r
+\r
+  $in_line = readline($prompt); \r
+  $in_cmds = explode(" ", $in_line);\r
+  $in_cmds[0] = strtolower($in_cmds[0]);\r
+  \r
+  //h - print help\r
+  if ($in_cmds[0] == "h") {\r
+    echo(\r
+    "HELP:\n".\r
+    "h - Show help\n".\r
+    "f - Show files\n".\r
+    "l file - Load file\n".\r
+    "l URL - Load file from HTTP or FTP\n".\r
+    "y - set CP 1250 ONLY WINDOWS!!! (for some national characters)\n".\r
+    "# - Go to line #\n".\r
+    "2 - Go to start\n".\r
+    "p - Print history\n".\r
+    "n - Load next file from link\n".\r
+    "r - Reload file\n".\r
+    "c - Close file\n".\r
+    "q - Quit\n"\r
+    );  \r
+  }\r
+\r
+  //l - load game\r
+  if ($in_cmds[0] == "l") {\r
+    if ( file_exists( trim($in_cmds[1]) ) || strpos(" ".$in_cmds[1], ":") )\r
+      {\r
+        if ( strpos(" ".$in_cmds[1], ":") ) {\r
+          echo("DOWNLOADING...\n");\r
+        }\r
+        $game = file( trim($in_cmds[1]) );\r
+        $file = trim($in_cmds[1]);\r
+        $histpos++;\r
+        $hist[$histpos] = "\nLOAD: ".trim($in_cmds[1])."\n";\r
+        echo("LOADED: $in_cmds[1]\n");\r
+        print_r(explode("|", $game[0]));\r
+        echo("\n");\r
+      }\r
+      else\r
+      {\r
+        echo("CAN'T LOAD: $in_cmds[1]\n");\r
+      }\r
+  }\r
+  \r
+  //r - reload\r
+  if ($in_cmds[0] == "r") {\r
+    $histpos++;\r
+    $hist[$histpos] = "RELOAD";\r
+    $game = file($file);\r
+  }\r
+  \r
+  //p - history\r
+  if ($in_cmds[0] == "p") {\r
+    echo( implode(";", $hist) );\r
+  }\r
+  \r
+  //c - close\r
+  if ($in_cmds[0] == "c") {\r
+    $histpos++;\r
+    $hist[$histpos] = "CLOSE\n";\r
+    $game = ("");\r
+  }\r
+  \r
+  //# - show line\r
+  if (  is_numeric( trim($in_cmds[0]) )  ) {\r
+    $pos = round(trim($in_cmds[0]));\r
+    $posi = ($pos - 1);\r
+    if(isset($game[$posi])) {\r
+\r
+      //history\r
+      $histpos++;\r
+      $hist[$histpos] = $pos;\r
+\r
+      //nextf\r
+      if ( strpos( (" ".$game[$posi]), "%%" ) ) {\r
+        $nextf = explode("%%", $game[$posi]);\r
+        $nextf = explode("|", $nextf[1]);\r
+        $nextf = $nextf[0];\r
+      }\r
+      \r
+      //rnd\r
+      $rnd = "";\r
+      if ( strpos( (" ".$game[$posi]), "{" ) ) {\r
+        $rnd = explode("{", $game[$posi]);\r
+        $rnd = explode("}", $rnd[1]);\r
+        $rnd = explode("\\\\", $rnd[0]);\r
+        $rnd = $rnd[rand( 0, (sizeof($rnd) - 1) )];\r
+        $rnd = ($random_out.$rnd);\r
+      }\r
+      \r
+      //out\r
+      echo("$pos: ". $game[$posi]);\r
+      \r
+      //rnd\r
+      echo ($rnd);\r
+      \r
+      //nextf\r
+      if( is_file($nextf) ) {\r
+        echo($nextf_out.$nextf."\nType n[ENTER]2[ENTER] to go on.");\r
+        }\r
+    }\r
+  }\r
+  \r
+  //f - files\r
+  if ( $in_cmds[0] == "f" ) {\r
+    echo("FILES:\n\n");\r
+    $dfp=opendir('.');\r
+    while (false!==($file = readdir($dfp))) {\r
+      if ($file != "." && $file != "..") {\r
+        echo "$file\n";\r
+      }\r
+    }\r
+    closedir($dfp);\r
+  }\r
+  \r
+  //y - CP 1250 (needed for Czech language)\r
+  if ( $in_cmds[0] == "y" ) {\r
+    system("chcp 1250"); //Only Windows\r
+  }\r
+  \r
+  //i - info\r
+  if ($in_cmds[0] == "i") {\r
+    print_r(explode("|", $game[0]));\r
+    echo("\n");\r
+  }\r
+  \r
+  //n - nextfile\r
+  if ($in_cmds[0] == "n" && is_file($nextf) ) {\r
+    $game = file($nextf);\r
+    $file = $nextf;\r
+    $histpos++;\r
+    $hist[$histpos] = "\n\r
+    NEXTF: $nextf\n";\r
+    $nextf = "";\r
+  }\r
+  \r
+  //q - quit\r
+  if ($in_cmds[0] == "q") {\r
+    die("Exited by user at $file - $pos.\n");\r
+  }\r
+\r
+}\r
+\r
+?>\r
This page took 0.132841 seconds and 4 git commands to generate.