package ru.nts.core.network.outgoing;
import ru.nts.core.network.GameClient;
import ru.nts.core.network.GameClientOutgoingPackets;
import ru.nts.core.network.IClientOutgoingPacket;
import ru.nts.core.network.PacketWriter;
import ru.nts.gameserver.game.world.objects.WorldObject;
import ru.nts.gameserver.game.world.objects.creatures.Creature;
import ru.nts.gameserver.system.enums.EL2_SND_TYPE;
public class S_PLAY_SOUND implements IClientOutgoingPacket {
private final EL2_SND_TYPE snd_type;
private final String pszFileName;
private final int nCount;
private final int nServerID;
private final int x;
private final int y;
private final int z;
private final int Delay;
@Override
public int getPriority() {
return IClientOutgoingPacket.MIN_PRIORITY;
}
public static S_PLAY_SOUND createSound(String soundFile){
return new S_PLAY_SOUND(EL2_SND_TYPE.SND_EFFECT, soundFile, 0);
}
public static S_PLAY_SOUND createMusic(String soundFile, int delay){
return new S_PLAY_SOUND(EL2_SND_TYPE.SND_MUSIC, soundFile, delay);
}
public static S_PLAY_SOUND createStreamingVoice(String soundFile, int delay){
return new S_PLAY_SOUND(EL2_SND_TYPE.SND_STREAMING_VOICE, soundFile, delay);
}
public static S_PLAY_SOUND createNPCVoice(Creature creature, String soundFile, int delay){
return new S_PLAY_SOUND(EL2_SND_TYPE.SND_NPC_VOICE, soundFile, creature, delay);
}
public static S_PLAY_SOUND createItemMusic(Creature creature, String soundFile, int delay){
return new S_PLAY_SOUND(EL2_SND_TYPE.SND_ITEM_MUSIC, soundFile, creature, delay);
}
public static S_PLAY_SOUND createDynamicalSound(String soundFile, WorldObject object){
return new S_PLAY_SOUND(EL2_SND_TYPE.SND_EFFECT, soundFile, object);
}
public static S_PLAY_SOUND manualCreateSound(EL2_SND_TYPE type, String soundFile, int bindToObject, int objectId, int x, int y, int z, int delay){
return new S_PLAY_SOUND(type, soundFile, bindToObject, objectId, x, y, z, delay);
}
private S_PLAY_SOUND(EL2_SND_TYPE type, String soundFile, int delay) {
snd_type = type;
pszFileName = soundFile;
nCount = 0;
nServerID = 0;
x = 0;
y = 0;
z = 0;
Delay = delay;
}
private S_PLAY_SOUND(EL2_SND_TYPE type, String soundFile, WorldObject object) {
snd_type = type;
pszFileName = soundFile;
nCount = 1;
nServerID = object.getObjectId();
x = object.getX();
y = object.getY();
z = object.getZ();
Delay = 0;
}
private S_PLAY_SOUND(EL2_SND_TYPE type, String soundFile, WorldObject object, int delay) {
snd_type = type;
pszFileName = soundFile;
nCount = 0;
nServerID = object.getObjectId();
x = object.getX();
y = object.getY();
z = object.getZ();
Delay = delay;
}
private S_PLAY_SOUND(EL2_SND_TYPE type, String soundFile, int bindToObject, int objectId, int x, int y, int z, int delay) {
snd_type = type;
pszFileName = soundFile;
nCount = bindToObject;
nServerID = objectId;
this.x = x;
this.y = y;
this.z = z;
Delay = delay;
}
@Override
public void write(PacketWriter packet, GameClient client) {
GameClientOutgoingPackets.S_PLAY_SOUND.writeId(packet);
packet.writeD(snd_type);
packet.writeS(pszFileName);
packet.writeD(nCount);
packet.writeD(nServerID);
packet.writeD(x);
packet.writeD(y);
packet.writeD(z);
packet.writeD(Delay);
}
}