mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-23 10:44:36 +01:00
Implement discarding relics (the trash can button)
This commit is contained in:
@@ -48,7 +48,8 @@ public class GameItem {
|
||||
@Setter private int promotion;
|
||||
@Setter private int rank; // Superimpose
|
||||
@Setter private boolean locked;
|
||||
|
||||
@Setter private boolean discarded;
|
||||
|
||||
@Setter private int mainAffix;
|
||||
private List<GameItemSubAffix> subAffixes;
|
||||
|
||||
@@ -277,6 +278,7 @@ public class GameItem {
|
||||
.setLevel(this.getLevel())
|
||||
.setExp(this.getExp())
|
||||
.setIsProtected(this.isLocked())
|
||||
.setIsDiscarded(this.isDiscarded())
|
||||
.setBaseAvatarId(this.getEquipAvatar())
|
||||
.setMainAffixId(this.mainAffix);
|
||||
|
||||
|
||||
@@ -526,18 +526,30 @@ public class InventoryService extends BaseGameService {
|
||||
|
||||
// === Etc ===
|
||||
|
||||
public void lockEquip(Player player, int equipId, boolean locked) {
|
||||
GameItem equip = player.getInventory().getItemByUid(equipId);
|
||||
|
||||
if (equip == null || !equip.getExcel().isEquippable()) {
|
||||
public void lockItem(Player player, int equipId, boolean locked) {
|
||||
GameItem item = player.getInventory().getItemByUid(equipId);
|
||||
if (item == null || !item.getExcel().isEquippable()) {
|
||||
return;
|
||||
}
|
||||
|
||||
equip.setLocked(locked);
|
||||
equip.save();
|
||||
item.setLocked(locked);
|
||||
item.save();
|
||||
|
||||
// Send packet
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(equip));
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(item));
|
||||
}
|
||||
|
||||
public void discardRelic(Player player, int equipId, boolean discarded) {
|
||||
GameItem relic = player.getInventory().getItemByUid(equipId);
|
||||
if (relic == null || !relic.getExcel().isRelic()) {
|
||||
return;
|
||||
}
|
||||
|
||||
relic.setDiscarded(discarded);
|
||||
relic.save();
|
||||
|
||||
// Send packet
|
||||
player.sendPacket(new PacketPlayerSyncScNotify(relic));
|
||||
}
|
||||
|
||||
public Int2IntMap sellItems(Player player, List<ItemParam> items) {
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.proto.DiscardRelicCsReqOuterClass.DiscardRelicCsReq;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
|
||||
@Opcodes(CmdId.DiscardRelicCsReq)
|
||||
public class HandlerDiscardRelicCsReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = DiscardRelicCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().discardRelic(session.getPlayer(), req.getRelicUniqueId(), req.getIsDiscard());
|
||||
session.send(CmdId.DiscardRelicScRsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,7 +13,7 @@ public class HandlerLockEquipmentCsReq extends PacketHandler {
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = LockEquipmentCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().lockEquip(session.getPlayer(), req.getEquipmentUniqueId(), req.getIsProtected());
|
||||
session.getServer().getInventoryService().lockItem(session.getPlayer(), req.getEquipmentUniqueId(), req.getIsProtected());
|
||||
session.send(CmdId.LockEquipmentScRsp);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public class HandlerLockRelicCsReq extends PacketHandler {
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = LockRelicCsReq.parseFrom(data);
|
||||
|
||||
session.getServer().getInventoryService().lockEquip(session.getPlayer(), req.getRelicUniqueId(), req.getIsProtected());
|
||||
session.getServer().getInventoryService().lockItem(session.getPlayer(), req.getRelicUniqueId(), req.getIsProtected());
|
||||
session.send(CmdId.LockRelicScRsp);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user