Пример #1
0
 function terrainGen($mapDoc, $terrainDoc)
 {
     $terrainArr = json_decode($terrainDoc->hexStr->hexEncodedStr);
     $map = $mapDoc->map;
     $this->terrain->mapUrl = $mapUrl = $map->mapUrl;
     $this->terrain->maxCol = $maxCol = $map->numX;
     $this->terrain->maxRow = $maxRow = $map->numY;
     $this->terrain->mapWidth = $map->mapWidth;
     //        $this->mapData->setData($maxCol, $maxRow, $mapUrl);
     \Wargame\Hexagon::setMinMax();
     //        $this->terrain->setMaxHex();
     $a = $map->a;
     $b = $map->b;
     $c = $map->c;
     $this->terrain->a = $a;
     $this->terrain->b = $b;
     $this->terrain->c = $c;
     $this->terrain->originY = $b * 3 - $map->y;
     $xOff = ($a + $c) * 2 - ($c / 2 + $a);
     $this->terrain->originX = $xOff - $map->x;
     //        $this->terrain->addTerrainFeature("town", "town", "t", 0, 0, 1, false);
 }
Пример #2
0
 function terrainGen($mapDoc, $terrainDoc)
 {
     $terrainArr = json_decode($terrainDoc->hexStr->hexEncodedStr);
     $map = $mapDoc->map;
     $this->terrain->mapUrl = $mapUrl = $map->mapUrl;
     $this->terrain->maxCol = $maxCol = $map->numX;
     $this->terrain->maxRow = $maxRow = $map->numY;
     $this->terrain->mapWidth = $map->mapWidth;
     $this->mapData->setData($maxCol, $maxRow, $mapUrl);
     Hexagon::setMinMax();
     $this->terrain->setMaxHex();
     $a = $map->a;
     $b = $map->b;
     $c = $map->c;
     $this->terrain->a = $a;
     $this->terrain->b = $b;
     $this->terrain->c = $c;
     $this->terrain->originY = $b * 3 - $map->y;
     $xOff = ($a + $c) * 2 - ($c / 2 + $a);
     $this->terrain->originX = $xOff - $map->x;
     // code, name, displayName, letter, entranceCost, traverseCost, combatEffect, is Exclusive
     $this->terrain->addTerrainFeature("offmap", "offmap", "o", 1, 0, 0, true);
     $this->terrain->addTerrainFeature("clear", "", "c", 1, 0, 0, true);
     $this->terrain->addTerrainFeature("road", "road", "r", 0.5, 0, 0, false);
     $this->terrain->addTerrainFeature("town", "town", "t", 0.5, 0, 0, true, true);
     $this->terrain->addTerrainFeature("forest", "forest", "f", 2, 0, 1, true, true);
     $this->terrain->addTerrainFeature("hill", "hill", "h", 2, 0, 0, true, true);
     $this->terrain->addTerrainFeature("river", "river", "v", 0, 1, 0, false);
     $this->terrain->addTerrainFeature("trail", "trail", "r", 1, 0, 0, false);
     $this->terrain->addTerrainFeature("blocked", "blocked", "b", 1, 0, 0, true);
     $this->terrain->addTerrainFeature("blocksnonroad", "blocksnonroad", "b", 1, 0, 0, false);
     $this->terrain->addTerrainFeature("slope", "slope", "s", 0, 1, 0, false);
     $this->terrain->addTerrainFeature("elevation", "elevation", "e", 0, 0, 0, false);
     $this->terrain->addTerrainFeature("elevation2", "elevation2", "e", 0, 0, 0, false);
     $this->terrain->addTerrainFeature("crest", "crest", "c", 0, 1, 0, false, true);
     for ($col = 100; $col <= $maxCol * 100; $col += 100) {
         for ($row = 1; $row <= $maxRow; $row++) {
             $this->terrain->addTerrain($row + $col, LOWER_LEFT_HEXSIDE, "clear");
             $this->terrain->addTerrain($row + $col, UPPER_LEFT_HEXSIDE, "clear");
             $this->terrain->addTerrain($row + $col, BOTTOM_HEXSIDE, "clear");
             $this->terrain->addTerrain($row + $col, HEXAGON_CENTER, "clear");
         }
     }
     foreach ($terrainArr as $terrain) {
         foreach ($terrain->type as $terrainType) {
             $name = $terrainType->name;
             $matches = [];
             if (preg_match("/SpecialHex/", $name)) {
                 $this->terrain->addSpecialHex($terrain->number, $name);
             } else {
                 if (preg_match("/^ReinforceZone(.*)\$/", $name, $matches)) {
                     $this->terrain->addReinforceZone($terrain->number, $matches[1]);
                 } else {
                     $tNum = sprintf("%04d", $terrain->number);
                     $this->terrain->addTerrain($tNum, $terrain->hexpartType, strtolower($name));
                 }
             }
         }
     }
 }