Browse Source

装备大体功能完成

toby 1 year ago
parent
commit
a1f4eb6101
19 changed files with 177 additions and 433 deletions
  1. 4 0
      common/common-core/src/main/java/com/iohao/mmo/common/config/GameCode.java
  2. 0 43
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/DictionaryAction.java
  3. 19 5
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/EquipAction.java
  4. 17 6
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/EquipTemplateAction.java
  5. 0 44
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/DictData.java
  6. 0 46
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/Dictionary.java
  7. 3 1
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/Equip.java
  8. 0 43
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/EquipRandomRule.java
  9. 6 0
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/mapper/EquipMapper.java
  10. 0 64
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/DictionaryService.java
  11. 31 22
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipService.java
  12. 30 12
      logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipTemplateService.java
  13. 0 24
      logic/equip-logic/src/test/java/com/iohao/mmo/equip/entity/EquipTest.java
  14. 48 29
      provide/equip-provide/src/main/java/com/iohao/mmo/equip/client/EquipInputCommandRegion.java
  15. 5 3
      provide/equip-provide/src/main/java/com/iohao/mmo/equip/cmd/EquipCmd.java
  16. 11 0
      provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/BasicEquipPropertyMessage.java
  17. 0 44
      provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/DictDataMessage.java
  18. 0 46
      provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/DictionaryMessage.java
  19. 3 1
      provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/EquipMessage.java

+ 4 - 0
common/common-core/src/main/java/com/iohao/mmo/common/config/GameCode.java

