feat(wip): GameUnitConstraint 개념 추가
This commit is contained in:
@@ -473,22 +473,17 @@ class GameUnitConstBase{
|
|||||||
$info[] = "{$reqYear}년 경과 후 사용 가능";
|
$info[] = "{$reqYear}년 경과 후 사용 가능";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$constraints = [];
|
||||||
if($reqTech > 0){
|
if($reqTech > 0){
|
||||||
$info[] = "기술력 {$reqTech} 이상 필요";
|
$constraints[] = GameUnitConstraintHelper::ReqTech($reqTech);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($reqCities !== null){
|
if($reqCities !== null){
|
||||||
$reqCities = array_map(function($reqCity) use (&$info){
|
$constraints[] = GameUnitConstraintHelper::ReqCities($reqCities);
|
||||||
$info[] = "{$reqCity} 소유시 가능";
|
|
||||||
return CityConst::byName($reqCity)->id;
|
|
||||||
}, $reqCities);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if($reqRegions !== null){
|
if($reqRegions !== null){
|
||||||
$reqRegions = array_map(function($reqRegion) use (&$info){
|
$constraints[] = GameUnitConstraintHelper::ReqRegions($reqRegions);
|
||||||
$info[] = "{$reqRegion} 지역 소유시 가능";
|
|
||||||
return CityConst::$regionMap[$reqRegion];
|
|
||||||
}, $reqRegions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$unit = new GameUnitDetail(
|
$unit = new GameUnitDetail(
|
||||||
@@ -502,9 +497,7 @@ class GameUnitConstBase{
|
|||||||
$magicCoef,
|
$magicCoef,
|
||||||
$cost,
|
$cost,
|
||||||
$rice,
|
$rice,
|
||||||
$reqTech,
|
$reqConstraints,
|
||||||
$reqCities,
|
|
||||||
$reqRegions,
|
|
||||||
$reqYear,
|
$reqYear,
|
||||||
$attackCoef,
|
$attackCoef,
|
||||||
$defenceCoef,
|
$defenceCoef,
|
||||||
@@ -512,6 +505,7 @@ class GameUnitConstBase{
|
|||||||
$initSkillTrigger,
|
$initSkillTrigger,
|
||||||
$phaseSkillTrigger,
|
$phaseSkillTrigger,
|
||||||
$iActionList,
|
$iActionList,
|
||||||
|
$constraints
|
||||||
);
|
);
|
||||||
|
|
||||||
$constID[$id] = $unit;
|
$constID[$id] = $unit;
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo\GameUnitConstraint;
|
||||||
|
|
||||||
|
use sammo\General;
|
||||||
|
use sammo\KVStorage;
|
||||||
|
|
||||||
|
abstract class GameUnitConstraint {
|
||||||
|
private function __construct()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract function test(General $general, KVStorage $env): bool;
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace sammo;
|
||||||
|
|
||||||
|
class GameUnitConstraintHelper {
|
||||||
|
|
||||||
|
static function ReqTech(int $reqTech): array {
|
||||||
|
return [__FUNCTION__, $reqTech];
|
||||||
|
}
|
||||||
|
|
||||||
|
static function ReqCities(array $reqCities): array {
|
||||||
|
return [__FUNCTION__, $reqCities];
|
||||||
|
}
|
||||||
|
|
||||||
|
static function ReqRegions(array $reqRegions): array {
|
||||||
|
return [__FUNCTION__, $reqRegions];
|
||||||
|
}
|
||||||
|
|
||||||
|
static function ReqMinYear(int $reqMinYear): array {
|
||||||
|
return [__FUNCTION__, $reqMinYear];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace sammo\Constraint;
|
||||||
|
|
||||||
|
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
namespace sammo;
|
namespace sammo;
|
||||||
|
|
||||||
|
use sammo\GameUnitConstraint\GameUnitConstraint;
|
||||||
|
|
||||||
class GameUnitDetail implements iAction
|
class GameUnitDetail implements iAction
|
||||||
{
|
{
|
||||||
use DefaultAction;
|
use DefaultAction;
|
||||||
@@ -27,6 +29,7 @@ class GameUnitDetail implements iAction
|
|||||||
public $phaseSkillTrigger;
|
public $phaseSkillTrigger;
|
||||||
/** @var iAction[]|null iActionList */
|
/** @var iAction[]|null iActionList */
|
||||||
public $iActionList;
|
public $iActionList;
|
||||||
|
public array $reqConstraints;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
int $id,
|
int $id,
|
||||||
@@ -39,10 +42,7 @@ class GameUnitDetail implements iAction
|
|||||||
float $magicCoef,
|
float $magicCoef,
|
||||||
int $cost,
|
int $cost,
|
||||||
int $rice,
|
int $rice,
|
||||||
int $reqTech,
|
array $reqConstraints,
|
||||||
?array $reqCities,
|
|
||||||
?array $reqRegions,
|
|
||||||
int $reqYear,
|
|
||||||
array $attackCoef,
|
array $attackCoef,
|
||||||
array $defenceCoef,
|
array $defenceCoef,
|
||||||
array $info,
|
array $info,
|
||||||
@@ -60,10 +60,7 @@ class GameUnitDetail implements iAction
|
|||||||
$this->magicCoef = $magicCoef;
|
$this->magicCoef = $magicCoef;
|
||||||
$this->cost = $cost;
|
$this->cost = $cost;
|
||||||
$this->rice = $rice;
|
$this->rice = $rice;
|
||||||
$this->reqTech = $reqTech;
|
$this->reqConstraints = $reqConstraints;
|
||||||
$this->reqCities = $reqCities;
|
|
||||||
$this->reqRegions = $reqRegions;
|
|
||||||
$this->reqYear = $reqYear;
|
|
||||||
$this->attackCoef = $attackCoef;
|
$this->attackCoef = $attackCoef;
|
||||||
$this->defenceCoef = $defenceCoef;
|
$this->defenceCoef = $defenceCoef;
|
||||||
$this->info = $info;
|
$this->info = $info;
|
||||||
|
|||||||
Reference in New Issue
Block a user