feat(wip): GameUnitConstraint 개념 추가

This commit is contained in:
2025-01-21 14:25:56 +00:00
parent 91e56644b4
commit 3e5727a166
4 changed files with 51 additions and 20 deletions
+6 -12
View File
@@ -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;
}
+26
View File
@@ -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;
+5 -8
View File
@@ -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;