|
@@ -18,16 +18,17 @@
|
|
*/
|
|
*/
|
|
package com.iohao.mmo.bag.client;
|
|
package com.iohao.mmo.bag.client;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
import com.iohao.game.action.skeleton.protocol.wrapper.BoolValue;
|
|
import com.iohao.game.action.skeleton.protocol.wrapper.BoolValue;
|
|
import com.iohao.game.external.client.AbstractInputCommandRegion;
|
|
import com.iohao.game.external.client.AbstractInputCommandRegion;
|
|
import com.iohao.game.external.client.command.InputRequestData;
|
|
import com.iohao.game.external.client.command.InputRequestData;
|
|
import com.iohao.game.external.client.kit.ScannerKit;
|
|
import com.iohao.game.external.client.kit.ScannerKit;
|
|
import com.iohao.game.external.client.kit.SplitParam;
|
|
import com.iohao.game.external.client.kit.SplitParam;
|
|
import com.iohao.mmo.bag.ItemIdConst;
|
|
import com.iohao.mmo.bag.ItemIdConst;
|
|
|
|
+import com.iohao.mmo.bag.client.ext.ClientBagAttr;
|
|
|
|
+import com.iohao.mmo.bag.client.ext.ItemMessageMap;
|
|
import com.iohao.mmo.bag.cmd.BagCmd;
|
|
import com.iohao.mmo.bag.cmd.BagCmd;
|
|
-import com.iohao.mmo.bag.proto.BagItemMessage;
|
|
|
|
-import com.iohao.mmo.bag.proto.BagMessage;
|
|
|
|
-import com.iohao.mmo.bag.proto.UseMessage;
|
|
|
|
|
|
+import com.iohao.mmo.bag.proto.*;
|
|
import com.iohao.mmo.common.provide.kit.JsonKit;
|
|
import com.iohao.mmo.common.provide.kit.JsonKit;
|
|
import com.iohao.mmo.common.snow.SnowKit;
|
|
import com.iohao.mmo.common.snow.SnowKit;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -50,16 +51,38 @@ public class BagInputCommandRegion extends AbstractInputCommandRegion {
|
|
@Override
|
|
@Override
|
|
public void loginSuccessCallback() {
|
|
public void loginSuccessCallback() {
|
|
// 添加一些经验值道具
|
|
// 添加一些经验值道具
|
|
- var bagItemMessage = BagInternalHelper.ofBagItemMessage(ItemIdConst.expId);
|
|
|
|
|
|
+ BagItemMessage bagItemMessage = BagInternalHelper.ofBagItemMessage(ItemIdConst.expId);
|
|
bagItemMessage.quantity = 10;
|
|
bagItemMessage.quantity = 10;
|
|
log.info("添加 {} 个经验值道具 {}", bagItemMessage.quantity, bagItemMessage);
|
|
log.info("添加 {} 个经验值道具 {}", bagItemMessage.quantity, bagItemMessage);
|
|
ofRequestCommand(BagCmd.incrementItem).request(bagItemMessage);
|
|
ofRequestCommand(BagCmd.incrementItem).request(bagItemMessage);
|
|
|
|
+
|
|
|
|
+ // 添加一些装备制造书材料
|
|
|
|
+ bagItemMessage = BagInternalHelper.ofBagItemMessage(ItemIdConst.equipWeaponBook10);
|
|
|
|
+ bagItemMessage.quantity = 1;
|
|
|
|
+ log.info("添加 {} 【装备-武器】制造书材料 {}", bagItemMessage.quantity, bagItemMessage);
|
|
|
|
+ ofRequestCommand(BagCmd.incrementItem).request(bagItemMessage);
|
|
|
|
+
|
|
|
|
+ // 添加一些装备制造书材料
|
|
|
|
+ bagItemMessage = BagInternalHelper.ofBagItemMessage(ItemIdConst.iron10);
|
|
|
|
+ bagItemMessage.quantity = 1;
|
|
|
|
+ log.info("添加 {} 装备-制造材料-铁 {}", bagItemMessage.quantity, bagItemMessage);
|
|
|
|
+ ofRequestCommand(BagCmd.incrementItem).request(bagItemMessage);
|
|
}
|
|
}
|
|
|
|
|
|
private void request() {
|
|
private void request() {
|
|
ofCommand(BagCmd.bag).callback(BagMessage.class, result -> {
|
|
ofCommand(BagCmd.bag).callback(BagMessage.class, result -> {
|
|
|
|
+ ItemMessageMap itemMessageMap = clientUser.option(ClientBagAttr.itemMessageMapAttrOption);
|
|
|
|
+
|
|
BagMessage value = result.getValue();
|
|
BagMessage value = result.getValue();
|
|
- log.info("{}", JsonKit.toJsonString(value));
|
|
|
|
|
|
+
|
|
|
|
+ List<JSONObject> list = value.itemMap.values().stream().map(bagItemMessage -> {
|
|
|
|
+ String itemId = bagItemMessage.itemId;
|
|
|
|
+ JSONObject bagItemMessageJson = JSONObject.from(bagItemMessage);
|
|
|
|
+ JSONObject itemMessageJson = itemMessageMap.getItemMessageJSON(itemId);
|
|
|
|
+ return JsonKit.merge(bagItemMessageJson, itemMessageJson);
|
|
|
|
+ }).toList();
|
|
|
|
+
|
|
|
|
+ log.info("查询玩家背包 {}", JsonKit.toJsonString(list));
|
|
}).setDescription("查询玩家背包");
|
|
}).setDescription("查询玩家背包");
|
|
|
|
|
|
InputRequestData inputRequestData = () -> {
|
|
InputRequestData inputRequestData = () -> {
|
|
@@ -114,24 +137,13 @@ public class BagInputCommandRegion extends AbstractInputCommandRegion {
|
|
// 重新查询一次背包
|
|
// 重新查询一次背包
|
|
ofRequestCommand(BagCmd.bag).request();
|
|
ofRequestCommand(BagCmd.bag).request();
|
|
}).setDescription("从背包减少物品").setInputRequestData(inputRequestData);
|
|
}).setDescription("从背包减少物品").setInputRequestData(inputRequestData);
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
private void useRequest() {
|
|
private void useRequest() {
|
|
InputRequestData inputRequestData = () -> {
|
|
InputRequestData inputRequestData = () -> {
|
|
- ScannerKit.log(() -> log.info("输入需要使用的背包物品,格式 [背包物品id-数量]"));
|
|
|
|
- String inputType = ScannerKit.nextLine("1-1");
|
|
|
|
-
|
|
|
|
- SplitParam param = new SplitParam(inputType);
|
|
|
|
- String id = param.getString(0);
|
|
|
|
- int quantity = param.getInt(1, 1);
|
|
|
|
-
|
|
|
|
- var useItemMessage = BagInternalHelper.ofUseItemMessage(id);
|
|
|
|
- useItemMessage.quantity = quantity;
|
|
|
|
-
|
|
|
|
UseMessage useMessage = new UseMessage();
|
|
UseMessage useMessage = new UseMessage();
|
|
- useMessage.useItems = List.of(useItemMessage);
|
|
|
|
|
|
+ useMessage.useItems = sceneDefault();
|
|
|
|
+ ScannerKit.log(() -> log.info("当前所使用的物品信息 : {}", JsonKit.toJsonString(useMessage)));
|
|
return useMessage;
|
|
return useMessage;
|
|
};
|
|
};
|
|
|
|
|
|
@@ -139,5 +151,52 @@ public class BagInputCommandRegion extends AbstractInputCommandRegion {
|
|
var value = result.getValue();
|
|
var value = result.getValue();
|
|
log.info("value : {}", value);
|
|
log.info("value : {}", value);
|
|
}).setDescription("使用背包物品").setInputRequestData(inputRequestData);
|
|
}).setDescription("使用背包物品").setInputRequestData(inputRequestData);
|
|
|
|
+
|
|
|
|
+ InputRequestData buildEquipInputRequestData = () -> {
|
|
|
|
+ UseMessage useMessage = new UseMessage();
|
|
|
|
+ useMessage.useItems = sceneBuildEquip();
|
|
|
|
+ ScannerKit.log(() -> log.info("打造装备-所使用物品 : {}", JsonKit.toJsonString(useMessage)));
|
|
|
|
+ return useMessage;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ ofCommand(BagCmd.useBuildEquip).callback(BoolValue.class, result -> {
|
|
|
|
+ var value = result.getValue();
|
|
|
|
+ log.info("value : {}", value);
|
|
|
|
+ }).setDescription("打造装备").setInputRequestData(buildEquipInputRequestData);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<UseItemMessage> sceneBuildEquip() {
|
|
|
|
+ ScannerKit.log(() -> {
|
|
|
|
+ log.info("装备的制造最少需要使用两样背包物品,1.装备制造书、2.装备制造材料");
|
|
|
|
+ log.info("格式 [制造书物品id-制造铁物品id]");
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ String defaultValue = ItemIdConst.equipWeaponBook10 + "-" + ItemIdConst.iron10;
|
|
|
|
+ String inputType = defaultValue;
|
|
|
|
+// inputType = ScannerKit.nextLine(defaultValue);
|
|
|
|
+ SplitParam param = new SplitParam(inputType);
|
|
|
|
+
|
|
|
|
+ String equipWeaponBook = param.getString(0, ItemIdConst.equipWeaponBook10);
|
|
|
|
+ UseItemMessage useItemMessageEquip = BagInternalHelper.ofUseItemMessage(equipWeaponBook);
|
|
|
|
+
|
|
|
|
+ String iron = param.getString(1, ItemIdConst.iron10);
|
|
|
|
+ UseItemMessage useItemMessageIron = BagInternalHelper.ofUseItemMessage(iron);
|
|
|
|
+
|
|
|
|
+ return List.of(useItemMessageEquip, useItemMessageIron);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<UseItemMessage> sceneDefault() {
|
|
|
|
+ ScannerKit.log(() -> log.info("输入需要使用的背包物品,格式 [背包物品id-数量]"));
|
|
|
|
+ String inputType = ScannerKit.nextLine("1-1");
|
|
|
|
+ SplitParam param = new SplitParam(inputType);
|
|
|
|
+ // 得到下标 0 的值
|
|
|
|
+ String id = param.getString(0);
|
|
|
|
+ // 得到下标 1 的值,如果值不存在,则使用默认的 1 代替
|
|
|
|
+ int quantity = param.getInt(1, 1);
|
|
|
|
+
|
|
|
|
+ var useItemMessage = BagInternalHelper.ofUseItemMessage(id);
|
|
|
|
+ useItemMessage.quantity = quantity;
|
|
|
|
+
|
|
|
|
+ return List.of(useItemMessage);
|
|
}
|
|
}
|
|
}
|
|
}
|