Files
core/hwe/sammo/API/Troop/ExitTroop.php
T
Hide_D 3d12de3838 refac: API/Troop 의 $me를 GeneralLite로 변경
- StaticEventHandler 처리도 추가
2024-09-18 14:54:40 +00:00

63 lines
1.5 KiB
PHP

<?php
namespace sammo\API\Troop;
use sammo\Session;
use DateTimeInterface;
use sammo\DB;
use sammo\Enums\APIRecoveryType;
use sammo\Enums\GeneralLiteQueryMode;
use sammo\GeneralLite;
use sammo\StaticEventHandler;
class ExitTroop extends \sammo\BaseAPI
{
public function validateArgs(): ?string
{
return null;
}
public function getRequiredSessionMode(): int
{
return static::REQ_GAME_LOGIN;
}
public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag): null | string | array | APIRecoveryType
{
$generalID = $session->generalID;
$db = DB::db();
$me = GeneralLite::createObjFromDB($generalID, ['troop'], GeneralLiteQueryMode::Lite);
if (!$me) {
return '장수 정보를 불러올 수 없습니다.';
}
$troopID = $me->getVar('troop');
if($troopID == 0){
return '부대에 소속되어 있지 않습니다.';
}
if($troopID != $generalID){
StaticEventHandler::handleEvent($me, null, $this::class, [
"isTroopLeader" => false,
], $this->args);
$me->setVar('troop', 0);
$me->applyDB($db);
return null;
}
//부대장이다.
StaticEventHandler::handleEvent($me, null, $this::class, [
"isTroopLeader" => true,
], $this->args);
$db->update('general', [
'troop' => 0,
], '`troop` = %i', $troopID);
$db->delete('troop', 'troop_leader = %i', $troopID);
$me->setVar('troop', 0);
$me->applyDB($db);
return null;
}
}