有几个问题,你没有忘记
$message
$message = [
'action' => 'ignore',
'message' => 'My message is blah blah blah...'
];
您还可以进一步将其直接分配给
game
$this->game['sys_msg'] = [
'action' => 'ignore',
'message' => 'My message is blah blah blah...'
];
至于你没有看到更新后的值,可能是由很多事情引起的,请发布一个完整的代码示例。
编辑:
不要像现在这样使用数组,请为
sys_msg
,这样您就不会有打字错误的风险,例如
aCtion
一只奇怪的虫子。您还可以确保将其初始化为已知状态。例如:
class SysMsg
{
const ACTION_IGNORE = 0;
const ACTION_PROCESS = 1;
protected $action;
protected $message;
public function __construct($action = self::ACTION_IGNORE, $message = null)
{
$this->action = $action;
$this->message = $message;
}
public function getAction () { return $this->action; }
public function getMessage() { return $this->message; }
}
class SysMsg_AttackEnd extends SysMsg
{
protected $player;
public function __construct($player)
{
parent::__construct(SysMsg::ACTION_IGNORE, "");
$this->player = $player;
}
public function getMessage()
{
return '<b>' . $this->player['nickname'] . '</b> ends their attack.';
}
}
private function stageAction($type, $actions)
{
switch($type)
{
case 'attack_end':
$msg = new SysMsg_AttackEnd(active_player());
break;
}
if (isset($msg) && $msg->getAction() == SysMsg::ACTION_IGNORE)
{
$this->game['sys_msg'] = $msg;
$this->broadcastSysMsg();
}
}