72 lines
3.6 KiB
Java
72 lines
3.6 KiB
Java
package net.server.channel.handlers;
|
|
|
|
import client.MapleCharacter;
|
|
import client.MapleClient;
|
|
import server.minigame.MapleRockPaperScissor;
|
|
import net.AbstractMaplePacketHandler;
|
|
import tools.MaplePacketCreator;
|
|
import tools.data.input.SeekableLittleEndianAccessor;
|
|
|
|
/**
|
|
* @Author Arnah
|
|
* @Website http://Vertisy.ca/
|
|
* @since Aug 15, 2016
|
|
*/
|
|
public final class RPSActionHandler extends AbstractMaplePacketHandler{
|
|
|
|
@Override
|
|
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c){
|
|
MapleCharacter chr = c.getPlayer();
|
|
MapleRockPaperScissor rps = chr.getRPS();
|
|
|
|
if (c.tryacquireClient()) {
|
|
try {
|
|
if(slea.available() == 0 || !chr.getMap().containsNPC(9000019)){
|
|
if(rps != null){
|
|
rps.dispose(c);
|
|
}
|
|
return;
|
|
}
|
|
final byte mode = slea.readByte();
|
|
switch (mode){
|
|
case 0: // start game
|
|
case 5: // retry
|
|
if(rps != null){
|
|
rps.reward(c);
|
|
}
|
|
if(chr.getMeso() >= 1000){
|
|
chr.setRPS(new MapleRockPaperScissor(c, mode));
|
|
}else{
|
|
c.announce(MaplePacketCreator.rpsMesoError(-1));
|
|
}
|
|
break;
|
|
case 1: // answer
|
|
if(rps == null || !rps.answer(c, slea.readByte())){
|
|
c.announce(MaplePacketCreator.rpsMode((byte) 0x0D));// 13
|
|
}
|
|
break;
|
|
case 2: // time over
|
|
if(rps == null || !rps.timeOut(c)){
|
|
c.announce(MaplePacketCreator.rpsMode((byte) 0x0D));
|
|
}
|
|
break;
|
|
case 3: // continue
|
|
if(rps == null || !rps.nextRound(c)){
|
|
c.announce(MaplePacketCreator.rpsMode((byte) 0x0D));
|
|
}
|
|
break;
|
|
case 4: // leave
|
|
if(rps != null){
|
|
rps.dispose(c);
|
|
}else{
|
|
c.announce(MaplePacketCreator.rpsMode((byte) 0x0D));
|
|
}
|
|
break;
|
|
}
|
|
} finally {
|
|
c.releaseClient();
|
|
}
|
|
}
|
|
}
|
|
}
|