zouyong vor 5 Jahren
Ursprung
Commit
50fda0d788

+ 3 - 4
tools/messages.md

@@ -203,10 +203,9 @@
             mission_passed: number;
 
             /** 
-            * 武将信息 将GeneralMsg转换成字符串,多个武将中间用英文‘,’隔开
-            * 例   id,status,pos,exp,lv,star,fragment:143013,1,0,0,1,1,10
+            * 武将信息 
             */
-            generalpack: string;
+            generalpack: GeneralProp[] ;
         },
 
 #### 武将属性
@@ -272,4 +271,4 @@ export enum ITEMTYPE {
 export enum GENERALSTATUS {
     NONE = 0,//未拥有(只有碎片/未合成)
     GET = 1,//已拥有
-}
+}

+ 11 - 10
tower_sanguo/assets/scripts/data/GameData.ts

@@ -537,11 +537,11 @@ export default class GameData {
             GameController.http.getInitGeneral(this.getInitGeneral.bind(this), parseInt(this.player.init_generals[0]));
         }
         else {
-            let arr = data.generalpack.split(":");
+            let arr = data.generalpack;
             for (let i = 0; i < arr.length; i++) {
-                let brr = arr[i].split(",");
-                let id = parseInt(brr[GENERALPROP.ID - GENERALPROP.PROP_START]);
-                let vo: GeneralVO = this.createGeneralVO(id, 0, brr);
+                let o = arr[i];
+                let id =o.id;
+                let vo: GeneralVO = this.createGeneralVO(id, 0, arr[i]);
 
                 if (vo.pos >= 0 && vo.pos < 5) {
                     this.player.generals[vo.pos] = vo;
@@ -645,17 +645,18 @@ export default class GameData {
         vo.fragment_compose = config.fragment_compose;
         if (type == 0) {
             //服务器数据
-            vo.lv = parseInt(arg[GENERALPROP.LV - GENERALPROP.PROP_START]);
-            vo.pos = parseInt(arg[GENERALPROP.POS - GENERALPROP.PROP_START]);
-            vo.star = parseInt(arg[GENERALPROP.STAR - GENERALPROP.PROP_START]);
-            vo.fragment = parseInt(arg[GENERALPROP.FRAGMENT - GENERALPROP.PROP_START]);
-            if (parseInt(arg[GENERALPROP.STATUS - GENERALPROP.PROP_START]) == GENERALSTATUS.GET) {
+            let g = arg as GeneralProp;
+            vo.lv = g.lv
+            vo.pos = g.pos;
+            vo.star = g.star;
+            vo.fragment = g.fragment;
+            if (g.status == GENERALSTATUS.GET) {
                 vo.status = GENERALSTATUS.GET;
             }
             else {
                 vo.status = this.updateGeneralStatus(vo);
             }
-            vo.exp = parseInt(arg[GENERALPROP.EXP - GENERALPROP.PROP_START]);
+            vo.exp = g.exp;
         }
         else if (type == 1) {
             vo.lv = this.player.getProp(PLAYERPROP.BARRACK);

+ 1 - 1
tower_sanguo/assets/scripts/net/msg/PlayerProp.ts

@@ -31,7 +31,7 @@ export default class PlayerProp {
      * 武将信息 将GeneralMsg转换成字符串,多个武将中间用英文‘,’隔开
      * 例   id,status,pos,exp,lv,star,fragment:143013,1,0,0,1,1,10
      */
-    generalpack: string;
+    generalpack: GeneralProp[];
     /** 威望石 */
     prestige: number;
     /** 转盘卡 */

+ 10 - 1
tower_sanguo/assets/scripts/net/servertest/ServerManager.ts

@@ -453,7 +453,7 @@ export default class ServerManager {
         player.barrack = this.player.barrack;
         player.mission_arrive = this.player.mission_arrive;
         player.mission_passed = this.player.mission_passed;
-        player.generalpack = this.getGeneralsString();
+        player.generalpack = this.getGenerals();
         player.prestige = this.player.prestige;
         player.turntable_card = this.player.turntable_card;
         player.turntable_leftTimes = this.player.turntable_leftTimes;
@@ -488,6 +488,15 @@ export default class ServerManager {
         str = str.slice(0, str.length - 1);
         return str;
     }
+    /** 获取武将信息 */
+    private getGenerals():GeneralProp[] {
+        let arr = [];
+        for (let i in this.generals) {
+            let g = this.generals[i];
+            arr.push(g);
+        }
+        return arr;
+    }
 
     /** 网络配置 */
     private getServerConfig(url, data: string, callback) {