mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-17 09:25:06 +01:00
Custom Teams (#1731)
* Add support for creating and deleting custom teams. * Add support for creating and deleting custom teams. * Move some logic to TeamInfo::toProto
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
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.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AddCustomTeamReq)
|
||||
public class HandlerAddCustomTeamReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getTeamManager().addNewCustomTeam();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.RemoveCustomTeamReqOuterClass.RemoveCustomTeamReq;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.RemoveCustomTeamReq)
|
||||
public class HandlerRemoveCustomTeamReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
RemoveCustomTeamReq req = RemoveCustomTeamReq.parseFrom(payload);
|
||||
session.getPlayer().getTeamManager().removeCustomTeam(req.getId());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.AddCustomTeamRspOuterClass.AddCustomTeamRsp;
|
||||
|
||||
public class PacketAddCustomTeamRsp extends BasePacket {
|
||||
public PacketAddCustomTeamRsp(Retcode retcode) {
|
||||
super(PacketOpcodes.AddCustomTeamRsp);
|
||||
|
||||
AddCustomTeamRsp proto = AddCustomTeamRsp.newBuilder()
|
||||
.setRetcode(retcode.getNumber())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketAddCustomTeamRsp() {
|
||||
this(Retcode.RET_SUCC);
|
||||
}
|
||||
}
|
||||
@@ -25,17 +25,16 @@ public class PacketAvatarDataNotify extends BasePacket {
|
||||
proto.addAvatarList(avatar.toProto());
|
||||
}
|
||||
|
||||
// Add the id list for custom teams.
|
||||
for (int id : player.getTeamManager().getTeams().keySet()) {
|
||||
if (id > 4) {
|
||||
proto.addCustomTeamIds(id);
|
||||
}
|
||||
}
|
||||
|
||||
for (Entry<Integer, TeamInfo> entry : player.getTeamManager().getTeams().entrySet()) {
|
||||
TeamInfo teamInfo = entry.getValue();
|
||||
AvatarTeam.Builder avatarTeam = AvatarTeam.newBuilder()
|
||||
.setTeamName(teamInfo.getName());
|
||||
|
||||
for (int i = 0; i < teamInfo.getAvatars().size(); i++) {
|
||||
Avatar avatar = player.getAvatars().getAvatarById(teamInfo.getAvatars().get(i));
|
||||
avatarTeam.addAvatarGuidList(avatar.getGuid());
|
||||
}
|
||||
|
||||
proto.putAvatarTeamMap(entry.getKey(), avatarTeam.build());
|
||||
proto.putAvatarTeamMap(entry.getKey(), teamInfo.toProto(player));
|
||||
}
|
||||
|
||||
// Set main character
|
||||
|
||||
@@ -19,15 +19,7 @@ public class PacketAvatarTeamUpdateNotify extends BasePacket {
|
||||
|
||||
for (Entry<Integer, TeamInfo> entry : player.getTeamManager().getTeams().entrySet()) {
|
||||
TeamInfo teamInfo = entry.getValue();
|
||||
AvatarTeam.Builder avatarTeam = AvatarTeam.newBuilder()
|
||||
.setTeamName(teamInfo.getName());
|
||||
|
||||
for (int i = 0; i < teamInfo.getAvatars().size(); i++) {
|
||||
Avatar avatar = player.getAvatars().getAvatarById(teamInfo.getAvatars().get(i));
|
||||
avatarTeam.addAvatarGuidList(avatar.getGuid());
|
||||
}
|
||||
|
||||
proto.putAvatarTeamMap(entry.getKey(), avatarTeam.build());
|
||||
proto.putAvatarTeamMap(entry.getKey(), teamInfo.toProto(player));
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.player.TeamInfo;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarTeamOuterClass.AvatarTeam;
|
||||
import emu.grasscutter.net.proto.CustomTeamListNotifyOuterClass.CustomTeamListNotify;
|
||||
|
||||
public class PacketCustomTeamListNotify extends BasePacket {
|
||||
public PacketCustomTeamListNotify(Player player) {
|
||||
super(PacketOpcodes.CustomTeamListNotify);
|
||||
|
||||
CustomTeamListNotify.Builder proto = CustomTeamListNotify.newBuilder();
|
||||
|
||||
// Add the id list for custom teams.
|
||||
for (int id : player.getTeamManager().getTeams().keySet()) {
|
||||
if (id > 4) {
|
||||
proto.addCustomTeamIds(id);
|
||||
}
|
||||
}
|
||||
|
||||
// Add the avatar lists for all the teams the player has.
|
||||
for (Entry<Integer, TeamInfo> entry : player.getTeamManager().getTeams().entrySet()) {
|
||||
TeamInfo teamInfo = entry.getValue();
|
||||
proto.putAvatarTeamMap(entry.getKey(), teamInfo.toProto(player));
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.RemoveCustomTeamRspOuterClass.RemoveCustomTeamRsp;
|
||||
|
||||
public class PacketRemoveCustomTeamRsp extends BasePacket {
|
||||
public PacketRemoveCustomTeamRsp(Retcode retcode, int id) {
|
||||
super(PacketOpcodes.RemoveCustomTeamRsp);
|
||||
|
||||
RemoveCustomTeamRsp proto = RemoveCustomTeamRsp.newBuilder()
|
||||
.setRetcode(retcode.getNumber())
|
||||
.setId(id)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketRemoveCustomTeamRsp(int id) {
|
||||
this(Retcode.RET_SUCC, id);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user