mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-12-04 09:50:08 +00:00
f139818224
* feature(2.7 version): support 2.7 version & upload new protos 1. Support GC in GI 2.7.0; 2. Upload new protos; 3. Fix some bugs cuz by new protos. BREAKING CHANGE: all * fix(database helper): fix player uid issues * fix(ability embryo): uint32 to fixed32 * fix(proto): map mark rename MAP_MARK_FROM_TYPE_NOE to MAP_MARK_FROM_TYPE_NONE * fix(game version): change game version to 2.7.0 * perf(proto): remove unused protos 1. Remove unused protos; 2. Temporarily commented out some of the proto fields. * fix(proto): uint32 to fixed32
64 lines
2.2 KiB
Java
64 lines
2.2 KiB
Java
package emu.grasscutter.server.packet.send;
|
|
|
|
import emu.grasscutter.game.dungeons.DungeonChallenge;
|
|
import emu.grasscutter.net.packet.BasePacket;
|
|
import emu.grasscutter.net.packet.PacketOpcodes;
|
|
import emu.grasscutter.net.proto.DungeonSettleNotifyOuterClass.DungeonSettleNotify;
|
|
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
|
import emu.grasscutter.net.proto.TowerLevelEndNotifyOuterClass.TowerLevelEndNotify;
|
|
|
|
public class PacketDungeonSettleNotify extends BasePacket {
|
|
|
|
public PacketDungeonSettleNotify(DungeonChallenge challenge) {
|
|
super(PacketOpcodes.DungeonSettleNotify);
|
|
|
|
DungeonSettleNotify proto = DungeonSettleNotify.newBuilder()
|
|
.setDungeonId(challenge.getScene().getDungeonData().getId())
|
|
.setIsSuccess(challenge.isSuccess())
|
|
.setCloseTime(challenge.getScene().getAutoCloseTime())
|
|
.setResult(challenge.isSuccess() ? 1 : 0)
|
|
.build();
|
|
|
|
this.setData(proto);
|
|
}
|
|
|
|
public PacketDungeonSettleNotify(DungeonChallenge challenge,
|
|
boolean canJump,
|
|
boolean hasNextLevel,
|
|
int nextFloorId
|
|
) {
|
|
super(PacketOpcodes.DungeonSettleNotify);
|
|
|
|
var continueStatus = TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_NOT_CONTINUE_VALUE;
|
|
if(challenge.isSuccess() && canJump){
|
|
continueStatus = hasNextLevel ? TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_ENTER_NEXT_LEVEL_VALUE
|
|
: TowerLevelEndNotify.ContinueStateType.CONTINUE_STATE_TYPE_CAN_ENTER_NEXT_FLOOR_VALUE;
|
|
}
|
|
|
|
var towerLevelEndNotify = TowerLevelEndNotify.newBuilder()
|
|
.setIsSuccess(challenge.isSuccess())
|
|
.setContinueState(continueStatus)
|
|
.addFinishedStarCondList(1)
|
|
.addFinishedStarCondList(2)
|
|
.addFinishedStarCondList(3)
|
|
.addRewardItemList(ItemParamOuterClass.ItemParam.newBuilder()
|
|
.setItemId(201)
|
|
.setCount(1000)
|
|
.build())
|
|
;
|
|
if(nextFloorId > 0 && canJump){
|
|
towerLevelEndNotify.setNextFloorId(nextFloorId);
|
|
}
|
|
|
|
DungeonSettleNotify proto = DungeonSettleNotify.newBuilder()
|
|
.setDungeonId(challenge.getScene().getDungeonData().getId())
|
|
.setIsSuccess(challenge.isSuccess())
|
|
.setCloseTime(challenge.getScene().getAutoCloseTime())
|
|
.setResult(challenge.isSuccess() ? 1 : 0)
|
|
.setTowerLevelEndNotify(towerLevelEndNotify.build())
|
|
.build();
|
|
|
|
this.setData(proto);
|
|
}
|
|
}
|