Files
sweetgum-server/src/main/java/net/server/channel/handlers/RPSActionHandler.java
2021-11-07 12:36:00 +01:00

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();
}
}
}
}