Mercurial > hg > batmud > alchtool
view herbs/index.php @ 84:7ec0ad742009
Rename directory.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 09 Mar 2015 10:11:04 +0200 |
parents | info/index.php@3428ff77ff47 |
children | 95781f84cbe7 |
line wrap: on
line source
<?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" => 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, ";")) { $sdata = 0; foreach (preg_split("/, */", $data[1]) as $value) { if ($value != "") $sdata |= tlGetSeasonFromName($value, TRUE); } $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 href="style.css" title="compact" rel="stylesheet" type="text/css"> </head> <body> <table> <caption>Some stupid plants</caption> <tr> <th>Plant name</th> <th>Seasons</th> <th>Terrain types</th> <th>Herb pair</th> <th>Information</th> </tr> <?php $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>