فهرست منبع

Merge remote-tracking branch 'origin/equip' into dev

toby 1 سال پیش
والد
کامیت
11b03c7d92

+ 4 - 0
broker/src/main/java/com/iohao/mmo/broker/MyBrokerServer.java

@@ -21,6 +21,7 @@ package com.iohao.mmo.broker;
 import com.iohao.game.bolt.broker.core.common.IoGameGlobalConfig;
 import com.iohao.game.bolt.broker.server.BrokerServer;
 import com.iohao.game.bolt.broker.server.BrokerServerBuilder;
+import com.iohao.mmo.common.config.MyGlobalSetting;
 
 import java.util.concurrent.TimeUnit;
 
@@ -37,6 +38,9 @@ public class MyBrokerServer {
     }
 
     public BrokerServer createBrokerServer(int port) {
+        // 统一的默认配置
+        MyGlobalSetting.defaultSetting();
+        
         // Broker Server (游戏网关服) 构建器
         BrokerServerBuilder brokerServerBuilder = BrokerServer.newBuilder()
                 // broker (游戏网关)端口

+ 52 - 0
common/common-core/src/main/java/com/iohao/mmo/common/config/MyGlobalSetting.java

@@ -0,0 +1,52 @@
+/*
+ * 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.common.config;
+
+import com.iohao.game.action.skeleton.core.IoGameGlobalSetting;
+import com.iohao.game.action.skeleton.core.codec.JsonDataCodec;
+import com.iohao.game.bolt.broker.core.common.IoGameGlobalConfig;
+import com.iohao.mmo.common.logic.server.MyUserProcessorExecutorStrategy;
+import lombok.experimental.UtilityClass;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+/**
+ * @author 渔民小镇
+ * @date 2023-08-28
+ */
+@UtilityClass
+public class MyGlobalSetting {
+    AtomicBoolean setting = new AtomicBoolean();
+
+    public void defaultSetting() {
+        if (setting.get()) {
+            return;
+        }
+
+        if (!setting.compareAndSet(false, true)) {
+            return;
+        }
+
+        // 使用自定义 UserProcessor 构建 Executor 的策略
+        IoGameGlobalConfig.userProcessorExecutorStrategy = new MyUserProcessorExecutorStrategy();
+
+        // 编解码设置
+        IoGameGlobalSetting.setDataCodec(new JsonDataCodec());
+    }
+}

+ 4 - 0
common/common-core/src/main/java/com/iohao/mmo/common/logic/server/LogicServerKit.java

@@ -25,6 +25,7 @@ import com.iohao.game.bolt.broker.core.client.BrokerClient;
 import com.iohao.game.bolt.broker.core.client.BrokerClientBuilder;
 import com.iohao.game.bolt.broker.core.common.processor.hook.ClientProcessorHooks;
 import com.iohao.mmo.common.config.GameCode;
+import com.iohao.mmo.common.config.MyGlobalSetting;
 import com.iohao.mmo.common.core.flow.MyFlowContext;
 import com.iohao.mmo.common.core.flow.internal.DebugActionAfter;
 import com.iohao.mmo.common.core.flow.internal.DebugActionMethodExceptionProcess;
@@ -59,6 +60,9 @@ public class LogicServerKit {
     }
 
     public BrokerClientBuilder newBrokerClientBuilder() {
+        // 统一的默认配置
+        MyGlobalSetting.defaultSetting();
+
         ClientProcessorHooks hooks = ofClientProcessorHooks();
         return BrokerClient.newBuilder()
                 .clientProcessorHooks(hooks);

+ 4 - 1
external/src/main/java/com/iohao/mmo/external/MyExternalServer.java

@@ -29,6 +29,7 @@ import com.iohao.game.external.core.netty.DefaultExternalServer;
 import com.iohao.game.external.core.netty.DefaultExternalServerBuilder;
 import com.iohao.game.external.core.netty.handler.ws.HttpRealIpHandler;
 import com.iohao.game.external.core.netty.micro.WebSocketMicroBootstrapFlow;
+import com.iohao.mmo.common.config.MyGlobalSetting;
 import com.iohao.mmo.external.core.broker.client.ext.impl.UserIpExternalBizRegion;
 import com.iohao.mmo.login.cmd.LoginCmd;
 
@@ -39,7 +40,6 @@ import com.iohao.mmo.login.cmd.LoginCmd;
 public class MyExternalServer {
 
     public ExternalServer createExternalServer(int externalPort) {
-
         // 游戏对外服配置
         extractedConfig();
 
@@ -67,6 +67,9 @@ public class MyExternalServer {
     }
 
     private static void extractedConfig() {
+        // 统一的默认配置
+        MyGlobalSetting.defaultSetting();
+
         // 对外服业务扩展
         extractedExternalBizRegion();
 

+ 0 - 10
logic/equip-logic/src/main/java/com/iohao/mmo/equip/action/EquipTemplateAction.java

@@ -29,16 +29,6 @@ public class EquipTemplateAction {
     @Resource
     EquipTemplateService equipTemplateService;
 
-    /**
-     * 初始化装备库(暂时的方法,后期应从数据文件中读取)
-     *
-     */
-    @ActionMethod(EquipCmd.initEquipTemplate)
-    public void initEquipTemplate() {
-        // 初始化装备数据,暂时放这
-        equipTemplateService.initEquipTemplate();
-    }
-
     /**
      * 获取装备库信息
      *

+ 21 - 12
logic/a-logic-common/src/main/java/com/iohao/mmo/LogicApplication.java → logic/equip-logic/src/main/java/com/iohao/mmo/equip/config/EquipCommandLineRunner.java

@@ -16,23 +16,32 @@
  * 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;
+package com.iohao.mmo.equip.config;
 
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
+import com.iohao.mmo.equip.entity.EquipTemplate;
+import com.iohao.mmo.equip.service.EquipTemplateService;
+import lombok.AllArgsConstructor;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.stereotype.Component;
 
 /**
  * @author 渔民小镇
- * @date 2023-07-26
+ * @date 2023-08-28
  */
-@Slf4j
-@SpringBootApplication
-public class LogicApplication {
-    public static void main(String[] args) {
-        //
-        SpringApplication.run(LogicApplication.class, args);
+@Component
+@AllArgsConstructor
+public class EquipCommandLineRunner implements CommandLineRunner {
+    final MongoTemplate mongoTemplate;
+    final EquipTemplateService equipTemplateService;
 
-        log.info("LogicApplication : {}", args);
+    @Override
+    public void run(String... args) {
+        initConfigExcel();
+    }
+
+    private void initConfigExcel() {
+        mongoTemplate.dropCollection(EquipTemplate.class);
+        equipTemplateService.initEquipTemplate();
     }
 }

+ 9 - 5
one-application/src/main/java/com/iohao/mmo/OneApplication.java

@@ -18,15 +18,19 @@
  */
 package com.iohao.mmo;
 
+import com.iohao.game.action.skeleton.core.IoGameGlobalSetting;
+import com.iohao.game.action.skeleton.core.codec.JsonDataCodec;
 import com.iohao.game.action.skeleton.ext.spring.ActionFactoryBeanForSpring;
 import com.iohao.game.bolt.broker.client.AbstractBrokerClientStartup;
 import com.iohao.game.bolt.broker.core.common.IoGameGlobalConfig;
 import com.iohao.game.bolt.broker.server.BrokerServer;
+import com.iohao.game.common.kit.system.OsInfo;
 import com.iohao.game.external.core.ExternalServer;
 import com.iohao.game.external.core.config.ExternalGlobalConfig;
 import com.iohao.game.external.core.netty.simple.NettyRunOne;
 import com.iohao.mmo.bag.BagLogicServer;
 import com.iohao.mmo.broker.MyBrokerServer;
+import com.iohao.mmo.common.config.MyGlobalSetting;
 import com.iohao.mmo.common.logic.server.MyUserProcessorExecutorStrategy;
 import com.iohao.mmo.equip.EquipLogicServer;
 import com.iohao.mmo.external.MyExternalServer;
@@ -96,9 +100,9 @@ public class OneApplication {
         // 游戏逻辑服列表
         return List.of(
                 loginLogicServer
-                , personLogicServer
-                , mapLogicServer
-                , levelLogicServer
+//                , personLogicServer
+//                , mapLogicServer
+//                , levelLogicServer
                 , bagLogicServer
                 , mailLogicServer
                 , equipLogicServer
@@ -106,8 +110,8 @@ public class OneApplication {
     }
 
     private static void extractedConfig() {
-        // 使用自定义 UserProcessor 构建 Executor 的策略
-        IoGameGlobalConfig.userProcessorExecutorStrategy = new MyUserProcessorExecutorStrategy();
+        // 统一的默认配置
+        MyGlobalSetting.defaultSetting();
     }
 
     @Bean

+ 11 - 0
one-client/src/main/java/com/iohao/mmo/client/CommonClient.java

@@ -18,6 +18,9 @@
  */
 package com.iohao.mmo.client;
 
+import com.iohao.game.action.skeleton.core.IoGameGlobalSetting;
+import com.iohao.game.action.skeleton.core.codec.JsonDataCodec;
+import com.iohao.game.common.kit.system.OsInfo;
 import com.iohao.game.external.client.InputCommandRegion;
 import com.iohao.game.external.client.join.ClientRunOne;
 import com.iohao.game.external.client.user.ClientUser;
@@ -40,6 +43,8 @@ import java.util.List;
  */
 public class CommonClient {
     static void start(long userId) {
+        extractedConfig();
+
         // 客户端的用户(玩家)
         ClientUser clientUser = new DefaultClientUser();
         clientUser.setJwt(String.valueOf(userId));
@@ -53,6 +58,12 @@ public class CommonClient {
                 .startup();
     }
 
+    private static void extractedConfig() {
+        if (OsInfo.me().isMac()) {
+            IoGameGlobalSetting.setDataCodec(new JsonDataCodec());
+        }
+    }
+
     private static List<InputCommandRegion> listInputCommandRegion() {
         // 登录
         LoginInputCommandRegion loginInputCommandRegion = new LoginInputCommandRegion();

+ 9 - 14
one-client/src/main/java/com/iohao/mmo/client/input/EquipInputCommandRegion.java

@@ -30,6 +30,7 @@ import com.iohao.mmo.common.provide.kit.JsonKit;
 import com.iohao.mmo.equip.cmd.EquipCmd;
 import com.iohao.mmo.equip.proto.*;
 import lombok.extern.slf4j.Slf4j;
+
 import java.util.Arrays;
 import java.util.List;
 
@@ -85,14 +86,14 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
             ScannerKit.log(() -> log.info("请输入体质、魔力、力量、耐力、敏捷,格式[体质-魔力-力量-耐力-敏捷]"));
             String inputValue = ScannerKit.nextLine("1-1-1-1-1");
             SplitParam param = new SplitParam(inputValue);
-            int constitution = param.getInt(0,0);
-            int magicPower = param.getInt(1,0);
-            int power = param.getInt(2,0);
-            int endurance = param.getInt(3,0);
-            int agile = param.getInt(4,0);
+            int constitution = param.getInt(0, 0);
+            int magicPower = param.getInt(1, 0);
+            int power = param.getInt(2, 0);
+            int endurance = param.getInt(3, 0);
+            int agile = param.getInt(4, 0);
 
             ElseEquipPropertyMessage elseEquipPropertyMessage =
-                    new ElseEquipPropertyMessage(constitution,magicPower,power,endurance,agile);
+                    new ElseEquipPropertyMessage(constitution, magicPower, power, endurance, agile);
             EquipMessage equipMessage = new EquipMessage();
             equipMessage.elseEquipProperty = elseEquipPropertyMessage;
             equipMessage.id = id;
@@ -132,7 +133,7 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
             List<String> idList = Arrays.asList(ids.split("-"));
 
             // 请求参数
-            StringValueList listValue =  WrapperKit.ofListStringValue(idList);
+            StringValueList listValue = WrapperKit.ofListStringValue(idList);
             return listValue;
         };
 
@@ -141,12 +142,6 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
             log.info("装备属性信息 : {}", value);
         }).setDescription("批量删除装备").setInputRequestData(inputRequestData);
 
-        // 10-10 初始化装备库
-        ofCommand(EquipCmd.initEquipTemplate).callback(EquipTemplateMessage.class, result -> {
-            EquipTemplateMessage value = result.getValue();
-            log.info("装备库信息 : {}", value);
-        }).setDescription("初始化装备库");
-
         // 10-13 根据装备库列表批量随机新的装备
         inputRequestData = () -> {
             ScannerKit.log(() -> log.info(
@@ -156,7 +151,7 @@ public class EquipInputCommandRegion extends AbstractInputCommandRegion {
             List<String> itemTypeIdList = Arrays.asList(itemTypeIds.split("-"));
 
             // 请求参数
-            StringValueList listValue =  WrapperKit.ofListStringValue(itemTypeIdList);
+            StringValueList listValue = WrapperKit.ofListStringValue(itemTypeIdList);
 
             return listValue;
         };

+ 1 - 1
one-client/src/main/java/com/iohao/mmo/client/input/MailInputCommandRegion.java

@@ -90,7 +90,7 @@ public class MailInputCommandRegion extends AbstractInputCommandRegion {
 
         ofCommand(MailCmd.deleteMails).callback(BoolValue.class, result -> {
             BoolValue value = result.getValue();
-            log.info("删除{}", value.value ? "成功" : "失败");
+            log.info("删除成功", value);
         }).setDescription("一键删除所有已开封和过期的邮件");
 
         ofCommand(MailCmd.openMail).setDescription("领取指定未开封的邮件").setInputRequestData(() -> {

+ 2 - 1
pom.xml

@@ -79,7 +79,8 @@
         <junit.version>4.13.2</junit.version>
         <!-- 演示用的假数据 https://mvnrepository.com/artifact/com.github.javafaker/javafaker -->
         <javafaker.version>1.0.2</javafaker.version>
-        <fastjson2.version>2.0.37</fastjson2.version>
+        <!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
+        <fastjson2.version>2.0.39</fastjson2.version>
     </properties>
 
     <dependencies>

+ 1 - 0
provide/common-provide/src/main/java/com/iohao/mmo/common/provide/cmd/CommonCmd.java

@@ -26,6 +26,7 @@ import com.iohao.game.action.skeleton.core.CmdInfo;
  */
 public interface CommonCmd {
     int cmd = CmdModule.commandCmd;
+    /** 获得新物品通知 */
     int broadcastShowItem = 100;
 
     static CmdInfo of(int subCmd) {

+ 0 - 2
provide/equip-provide/src/main/java/com/iohao/mmo/equip/cmd/EquipCmd.java

@@ -38,8 +38,6 @@ public interface EquipCmd {
     int resetEquip = 4;
     /** 批量删除装备 */
     int delEquipBatch = 5;
-    /** 初始化装备库 */
-    int initEquipTemplate = 10;
     /** 获取装备库信息 */
     int getEquipTemplate = 12;
     /** 根据装备库随机出一件新的装备 */