PHP code example of samsara / planck
1. Go to this page and download the library: Download samsara/planck library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
samsara / planck example snippets
$subGridPrototype = Samsara\Planck\Factory\GridFactory(
GridFactory::THREE_DIMENSION,
[
'maxVals' => [
ThreeDimensionGrid:AXIS_ONE => 10,
ThreeDimensionGrid:AXIS_TWO => 10,
ThreeDimensionGrid:AXIS_THREE => 10
]
]
);
$grid = Samsara\Planck\Factory\GridFactory(
GridFactory::THREE_DIMENSION,
[
'name' => 'My Game World'
'subGrid' => $subGridPrototype
]
);
$grid->addAddress('100.20.20:2.4.3');
// This returns the Grid object which represents this address.
$subGrid = $grid->getLocation('100.20.20:2.4.3');
$node = new Samsara\Planck\Node\Node();
$node->set('traversible', true);
$grid->attachNode($node, '100.20.20:2.4.3');
$properties = $grid->getNodeProperties('100.20.20:2.4.3');
echo $properties['traversible']; // true
$grid->getNode('100.20.20:2.4.3')
->set('traversible', false)
->set('conditions', 'calm');
namespace MyNamespace;
use Samsara\Planck\Core\AbstractGrid;
use Samsara\Planck\Core\GridInterface;
class FourDimensionGrid extends AbstractGrid implements GridInterface
{
const AXIS_ONE = 'x';
const AXIS_TWO = 'y';
const AXIS_THREE = 'z';
const AXIS_FOUR = 'a';
protected $maxVals = [
self::AXIS_ONE => 100,
self::AXIS_TWO => 10,
self::AXIS_THREE => 10,
self::AXIS_FOUR => 50
];
protected $minVals = [
self::AXIS_ONE => 0,
self::AXIS_TWO => 0,
self::AXIS_THREE => 0,
self::AXIS_FOUR => -50
];
public function __construct($name, $address = '', GridInterface $protoSubGrid = null, array $maxVals = null, array $minVals = null)
{
if (!is_null($maxVals) && count($maxVals)) {
foreach ($maxVals as $key => $val) {
switch ($key) {
case self::AXIS_ONE:
case self::AXIS_TWO:
case self::AXIS_THREE:
case self::AXIS_FOUR:
if (is_numeric($val)) {
$this->maxVals[$key] = (int) $val;
} else {
throw new \Exception('Cannot use non-numeric values for maximum grid values.');
}
break;
default:
throw new \Exception('Cannot set maximum values for axis that doesn\'t exist');
break;
}
}
}
if (!is_null($minVals) && count($minVals)) {
foreach ($minVals as $key => $val) {
switch ($key) {
case self::AXIS_ONE:
case self::AXIS_TWO:
case self::AXIS_THREE:
case self::AXIS_FOUR:
if (is_numeric($val)) {
$this->maxVals[$key] = (int) $val;
} else {
throw new \Exception('Cannot use non-numeric values for minimum grid values.');
}
break;
default:
throw new \Exception('Cannot set minimum values for axis that doesn\'t exist');
break;
}
}
}
parent::__construct($name, $address, $protoSubGrid);
}
protected function isValidAddress($address)
{
if (is_string($address)) {
$parts = explode('.', $address);
if (count($parts) == 4) {
foreach ($parts as $key => $val) {
if (!is_numeric($val)) {
return false;
}
switch ($key) {
case 0:
if ($val > $this->maxVals[self::AXIS_ONE] || $val < $this->minVals[self::AXIS_ONE]) {
return false;
}
break;
case 1:
if ($val > $this->maxVals[self::AXIS_TWO] || $val < $this->minVals[self::AXIS_TWO]) {
return false;
}
break;
case 2:
if ($val > $this->maxVals[self::AXIS_THREE] || $val < $this->minVals[self::AXIS_THREE]) {
return false;
}
break;
case 3:
if ($val > $this->maxVals[self::AXIS_FOUR] || $val < $this->minVals[self::AXIS_FOUR]) {
return false;
}
break;
}
}
return true;
}
}
return false;
}
}