@@ -37,6 +37,10 @@ public enum GameCode implements MsgExceptionInfo {
     upLevelError(2, "升级错误,经验值不足"),
     /** 数量不足 */
     quantityNotEnough(3, "数量不足"),
+    /** 操作对象错误 */
+    objNotFound(4, "操作对象错误"),
+    /** 可分配属性点不足 */
+    allotNotEnough(5, "分配异常,属性点不足"),
     ;
 
     /** 消息码 */

+ 0 - 43
logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/DictionaryAction.java

@@ -1,43 +0,0 @@
-package com.iohao.mmo.equip.action;
-
-import com.iohao.game.action.skeleton.annotation.ActionController;
-import com.iohao.game.action.skeleton.annotation.ActionMethod;
-import com.iohao.game.action.skeleton.core.flow.FlowContext;
-import com.iohao.game.action.skeleton.protocol.wrapper.StringValue;
-import com.iohao.mmo.equip.cmd.EquipCmd;
-import com.iohao.mmo.equip.entity.Dictionary;
-import com.iohao.mmo.equip.entity.Equip;
-import com.iohao.mmo.equip.mapper.EquipMapper;
-import com.iohao.mmo.equip.proto.DictionaryMessage;
-import com.iohao.mmo.equip.proto.EquipMessage;
-import com.iohao.mmo.equip.service.DictionaryService;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-/**
- * @author 唐斌
- * @date 2023-07-30
- * @description: 装备属性类
- */
-@Slf4j
-@Component
-@ActionController(EquipCmd.cmd)
-public class DictionaryAction {
-
-    @Resource
-    DictionaryService dictionaryService;
-
-    /**
-     * 更新字典
-     *
-     * @param flowContext flowContext
-     */
-    @ActionMethod(EquipCmd.initEquip)
-    public void internalInitEquip(FlowContext flowContext, DictionaryMessage dictionaryMessage) {
-        long userId = flowContext.getUserId();
-        // 初始化装备数据,暂时放这
-//        equipService.initEquipData();
-    }
-
-}

+ 19 - 5
logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/EquipAction.java

@@ -13,6 +13,8 @@ import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @author 唐斌
  * @date 2023-07-30
@@ -26,16 +28,19 @@ public class EquipAction {
     @Resource
     EquipService equipService;
 
+
     /**
-     * 初始化装备信息
+     * 获取装备列表信息
      *
      * @param flowContext flowContext
      */
-    @ActionMethod(EquipCmd.initEquip)
-    public void internalInitEquip(FlowContext flowContext) {
+    @ActionMethod(EquipCmd.getEquipList)
+    public List<EquipMessage> getEquipList(FlowContext flowContext) { //参数值
         long userId = flowContext.getUserId();
         // 初始化装备数据,暂时放这
-        equipService.initEquipData();
+        List<Equip> equipList = equipService.listByUser(userId);
+
+        return EquipMapper.ME.convert(equipList);
     }
 
     /**
@@ -44,10 +49,19 @@ public class EquipAction {
      * @param flowContext flowContext
      */
     @ActionMethod(EquipCmd.getEquip)
-//    public EquipMessage getEquip(FlowContext flowContext, OfEquipReq ofEquipReq) { //对象
     public EquipMessage getEquip(FlowContext flowContext, StringValue stringValue) { //参数值
         // 初始化装备数据,暂时放这
         Equip equip = equipService.ofEquip(stringValue.value);
         return EquipMapper.ME.convert(equip);
     }
+
+    /**
+     * 分配装备属性点
+     *
+     * @param flowContext flowContext
+     */
+    @ActionMethod(EquipCmd.allotEquip)
+    public void allotEquip(FlowContext flowContext, EquipMessage equipMessage) { //参数值
+        equipService.allotEquip(EquipMapper.ME.convert(equipMessage));
+    }
 }

+ 17 - 6
logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/EquipTemplateAction.java

@@ -17,6 +17,9 @@ import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author 唐斌
  * @date 2023-07-30
@@ -56,15 +59,23 @@ public class EquipTemplateAction {
     }
 
     /**
-     * 根据装备模板随机出一件新的装备
+     * 根据装备模板列表各随机出一件新的装备
      *
      * @param flowContext flowContext
-     * @param stringValve 装备模板id
+     * @param stringValve 装备模板ids(xxx,xxx)
      */
     @ActionMethod(EquipCmd.randomEquip)
-    public EquipMessage randomEquip(FlowContext flowContext, StringValue stringValve) { //参数值
-        // 初始化装备数据,暂时放这
-        Equip equip = equipTemplateService.randomEquip(stringValve.value);
-        return EquipMapper.ME.convert(equip);
+    public List<EquipMessage> randomEquip(FlowContext flowContext, StringValue stringValve) { //参数值
+        long userId = flowContext.getUserId();
+        String[] ids = stringValve.value.split(",");
+        List<EquipMessage> equipMessageList = new ArrayList<>();
+        for(String id:ids){
+            // 初始化装备数据,暂时放这
+            Equip equip = equipTemplateService.randomEquip(id,userId);
+            EquipMessage equipMessage = EquipMapper.ME.convert(equip);
+            equipMessageList.add(equipMessage);
+        }
+
+        return equipMessageList;
     }
 }

+ 0 - 44
logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/DictData.java

@@ -1,44 +0,0 @@
-/*
- * ioGame
- * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
- * # iohao.com . 渔民小镇
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-package com.iohao.mmo.equip.entity;
-
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.experimental.FieldDefaults;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-/**
- * 数据字典值
- * @author 唐斌
- * @date 2023-07-26
- */
-@Data
-@Document
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class DictData {
-    /** 字典标签 */
-    String dictLabel;
-    /** 字典值 */
-    String dictValue;
-    /** 备注 */
-    String remark;
-    /** 排序 */
-    int sort;
-}

+ 0 - 46
logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/Dictionary.java

@@ -1,46 +0,0 @@
-/*
- * ioGame
- * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
- * # iohao.com . 渔民小镇
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-package com.iohao.mmo.equip.entity;
-
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.experimental.FieldDefaults;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-import java.util.List;
-
-/**
- * 数据字典
- * @author 唐斌
- * @date 2023-07-26
- */
-@Data
-@Document
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class Dictionary {
-    @Id
-    String id;
-    /** 字典类型 */
-    String dictType;
-    /** 字典名称 */
-    String dictName;
-    /** 字典值 */
-    List<DictData> dictDataList;
-}

+ 3 - 1
logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/Equip.java

@@ -34,6 +34,8 @@ import org.springframework.data.mongodb.core.mapping.Document;
 public class Equip {
     @Id
     String id;
+    /** 玩家 */
+    long userId;
     /** 装备名 */
     String name;
     /** 总属性点 */
@@ -41,7 +43,7 @@ public class Equip {
     /** 未分配属性点 */
     int undistributedAttr;
     /** 品质 */
-    int quality;
+//    int quality;
     /** 装备模板 */
     EquipTemplate equipTemplate;
     /** 基础属性 */

+ 0 - 43
logic/equip-logic/src/main/java/com/iohao/mmo/equip/entity/EquipRandomRule.java

@@ -1,43 +0,0 @@
-/*
- * ioGame
- * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
- * # iohao.com . 渔民小镇
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-package com.iohao.mmo.equip.entity;
-
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.experimental.FieldDefaults;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.mapping.Document;
-
-/**
- * @author 唐斌
- * @date 2023-07-26
- */
-@Data
-@Document
-@FieldDefaults(level = AccessLevel.PRIVATE)
-public class EquipRandomRule {
-    /** 装备品质序号 */
-    int qualitySort;
-    /** 装备品质名称 */
-    int qualityName;
-    /** 自定义属性随机范围最小值:(随机值-最小范围)/(最大范围-最小范围) */
-    double min;
-    /** 自定义属性随机范围最大值:(随机值-最小范围)/(最大范围-最小范围) */
-    double max;
-}

+ 6 - 0
logic/equip-logic/src/main/java/com/iohao/mmo/equip/mapper/EquipMapper.java

@@ -28,6 +28,8 @@ import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
 import org.mapstruct.factory.Mappers;
 
+import java.util.List;
+
 /**
  * @author 唐斌
  * @date 2023-07-30
@@ -39,6 +41,10 @@ public interface EquipMapper {
     @Mapping(source = "id", target = "id")
     EquipMessage convert(Equip equip);
 
+    List<EquipMessage> convert(List<Equip> equipList);
+
+    Equip convert(EquipMessage equipMessage);
+
     EquipTemplateMessage convert(EquipTemplate equipTemplate);
     BasicEquipPropertyMessage convert(BasicEquipProperty basicEquipProperty);
 }

+ 0 - 64
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/DictionaryService.java

@@ -1,64 +0,0 @@
-/*
- * ioGame
- * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
- * # iohao.com . 渔民小镇
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-package com.iohao.mmo.equip.service;
-
-import com.iohao.mmo.equip.entity.BasicEquipProperty;
-import com.iohao.mmo.equip.entity.Dictionary;
-import com.iohao.mmo.equip.entity.Equip;
-import com.iohao.mmo.equip.repository.EquipRepository;
-import lombok.AllArgsConstructor;
-import org.springframework.data.mongodb.core.MongoTemplate;
-import org.springframework.data.mongodb.core.query.Criteria;
-import org.springframework.data.mongodb.core.query.Query;
-import org.springframework.data.mongodb.core.query.Update;
-import org.springframework.data.mongodb.core.query.UpdateDefinition;
-import org.springframework.stereotype.Service;
-
-import java.util.Optional;
-
-/**
- * @author 唐斌
- * @date 2023-07-30
- * @description: 装备属性实现类
- */
-@Service
-@AllArgsConstructor
-public class DictionaryService {
-    final MongoTemplate mongoTemplate;
-    final EquipRepository equipRepository;
-
-    public Equip ofEquip(String id) {
-
-        return  mongoTemplate.findById(id, Equip.class);
-    }
-
-    public void upsert(Dictionary dictionary) {
-
-        // 查询条件,如果数据存在更新
-        Query query = new Query();
-        query.addCriteria(Criteria.where("dictType").is(dictionary.getDictType()));
-
-        // 更新的字段
-        Update update = new Update();
-        update.set("dictName", dictionary.getDictName());
-        update.set("dictDataList", dictionary.getDictDataList());
-        mongoTemplate.upsert(query,update,Dictionary.class);
-    }
-
-}

+ 31 - 22
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipService.java

@@ -18,6 +18,7 @@
  */
 package com.iohao.mmo.equip.service;
 
+import com.iohao.mmo.common.config.GameCode;
 import com.iohao.mmo.equip.entity.BasicEquipProperty;
 import com.iohao.mmo.equip.entity.Equip;
 import com.iohao.mmo.equip.repository.EquipRepository;
@@ -25,8 +26,10 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 
@@ -46,37 +49,43 @@ public class EquipService {
         return  mongoTemplate.findById(id, Equip.class);
     }
 
-    public Optional<Equip> getById(long primaryKey) {
-        return equipRepository.findById(primaryKey);
+    public List<Equip> listByUser(long userId) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("userId").is(userId));
+
+        return  mongoTemplate.find(query,Equip.class);
     }
 
     public void save(Equip equip) {
         mongoTemplate.save(equip);
     }
 
-    public void initEquipData() {
-        // 初始化一些英雄数配置,后期将移到 excel 中做。
+    /**
+     * 分配装备属性点
+     * @param equip
+     */
+    public void allotEquip(Equip equip){
+        //判定总点数是否合法
+        Equip oldEquip = mongoTemplate.findById(equip.getId(), Equip.class);
 
-        Equip equip = new Equip();
-//        equip.setId(1000000L);
-        equip.setName("青铜甲");
-        equip.setAttrTotal(35);
-        equip.setUndistributedAttr(30);
-        equip.setQuality(2);
+        GameCode.objNotFound.assertTrue(oldEquip!=null);
 
-        BasicEquipProperty basicEquipProperty = getInitBasicEquipProperty();
-        equip.setBasicEquipProperty(basicEquipProperty);
+        BasicEquipProperty basicEquipProperty = equip.getBasicEquipProperty();
+        int saveAttrTotal = basicEquipProperty.getConstitution()+basicEquipProperty.getMagicPower()+basicEquipProperty.getPower()+basicEquipProperty.getEndurance()+basicEquipProperty.getAgile();
 
-        mongoTemplate.save(equip);
-    }
+        GameCode.allotNotEnough.assertTrue(saveAttrTotal<=oldEquip.getAttrTotal());
+
+        // 查询条件,如果数据存在更新
+        Query query = new Query();
+        query.addCriteria(Criteria.where("id").is(equip.getId()));
+
+        // 更新的字段
+        Update update = new Update();
+        //获取分配的字段
+
+        update.set("undistributedAttr", oldEquip.getAttrTotal()-saveAttrTotal);
+        update.set("basicEquipProperty", basicEquipProperty);
+        mongoTemplate.upsert(query,update,Equip.class);
 
-    private BasicEquipProperty getInitBasicEquipProperty() {
-        BasicEquipProperty basicEquipProperty = new BasicEquipProperty();
-        basicEquipProperty.setConstitution(1000);
-        basicEquipProperty.setMagicPower(120);
-        basicEquipProperty.setPower(110);
-        basicEquipProperty.setEndurance(200);
-        basicEquipProperty.setAgile(20);
-        return basicEquipProperty;
     }
 }

+ 30 - 12
logic/equip-logic/src/main/java/com/iohao/mmo/equip/service/EquipTemplateService.java

@@ -59,20 +59,18 @@ public class EquipTemplateService {
 
 
     public void initEquipTemplate() {
-        // 初始化一些英雄数配置,后期将移到 excel 中做。
-
+        // 初始化一些装备配置,后期将移到 excel 中做。
         EquipTemplate equipTemplate = new EquipTemplate();
-//        equipTemplate.setId(1000000L);
         equipTemplate.setPosition(1);
-        equipTemplate.setLevel(1);
+        equipTemplate.setLevel(10);
         equipTemplate.setTotalAttrMin(10);
         equipTemplate.setTotalAttrMax(40);
 
         Goods goods = new Goods();
-        goods.setName("装备名称1");
-        goods.setDesc("装备描述1");
-        goods.setIcon("装备图标1");
-        goods.setImage("装备大图1");
+        goods.setName("布甲");
+        goods.setDesc("一件普通的布甲");
+        goods.setIcon("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png");
+        goods.setImage("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png");
         goods.setBindPrice(120);
         goods.setPrice(100);
         goods.setDealFlag(true);
@@ -80,6 +78,26 @@ public class EquipTemplateService {
         equipTemplate.setGoods(goods);
 
         mongoTemplate.insert(equipTemplate);
+
+        // 初始化一些装备配置,后期将移到 excel 中做。
+        EquipTemplate equipTemplate2 = new EquipTemplate();
+        equipTemplate2.setPosition(2);
+        equipTemplate2.setLevel(1);
+        equipTemplate2.setTotalAttrMin(5);
+        equipTemplate2.setTotalAttrMax(18);
+
+        Goods goods2 = new Goods();
+        goods2.setName("木剑");
+        goods2.setDesc("一把木剑,看起来像玩具,打起来还有点疼");
+        goods2.setIcon("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png");
+        goods2.setImage("https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png");
+        goods2.setBindPrice(80);
+        goods2.setPrice(60);
+        goods2.setDealFlag(true);
+        goodsService.save(goods2);
+        equipTemplate2.setGoods(goods2);
+
+        mongoTemplate.insert(equipTemplate2);
     }
 
     /**
@@ -87,18 +105,18 @@ public class EquipTemplateService {
      * @param equipTemplateId
      * @return
      */
-    public Equip randomEquip(String equipTemplateId){
+    public Equip randomEquip(String equipTemplateId,long userId){
         EquipTemplate equipTemplate = mongoTemplate.findById(equipTemplateId, EquipTemplate.class);
         Equip equip = new Equip();
         //随机属性值
         if(equipTemplate!=null){
             //随机出的总属性值
             equip.setAttrTotal(RandomUtils.randomFromInt(equipTemplate.getTotalAttrMin(),equipTemplate.getTotalAttrMax()));
-            equip.setQuality(EquipUtils.getEquipQuality(equipTemplate.getTotalAttrMin(),equipTemplate.getTotalAttrMax(),equip.getAttrTotal()));
+//            equip.setQuality(EquipUtils.getEquipQuality(equipTemplate.getTotalAttrMin(),equipTemplate.getTotalAttrMax(),equip.getAttrTotal()));
             equip.setName(equipTemplate.getGoods().getName());
         }else {
             equip.setAttrTotal(0);
-            equip.setQuality(1);
+//            equip.setQuality(1);
             equip.setName("未知名称");
         }
         equip.setUndistributedAttr(equip.getAttrTotal());
@@ -106,7 +124,7 @@ public class EquipTemplateService {
 
         BasicEquipProperty basicEquipProperty = new BasicEquipProperty(0,0,0,0,0);
         equip.setBasicEquipProperty(basicEquipProperty);
-
+        equip.setUserId(userId);
         mongoTemplate.save(equip);
         return equip;
     }

+ 0 - 24
logic/equip-logic/src/test/java/com/iohao/mmo/equip/entity/EquipTest.java

@@ -1,24 +0,0 @@
-package com.iohao.mmo.equip.entity;
-
-import com.iohao.mmo.equip.service.EquipService;
-import jakarta.annotation.Resource;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-/**
- * @author 唐斌
- * @date 2023-07-26
- */
-@Slf4j
-@SpringBootTest
-public class EquipTest {
-    @Resource
-    EquipService equipService;
-
-    @Test
-    void testEquip() {
-        equipService.initEquipData();
-    }
-
-}

+ 48 - 29
provide/equip-provide/src/main/java/com/iohao/mmo/equip/client/EquipInputCommandRegion.java

@@ -20,16 +20,19 @@ package com.iohao.mmo.equip.client;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONWriter;
+import com.iohao.game.action.skeleton.protocol.wrapper.ByteValueList;
 import com.iohao.game.action.skeleton.protocol.wrapper.StringValue;
 import com.iohao.game.external.client.AbstractInputCommandRegion;
 import com.iohao.game.external.client.command.InputRequestData;
 import com.iohao.game.external.client.kit.ScannerKit;
+import com.iohao.mmo.common.provide.kit.JsonKit;
 import com.iohao.mmo.equip.cmd.EquipCmd;
-import com.iohao.mmo.equip.proto.EquipMessage;
-import com.iohao.mmo.equip.proto.EquipTemplateMessage;
-import com.iohao.mmo.equip.proto.OfEquipReq;
+import com.iohao.mmo.equip.proto.*;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author 渔民小镇
  * @date 2023-07-30
@@ -52,24 +55,11 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
     private void request() {
         InputRequestData inputRequestData;
 
-        // 6-1
-        ofCommand(EquipCmd.initEquip).callback(EquipMessage.class, result -> {
-            EquipMessage value = result.getValue();
-            String jsonFormat = JSON.toJSONString(value, JSONWriter.Feature.PrettyFormat);
-        }).setDescription("初始化装备信息");
-
-//        // 动态请求参数(对象)
-//        inputRequestData = () -> {
-//            ScannerKit.log(() -> log.info("请输入要查询的装备id"));
-//            long id = ScannerKit.nextLong(1);
-//
-//            // 请求参数
-//            OfEquipReq ofEquipReq = new OfEquipReq();
-//            // 根据装备id获取装备信息
-//            ofEquipReq.id = id;
-//
-//            return ofEquipReq;
-//        };
+        // 8-1
+        ofCommand(EquipCmd.getEquipList).callback(ByteValueList.class, result -> {
+            List<EquipMessage> value = result.toList(EquipMessage.class);
+            log.info("装备列表信息 : {}", JsonKit.toJsonString(value));
+        }).setDescription("获取装备列表信息");
 
         // 动态请求参数(参数值)
         inputRequestData = () -> {
@@ -82,31 +72,60 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
             return stringValue;
         };
 
-        // 6-2
+        // 8-2
         ofCommand(EquipCmd.getEquip).callback(EquipMessage.class, result -> {
             EquipMessage value = result.getValue();
             log.info("装备信息 : {}", value);
         }).setDescription("查询装备信息").setInputRequestData(inputRequestData);
 
-        // 6-10
+        // 动态请求参数(参数值)
+        inputRequestData = () -> {
+            ScannerKit.log(() -> log.info("请输入装备id"));
+            String id = ScannerKit.nextLine();
+            ScannerKit.log(() -> log.info("请输入体质"));
+            int constitution = ScannerKit.nextInt(0);
+            ScannerKit.log(() -> log.info("请输入魔力"));
+            int magicPower = ScannerKit.nextInt(0);
+            ScannerKit.log(() -> log.info("请输入力量"));
+            int power = ScannerKit.nextInt(0);
+            ScannerKit.log(() -> log.info("请输入耐力"));
+            int endurance = ScannerKit.nextInt(0);
+            ScannerKit.log(() -> log.info("请输入敏捷"));
+            int agile = ScannerKit.nextInt(0);
+
+            BasicEquipPropertyMessage basicEquipPropertyMessage = new BasicEquipPropertyMessage(constitution,magicPower,power,endurance,agile);
+            EquipMessage equipMessage = new EquipMessage();
+            equipMessage.basicEquipProperty = basicEquipPropertyMessage;
+            equipMessage.id = id;
+            return equipMessage;
+        };
+
+        // 8-3
+        ofCommand(EquipCmd.allotEquip).callback(EquipMessage.class, result -> {
+            EquipMessage value = result.getValue();
+            log.info("装备属性信息 : {}", value);
+        }).setDescription("分配装备属性信息").setInputRequestData(inputRequestData);
+
+
+        // 8-10
         ofCommand(EquipCmd.initEquipTemplate).callback(EquipTemplateMessage.class, result -> {
             EquipTemplateMessage value = result.getValue();
             log.info("装备模板信息 : {}", value);
         }).setDescription("初始化装备模板");
+
         // 动态请求参数(参数值)
         inputRequestData = () -> {
-            ScannerKit.log(() -> log.info("请输入要查询的装备id"));
-            String id = ScannerKit.nextLine();
+            String ids = "64ce17d12d16f264f0e88b19,64ce17d12d16f264f0e88b1b";
 
             // 请求参数
-            StringValue stringValue = StringValue.of(id);
+            StringValue stringValue = StringValue.of(ids);
 
             return stringValue;
         };
-        // 6-13
+        // 8-13
         ofCommand(EquipCmd.randomEquip).callback(EquipMessage.class, result -> {
             EquipMessage value = result.getValue();
             log.info("装备信息 : {}", value);
-        }).setDescription("根据装备模板随机出一件新的装备").setInputRequestData(inputRequestData);
+        }).setDescription("根据装备模板列表各随机出一件新的装备").setInputRequestData(inputRequestData);
     }
-}
+}

+ 5 - 3
provide/equip-provide/src/main/java/com/iohao/mmo/equip/cmd/EquipCmd.java

@@ -28,10 +28,12 @@ import com.iohao.mmo.common.provide.cmd.CmdModule;
  */
 public interface EquipCmd {
     int cmd = CmdModule.equipCmd;
-    /** 初始化信息 */
-    int initEquip = 1;
-    /** 得到信息 */
+    /** 得到装备列表 */
+    int getEquipList = 1;
+    /** 得到装备信息 */
     int getEquip = 2;
+    /** 分配属性点 */
+    int allotEquip = 3;
     /** 初始化装备模板 */
     int initEquipTemplate = 10;
     /** 新增装备模板 */

+ 11 - 0
provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/BasicEquipPropertyMessage.java

@@ -44,4 +44,15 @@ public class BasicEquipPropertyMessage {
     int endurance;
     /** 敏捷 */
     int agile;
+
+    public BasicEquipPropertyMessage() {
+    }
+
+    public BasicEquipPropertyMessage(int constitution, int magicPower, int power, int endurance, int agile) {
+        this.constitution = constitution;
+        this.magicPower = magicPower;
+        this.power = power;
+        this.endurance = endurance;
+        this.agile = agile;
+    }
 }

+ 0 - 44
provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/DictDataMessage.java

@@ -1,44 +0,0 @@
-/*
- * ioGame
- * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
- * # iohao.com . 渔民小镇
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-package com.iohao.mmo.equip.proto;
-
-import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass;
-import lombok.AccessLevel;
-import lombok.ToString;
-import lombok.experimental.FieldDefaults;
-
-/**
- * 字典值
- *
- * @author 唐斌
- * @date 2023-07-31
- */
-@ToString
-@ProtobufClass
-@FieldDefaults(level = AccessLevel.PUBLIC)
-public class DictDataMessage {
-    /** 字典标签 */
-    String dictLabel;
-    /** 字典值 */
-    String dictValue;
-    /** 备注 */
-    String remark;
-    /** 排序 */
-    int sort;
-}

+ 0 - 46
provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/DictionaryMessage.java

@@ -1,46 +0,0 @@
-/*
- * ioGame
- * Copyright (C) 2021 - 2023  渔民小镇 (262610965@qq.com、luoyizhu@gmail.com) . All Rights Reserved.
- * # iohao.com . 渔民小镇
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- */
-package com.iohao.mmo.equip.proto;
-
-import com.baidu.bjf.remoting.protobuf.annotation.ProtobufClass;
-import lombok.AccessLevel;
-import lombok.ToString;
-import lombok.experimental.FieldDefaults;
-
-import java.util.List;
-
-/**
- * 字典
- *
- * @author 唐斌
- * @date 2023-07-31
- */
-@ToString
-@ProtobufClass
-@FieldDefaults(level = AccessLevel.PUBLIC)
-public class DictionaryMessage {
-    /** 装备 id */
-    String id;
-    /** 字典类型 */
-    String dictType;
-    /** 字典名称 */
-    String dictName;
-    /** 字典值 */
-    List<DictDataMessage> dictDataList;
-}

+ 3 - 1
provide/equip-provide/src/main/java/com/iohao/mmo/equip/proto/EquipMessage.java

@@ -34,6 +34,8 @@ import lombok.experimental.FieldDefaults;
 public class EquipMessage{
     /** 装备id */
     String id;
+    /** 玩家 */
+    long userId;
     /** 装备名称 */
     String name;
     /** 总属性点 */
@@ -41,7 +43,7 @@ public class EquipMessage{
     /** 未分配属性点 */
     int undistributedAttr;
     /** 品质 */
-    int quality;
+//    int quality;
     /** 装备模板 */
     EquipTemplateMessage equipTemplate;
     /** 装备基础属性 */