Mercurial > hg > batmud > alchtool
view herbs/index.php @ 89:eb5b6db2b250 default tip
Fixes.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 19 Oct 2017 17:42:05 +0300 |
parents | 95781f84cbe7 |
children |
line wrap: on
line source
<?php $pageTitle = "Some stupid plants (original by Jeskko, improved by Ggr)"; $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" => 0x01, "summer" => 0x02, "autumn" => 0x04, "winter" => 0x08, ); 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 -1; } function tlGetSeasonFromName($name, $fail = FALSE) { global $seasonData; foreach ($seasonData as $rkey => $rval) { if ($rkey == $name) return $rval; } if ($fail) die("Invalid season name '".$name."'.\n"); else return 0; } function tlGetSeasonsFromFlags($val) { $res = array(); global $seasonData; foreach ($seasonData as $rkey => $rval) { if ($val & $rval) $res[] = $rkey; } return $res; } // // Parse data from CSV input // $herbData = array(); if (($fh = @fopen("herbs.csv", "r")) !== FALSE) { while ($data = fgetcsv($fh, 1000, ";")) { // Fix undefined columns for ($n = 0; $n <= 4; $n++) if (!isset($data[$n])) $data[$n] = ""; // Parse seasons $sdata = 0; foreach (preg_split("/, */", $data[1]) as $value) { if ($value != "") $sdata |= tlGetSeasonFromName($value, TRUE); } // Parse terrains $rdata = array(); foreach (preg_split("/, */", $data[2]) as $value) { if ($value != "") $rdata[] = tlGetTerrainDataByName($value); } // Put it all into an array $herbData[] = array( "name" => $data[0], "seasons" => $sdata, "terrains" => $rdata, "pair" => $data[3], "info" => $data[4], ); } fclose($fh); } echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n". "<html>\n". " <head>\n". " <title>".$pageTitle."</title>\n". " <link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">\n". " </head>\n". "<body>\n". "<table>\n". " <caption>".$pageTitle."</caption>\n". " <tr>\n". " <th>Plant name</th>\n". " <th>Seasons</th>\n". " <th>Terrain types</th>\n". " <th>Herb pair</th>\n". " <th>Information</th>\n". " </tr>\n"; $sefilter = FALSE; $trfilter = FALSE; if (isset($_GET["terrain"])) { $data = tlGetTerrainDataByCode(strtolower(trim($_GET["terrain"]))); if ($data >= 0) $trfilter = $data; } if (isset($_GET["season"])) { $data = tlGetSeasonFromName(strtolower(trim($_GET["season"]))); if ($data > 0) $sefilter = $data; } $row = 0; foreach ($herbData as $data) { if ($trfilter !== FALSE && array_search($trfilter, $data["terrains"]) === FALSE) continue; if ($sefilter !== FALSE && ($data["seasons"] & $sefilter) == 0) continue; $seasons = array_map(function($x) { return "<a href=\"?season=".$x."\">".$x."</a>"; }, tlGetSeasonsFromFlags($data["seasons"])); $row++; echo " <tr class=\"".(($row % 2) ? "even" : "odd")."\">". "<td>".$data["name"]."</td>". "<td>".implode(", ", $seasons)."</td>". "<td>"; foreach ($data["terrains"] as $rkey) { $rdata = $terrainData[$rkey]; echo "<a href=\"?terrain=".$rdata[1]."\"><span class=\"".$rdata[1]."\">".$rdata[2]."</span></a>"; } echo "</td>". "<td>".$data["pair"]."</td>". "<td>".$data["info"]."</td>". "</tr>\n"; } ?> </table> </body> </html>