건국 조건 설정

This commit is contained in:
2018-10-29 03:14:03 +09:00
parent a3dc250698
commit fd734fadbc
5 changed files with 160 additions and 5 deletions
+12 -5
View File
@@ -37,7 +37,7 @@ class che_건국 extends Command\GeneralCommand{
return false;
}
if(mb_strwidth($nationName) > 18){
if(mb_strwidth($nationName) > 18 || $nationName == ''){
return false;
}
@@ -62,6 +62,10 @@ class che_건국 extends Command\GeneralCommand{
$general = $this->generalObj;
$env = $this->env;
$nationName = $this->arg['nationName'];
$nationType = $this->arg['nationType'];
$colorType = $this->arg['colorType'];
$this->setCity();
$this->setNation();
@@ -78,10 +82,13 @@ class che_건국 extends Command\GeneralCommand{
$relYear = $env['year'] - $env['startyear'];
$this->runnableConstraints=[
['BeNeutral'],
['ExistsDestNation'],
['AllowJoinDestNation', $relYear],
['AllowJoinAction']
['ReqNationValue', 'gennum', '수하 장수', '>=', 2],
['BeOpeningPart'],
['WanderingNation'],
['CheckNationNameDuplicate', $nationName],
['BeLord'],
['AllowJoinAction'],
['ConstructableCity']
];
}
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace sammo\Constraint;
class BeOpeningPart extends Constraint{
const REQ_VALUES = Constraint::REQ_INT_ARG;
protected $relYear;
public function checkInputValues(bool $throwExeception=true){
if(!parent::checkInputValues($throwExeception) && !$throwException){
return false;
}
$this->relYear = $this->arg;
return true;
}
public function test():bool{
$this->checkInputValues();
$this->tested = true;
if($relYear < GameConst::$openingPartYear){
return true;
}
$this->reason = "초반이 지났습니다.";
return false;
}
}
@@ -0,0 +1,39 @@
<?php
namespace sammo\Constraint;
use \sammo\DB;
class CheckNationNameDuplicate extends Constraint{
const REQ_VALUES = Constraint::REQ_NATION|Constraint::REQ_STRING_ARG;
protected $relYear;
public function checkInputValues(bool $throwExeception=true){
if(!parent::checkInputValues($throwExeception) && !$throwException){
return false;
}
if(!key_exists('nation', $this->nation)){
if(!$throwExeception){return false; }
throw new \InvalidArgumentException("require nation in nation");
}
return true;
}
public function test():bool{
$this->checkInputValues();
$this->tested = true;
$db = DB::db();
$exists = $db->queryFirstField('SELECT count(*) FROM nation WHERE name = %s AND nation != %i', $this->arg, $this->nation['nation']);
if($exists == 0){
return true;
}
$this->reason = '존재하는 국가명입니다.';
return false;
}
}
@@ -0,0 +1,46 @@
<?php
namespace sammo\Constraint;
class ConstructableCity extends Constraint{
const REQ_VALUES = Constraint::REQ_CITY;
protected $relYear;
public function checkInputValues(bool $throwExeception=true){
if(!parent::checkInputValues($throwExeception) && !$throwException){
return false;
}
if(!key_exists('nation', $this->city)){
if(!$throwExeception){return false; }
throw new \InvalidArgumentException("require nation in city");
}
if(!key_exists('level', $this->city)){
if(!$throwExeception){return false; }
throw new \InvalidArgumentException("require nation in city");
}
return true;
}
public function test():bool{
$this->checkInputValues();
$this->tested = true;
$city = $this->city();
if($city['nation'] != 0){
$this->reason = '공백지가 아닙니다.';
return false;
}
if(!in_array($city['level'], [5, 6])){
$this->reason = '중, 소 도시에만 가능합니다.';
return false;
}
return true;
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace sammo\Constraint;
class WanderingNation extends Constraint{
const REQ_VALUES = Constraint::REQ_NATION;
public function checkInputValues(bool $throwExeception=true){
if(!parent::checkInputValues($throwExeception) && !$throwException){
return false;
}
if(!key_exists('level', $this->nation)){
if(!$throwExeception){return false; }
throw new \InvalidArgumentException("require level in nation");
}
return true;
}
public function test():bool{
$this->checkInputValues();
$this->tested = true;
if($this->nation['level'] == 0){
return true;
}
$this->reason = "방랑군이어야 합니다";
return false;
}
}