73 lines
2.5 KiB
Java
73 lines
2.5 KiB
Java
package net.server.channel.handlers;
|
|
|
|
import client.Character;
|
|
import client.Client;
|
|
import constants.id.NpcId;
|
|
import net.AbstractPacketHandler;
|
|
import net.packet.InPacket;
|
|
import server.minigame.RockPaperScissor;
|
|
import tools.PacketCreator;
|
|
|
|
/**
|
|
* @Author Arnah
|
|
* @Website http://Vertisy.ca/
|
|
* @since Aug 15, 2016
|
|
*/
|
|
public final class RPSActionHandler extends AbstractPacketHandler {
|
|
|
|
@Override
|
|
public final void handlePacket(InPacket p, Client c) {
|
|
Character chr = c.getPlayer();
|
|
RockPaperScissor rps = chr.getRPS();
|
|
|
|
if (c.tryacquireClient()) {
|
|
try {
|
|
if (p.available() == 0 || !chr.getMap().containsNPC(NpcId.RPS_ADMIN)) {
|
|
if (rps != null) {
|
|
rps.dispose(c);
|
|
}
|
|
return;
|
|
}
|
|
final byte mode = p.readByte();
|
|
switch (mode) {
|
|
case 0: // start game
|
|
case 5: // retry
|
|
if (rps != null) {
|
|
rps.reward(c);
|
|
}
|
|
if (chr.getMeso() >= 1000) {
|
|
chr.setRPS(new RockPaperScissor(c, mode));
|
|
} else {
|
|
c.sendPacket(PacketCreator.rpsMesoError(-1));
|
|
}
|
|
break;
|
|
case 1: // answer
|
|
if (rps == null || !rps.answer(c, p.readByte())) {
|
|
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));// 13
|
|
}
|
|
break;
|
|
case 2: // time over
|
|
if (rps == null || !rps.timeOut(c)) {
|
|
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
|
|
}
|
|
break;
|
|
case 3: // continue
|
|
if (rps == null || !rps.nextRound(c)) {
|
|
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
|
|
}
|
|
break;
|
|
case 4: // leave
|
|
if (rps != null) {
|
|
rps.dispose(c);
|
|
} else {
|
|
c.sendPacket(PacketCreator.rpsMode((byte) 0x0D));
|
|
}
|
|
break;
|
|
}
|
|
} finally {
|
|
c.releaseClient();
|
|
}
|
|
}
|
|
}
|
|
}
|