changeset 250:233141af4dcf misc

Import "new" file.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 07 Mar 2015 23:09:06 +0200
parents 80960990f8cd
children caad98cd707a
files materials/info.php
diffstat 1 files changed, 324 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/materials/info.php	Sat Mar 07 23:09:06 2015 +0200
@@ -0,0 +1,324 @@
+<?
+$pageTitle = "Pupunen BatMUD Alloy Browser";
+$pageIndex = "info.php";
+
+require "msitegen.inc.php";
+require "materials.inc.php";
+require "alloys.inc.php";
+
+
+$showOnly = intval(stGetRequestItem("o", 0, TRUE));
+
+if (isset($_GET["m"]))
+{
+  $showMat = strtolower($_GET["m"]);
+  $showMatName = strtoupper(substr($showMat,0,1)).substr($showMat, 1);
+}
+
+$swapRows = (isset($_GET["swap"]) && is_array($_GET["swap"])) ? $_GET["swap"] : array();
+
+
+function matLink($mat, $title = "")
+{
+  $tmp = ($title != "") ? " title=\"".chentities($title)."\"" : "";
+  return "<a href=\"/mat/".urlencode($mat)."\"".$tmp.">".chentities($mat)."</a>";
+}
+
+
+function addValueStyle($n)
+{
+  if ($n >= 40) $str = 40;
+  else
+  if ($n >= 20) $str = 20;
+  else
+  if ($n >= 10) $str = 10;
+  else
+  if ($n >= 5)  $str = 5;
+  else
+  if ($n > 0)   $str = 0;
+  else
+    return "";
+
+  return " class=\"hits".$str."\"";
+}
+
+
+cmPrintPageHeader($pageTitle, "
+ <meta name=\"robots\" content=\"nofollow\" />
+ <style type=\"text/css\">
+   span.alternate { color: red; font-weight: bold; }
+   td.hits20 a, .hits20 { color: black; }
+
+   td.hits40, .hits40 { background: #0f0; color: white; }
+   td.hits20, .hits20 { background: #0c0; color: black; }
+   td.hits10, .hits10 { background: #080; }
+   td.hits5, .hits5  { background: #750; }
+   td.hits0, .hits0  { background: #420; }
+   td.nohits, .nohits { background: black; }
+   td.impossible { background: black; color: #f00; text-align: center; }
+ </style>
+");
+?>
+<h1><? echo $pageTitle; ?></h1>
+<form action="<? echo $pageIndex; ?>" method="get">
+<table class="optionsTable" width="100%">
+ <tr>
+  <th width="25%">Show type</th>
+  <td rowspan="3" class="infobox">
+   [<a href="<? echo $pageIndex; ?>">Reset/Clear</a>] [<a href="index.php">Material browser</a>]
+   <br />
+   <ul>
+    <li><b>Also available in <a href="alloys.txt">ASCII plaintext format</a>.</b></li>
+    <li>Only 2-material alloys are currently supported by this browser.
+    <b>Yes, I know some you think that this project is "useless".</b></li>
+    <li>There may be bugs and lots of combinations are not researched yet.</li>
+    <li>The cell colour reflects how "reliable" the information is:
+     <b>
+     <span class="hits0">1-4 tries</span>,
+     <span class="hits5">5-9 tries</span>,
+     <span class="hits10">10-19 tries</span>,
+     <span class="hits20">20..39 tries</span>,
+     <span class="hits40">40 or more</span></b>.
+    </li>
+   </ul>
+  </td>
+ </tr>
+ <tr>
+  <td class="icenter">
+   <select name="o">
+<?
+$typeTable = array(
+  0  => array("Organic + cloth (sewing)",      0, 1),
+  1  => array("Wood + bone (carpentry)",       5, 3),
+  2  => array("Metal + alloy (blacksmithing)", 4, 7),
+  3  => array("Stone (masonry)",               6, -1),
+  4  => array("Gem (gemcutting)",              10, -1),
+  5  => array("Inorganic (sculpture)",         8, -1),
+  6  => array("Glass (glassblowing)",          9, -1),
+
+  7  => array("Organic",                       0, -1),
+  8  => array("Wood",                          5, -1),
+  9  => array("Metal",                         4, -1),
+
+  10 => array("Cloth",                         -1, 1),
+  11 => array("Bone",                          -1, 3),
+  12 => array("Alloy",                         -1, 7),
+);
+
+foreach ($typeTable as $key => $value)
+{
+  echo
+    "    <option value=\"$key\"".
+    ($showOnly == $key ? " selected=\"selected\"" : "").
+    ">".chentities($value[0])."</option>\n";
+}
+
+?>
+   </select>
+  </td>
+ </tr>
+ <tr>
+  <td class="icenter"><input type="submit" value=" Filter " class="isubmit" /></td>
+ </tr>
+</table>
+</form>
+<?
+if (isset($showMat))
+{
+  if (!isset($matTable[$showMat]))
+  {
+    echo
+      "<h2>Error! No such material '".$showMatName."'</h2>\n".
+      "<p>Material is not known. Check spelling.</p>\n";
+  }
+  else
+  {
+    echo "<h2>".$showMatName."</h2>\n".
+    "<table width=\"95%\">\n".
+    "<tr>";
+
+    $n = 0;
+    foreach ($matTable[$showMat] as $key => $val)
+    {
+      echo "<th>".chentities($transNameTable[$key+1])."</th><td>";
+      if (is_array($val))
+      {
+        reset($val);
+        if (list($nam, $lode) = each($val))
+          echo chentities($transTable[$key][$lode]);
+
+        while (list($nam, $lode) = each($val))
+          echo ", ".chentities($transTable[$key][$lode]);
+      }
+      else
+      {
+        echo chentities($transTable[$key][$val]);
+      }
+      echo "</td>";
+      if ($n++ >= 2) { echo "</tr>\n<tr>"; $n = 0; }
+    }
+    
+    echo "</tr>\n</table>\n";
+    
+    echo "<h3>Alloy combinations</h3>\n";
+    if (isset($alloyRevTable[$showMat]))
+    {
+      echo "<ul>\n";
+
+      foreach ($alloyRevTable[$showMat] as $mat => $value)
+      {
+        echo " <li>".matLink($mat)." <b>+</b> ";
+
+        reset($value);
+        if (list($a, $b) = each($value))
+          echo matLink($a);
+        
+        while (list($a, $b) = each($value))
+          echo " <b>|</b> ".matLink($a);
+        
+        echo "<b> = ".chentities($showMat)."</b></li>\n";
+      }
+      echo "</ul>\n";
+    }
+    else
+    {
+      echo "<p>No known alloy combinations.</p>\n";
+    }
+
+/*
+    $typeMats = array();
+    foreach ($matTable as $name => $data) {
+      if ($data[14] == $matTable[$showMat][14] && $name != $showMat)
+        $typeMats[] = $name;
+    }
+
+    echo "Full mix: ";
+    if (list($a, $b) = each($typeMats))
+      echo matLink($b);
+        
+    while (list($a, $b) = each($typeMats))
+      echo " <b>+</b> ".matLink($b);
+    echo "<br />\n";
+*/
+
+    echo "<h3>Mixtable</h3>\n";
+    if (count($alloyTable[$showMat]) > 0)
+    {
+      echo
+      "<table class=\"matTable\">".
+      " <tr>\n".
+      "  <th>+</th>\n";
+      foreach ($alloyTable[$showMat] as $key => $value)
+      {
+        echo "<th>".matLink($key)."</th>\n";
+      }
+      echo " </tr>\n".
+      " <tr><th>".chentities($showMat)."</th>";
+      foreach ($alloyTable[$showMat] as $key => $value)
+      if (list($a, $b) = each($value))
+      {
+        echo "<td ".addValueStyle($b).">".matLink($a)."</td>";
+      }
+      echo "</tr></table>\n";
+    }
+    else
+    {
+      echo "<p>No mixtable entries.</p>\n";
+    }
+  }
+}
+else
+{
+  /*
+   * Print alloy table for given material type
+   */
+  // Filter table from maintable matching desired material type(s)
+  $currTable = array();
+  foreach ($matTable as $name => $data)
+  {
+    if ($data[14] == $typeTable[$showOnly][1] ||
+        $data[14] == $typeTable[$showOnly][2])
+      $currTable[] = $name;
+  }
+  
+  // Swap desired rows
+  if (count($swapRows) > 0)
+  {
+    $str = array();
+    $nkeys = count($currTable);
+    foreach ($swapRows as $from => $to)
+    if ($from >= 0 && $from < $nkeys && $to >= 0 && $to < $nkeys && $to != $from)
+    {
+      $str[] = $from." &lt;=&gt; ".$to;
+
+      $tmp = $currTable[$from];
+      $currTable[$from] = $currTable[$to];
+      $currTable[$to] = $tmp;
+    }
+    if (count($str) > 0)
+      echo "<p>Swapped rows: ".implode(", ", $str)."</p>\n";
+  }
+
+
+  // Print out the table
+  echo
+    "<table class=\"alloyTable\">".
+    " <tr>\n".
+    "  <th>-</th>\n";
+  
+  foreach ($currTable as $name)
+  {
+    echo "  <th>".matLink($name)."</th>\n";
+  }
+  echo " </tr>\n";
+
+  foreach ($currTable as $mat1)
+  {
+    echo " <tr><th>".matLink($mat1)."</th>";
+    foreach ($currTable as $mat2)
+    {
+      // Is the combo possible?
+      if ($mat1 != $mat2)
+      {
+        // Check for combination result
+        if (isset($alloyTable[$mat1][$mat2]))
+          $tmp = $alloyTable[$mat1][$mat2];
+        else
+        if (isset($alloyTable[$mat2][$mat1]))
+          $tmp = $alloyTable[$mat2][$mat1];
+        else
+          unset($tmp);
+
+        if (isset($tmp))
+        {
+          arsort($tmp);
+          $value = 0;
+          foreach ($tmp as $a => $b)
+            $value += $b;
+
+          $slist = array();
+          foreach ($tmp as $a => $b)
+          {
+            $slist[] = matLink($a,
+              $b." successful alloys (".$mat1." + ".$mat2." = ".$a.")".
+              (count($tmp) > 1 ? " [UNSTABLE]" : ""));
+          }
+          echo
+            "<td".addValueStyle($value, count($tmp) > 1 ? " mitalic" : "").">".
+            join(" <span class=\"alternate\">/</span> ", $slist)."</td>";
+        }
+        else
+          echo "<td class=\"nohits\" title=\"Not researched\">?</td>";
+      }
+      else
+      {
+        echo "<td class=\"impossible\" title=\"Impossible combination\">-</td>";
+      }
+    }  
+    echo "</tr>\n";
+  }
+  echo "</table>\n";
+}
+
+cmPrintPageFooter();
+?>