forked from devsam/core
기존에 작성해두었던 EventHandler 시스템으로 하드코드 이벤트 이동 - 매달 - 보급선 설정 - 전쟁 단기 수입 설정 - 부대장 부여 - 1월 - 유산 포인트 계산 - 도시 인구 변화 - 수입 - 관직 제한 해제 - 재난 - 상인 - 새해 알림 - 특기 부여 - 4월 - 관직 제한 해제 - 재난 - 7월 - 유산 포인트 계산 - 도시 인구 변화 - 수입 - 관직 제한 해제 - 재난 - 상인 - 10월 - 관직 제한 해제 - 재난 - 천통 시 - 유산 포인트 계산 Reviewed-on: https://storage.hided.net/gitea/devsam/core/pulls/230
27 lines
941 B
PHP
27 lines
941 B
PHP
<?php
|
|
namespace sammo\Event;
|
|
|
|
abstract class Action{
|
|
//public abstract function __construct(...$args);
|
|
/*
|
|
TODO: event trigger를 인자로 보낼 수 있으면 좋을 것
|
|
예시로, 도시 점령 시, 점령한 도시의 정보를 인자로 보낼 수 있으면 좋을 것
|
|
/*/
|
|
public abstract function run(array $env);
|
|
|
|
public static function build($actionArgs):Action{
|
|
if(!is_array($actionArgs)){
|
|
throw new \InvalidArgumentException('action을 입력해야 합니다.');
|
|
}
|
|
|
|
$className = __NAMESPACE__.'\\Action\\'.$actionArgs[0];
|
|
if(!class_exists($className)){
|
|
throw new \InvalidArgumentException('존재하지 않는 Action입니다 :'.$actionArgs[0]);
|
|
}
|
|
|
|
$args = array_slice($actionArgs, 1);
|
|
/** @var \ReflectionClass<Action> */
|
|
$ref = new \ReflectionClass($className);
|
|
return $ref->newInstanceArgs($args);
|
|
}
|
|
} |