feat: System MessageTarget를 빠르게 생성하는 함수

This commit is contained in:
2023-05-22 01:55:09 +09:00
parent 9fcb24533a
commit fee769714d
2 changed files with 18 additions and 14 deletions
+1 -1
View File
@@ -381,7 +381,7 @@ class Message
* @param string $msg
*/
public static function sendPrivateMsgAsNotice(array|int|MessageTarget $targets, string $msg): void{
$src = new MessageTarget(0, '', 0, 'System', '#000000');
$src = MessageTarget::buildSystemTarget();
if(is_int($targets)){
$targets = [$targets];
}
+17 -13
View File
@@ -10,7 +10,7 @@ class MessageTarget extends Target {
public $color;
/** @var string */
public $icon;
public function __construct(
int $generalID,
string $generalName,
@@ -19,13 +19,13 @@ class MessageTarget extends Target {
string $color,
string $icon=''
){
parent::__construct($generalID, $nationID);
if(!$icon){
$icon = ServConfig::getSharedIconPath().'/default.jpg';
}
$this->generalName = $generalName;
$this->nationName = $nationName;
$this->color = $color;
@@ -47,28 +47,28 @@ class MessageTarget extends Target {
}
return new MessageTarget(
$arr['id'],
$arr['name'],
$arr['nation_id'],
$arr['nation'],
$arr['color'],
$arr['id'],
$arr['name'],
$arr['nation_id'],
$arr['nation'],
$arr['color'],
$arr['icon']??''
);
}
/**
* DB 부하 감수하고 일일히 찾아줌.
* DB 부하 감수하고 일일히 찾아줌.
* 게임 로직과 크게 연관이 없는 곳에서 메시지를 생성해야 할 경우에만 사용할 것을 권함.
* @return MessageTarget
*/
public static function buildQuick(int $generalID){
$db = DB::db();
list(
$generalName,
$nationID,
$imgsvr,
$generalName,
$nationID,
$imgsvr,
$picture
) = $db->queryFirstList('SELECT `name`, nation, imgsvr, picture FROM general WHERE `no`=%i', $generalID);
) = $db->queryFirstList('SELECT `name`, nation, imgsvr, picture FROM general WHERE `no`=%i', $generalID);
if($generalName === null){
throw new \RuntimeException('장수가 없음:'.$generalID);
@@ -79,6 +79,10 @@ class MessageTarget extends Target {
return new MessageTarget($generalID, $generalName, $nationID, $nation['name'], $nation['color'], $icon);
}
public static function buildSystemTarget(): MessageTarget{
return new MessageTarget(0, '', 0, 'System', '#000000');
}
public function toArray() : array{
return [
'id'=>$this->generalID,