feat: StaticEventHandler 처리기 추가

- 커맨드 종료 시점에 호출
  - pre, post 각각이 필요한지는 논의 필요
  - 일단 용도에 따라 pre, post 둘중에 하나만 처리
- eventType으로는 full qualified class name 사용
  - 꼭 그럴필요는 없지만, 커맨드에 한해서는 이렇게
This commit is contained in:
2024-09-18 14:54:11 +00:00
parent 04a7a34fcc
commit 477b77b59f
79 changed files with 227 additions and 77 deletions
+3 -1
View File
@@ -12,7 +12,8 @@ use \sammo\{
MessageTarget,
Message,
CityConst,
CityHelper
CityHelper,
StaticEventHandler
};
use \sammo\Constraint\Constraint;
@@ -201,6 +202,7 @@ class che_감축 extends Command\NationCommand{
$logger->pushGlobalHistoryLog("<M><b>【감축】</b></><D><b>{$nationName}</b></>{$josaYiNation} <G><b>{$destCityName}</b></>{$josaUl} <M>감축</>하였습니다.");
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
$general->applyDB($db);
@@ -12,6 +12,7 @@ use function \sammo\GetNationColors;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\InheritanceKey;
use sammo\StaticEventHandler;
class che_국기변경 extends Command\NationCommand
{
@@ -136,6 +137,7 @@ class che_국기변경 extends Command\NationCommand
$logger->pushGlobalHistoryLog("<S><b>【국기변경】</b></><D><b>{$nationName}</b></>{$josaYiNation} <span style='color:{$color};'><b>국기</b></span>를 변경하였습니다.");
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
$general->applyDB($db);
return true;
@@ -21,6 +21,7 @@ use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\InheritanceKey;
use sammo\Event\Action;
use sammo\StaticEventHandler;
class che_국호변경 extends Command\NationCommand
{
@@ -154,6 +155,7 @@ class che_국호변경 extends Command\NationCommand
$logger->pushGlobalHistoryLog("<S><b>【국호변경】</b></><D><b>{$nationName}</b></>{$josaYiNation} 국호를 <D><b>{$newNationName}</b></>{$josaRo} 변경합니다.");
$general->increaseInheritancePoint(InheritanceKey::active_action, 1);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
$general->applyDB($db);
return true;
+2
View File
@@ -20,6 +20,7 @@ use function \sammo\getNationStaticInfo;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\StaticEventHandler;
class che_급습 extends Command\NationCommand
{
@@ -191,6 +192,7 @@ class che_급습 extends Command\NationCommand
$db->update('diplomacy', [
'term' => $db->sqleval('`term` - %i', 3),
], '(me = %i AND you = %i) OR (you = %i AND me = %i)', $nationID, $destNationID, $nationID, $destNationID);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->applyDB($db);
+2
View File
@@ -21,6 +21,7 @@ use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\GeneralQueryMode;
use sammo\Enums\MessageType;
use sammo\StaticEventHandler;
class che_몰수 extends Command\NationCommand
{
@@ -212,6 +213,7 @@ class che_몰수 extends Command\NationCommand
$logger->pushGeneralActionLog("<Y>{$destGeneral->getName()}</>에게서 {$resName} <C>$amountText</>{$josaUl} 몰수했습니다. <1>$date</>");
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destGeneral->applyDB($db);
@@ -20,6 +20,7 @@ use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\InheritanceKey;
use sammo\Event\Action;
use sammo\Json;
use sammo\StaticEventHandler;
class che_무작위수도이전 extends Command\NationCommand
{
@@ -159,6 +160,7 @@ class che_무작위수도이전 extends Command\NationCommand
$logger->pushGlobalHistoryLog("<S><b>【무작위 수도 이전】</b></><D><b>{$nationName}</b></>{$josaYiNation} <G><b>{$destCityName}</b></>{$josaRo} <M>수도 이전</>하였습니다.");
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
}
@@ -15,6 +15,7 @@ use \sammo\{
Command,
Json,
KVStorage,
StaticEventHandler,
StringUtil
};
@@ -255,6 +256,7 @@ class che_물자원조 extends Command\NationCommand
$general->addExperience(5);
$general->addDedication(5);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->applyDB($db);
+2
View File
@@ -14,6 +14,7 @@ use \sammo\{
GameUnitConst,
CityConst,
Command,
StaticEventHandler,
TimeUtil
};
@@ -167,6 +168,7 @@ class che_발령 extends Command\NationCommand
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->applyDB($db);
$destGeneral->applyDB($db);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
return true;
}
@@ -15,7 +15,8 @@ use \sammo\{
Command,
MessageTarget,
Message,
CityConst
CityConst,
StaticEventHandler
};
use \sammo\Constraint\Constraint;
@@ -164,6 +165,7 @@ class che_백성동원 extends Command\NationCommand
], 'nation=%i', $nationID);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
@@ -24,6 +24,7 @@ use sammo\Enums\GeneralQueryMode;
use sammo\Json;
use sammo\KVStorage;
use sammo\RandUtil;
use sammo\StaticEventHandler;
class che_불가침수락 extends Command\NationCommand
{
@@ -224,6 +225,7 @@ class che_불가침수락 extends Command\NationCommand
$destLogger->pushGeneralActionLog("<D><b>{$nationName}</b></>{$josaWa} <C>$year</>년 <C>{$month}</>월까지 불가침에 성공했습니다.", ActionLogger::PLAIN);
$destLogger->pushGeneralHistoryLog("<D><b>{$nationName}</b></>{$josaWa} {$year}{$month}월까지 불가침 성공");
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destLogger->flush();
@@ -23,6 +23,7 @@ use function \sammo\getNationStaticInfo;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\MessageType;
use sammo\StaticEventHandler;
class che_불가침제의 extends Command\NationCommand
{
@@ -220,6 +221,7 @@ class che_불가침제의 extends Command\NationCommand
$msg->send();
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destLogger->flush();
@@ -22,6 +22,7 @@ use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\GeneralQueryMode;
use sammo\RandUtil;
use sammo\StaticEventHandler;
class che_불가침파기수락 extends Command\NationCommand
{
@@ -173,6 +174,7 @@ class che_불가침파기수락 extends Command\NationCommand
$destLogger->pushGeneralActionLog("<D><b>{$nationName}</b></>{$josaWa}의 불가침 파기에 성공했습니다.", ActionLogger::PLAIN);
$destLogger->pushGeneralHistoryLog("<D><b>{$nationName}</b></>{$josaWa}의 불가침 파기 성공");
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destLogger->flush();
@@ -12,6 +12,7 @@ use \sammo\{
MessageTarget,
DiplomaticMessage,
Message,
StaticEventHandler,
};
use function \sammo\getAllNationStaticInfo;
@@ -166,6 +167,7 @@ class che_불가침파기제의 extends Command\NationCommand{
$msg->send();
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destLogger->flush();
@@ -22,6 +22,7 @@ use function \sammo\GetImageURL;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\MessageType;
use sammo\StaticEventHandler;
class che_선전포고 extends Command\NationCommand
{
@@ -188,6 +189,7 @@ class che_선전포고 extends Command\NationCommand
$msg->send();
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destLogger->flush();
+3 -1
View File
@@ -15,7 +15,8 @@ use \sammo\{
Command,
MessageTarget,
Message,
CityConst
CityConst,
StaticEventHandler
};
use function \sammo\getNationStaticInfo;
@@ -191,6 +192,7 @@ class che_수몰 extends Command\NationCommand
], 'nation=%i', $nationID);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
@@ -15,7 +15,7 @@ use \sammo\KVStorage;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\StaticEventHandler;
class che_의병모집 extends Command\NationCommand
{
@@ -170,6 +170,7 @@ class che_의병모집 extends Command\NationCommand
], 'nation=%i', $nationID);
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
@@ -20,6 +20,7 @@ use function \sammo\getNationStaticInfo;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\StaticEventHandler;
class che_이호경식 extends Command\NationCommand
{
@@ -193,6 +194,7 @@ class che_이호경식 extends Command\NationCommand
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
@@ -16,6 +16,7 @@ use \sammo\{
MessageTarget,
DiplomaticMessage,
Message,
StaticEventHandler,
};
use function \sammo\getNationStaticInfo;
@@ -188,6 +189,7 @@ class che_종전수락 extends Command\NationCommand
$destLogger->pushNationalHistoryLog("<D><b>{$nationName}</b></>{$josaWa} 종전");
$general->applyDB($db);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$destLogger->flush();
return true;
@@ -12,6 +12,7 @@ use \sammo\{
MessageTarget,
DiplomaticMessage,
Message,
StaticEventHandler,
};
use function \sammo\getAllNationStaticInfo;
@@ -164,6 +165,7 @@ class che_종전제의 extends Command\NationCommand{
$msg->send();
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destLogger->flush();
+3 -1
View File
@@ -11,7 +11,8 @@ use \sammo\{
Command,
MessageTarget,
Message,
CityConst
CityConst,
StaticEventHandler
};
use \sammo\Constraint\Constraint;
@@ -193,6 +194,7 @@ class che_증축 extends Command\NationCommand{
$logger->pushGlobalHistoryLog("<C><b>【증축】</b></><D><b>{$nationName}</b></>{$josaYiNation} <G><b>{$destCityName}</b></>{$josaUl} <M>증축</>하였습니다.");
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
+2
View File
@@ -19,6 +19,7 @@ use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\InheritanceKey;
use sammo\Event\Action;
use sammo\StaticEventHandler;
class che_천도 extends Command\NationCommand
{
@@ -228,6 +229,7 @@ class che_천도 extends Command\NationCommand
$logger->pushGlobalHistoryLog("<S><b>【천도】</b></><D><b>{$nationName}</b></>{$josaYiNation} <G><b>{$destCityName}</b></>{$josaRo} <M>천도</>하였습니다.");
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
}
+3 -1
View File
@@ -12,7 +12,8 @@ use \sammo\{
MessageTarget,
Message,
CityConst,
CityInitialDetail
CityInitialDetail,
StaticEventHandler
};
use \sammo\Constraint\Constraint;
@@ -196,6 +197,7 @@ class che_초토화 extends Command\NationCommand{
$logger->pushGlobalHistoryLog("<S><b>【초토화】</b></><D><b>{$nationName}</b></>{$josaYiNation} <G><b>{$destCityName}</b></>{$josaUl} <M>초토화</>하였습니다.");
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
}
+2
View File
@@ -16,6 +16,7 @@ use \sammo\Command;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\GeneralQueryMode;
use sammo\StaticEventHandler;
class che_포상 extends Command\NationCommand
{
@@ -174,6 +175,7 @@ class che_포상 extends Command\NationCommand
$logger->pushGeneralActionLog("<Y>{$destGeneral->getName()}</>에게 {$resName} <C>$amountText</>{$josaUl} 수여했습니다. <1>$date</>");
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
$destGeneral->applyDB($db);
@@ -15,7 +15,8 @@ use \sammo\{
Command,
KVStorage,
Message,
MessageTarget
MessageTarget,
StaticEventHandler
};
use function \sammo\buildNationCommandClass;
@@ -240,6 +241,7 @@ class che_피장파장 extends Command\NationCommand
$destDelay = max($destNationStor->getValue($cmd->getNextExecuteKey()) ?? 0, $yearMonth);
$destNationStor->setValue($cmd->getNextExecuteKey(), $destDelay + static::$delayCnt);
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
@@ -10,7 +10,8 @@ use \sammo\{
GameUnitConst,
Command,
MessageTarget,
Message
Message,
StaticEventHandler
};
use \sammo\Constraint\Constraint;
@@ -121,6 +122,7 @@ class che_필사즉생 extends Command\NationCommand{
], 'nation=%i', $nationID);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
+2
View File
@@ -21,6 +21,7 @@ use function \sammo\getNationStaticInfo;
use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Event\Action;
use sammo\StaticEventHandler;
class che_허보 extends Command\NationCommand
{
@@ -194,6 +195,7 @@ class che_허보 extends Command\NationCommand
], 'nation=%i', $nationID);
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
@@ -19,6 +19,7 @@ use \sammo\Constraint\Constraint;
use \sammo\Constraint\ConstraintHelper;
use sammo\Enums\InheritanceKey;
use sammo\Event\Action;
use sammo\StaticEventHandler;
class cr_인구이동 extends Command\NationCommand
{
@@ -179,6 +180,7 @@ class cr_인구이동 extends Command\NationCommand
$logger->pushGeneralActionLog("<G><b>{$destCityName}</b></>{$josaRo} 인구 <C>{$amount}</>명을 옮겼습니다. <1>$date</>");
$this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
$general->applyDB($db);
return true;
}
+2
View File
@@ -5,6 +5,7 @@ use \sammo\Command;
use \sammo\Util;
use \sammo\JosaUtil;
use sammo\LastTurn;
use sammo\StaticEventHandler;
class 휴식 extends Command\NationCommand{
static protected $actionName = '휴식';
@@ -33,6 +34,7 @@ class 휴식 extends Command\NationCommand{
public function run(\Sammo\RandUtil $rng):bool{
$this->setResultTurn(new LastTurn(static::getName(), $this->arg));
StaticEventHandler::handleEvent($this->generalObj, $this->destGeneralObj, $this::class, $this->env, $this->arg);
return true;
}
}