Files
core/hwe/sammo/LastTurn.php

98 lines
2.1 KiB
PHP

<?php
namespace sammo;
class LastTurn{
protected $command = '휴식';
protected $arg = null;
protected $term = null;
protected $seq = null;
function __construct(?string $command=null, ?array $arg=null, ?int $term=null, ?int $seq=null)
{
$this->setCommand($command);
$this->setArg($arg);
$this->setTerm($term);
$this->setSeq($seq);
}
static function fromRaw(?array $raw):self{
if(!$raw){
return new static();
}
$obj = new static(
$raw['command']??null,
$raw['arg']??null,
$raw['term']??null,
$raw['seq']??null
);
return $obj;
}
static function fromJson(?string $json):self{
if($json === null || $json === ''){
return new static();
}
return static::fromRaw(Json::decode($json));
}
function setCommand(?string $command){
if($command === null){
$command = '휴식';
}
$this->command = $command;
}
function getCommand():string{
return $this->command;
}
function setArg(?array $arg){
$this->arg = $arg;
}
function getArg():?array{
return $this->arg;
}
function setTerm(?int $term){
$this->term = $term;
}
function getTerm():?int{
return $this->term;
}
function setSeq(?int $seq){
$this->seq = $seq;
}
function getSeq():?int{
return $this->seq;
}
function toRaw():array{
$result = [
'command'=>$this->command
];
if($this->arg !== null){
$result['arg'] = $this->arg;
}
if($this->term !== null){
$result['term'] = $this->term;
}
if($this->seq !== null){
$result['seq'] = $this->seq;
}
return $result;
}
function toJson():string{
return Json::encode($this->toRaw());
}
function duplicate():LastTurn{
return new static($this->command, $this->arg, $this->term, $this->seq);
}
}