Refactor many functions in InventoryService

Inventory handlers should now always send a rsp packet even if there is an error
This commit is contained in:
Melledy
2023-11-25 03:00:13 -08:00
parent c81e17f10c
commit f22e0f3ef3
16 changed files with 127 additions and 140 deletions

View File

@@ -13,8 +13,6 @@ import emu.lunarcore.game.avatar.GameAvatar;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.server.game.BaseGameService;
import emu.lunarcore.server.game.GameServer;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.send.*;
import it.unimi.dsi.fastutil.ints.Int2IntMap;
@@ -28,13 +26,13 @@ public class InventoryService extends BaseGameService {
// === Avatars ===
public void levelUpAvatar(Player player, int avatarId, Collection<ItemParam> items) {
public List<GameItem> levelUpAvatar(Player player, int avatarId, Collection<ItemParam> items) {
// Get avatar
GameAvatar avatar = player.getAvatarById(avatarId);
if (avatar == null) return;
if (avatar == null) return null;
AvatarPromotionExcel promoteData = GameData.getAvatarPromotionExcel(avatarId, avatar.getPromotion());
if (promoteData == null) return;
if (promoteData == null) return null;
// Exp gain
int amount = 0;
@@ -42,7 +40,9 @@ public class InventoryService extends BaseGameService {
// Verify items
for (ItemParam param : items) {
GameItem item = player.getInventory().getItemByParam(param);
if (item == null || item.getExcel().getAvatarExp() == 0 || item.getCount() < param.getCount()) return;
if (item == null || item.getExcel().getAvatarExp() == 0 || item.getCount() < param.getCount()) {
return null;
}
amount += item.getExcel().getAvatarExp() * param.getCount();
}
@@ -50,8 +50,7 @@ public class InventoryService extends BaseGameService {
// Verify credits
int cost = amount / 10;
if (player.getScoin() < cost) {
player.sendPacket(new PacketAvatarExpUpScRsp());
return;
return null;
}
// Pay items
@@ -111,24 +110,23 @@ public class InventoryService extends BaseGameService {
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
player.sendPacket(new PacketAvatarExpUpScRsp(returnItems));
return returnItems;
}
public void promoteAvatar(Player player, int avatarId) {
public boolean promoteAvatar(Player player, int avatarId) {
// Get avatar
GameAvatar avatar = player.getAvatarById(avatarId);
if (avatar == null || avatar.getPromotion() >= avatar.getExcel().getMaxPromotion()) return;
if (avatar == null || avatar.getPromotion() >= avatar.getExcel().getMaxPromotion()) return false;
AvatarPromotionExcel promotion = GameData.getAvatarPromotionExcel(avatarId, avatar.getPromotion());
// Sanity check
if ((promotion == null) || avatar.getLevel() < promotion.getMaxLevel() || player.getLevel() < promotion.getPlayerLevelRequire() || player.getWorldLevel() < promotion.getWorldLevelRequire()) {
return;
return false;
}
// Verify item params
if (!player.getInventory().verifyItems(promotion.getPromotionCostList())) {
player.sendPacket(new BasePacket(CmdId.PromoteAvatarScRsp));
return;
return false;
}
// Pay items
@@ -142,26 +140,24 @@ public class InventoryService extends BaseGameService {
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
player.sendPacket(new BasePacket(CmdId.PromoteAvatarScRsp));
return true;
}
public void unlockSkillTreeAvatar(Player player, int pointId) {
// Hacky way to get avatar id
int avatarId = pointId / 1000;
public boolean unlockSkillTreeAvatar(Player player, int avatarId, int pointId) {
// Get avatar + Skill Tree data
GameAvatar avatar = player.getAvatarById(avatarId);
if (avatar == null) return;
if (avatar == null) return false;
int nextLevel = avatar.getSkills().getOrDefault(pointId, 0) + 1;
AvatarSkillTreeExcel skillTree = GameData.getAvatarSkillTreeExcel(pointId, nextLevel);
if (skillTree == null || skillTree.getAvatarID() != avatar.getExcel().getAvatarID()) return;
if (skillTree == null || skillTree.getAvatarID() != avatar.getExcel().getAvatarID()) {
return false;
}
// Verify item params
if (!player.getInventory().verifyItems(skillTree.getMaterialList())) {
player.sendPacket(new PacketUnlockSkilltreeScRsp());
return;
return false;
}
// Pay items
@@ -180,23 +176,22 @@ public class InventoryService extends BaseGameService {
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
}
player.sendPacket(new PacketUnlockSkilltreeScRsp(avatarId, pointId, nextLevel));
return true;
}
public void rankUpAvatar(Player player, int avatarId) {
public boolean rankUpAvatar(Player player, int avatarId) {
// Get avatar
GameAvatar avatar = player.getAvatarById(avatarId);
if (avatar == null || avatar.getRank() >= avatar.getExcel().getMaxRank()) return;
if (avatar == null || avatar.getRank() >= avatar.getExcel().getMaxRank()) return false;
AvatarRankExcel rankData = GameData.getAvatarRankExcel(avatar.getExcel().getRankId(avatar.getRank()));
if (rankData == null) return;
if (rankData == null) return false;
// Verify items
for (ItemParam param : rankData.getUnlockCost()) {
GameItem item = player.getInventory().getItemByParam(param);
if (item == null || item.getCount() < param.getCount()) {
player.sendPacket(new BasePacket(CmdId.RankUpAvatarScRsp));
return;
return false;
}
}
@@ -214,27 +209,24 @@ public class InventoryService extends BaseGameService {
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
}
player.sendPacket(new BasePacket(CmdId.RankUpAvatarScRsp));
return true;
}
public void takePromotionRewardAvatar(Player player, int avatarId, int promotion) {
public List<GameItem> takePromotionRewardAvatar(Player player, int avatarId, int promotion) {
// Get avatar
GameAvatar avatar = player.getAvatarById(avatarId);
if (avatar == null) {
player.sendPacket(new PacketTakePromotionRewardScRsp());
return;
return null;
}
// Sanity
if (promotion <= 0 || promotion > avatar.getPromotion()) {
player.sendPacket(new PacketTakePromotionRewardScRsp());
return;
return null;
}
// Make sure promotion level is odd + Make sure promotion reward isnt already taken
if (promotion % 2 == 0 || avatar.getTakenRewards().contains(promotion)) {
player.sendPacket(new PacketTakePromotionRewardScRsp());
return;
return null;
}
// Set reward as taken
@@ -250,22 +242,21 @@ public class InventoryService extends BaseGameService {
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(avatar));
player.sendPacket(new PacketTakePromotionRewardScRsp(rewards));
return rewards;
}
// === Equipment ===
public void levelUpEquipment(Player player, int equipId, Collection<ItemParam> items) {
public List<GameItem> levelUpEquipment(Player player, int equipId, Collection<ItemParam> items) {
// Get equipment
GameItem equip = player.getInventory().getItemByUid(equipId);
if (equip == null || !equip.getExcel().isEquipment()) {
player.sendPacket(new PacketExpUpEquipmentScRsp());
return;
return null;
}
EquipmentPromotionExcel promoteData = GameData.getEquipmentPromotionExcel(equip.getItemId(), equip.getPromotion());
if (promoteData == null) return;
if (promoteData == null) return null;
// Exp gain
int cost = 0;
@@ -274,10 +265,8 @@ public class InventoryService extends BaseGameService {
// Verify items
for (ItemParam param : items) {
GameItem item = player.getInventory().getItemByParam(param);
System.out.println(param.getId());
if (item == null || item.isLocked() || item.getCount() < param.getCount()) {
player.sendPacket(new PacketExpUpEquipmentScRsp());
return;
return null;
}
if (item.getExcel().getEquipmentExp() > 0) {
@@ -288,8 +277,7 @@ public class InventoryService extends BaseGameService {
// Verify credits
if (player.getScoin() < cost) {
player.sendPacket(new PacketExpUpEquipmentScRsp());
return;
return null;
}
// Pay items
@@ -349,38 +337,34 @@ public class InventoryService extends BaseGameService {
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(equip));
player.sendPacket(new PacketExpUpEquipmentScRsp(returnItems));
return returnItems;
}
public void promoteEquipment(Player player, int equipId) {
public boolean promoteEquipment(Player player, int equipId) {
// Get equipment
GameItem equip = player.getInventory().getItemByUid(equipId);
if (equip == null || !equip.getExcel().isEquipment() || equip.getPromotion() >= equip.getExcel().getEquipmentExcel().getMaxPromotion()) {
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
return;
return false;
}
EquipmentPromotionExcel promotion = GameData.getEquipmentPromotionExcel(equip.getItemId(), equip.getPromotion());
// Sanity check
if ((promotion == null) || equip.getLevel() < promotion.getMaxLevel() || player.getLevel() < promotion.getPlayerLevelRequire() || player.getWorldLevel() < promotion.getWorldLevelRequire()) {
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
return;
return false;
}
// Verify items
for (ItemParam param : promotion.getPromotionCostList()) {
GameItem item = player.getInventory().getItemByParam(param);
if (item == null || item.getCount() < param.getCount()) {
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
return;
return false;
}
}
// Verify credits
if (player.getScoin() < promotion.getPromotionCostCoin()) {
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
return;
return false;
}
// Pay items
@@ -395,48 +379,50 @@ public class InventoryService extends BaseGameService {
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(equip));
player.sendPacket(new BasePacket(CmdId.PromoteEquipmentScRsp));
return true;
}
public void rankUpEquipment(Player player, int equipId, List<ItemParam> items) {
public boolean rankUpEquipment(Player player, int equipId, List<ItemParam> items) {
// Get avatar
GameItem equip = player.getInventory().getItemByUid(equipId);
if (equip == null || !equip.getExcel().isEquipment() || equip.getRank() >= equip.getExcel().getEquipmentExcel().getMaxRank()) {
player.sendPacket(new BasePacket(CmdId.RankUpEquipmentScRsp));
return;
return false;
}
// Rank up amount
int amount = 0;
// Verify items
for (ItemParam param : items) {
GameItem item = player.getInventory().getItemByParam(param);
if (item == null || !equip.getExcel().getEquipmentExcel().isRankUpItem(item) || item.getCount() < param.getCount()) {
player.sendPacket(new BasePacket(CmdId.RankUpEquipmentScRsp));
return;
return false;
}
amount += item.getRank();
}
// Pay items
player.getInventory().removeItemsByParams(items);
// Add rank
equip.setRank(Math.min(equip.getRank() + items.size(), equip.getExcel().getEquipmentExcel().getMaxRank()));
equip.setRank(Math.min(equip.getRank() + amount, equip.getExcel().getEquipmentExcel().getMaxRank()));
equip.save();
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(equip));
player.sendPacket(new BasePacket(CmdId.RankUpEquipmentScRsp));
return true;
}
// === Relic ===
public void levelUpRelic(Player player, int equipId, Collection<ItemParam> items) {
public List<GameItem> levelUpRelic(Player player, int equipId, Collection<ItemParam> items) {
// Get relic
GameItem equip = player.getInventory().getItemByUid(equipId);
if (equip == null || !equip.getExcel().isRelic()) {
player.sendPacket(new PacketExpUpRelicScRsp());
return;
return null;
}
// Exp gain
@@ -447,8 +433,7 @@ public class InventoryService extends BaseGameService {
for (ItemParam param : items) {
GameItem item = player.getInventory().getItemByParam(param);
if (item == null || item.isLocked() || item.getCount() < param.getCount()) {
player.sendPacket(new PacketExpUpRelicScRsp());
return;
return null;
}
if (item.getExcel().getRelicExp() > 0) {
@@ -463,8 +448,7 @@ public class InventoryService extends BaseGameService {
// Verify credits
if (player.getScoin() < cost) {
player.sendPacket(new PacketExpUpRelicScRsp());
return;
return null;
}
// Pay items
@@ -537,7 +521,7 @@ public class InventoryService extends BaseGameService {
// Send packets
player.sendPacket(new PacketPlayerSyncScNotify(equip));
player.sendPacket(new PacketExpUpRelicScRsp(returnItems));
return returnItems;
}
// === Etc ===
@@ -556,15 +540,14 @@ public class InventoryService extends BaseGameService {
player.sendPacket(new PacketPlayerSyncScNotify(equip));
}
public void sellItems(Player player, List<ItemParam> items) {
public Int2IntMap sellItems(Player player, List<ItemParam> items) {
// Verify items
var returnItems = new Int2IntOpenHashMap();
for (ItemParam param : items) {
GameItem item = player.getInventory().getItemByParam(param);
if (item == null || item.isLocked() || item.getCount() < param.getCount()) {
player.sendPacket(new PacketSellItemScRsp(null));
return;
return null;
}
// Add return items
@@ -582,8 +565,8 @@ public class InventoryService extends BaseGameService {
player.getInventory().addItem(returnItem.getIntKey(), returnItem.getIntValue());
}
// Send packet
player.sendPacket(new PacketSellItemScRsp(returnItems));
// Done
return returnItems;
}
public List<GameItem> composeItem(Player player, int composeId, int count) {

View File

@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketAvatarExpUpScRsp;
@Opcodes(CmdId.AvatarExpUpCsReq)
public class HandlerAvatarExpUpCsReq extends PacketHandler {
@@ -23,7 +24,8 @@ public class HandlerAvatarExpUpCsReq extends PacketHandler {
items.add(new ItemParam(cost));
}
session.getServer().getInventoryService().levelUpAvatar(session.getPlayer(), req.getBaseAvatarId(), items);
var returnItems = session.getServer().getInventoryService().levelUpAvatar(session.getPlayer(), req.getBaseAvatarId(), items);
session.send(new PacketAvatarExpUpScRsp(returnItems));
}
}

View File

@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketExpUpEquipmentScRsp;
@Opcodes(CmdId.ExpUpEquipmentCsReq)
public class HandlerExpUpEquipmentCsReq extends PacketHandler {
@@ -23,7 +24,8 @@ public class HandlerExpUpEquipmentCsReq extends PacketHandler {
items.add(new ItemParam(cost));
}
session.getServer().getInventoryService().levelUpEquipment(session.getPlayer(), req.getEquipmentUniqueId(), items);
var returnItems = session.getServer().getInventoryService().levelUpEquipment(session.getPlayer(), req.getEquipmentUniqueId(), items);
session.send(new PacketExpUpEquipmentScRsp(returnItems));
}
}

View File

@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketExpUpRelicScRsp;
@Opcodes(CmdId.ExpUpRelicCsReq)
public class HandlerExpUpRelicCsReq extends PacketHandler {
@@ -23,7 +24,8 @@ public class HandlerExpUpRelicCsReq extends PacketHandler {
items.add(new ItemParam(cost));
}
session.getServer().getInventoryService().levelUpRelic(session.getPlayer(), req.getRelicUniqueId(), items);
var returnItems = session.getServer().getInventoryService().levelUpRelic(session.getPlayer(), req.getRelicUniqueId(), items);
session.send(new PacketExpUpRelicScRsp(returnItems));
}
}

View File

@@ -14,6 +14,7 @@ public class HandlerPromoteAvatarCsReq extends PacketHandler {
var req = PromoteAvatarCsReq.parseFrom(data);
session.getServer().getInventoryService().promoteAvatar(session.getPlayer(), req.getBaseAvatarId());
session.send(CmdId.PromoteAvatarScRsp);
}
}

View File

@@ -14,6 +14,7 @@ public class HandlerPromoteEquipmentCsReq extends PacketHandler {
var req = PromoteEquipmentCsReq.parseFrom(data);
session.getServer().getInventoryService().promoteEquipment(session.getPlayer(), req.getEquipmentUniqueId());
session.send(CmdId.PromoteEquipmentScRsp);
}
}

View File

@@ -14,6 +14,7 @@ public class HandlerRankUpAvatarCsReq extends PacketHandler {
var req = RankUpAvatarCsReq.parseFrom(data);
session.getServer().getInventoryService().rankUpAvatar(session.getPlayer(), req.getBaseAvatarId());
session.send(CmdId.RankUpAvatarScRsp);
}
}

View File

@@ -24,6 +24,7 @@ public class HandlerRankUpEquipmentCsReq extends PacketHandler {
}
session.getServer().getInventoryService().rankUpEquipment(session.getPlayer(), req.getEquipmentUniqueId(), items);
session.send(CmdId.RankUpEquipmentScRsp);
}
}

View File

@@ -10,6 +10,7 @@ import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketSellItemScRsp;
@Opcodes(CmdId.SellItemCsReq)
public class HandlerSellItemCsReq extends PacketHandler {
@@ -23,7 +24,8 @@ public class HandlerSellItemCsReq extends PacketHandler {
items.add(new ItemParam(cost));
}
session.getServer().getInventoryService().sellItems(session.getPlayer(), items);
var returnItems = session.getServer().getInventoryService().sellItems(session.getPlayer(), items);
session.send(new PacketSellItemScRsp(returnItems));
}
}

View File

@@ -5,6 +5,7 @@ import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketTakePromotionRewardScRsp;
@Opcodes(CmdId.TakePromotionRewardCsReq)
public class HandlerTakePromotionRewardCsReq extends PacketHandler {
@@ -13,7 +14,8 @@ public class HandlerTakePromotionRewardCsReq extends PacketHandler {
public void handle(GameSession session, byte[] data) throws Exception {
var req = TakePromotionRewardCsReq.parseFrom(data);
session.getServer().getInventoryService().takePromotionRewardAvatar(session.getPlayer(), req.getBaseAvatarId(), req.getPromotion());
var rewards = session.getServer().getInventoryService().takePromotionRewardAvatar(session.getPlayer(), req.getBaseAvatarId(), req.getPromotion());
session.send(new PacketTakePromotionRewardScRsp(rewards));
}
}

View File

@@ -5,6 +5,7 @@ import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketUnlockSkilltreeScRsp;
@Opcodes(CmdId.UnlockSkilltreeCsReq)
public class HandlerUnlockSkilltreeCsReq extends PacketHandler {
@@ -12,8 +13,15 @@ public class HandlerUnlockSkilltreeCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] data) throws Exception {
var req = UnlockSkilltreeCsReq.parseFrom(data);
int avatarId = req.getPointId() / 1000; // Hacky way to get avatar id
session.getServer().getInventoryService().unlockSkillTreeAvatar(session.getPlayer(), req.getPointId());
boolean success = session.getServer().getInventoryService().unlockSkillTreeAvatar(session.getPlayer(), avatarId, req.getPointId());
if (success) {
session.send(new PacketUnlockSkilltreeScRsp(avatarId, req.getPointId(), req.getLevel()));
} else {
session.send(new PacketUnlockSkilltreeScRsp());
}
}
}

View File

@@ -14,18 +14,14 @@ public class PacketAvatarExpUpScRsp extends BasePacket {
var data = AvatarExpUpScRsp.newInstance();
for (GameItem item : returnItems) {
data.addReturnItemList(item.toPileProto());
if (returnItems != null) {
for (GameItem item : returnItems) {
data.addReturnItemList(item.toPileProto());
}
} else {
data.setRetcode(1);
}
this.setData(data);
}
public PacketAvatarExpUpScRsp() {
super(CmdId.AvatarExpUpScRsp);
var data = AvatarExpUpScRsp.newInstance().setRetcode(1);
this.setData(data);
}
}

View File

@@ -13,19 +13,16 @@ public class PacketExpUpEquipmentScRsp extends BasePacket {
super(CmdId.ExpUpEquipmentScRsp);
var data = ExpUpEquipmentScRsp.newInstance();
for (GameItem item : returnItems) {
data.addReturnItemList(item.toPileProto());
if (returnItems != null) {
for (GameItem item : returnItems) {
data.addReturnItemList(item.toPileProto());
}
} else {
data.setRetcode(1);
}
this.setData(data);
}
public PacketExpUpEquipmentScRsp() {
super(CmdId.ExpUpEquipmentScRsp);
var data = ExpUpEquipmentScRsp.newInstance().setRetcode(1);
this.setData(data);
}
}

View File

@@ -14,18 +14,14 @@ public class PacketExpUpRelicScRsp extends BasePacket {
var data = ExpUpRelicScRsp.newInstance();
for (GameItem item : returnItems) {
data.addReturnItemList(item.toPileProto());
if (returnItems != null) {
for (GameItem item : returnItems) {
data.addReturnItemList(item.toPileProto());
}
} else {
data.setRetcode(1);
}
this.setData(data);
}
public PacketExpUpRelicScRsp() {
super(CmdId.ExpUpRelicScRsp);
var data = ExpUpRelicScRsp.newInstance().setRetcode(1);
this.setData(data);
}
}

View File

@@ -1,6 +1,5 @@
package emu.lunarcore.server.packet.send;
import emu.lunarcore.proto.ItemListOuterClass.ItemList;
import emu.lunarcore.proto.ItemOuterClass.Item;
import emu.lunarcore.proto.SellItemScRspOuterClass.SellItemScRsp;
import emu.lunarcore.server.packet.BasePacket;
@@ -12,17 +11,20 @@ public class PacketSellItemScRsp extends BasePacket {
public PacketSellItemScRsp(Int2IntMap returnItems) {
super(CmdId.SellItemScRsp);
var list = ItemList.newInstance();
var data = SellItemScRsp.newInstance();
if (returnItems != null) {
for (var item : returnItems.int2IntEntrySet()) {
list.addItemList(Item.newInstance().setItemId(item.getIntKey()).setNum(item.getIntValue()));
var itemProto = Item.newInstance()
.setItemId(item.getIntKey())
.setNum(item.getIntValue());
data.getMutableReturnItemList().addItemList(itemProto);
}
} else {
data.setRetcode(1);
}
var data = SellItemScRsp.newInstance()
.setReturnItemList(list);
this.setData(data);
}
}

View File

@@ -3,34 +3,25 @@ package emu.lunarcore.server.packet.send;
import java.util.Collection;
import emu.lunarcore.game.inventory.GameItem;
import emu.lunarcore.proto.ItemListOuterClass.ItemList;
import emu.lunarcore.proto.TakePromotionRewardScRspOuterClass.TakePromotionRewardScRsp;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
public class PacketTakePromotionRewardScRsp extends BasePacket {
public PacketTakePromotionRewardScRsp() {
super(CmdId.TakePromotionRewardScRsp);
var data = TakePromotionRewardScRsp.newInstance()
.setRetcode(1);
this.setData(data);
}
public PacketTakePromotionRewardScRsp(Collection<GameItem> rewards) {
super(CmdId.TakePromotionRewardScRsp);
var data = TakePromotionRewardScRsp.newInstance();
var rewardList = ItemList.newInstance();
for (GameItem item : rewards) {
rewardList.addItemList(item.toProto());
if (rewards != null) {
for (GameItem item : rewards) {
data.getMutableRewardList().addItemList(item.toProto());
}
} else {
data.setRetcode(1);
}
var data = TakePromotionRewardScRsp.newInstance()
.setRewardList(rewardList);
this.setData(data);
}