/*
* Copyright (C) 2004-2015 L2J Server
*
* This file is part of L2J Server.
*
* L2J Server is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L2J Server is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package com.l2jserver.gameserver.network.serverpackets;
import java.util.ArrayList;
import java.util.List;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.network.NpcStringId;
/**
* @author Kerberos
*/
public final class NpcSay extends L2GameServerPacket
{
private final int _objectId;
private final int _textType;
private final int _npcId;
private String _text;
private final int _npcString;
private List _parameters;
/**
* @param objectId
* @param messageType
* @param npcId
* @param text
*/
public NpcSay(int objectId, int messageType, int npcId, String text)
{
_objectId = objectId;
_textType = messageType;
_npcId = 1000000 + npcId;
_npcString = -1;
_text = text;
}
public NpcSay(L2Npc npc, int messageType, String text)
{
_objectId = npc.getObjectId();
_textType = messageType;
_npcId = 1000000 + npc.getId();
_npcString = -1;
_text = text;
}
public NpcSay(int objectId, int messageType, int npcId, NpcStringId npcString)
{
_objectId = objectId;
_textType = messageType;
_npcId = 1000000 + npcId;
_npcString = npcString.getId();
}
public NpcSay(L2Npc npc, int messageType, NpcStringId npcString)
{
_objectId = npc.getObjectId();
_textType = messageType;
_npcId = 1000000 + npc.getId();
_npcString = npcString.getId();
}
/**
* @param text the text to add as a parameter for this packet's message (replaces S1, S2 etc.)
* @return this NpcSay packet object
*/
public NpcSay addStringParameter(String text)
{
if (_parameters == null)
{
_parameters = new ArrayList<>();
}
_parameters.add(text);
return this;
}
/**
* @param params a list of strings to add as parameters for this packet's message (replaces S1, S2 etc.)
* @return this NpcSay packet object
*/
public NpcSay addStringParameters(String... params)
{
if ((params != null) && (params.length > 0))
{
if (_parameters == null)
{
_parameters = new ArrayList<>();
}
for (String item : params)
{
if ((item != null) && (item.length() > 0))
{
_parameters.add(item);
}
}
}
return this;
}
@Override
protected final void writeImpl()
{
writeC(0x30);
writeD(_objectId);
writeD(_textType);
writeD(_npcId);
writeD(_npcString);
if (_npcString == -1)
{
writeS(_text);
}
else if (_parameters != null)
{
for (String s : _parameters)
{
writeS(s);
}
}
}
}