Files
Nebula/src/main/java/emu/nebula/server/handlers/HandlerGachaSpinReq.java
T
YostarccandYostarcc 1316654c15 Reimplement gacha (#32)
* Fix some grammar warning

* Reimplement gacha

* Update GachaResult#toSpinResp declaration

---------

Co-authored-by: Yostarcc <lubenwei7758258@gmail.com>
2026-05-05 21:49:21 -07:00

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