WarUnitTrigger 개편, 병종 Trigger 개념 추가, 저지, 성벽부상무효

This commit is contained in:
2019-05-13 00:49:44 +09:00
parent b6e667a291
commit 7ce1e64ee8
13 changed files with 364 additions and 139 deletions
+51 -2
View File
@@ -1,7 +1,8 @@
<?php
namespace sammo;
class GameUnitDetail extends GameUnitActionBase{
class GameUnitDetail implements iAction{
use DefaultAction;
public $id;
public $armType;
@@ -20,6 +21,8 @@ class GameUnitDetail extends GameUnitActionBase{
public $attackCoef;
public $defenceCoef;
public $info;
public $initSkillTrigger;
public $phaseSkillTrigger;
public function __construct(
int $id,
@@ -38,7 +41,9 @@ class GameUnitDetail extends GameUnitActionBase{
int $reqYear,
array $attackCoef,
array $defenceCoef,
array $info
array $info,
?array $initSkillTrigger,
?array $phaseSkillTrigger
){
$this->id = $id;
$this->name = $name;
@@ -57,6 +62,9 @@ class GameUnitDetail extends GameUnitActionBase{
$this->attackCoef = $attackCoef;
$this->defenceCoef = $defenceCoef;
$this->info = $info;
$this->initSkillTrigger = $initSkillTrigger;
$this->phaseSkillTrigger = $phaseSkillTrigger;
}
public function getShortName():string{
@@ -199,4 +207,45 @@ class GameUnitDetail extends GameUnitActionBase{
return true;
}
//iAction
public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
if(!$this->initSkillTrigger){
return null;
}
$triggerList = [];
foreach($this->initSkillTrigger as $triggerArgs){
if(is_string($triggerArgs)){
$typeName = $triggerArgs;
$triggerList[] = buildWarUnitTriggerClass($typeName, $unit);
}
else{
$typeName = $triggerArgs[0];
//WarUnit 다음 인자는 $raiseType이며, 0이어야할 것이다
$triggerArgs[0] = 0;
$triggerList[] = buildWarUnitTriggerClass($typeName, $unit, $triggerArgs);
}
}
return new WarUnitTriggerCaller($triggerList);
}
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
if(!$this->phaseSkillTrigger){
return null;
}
$triggerList = [];
foreach($this->phaseSkillTrigger as $triggerArgs){
if(is_string($triggerArgs)){
$typeName = $triggerArgs;
$triggerList[] = buildWarUnitTriggerClass($typeName, $unit);
}
else{
$typeName = $triggerArgs[0];
//WarUnit 다음 인자는 $raiseType이며, 0이어야할 것이다
$triggerArgs[0] = 0;
$triggerList[] = buildWarUnitTriggerClass($typeName, $unit, $triggerArgs);
}
}
return new WarUnitTriggerCaller($triggerList);
}
}