public function drawHex($im, $exibePos = false, $selected = false) { $left = Mapa::getMarginLeft(); $top = Mapa::getMarginTop(); $left += (Mapa::getHexWidth() - (Mapa::getHexWidth() - Mapa::getHexSide()) / 2) * $this->getX(); if ($this->getX() % 2 == 0) { $top += Mapa::getHexHeight() * $this->getY(); } else { $top += Mapa::getHexHeight() * $this->getY() + Mapa::getHexHeight() / 2; } $hex = $this->getHexCanto(); if ($selected) { $cor = imagecolorallocatealpha($im, 255, 255, 255, 50); imagefilledpolygon($im, $hex, 6, $cor); $cor = imagecolorallocate($im, 0, 0, 0); } else { if ($this->getTipo() == AREA_FORA) { //$cor = imagecolorallocatealpha($im, 130, 130, 130, 40); //imagefilledpolygon($im, $hex, 6, $cor); //$cor = imagecolorallocate($im, 0, 0, 0); } elseif ($this->getEntrada()) { $cor = imagecolorallocatealpha($im, 218, 165, 32, 100); imagefilledpolygon($im, $hex, 6, $cor); $cor = imagecolorallocate($im, 0, 0, 0); } elseif ($this->getTipo() == AREA_PAREDE) { $cor = imagecolorallocatealpha($im, 130, 130, 130, 80); imagefilledpolygon($im, $hex, 6, $cor); $cor = imagecolorallocate($im, 0, 0, 0); } elseif (!is_null($this->cor)) { $cor = imagecolorallocatealpha($im, $this->cor[0], $this->cor[1], $this->cor[2], 80); imagefilledpolygon($im, $hex, 6, $cor); $cor = imagecolorallocate($im, 0, 0, 0); } else { $cor = imagecolorallocatealpha($im, 255, 255, 255, 100); imagepolygon($im, $hex, 6, $cor); } } imagesetthickness($im, 15); $cor = imagecolorallocatealpha($im, 130, 130, 130, 80); for ($i = 0; $i <= 5; $i++) { if ($this->lados[$i] == AREA_PAREDE) { $l = $i >= 5 ? 0 : $i + 1; imageline($im, $cantos[$i]['x'], $cantos[$i]['y'], $cantos[$l]['x'], $cantos[$l]['y'], $cor); } } $cor = imagecolorallocate($im, 0, 0, 0); imagesetthickness($im, 1); if ($exibePos && $this->getTipo() != AREA_FORA) { $texto = $this->getX() . "." . $this->getY(); $font = 5; $fx = $left + (Mapa::getHexWidth() - strlen($texto) * imagefontwidth($font)) / 2; $fy = $top + (Mapa::getHexHeight() - imagefontheight($font)) / 2; $cor = imagecolorallocatealpha($im, 255, 255, 255, 50); imagestring($im, $font, $fx, $fy, $texto, $cor); } }
public function draw($im, $x, $y) { $left = Mapa::getMarginLeft(); $top = Mapa::getMarginTop(); $left += (Mapa::getHexWidth() - (Mapa::getHexWidth() - Mapa::getHexSide()) / 2) * $x; if ($x % 2 == 0) { $top += Mapa::getHexHeight() * $y; } else { $top += Mapa::getHexHeight() * $y + Mapa::getHexHeight() / 2; } $px = $left - Mapa::getHexHeight() / 2; $py = $top - Mapa::getHexHeight() / 2; $width = Mapa::getHexHeight() * 2; $height = Mapa::getHexHeight() * 2; if ($this->cod_situacao == ATIVO) { if ($this->posicao == POSICAO_DEITADO) { $pessoaPath = $this->getImagem('morto'); } elseif ($this->sobreAtaque() || $this->animacao == ANIME_COMBATE) { $pessoaPath = $this->getImagem('combate'); } else { $pessoaPath = $this->getImagem('parado'); } } else { $pessoaPath = $this->getImagem('morto'); } if (!is_null($pessoaPath)) { $pessoaPath = dirname(__DIR__) . "/tokens/{$pessoaPath}"; } else { $pessoaPath = dirname(__DIR__) . "/tokens/cavaleiro-parado.png"; } if (in_array($this->getSentido(), array(1, 2, 4, 5))) { //$padding = 45; $px -= 8; $py -= 8; $width += 16; $height += 16; } //else // $padding = 30; $rotate = (6 - $this->getSentido()) * 60; //$tamanho = static::getHexScaledHeight() + ($padding * 2); $imPessoa = imagecreatefrompng($pessoaPath); if ($rotate > 0) { $imPessoa = imagerotate($imPessoa, $rotate, imageColorAllocateAlpha($imPessoa, 0, 0, 0, 127)); } imagecopyresampled($im, $imPessoa, $px, $py, 0, 0, $width, $height, imagesx($imPessoa), imagesy($imPessoa)); //$color = imagecolorallocatealpha($im, 0, 0, 0, 80); //imagefilledrectangle($im, $px, $py, $px + $width, $py + $height, $color); imagedestroy($imPessoa); }
<div> <label>Hex Largura:</label> <span><input type="number" id="hex_width" name="hex_width" value="<?php echo Mapa::getHexWidth(); ?> "></span> </div> <div> <label>Hex Altura:</label> <span><input type="number" id="hex_height" name="hex_height" value="<?php echo Mapa::getHexHeight(); ?> "></span> </div> <div> <label>Hex Lado:</label> <span><input type="number" id="hex_side" name="hex_side" value="<?php echo Mapa::getHexSide(); ?> "></span> </div> <div style="padding-bottom: 10px"> <input type="submit" name="acao" value="Atualizar" class="button" /> <input type="submit" name="acao" value="Gravar" class="button success right" /> </div> </fieldset> </div> </form> </div> <?php require 'footer.php';
public static function getScrollByPos($x, $y) { $left = Mapa::getMarginLeft() + (Mapa::getHexWidth() - (Mapa::getHexWidth() - Mapa::getHexSide()) / 2) * $x; $top = Mapa::getMarginTop() + Mapa::getHexHeight() * $y; if ($x % 2 == 1) { $y += Mapa::getHexHeight() / 2; } $pos = new stdClass(); $pos->x = $left; $pos->y = $top; return $pos; }