changeset 78:03c54e5b60aa

Improve this silly thing as well.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 13 Mar 2014 02:02:17 +0200
parents 3f30d4d59278
children d818defbb3a6 cee8d7e68474
files info/herb.php
diffstat 1 files changed, 130 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/info/herb.php	Thu Mar 13 00:38:31 2014 +0200
+++ b/info/herb.php	Thu Mar 13 02:02:17 2014 +0200
@@ -1,10 +1,105 @@
+<?php
+$terrainData = array(
+  array("light forests"   , "lf", "f"),
+  array("heavy forests"   , "hf", "F"),
+  array("plains"          , "pl", "."),
+  array("valleys"         , "va", "v"),
+  array("fields"          , "fi", "y"),
+  array("highlands"       , "hg", "H"),
+  array("hills"           , "hi", "h"),
+  array("desert"          , "de", "d"),
+  array("swamps"          , "sw", "s"),
+  array("abandoned ruins" , "ru", "#"),
+  array("shores"          , "sh", "z"),
+  array("beaches"         , "be", "b"),
+  array("jungles"         , "ju", "j"),
+  array("tundra"          , "tu", "t"),
+  array("shallow water"   , "wa", "S"),
+  array("mountains"       , "mo", "^"),
+  array("badlands"        , "ba", "x"),
+);
+
+$seasonData = array(
+  "spring", "summer", "autumn", "winter",
+);
+
+
+function tlGetTerrainDataByName($name)
+{
+  global $terrainData;
+  foreach ($terrainData as $rkey => $rdata)
+  {
+    if ($rdata[0] == $name)
+      return $rkey;
+  }
+
+  die("Unsupported terrain type '".$name."'.\n");
+}
+
+
+function tlGetTerrainDataByCode($val)
+{
+  global $terrainData;
+  foreach ($terrainData as $rkey => $rdata)
+  {
+    if ($rdata[1] == $val)
+      return $rkey;
+  }
+
+  return FALSE;
+}
+
+
+function tlGetSeasonFromName($name)
+{
+  global $seasonData;
+  if (($season = array_search($name, $seasonData)) === FALSE)
+    die("Invalid season name '".$name."'.\n");
+  
+  return $season;
+}
+
+
+$fh = @fopen("herbs.csv", "r");
+$herbData = array();
+if ($fh !== FALSE)
+{
+  while ($data = fgetcsv($fh, 1000, ";"))
+  {
+    $sdata = array();
+    foreach (preg_split("/, */", $data[1]) as $value)
+    {
+      if ($value != "")
+        $sdata[] = tlGetSeasonFromName($value);
+    }
+
+    $rdata = array();
+    foreach (preg_split("/, */", $data[2]) as $value)
+    {
+      if ($value != "")
+        $rdata[] = tlGetTerrainDataByName($value);
+    }
+    
+    $herbData[] = array(
+      "name"    => $data[0],
+      "seasons" => $sdata,
+      "terrains" => $rdata,
+      "pair" => $data[3],
+      "info" => $data[4],
+    );
+  }
+  fclose($fh);
+}
+
+
+?>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<HTML>
- <HEAD>
-  <TITLE>Some stupid plants</TITLE>
-  <LINK rel="stylesheet" href="style.css" type="text/css">
- </HEAD>
- <BODY>
+<html>
+ <head>
+  <title>Some stupid plants</title>
+  <link href="style.css" title="compact" rel="stylesheet" type="text/css">
+ </head>
+<body>
 <table>
 <caption>Some stupid plants</caption>
 <tr>
@@ -14,51 +109,41 @@
 <th>Herb pair</th>
 <th>Information</th>
 </tr>
+<?php
+$filter = -1;
+if (isset($_GET["terrain"]))
+{
+  $data = tlGetTerrainDataByCode(strtolower(trim($_GET["terrain"])));
+  if ($data !== FALSE)
+    $filter = $data;
+}
 
-<?
-$row=0;
-$kahva=fopen("herbs.csv","r");
-while ($data=fgetcsv($kahva,1000,";"))
+$row = 0;
+foreach ($herbData as $data)
 {
+  if ($filter >= 0 && array_search($filter, $data["terrains"]) === FALSE)
+    continue;
+
   $row++;
-  $foo="";
-  if (!($row % 2)) $foo=" class=even";
-  echo "<tr$foo>";
-  echo "<td>$data[0]</td>";
-  echo "<td>$data[1]</td>";
-#  echo "<td>$data[2]</td>";
-  echo "<td>";
-  $tada=explode(", ",$data[2]);
-  foreach ($tada as $value) 
+  echo
+    "<tr class=\"".(($row % 2) ? "even" : "odd")."\">".
+    "<td>".$data["name"]."</td>".
+    "<td>".implode(", ", $data["seasons"])."</td>".
+    "<td>";
+
+  foreach ($data["terrains"] as $rkey)
   {
-    switch ($value)
-    {
-      case "light forests": echo "<span class=lf>f</span> ";break;
-      case "heavy forests": echo "<span class=hf>F</span> ";break;
-      case "plains": echo "<span class=pl>p</span> ";break;
-      case "valleys": echo "<span class=va>v</span> ";break;
-      case "fields": echo "<span class=fi>y</span> ";break;
-      case "highlands": echo "<span class=hg>i</span> ";break;
-      case "hills": echo "<span class=hi>h</span> ";break;
-      case "desert": echo "<span class=de>d</span> ";break;
-      case "swamps": echo "<span class=sw>s</span> ";break;
-      case "abandoned ruins": echo "<span class=ru>#</span> ";break;
-      case "shores": echo "<span class=sh>z</span> ";break;
-      case "beaches": echo "<span class=be>b</span> ";break;
-      case "jungles": echo "<span class=ju>j</span> ";break;
-      case "tundra": echo "<span class=tu>t</span> ";break;
-      case "shallow water": echo "<span class=wa>S</span> ";break;
-      case "mountains": echo "<span class=mo>^</span> ";break;
-      case "badlands": echo "<span class=ba>x</span> ";break;
-      default: echo $value;
-    }
+    $rdata = $terrainData[$rkey];
+    echo "<a href=\"?terrain=".$rdata[1]."\"><span class=\"".$rdata[1]."\">".$rdata[2]."</span></a>";
   }
-  echo "</td>";
-  echo "<td>$data[3]</td>";
-  echo "<td>$data[4]</td>";
-  echo "</tr>";
+
+  echo
+    "</td>".
+    "<td>".$data["pair"]."</td>".
+    "<td>".$data["info"]."</td>".
+    "</tr>\n";
 }
 ?>
 </table>
 </body>
-</html>
\ No newline at end of file
+</html>