mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-21 19:34:42 +01:00
implement the activity system
This commit is contained in:
@@ -3,13 +3,20 @@ package emu.grasscutter.server.packet.recv;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.proto.GetActivityInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetActivityInfoRsp;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetActivityInfoReq)
|
||||
public class HandlerGetActivityInfoReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetActivityInfoRsp());
|
||||
var req = GetActivityInfoReqOuterClass.GetActivityInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetActivityInfoRsp(
|
||||
new HashSet<>(req.getActivityIdListList()),
|
||||
session.getPlayer().getActivityManager()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.props.WatcherTriggerType;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.MusicGameSettleReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketMusicGameSettleRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.MusicGameSettleReq)
|
||||
public class HandlerMusicGameSettleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = MusicGameSettleReqOuterClass.MusicGameSettleReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getActivityManager().triggerWatcher(
|
||||
WatcherTriggerType.TRIGGER_FLEUR_FAIR_MUSIC_GAME_REACH_SCORE,
|
||||
String.valueOf(req.getMusicBasicId()),
|
||||
String.valueOf(req.getScore())
|
||||
);
|
||||
|
||||
|
||||
//session.send(new PacketMusicGameSettleRsp(req.getMusicBasicId()));
|
||||
session.send(new PacketMusicGameSettleRsp(req.getMusicBasicId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.MusicGameStartReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketMusicGameStartRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.MusicGameStartReq)
|
||||
public class HandlerMusicGameStartReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = MusicGameStartReqOuterClass.MusicGameStartReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketMusicGameStartRsp(req.getMusicBasicId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ActivityInfoNotifyOuterClass;
|
||||
import emu.grasscutter.net.proto.ActivityInfoOuterClass;
|
||||
|
||||
public class PacketActivityInfoNotify extends BasePacket {
|
||||
|
||||
public PacketActivityInfoNotify(ActivityInfoOuterClass.ActivityInfo activityInfo) {
|
||||
super(PacketOpcodes.ActivityInfoNotify);
|
||||
|
||||
var proto = ActivityInfoNotifyOuterClass.ActivityInfoNotify.newBuilder();
|
||||
|
||||
proto.setActivityInfo(activityInfo);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.activity.ActivityConfigItem;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ActivityScheduleInfoNotifyOuterClass;
|
||||
import emu.grasscutter.net.proto.ActivityScheduleInfoOuterClass;
|
||||
import emu.grasscutter.utils.DateHelper;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class PacketActivityScheduleInfoNotify extends BasePacket {
|
||||
|
||||
public PacketActivityScheduleInfoNotify(Collection<ActivityConfigItem> activityConfigItemList) {
|
||||
super(PacketOpcodes.ActivityScheduleInfoNotify);
|
||||
|
||||
var proto = ActivityScheduleInfoNotifyOuterClass.ActivityScheduleInfoNotify.newBuilder();
|
||||
|
||||
activityConfigItemList.forEach(item -> {
|
||||
proto.addActivityScheduleList(ActivityScheduleInfoOuterClass.ActivityScheduleInfo.newBuilder()
|
||||
.setActivityId(item.getActivityId())
|
||||
.setScheduleId(item.getScheduleId())
|
||||
.setIsOpen(true)
|
||||
.setBeginTime(DateHelper.getUnixTime(item.getBeginTime()))
|
||||
.setEndTime(DateHelper.getUnixTime(item.getEndTime()))
|
||||
.build());
|
||||
});
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.activity.PlayerActivityData;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ActivityUpdateWatcherNotifyOuterClass;
|
||||
|
||||
public class PacketActivityUpdateWatcherNotify extends BasePacket {
|
||||
|
||||
public PacketActivityUpdateWatcherNotify(int activityId, PlayerActivityData.WatcherInfo watcherInfo) {
|
||||
super(PacketOpcodes.ActivityUpdateWatcherNotify);
|
||||
|
||||
var proto = ActivityUpdateWatcherNotifyOuterClass.ActivityUpdateWatcherNotify.newBuilder();
|
||||
|
||||
proto.setActivityId(activityId)
|
||||
.setWatcherInfo(watcherInfo.toProto());
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,22 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.activity.ActivityManager;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetActivityInfoRspOuterClass.GetActivityInfoRsp;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class PacketGetActivityInfoRsp extends BasePacket {
|
||||
public PacketGetActivityInfoRsp() {
|
||||
public PacketGetActivityInfoRsp(Set<Integer> activityIdList, ActivityManager activityManager) {
|
||||
super(PacketOpcodes.GetActivityInfoRsp);
|
||||
|
||||
GetActivityInfoRsp proto = GetActivityInfoRsp.newBuilder().build();
|
||||
|
||||
|
||||
var proto = GetActivityInfoRsp.newBuilder();
|
||||
|
||||
activityIdList.stream()
|
||||
.map(activityManager::getInfoProto)
|
||||
.forEach(proto::addActivityInfoList);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.MusicGameSettleRspOuterClass;
|
||||
|
||||
public class PacketMusicGameSettleRsp extends BasePacket {
|
||||
|
||||
public PacketMusicGameSettleRsp(int musicBasicId) {
|
||||
super(PacketOpcodes.MusicGameSettleRsp);
|
||||
|
||||
var proto = MusicGameSettleRspOuterClass.MusicGameSettleRsp.newBuilder();
|
||||
|
||||
proto.setMusicBasicId(musicBasicId)
|
||||
.setIsNewRecord(true);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.MusicGameStartRspOuterClass;
|
||||
|
||||
public class PacketMusicGameStartRsp extends BasePacket {
|
||||
|
||||
public PacketMusicGameStartRsp(int musicBasicId) {
|
||||
super(PacketOpcodes.MusicGameStartRsp);
|
||||
|
||||
var proto = MusicGameStartRspOuterClass.MusicGameStartRsp.newBuilder();
|
||||
|
||||
proto.setMusicBasicId(musicBasicId);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user