mirror of
https://github.com/Melledy/Nebula.git
synced 2026-11-04 21:36:51 +01:00
* Fix some grammar warning * Reimplement gacha * Update GachaResult#toSpinResp declaration --------- Co-authored-by: Yostarcc <lubenwei7758258@gmail.com>
43 lines
1.3 KiB
Java
43 lines
1.3 KiB
Java
package emu.nebula.server.handlers;
|
|
|
|
import emu.nebula.Nebula;
|
|
import emu.nebula.data.GameData;
|
|
import emu.nebula.game.gacha.GachaMode;
|
|
import emu.nebula.net.GameSession;
|
|
import emu.nebula.net.HandlerId;
|
|
import emu.nebula.net.NetHandler;
|
|
import emu.nebula.net.NetMsgId;
|
|
import emu.nebula.proto.GachaSpin.GachaSpinReq;
|
|
|
|
@HandlerId(NetMsgId.gacha_spin_req)
|
|
public class HandlerGachaSpinReq extends NetHandler {
|
|
|
|
@Override
|
|
public byte[] handle(GameSession session, byte[] message) throws Exception {
|
|
// Parse request
|
|
var req = GachaSpinReq.parseFrom(message);
|
|
Integer amount = GachaMode.getAmountByMode(req.getMode());
|
|
if (amount == null) {
|
|
return session.encodeMsg(NetMsgId.gacha_spin_failed_ack);
|
|
}
|
|
|
|
// Do gacha
|
|
var result = Nebula.getGameContext().getGachaModule().spin(
|
|
session.getPlayer(),
|
|
req.getId(),
|
|
amount
|
|
);
|
|
|
|
if (result == null) {
|
|
return session.encodeMsg(NetMsgId.gacha_spin_failed_ack);
|
|
}
|
|
|
|
var gachaData = GameData.getGachaDataTable().get(req.getId());
|
|
var rsp = result.toSpinResp(gachaData);
|
|
|
|
// Encode and send response
|
|
return session.encodeMsg(NetMsgId.gacha_spin_succeed_ack, rsp);
|
|
}
|
|
|
|
}
|