2 Commits dd31c1947d ... 3b1ad2e531

Tác giả SHA1 Thông báo Ngày
  txq 3b1ad2e531 Merge branch 'master' of http://118.178.135.110:3000/fish/tower_client 6 tháng trước cách đây
  txq 0073f180bb 添加联合管理类 6 tháng trước cách đây
30 tập tin đã thay đổi với 2110 bổ sung82 xóa
  1. 1061 35
      assets/package/prefab/ui/tower/tower.prefab
  2. 2 0
      assets/script/framework/Framework.ts
  3. 2 0
      assets/script/game/Main.ts
  4. 11 3
      assets/script/game/common/InterfaceAddEnum.ts
  5. 1 1
      assets/script/game/common/LoginManager.ts
  6. 8 1
      assets/script/game/data/GameEvent.ts
  7. 1 7
      assets/script/game/data/GoodsData.ts
  8. 14 9
      assets/script/game/data/RoleData.ts
  9. 10 2
      assets/script/game/manager/BattleManager.ts
  10. 14 15
      assets/script/game/manager/GoodsManager.ts
  11. 2 1
      assets/script/game/manager/RoleManager.ts
  12. 75 0
      assets/script/game/manager/UnionManager.ts
  13. 9 0
      assets/script/game/manager/UnionManager.ts.meta
  14. 17 8
      assets/script/game/ui/tower/TowerUI.ts
  15. 59 0
      assets/script/game/ui/tower/node/ResultUI.ts
  16. 9 0
      assets/script/game/ui/tower/node/ResultUI.ts.meta
  17. 11 0
      assets/sub_bundle/duplicate.meta
  18. 9 0
      assets/sub_bundle/duplicate/spine.meta
  19. 97 0
      assets/sub_bundle/duplicate/spine/lose.atlas
  20. 12 0
      assets/sub_bundle/duplicate/spine/lose.atlas.meta
  21. 0 0
      assets/sub_bundle/duplicate/spine/lose.json
  22. 11 0
      assets/sub_bundle/duplicate/spine/lose.json.meta
  23. BIN
      assets/sub_bundle/duplicate/spine/lose.png
  24. 134 0
      assets/sub_bundle/duplicate/spine/lose.png.meta
  25. 384 0
      assets/sub_bundle/duplicate/spine/victory_chixu.atlas
  26. 12 0
      assets/sub_bundle/duplicate/spine/victory_chixu.atlas.meta
  27. 0 0
      assets/sub_bundle/duplicate/spine/victory_chixu.json
  28. 11 0
      assets/sub_bundle/duplicate/spine/victory_chixu.json.meta
  29. BIN
      assets/sub_bundle/duplicate/spine/victory_chixu.png
  30. 134 0
      assets/sub_bundle/duplicate/spine/victory_chixu.png.meta

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 1061 - 35
assets/package/prefab/ui/tower/tower.prefab


+ 2 - 0
assets/script/framework/Framework.ts

@@ -12,4 +12,6 @@ export class Framework {
     static event = EventMgr;                    //事件接口
     static tips: TipsManager;                   //提示接口
     static time: TimeManager;                   //时间管理
+    //游戏业务逻辑联合处理器
+    static unionManager:any
 }

+ 2 - 0
assets/script/game/Main.ts

@@ -6,6 +6,7 @@ import { MaterialUtil } from '../framework/util/MaterialUtil';
 import { NetManager } from './common/NetManager';
 import { FrameworkConf } from '../framework/config/FrameworkConf';
 import { resLoader } from '../framework/res/ResLoader';
+import { UnionManager } from './manager/UnionManager';
 
 const { ccclass, property } = _decorator;
 
@@ -53,6 +54,7 @@ export class Main extends Component {
         
         let loginbg = this.node.getChildByPath('loginbg');
 
+        Framework.unionManager = UnionManager;
         
         let loadRes = [
             'bomb/game/icon_1'

+ 11 - 3
assets/script/game/common/InterfaceAddEnum.ts

@@ -30,15 +30,23 @@ export enum TipsOpereteEnum {
 
 /** 物品类型 */
 export enum ItemEnum {
-    currency = 0,       //货币
-    material = 1,       //材料
-    equip = 2,          //装备
+    user = "user",       //货币
+    material = "material",       //材料
+    equip = "equip",          //装备
 }
 export enum LanguageType {
     Zh = "Zh",
     En = "En",
 }
+export interface BaseItem {
+    conf: {};
+    id: string;
+    count: number;
+    type: ItemEnum;
+}
 
+// 奖品[物品类型(ItemEnum),物品编号,物品数量]  []
+export type AwardData = [string, string, number]
 /** 装备部位 */
 export enum EquipSlotEnum {
     weapon = 1,     //武器

+ 1 - 1
assets/script/game/common/LoginManager.ts

@@ -197,7 +197,7 @@ export class LoginManager {
             }
 
             if (data.fight_role) {
-                RoleData.setFightRole(data.fight_role)
+                RoleData.fightRole = data.fight_role
             }
             
             BattleData.setLoginData(data)

+ 8 - 1
assets/script/game/data/GameEvent.ts

@@ -2,6 +2,10 @@
 let event = {
 	Game_Show: "Game_Show",												//游戏显示;
 	Ws_Hand: "Ws_Hand",													//webSocket握手
+
+	//status 更新
+	StatusUpdate: "StatusUpdate",											//金币更新
+
 	Daily_Update: "Daily_Update",                                       //每日凌晨12时更新
 	User_Update: "User_Update",                                         //用户数据更新
 	OutSide_Load_Finish: "OutSide_Load_Finish",                         //外部场景资源加载完毕
@@ -15,7 +19,10 @@ let event = {
 
 	SelectServer: "SelectServer",										//服务器选择
     MaterialChange: "MaterialChange",									//材料变化
+    RoleChange: "RoleChange",											//角色变化
+    EquipChange: "EquipChange",											//装备变化
 	// boss数据刷新
-	BossUpdate: "BossUpdate",	}
+	BossUpdate: "BossUpdate",	
+}
 
 export let GameEvent = event;

+ 1 - 7
assets/script/game/data/GoodsData.ts

@@ -1,14 +1,8 @@
 import { Framework } from "../../framework/Framework";
-import { ItemEnum } from "../common/InterfaceAddEnum";
+import { BaseItem, ItemEnum } from "../common/InterfaceAddEnum";
 import { MaterialConf } from "../config/MaterialConf";
 import { GameEvent } from "./GameEvent";
 
-interface BaseItem {
-    conf: {};
-    id: string;
-    count: number;
-    type: ItemEnum;
-}
 
 class Data {
     private _goodsData: { [id: string]: BaseItem } = {};

+ 14 - 9
assets/script/game/data/RoleData.ts

@@ -11,12 +11,14 @@ interface RoleServer {
     fight_force: number;//战力
     conf: {}//配置
 }
+//出战英雄数据[种族1 typeID,种族2 typeID,种族3 typeID,种族4 typeID]
+export type FightRole = [number,number,number,number]
 
 class Data {
 
     private _roles: { [id: string]: RoleServer } = {};
     //上阵英雄
-    private _fightRole: Array<Number> = [];
+    private _fightRole: FightRole = [0,0,0,0];
     setData(data: { [id: string]: RoleServer }): void {
         let rConf = RoleConf.data;
         if (data) {
@@ -54,17 +56,20 @@ class Data {
     }
 
     //设置出战角色  data {"1":"xxx","2":"xxx","3":"xxx","4":"xxx"}
-    setFightRole(data) {
-        if (!data) return
+    set fightRole(data: { [key: string]: string } | FightRole) {
+        if (!data) return;
         this._fightRole = [0, 0, 0, 0];
-        for (let i = 0; i < this._fightRole.length; i++) {
-
-            this._fightRole[i] = Number(data[(i + 1).toString()] || "0");
+        if (Array.isArray(data)) {
+            this._fightRole = data as FightRole;
+        } else {
+            for (let i = 0; i < this._fightRole.length; i++) {
+                this._fightRole[i] = Number(data[(i + 1).toString()] || "0");
+            }
         }
-    }
-
+    }    
+    
     //获取出战角色
-    fightRole() :[number,number,number,number]{
+   get fightRole() :FightRole{
         return [101,201,301,401];
         // return this._fightRole;
     }

+ 10 - 2
assets/script/game/manager/BattleManager.ts

@@ -1,7 +1,9 @@
+import { Framework } from "../../framework/Framework";
 import { LoginMgr } from "../common/LoginManager";
 import { BattleData, BattleLayoutData, BattleLayoutPos, BattleLayoutScale, BattleOptsBase, BattleOptsKill, BattleOptsMerge, BattleOptsMove, BattleOptsNew, BattleOptsRemove, BattleOptsType } from "../data/BattleData";
 import { RoleData } from "../data/RoleData";
 import { UserData } from "../data/UserData";
+import { GoodsManager } from "./GoodsManager";
 //战斗消息管理
 export class BattleManager {
     
@@ -61,6 +63,12 @@ export class BattleManager {
             if(data.layout){
                 BattleData.layout = data.layout;
             }
+            if(data.awards){
+
+                let awards = Framework.unionManager.parseServerAwards(data.awards);
+                Framework.unionManager.fireEventWithItem(awards)
+                Framework.unionManager.showItemTips(awards);
+            }
             UserData.food_timer = data.food_timer;
             UserData.status.food = data.food;
 
@@ -105,7 +113,7 @@ export class BattleManager {
         }
 
         LoginMgr.sendPost('battle', 'set_fight_role', (data) => {
-            RoleData.setFightRole(data.fight_role);
+            RoleData.fightRole = data.fight_role
             callback&&callback();
         }, args)
     }
@@ -116,7 +124,7 @@ export class BattleManager {
         let fightRole = RoleData.fightRole;
         let level = value%BattleLayoutScale;
 		let raceID = (value-level)/BattleLayoutScale;
-        let typeID = fightRole[raceID];
+        let typeID = fightRole[raceID-1];
 
         
         return {typeID: typeID,raceID: raceID,level: level}

+ 14 - 15
assets/script/game/manager/GoodsManager.ts

@@ -1,8 +1,9 @@
 import { Framework } from "../../framework/Framework";
-import { ItemEnum } from "../common/InterfaceAddEnum";
+import { ObjectUtil } from "../../framework/util/ObjectUtil";
+import { AwardData, BaseItem, ItemEnum } from "../common/InterfaceAddEnum";
 import { MaterialConf } from "../config/MaterialConf";
 import { GameEvent } from "../data/GameEvent";
-import { GoodsData } from "../data/GoodsData";
+import {GoodsData } from "../data/GoodsData";
 
 export class GoodsManager {
     static getBagGoods() {
@@ -29,7 +30,7 @@ export class GoodsManager {
         } else {
             let mConf = MaterialConf.data[id];
             if (mConf) {
-                let item = {
+                let item:BaseItem  = {
                     id: id,
                     count: 0,
                     type: ItemEnum.material,
@@ -41,10 +42,11 @@ export class GoodsManager {
         return null;
     }
 
-    static addGoodsById(id: string, num: number) {
+    static addGoodsById(id: string, num: number):BaseItem {
         let _goodsData = GoodsData.getAllGoods();
         let mConf = MaterialConf.data[id];
         if (mConf) {
+            
             if (_goodsData[id]) {
                 let sumCount = _goodsData[id].count + num;
                 if (mConf.MaxStoreLimit) {
@@ -56,8 +58,9 @@ export class GoodsManager {
                 } else {
                     _goodsData[id].count = sumCount
                 }
+
             } else {
-                let item = {
+                let item:BaseItem = {
                     id: id,
                     count: num,
                     type: ItemEnum.material,
@@ -67,6 +70,10 @@ export class GoodsManager {
             }
             Framework.event.fireEvent(GameEvent.MaterialChange, id);
             //後期可能有紅點邏輯
+
+            let changeItem:BaseItem = ObjectUtil.deepCopy(_goodsData[id])
+            changeItem.count = num
+            return changeItem
         }
     }
 
@@ -74,7 +81,7 @@ export class GoodsManager {
         let _goodsData = GoodsData.getAllGoods();
         let mConf = MaterialConf.data[id];
         if (mConf) {
-            let item = {
+            let item:BaseItem = {
                 id: id,
                 count: num,
                 type: ItemEnum.material,
@@ -85,15 +92,7 @@ export class GoodsManager {
         return null;
     }
 
-    static parseServerAwards(data) {
-        for (const element of data) {
-            if (element[0] == 'material') {
-                this.addGoodsById(element[1], element[2]);
-            } else if (element[0] == 'equip') {
-            
-            }
-        }
-    }
+    
     // //消息-讀郵件
     // static sendReadMailMsg(args: { id: string }, callback) {
     //     LoginMgr.sendPost('user', 'read_mail', (data) => {

+ 2 - 1
assets/script/game/manager/RoleManager.ts

@@ -1,3 +1,4 @@
+import { Framework } from "../../framework/Framework";
 import { LoginMgr } from "../common/LoginManager";
 import { RoleData } from "../data/RoleData";
 import { RoleConf } from "../ui/tower/conf/RoleConf";
@@ -22,7 +23,7 @@ export class RoleManager {
             rData.grade = data.grade;
             RoleData.setRoleDataByID(args.hid, rData)
             if(data.awards){
-                GoodsManager.parseServerAwards(data.awards);
+                Framework.unionManager.parseServerAwards(data.awards);
             }
             callback();
         }, args)

+ 75 - 0
assets/script/game/manager/UnionManager.ts

@@ -0,0 +1,75 @@
+import { Framework } from "../../framework/Framework";
+import { AwardData, BaseItem, ItemEnum } from "../common/InterfaceAddEnum";
+import { GameEvent } from "../data/GameEvent";
+import { UserData } from "../data/UserData";
+import { GoodsManager } from "./GoodsManager";
+
+
+//所有manager的连接器
+export class UnionManager {
+    // 解析奖励数据
+    static parseServerAwards(data:{[key:string]:AwardData}) {
+        let awards:Array<BaseItem> = [];
+        console.log("parseServerAwards",Object.keys(data));
+        for (const key in Object.keys(data)) {
+            const element = data[key];
+            console.log(element[0]);
+            if (element[0] == ItemEnum.material) {
+                let item = GoodsManager.addGoodsById(element[1].toString() , element[2]);
+                awards.push(item);
+            } else if (element[0] == ItemEnum.equip) {
+            }else if (element[0] == ItemEnum.user) {
+                let item: BaseItem = {
+                    conf: {},
+                    count: element[2],
+                    id: element[1].toString(),
+                    type: ItemEnum.user
+                };
+                
+                let statu = UserData.status[element[1]]
+                if (statu) {
+                    statu += element[2];
+                    UserData.status[element[1]] = statu;
+                    awards.push(item);
+                }
+
+            }
+        }
+
+
+        return awards;
+    }
+
+    // 触发物品刷新事件
+    static fireEventWithItem(itemList:[BaseItem]){
+        let updateEvent = [];
+        for(let i in itemList){
+            let item = itemList[i];
+            if(item.type == ItemEnum.user){
+                if(!updateEvent[GameEvent.StatusUpdate]){
+                    Framework.event.fireEvent(GameEvent.StatusUpdate);
+                }
+                updateEvent[GameEvent.StatusUpdate] = true
+            }else if(item.type == ItemEnum.equip){
+                if(!updateEvent[GameEvent.EquipChange]){
+                    Framework.event.fireEvent(GameEvent.EquipChange);
+                }
+                updateEvent[GameEvent.EquipChange] = true
+            }else if(item.type == ItemEnum.material){
+                if(!updateEvent[GameEvent.MaterialChange]){
+                    Framework.event.fireEvent(GameEvent.MaterialChange);
+                }
+                updateEvent[GameEvent.MaterialChange] = true
+            }
+        }
+    }
+
+    static showItemTips(awards:Array<BaseItem>) {
+        let tipsStr:string = "";
+        for (const key in awards) {
+            const element = awards[key];
+            tipsStr += element.count + "x" + element.id + "  ";
+        }
+        Framework.tips.setTips(tipsStr);
+    }
+}

+ 9 - 0
assets/script/game/manager/UnionManager.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.24",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "f5c25143-a8c1-4d02-8e76-e0fb9951abe1",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 17 - 8
assets/script/game/ui/tower/TowerUI.ts

@@ -25,10 +25,11 @@ import { MailManager } from '../../manager/MailManager';
 import { ViewID } from '../../../framework/config/LayerConf';
 import { MailData } from '../../data/MailData';
 import { RoleManager } from '../../manager/RoleManager';
-import { RoleData } from '../../data/RoleData';
+import { FightRole, RoleData } from '../../data/RoleData';
 import { BattleData, BattleLayoutPos, BattleLayoutScale, BattleOptsBase, BattleOptsKill, BattleOptsMerge, BattleOptsMove, BattleOptsNew, BattleOptsRemove, BattleOptsType } from '../../data/BattleData';
 import { BattleManager } from '../../manager/BattleManager';
 import { UserData } from '../../data/UserData';
+import { ResultUI } from './node/ResultUI';
 
 //地图比例尺 1:70
 let mapScale = 72;
@@ -124,6 +125,10 @@ export class TowerUI extends BaseView {
 	@property({ type: [Label], tooltip: "当前管卡展示" })
 	levelValue: Label[] = []
 
+	@property({ type: Node, tooltip: "结算" })
+	resultNode: Node = null;
+
+
 	//关卡id
 	battlesID: number = 1;
 
@@ -159,7 +164,7 @@ export class TowerUI extends BaseView {
 	heroModelMap:Map<number,Prefab> = new Map();
 	heroPool: Map<number,Node[]> = new Map();
 	//出战角色
-	fightRole = [0,0,0,0]
+	fightRole:FightRole = [0,0,0,0]
 	//锁定格子
 	lockBagPosNumber = 6;
 	lockAttackPosNumber = 8;
@@ -381,6 +386,9 @@ export class TowerUI extends BaseView {
 					
 				let winStr = attackData.bWin ? "胜利" : "失败";
 				console.log(winStr)
+				this.resultNode.getComponent(ResultUI).show(attackData.bWin,attackData.bWin &&(this.battlesID%10==0),()=>{
+					this.reStartBattle(this.battlesID)
+				})
 				if(attackData.bWin){
 
 					let layout = {}
@@ -416,21 +424,21 @@ export class TowerUI extends BaseView {
 
 					BattleManager.sendBattleDuplicateMsg(this.battlesID,attackData.bWin,layout,this.operateList,()=>{
 						if(this.battlesID == 20){
-							this.reStartBattle(this.battlesID)
+							
 						}
 						else{
-							this.reStartBattle(this.battlesID+1)
+							this.battlesID++
 						}
 					},()=>{
-						this.reStartBattle(this.battlesID)
+						// this.reStartBattle(this.battlesID)
 					})
 				}
 				else{
 					if(this.battlesID%5 != 1){
-						this.reStartBattle(this.battlesID-1)
+						this.battlesID--
 					}
 					else{
-						this.reStartBattle(this.battlesID)
+						
 					}
 				}
 				
@@ -581,7 +589,7 @@ export class TowerUI extends BaseView {
 	onOpen(args) {
 
 		
-
+		this.battlesID = BattleData.duplicate.max_process + 1
 	}
 	//UI关闭时会调用,该函数在onDestroy前调用
 	onClose() {
@@ -743,6 +751,7 @@ export class TowerUI extends BaseView {
 		this.powerCur = UserData.status.food
 		this.radiusNode.active = false;
 		this.damageCountData.clear()
+		this.resultNode.active = false
 		this.updateDamageCount()
 	}
 

+ 59 - 0
assets/script/game/ui/tower/node/ResultUI.ts

@@ -0,0 +1,59 @@
+import { _decorator, Component, Node, sp } from 'cc';
+const { ccclass, property } = _decorator;
+
+@ccclass('ResultUI')
+export class ResultUI extends Component {
+
+    @property({type:Node,tooltip:'胜利界面'})
+    win:Node = null;
+    @property({type:Node,tooltip:'失败界面'})
+    lose:Node = null;
+    @property({type:Node,tooltip:'点击返回'})
+    back:Node = null;
+
+    @property({type:sp.Skeleton,tooltip:'胜利动画'})
+    winSpine:sp.Skeleton = null;
+    @property({type:sp.Skeleton,tooltip:'失败动画'})
+    loseSpine:sp.Skeleton = null;
+
+    //是否等待动画播放完毕
+    bWait = false
+    //是否动画播放完毕
+    bAnimOver = false
+    
+    private _endcallback:Function
+    
+    protected onLoad(): void {
+        this.loseSpine.setCompleteListener(this.actionComplete.bind(this))
+    }
+
+    show(bWin:boolean,bLast:boolean = false,callback:Function = null) {
+        this.bAnimOver = false
+        this.bWait = bLast
+        this.back.active = bLast
+
+        if(bWin){
+            this.win.active = true
+            this.lose.active = false
+        }else{
+            this.loseSpine.setAnimation(0,'lose',false)
+        }
+        this._endcallback = callback
+    }
+
+    actionComplete(trackEntry:sp.spine.TrackEntry) {
+        this.bAnimOver = true
+        if(this.bWait) return
+        this.node.active = false
+        this._endcallback&&this._endcallback()
+    }
+    onTouchButton() {
+        this.bWait = false
+        if(this.bAnimOver){
+            this.node.active = false
+            this._endcallback&&this._endcallback()
+        }
+    }
+}
+
+

+ 9 - 0
assets/script/game/ui/tower/node/ResultUI.ts.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "4.0.24",
+  "importer": "typescript",
+  "imported": true,
+  "uuid": "c58fbc5c-9ada-49af-9639-f6f1fe7cbc4e",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 11 - 0
assets/sub_bundle/duplicate.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "f50a25fc-58e3-4dab-88ff-305ca9c30916",
+  "files": [],
+  "subMetas": {},
+  "userData": {
+    "isBundle": true
+  }
+}

+ 9 - 0
assets/sub_bundle/duplicate/spine.meta

@@ -0,0 +1,9 @@
+{
+  "ver": "1.2.0",
+  "importer": "directory",
+  "imported": true,
+  "uuid": "e448eaff-b922-42e5-8c8f-97af0a614f40",
+  "files": [],
+  "subMetas": {},
+  "userData": {}
+}

+ 97 - 0
assets/sub_bundle/duplicate/spine/lose.atlas

@@ -0,0 +1,97 @@
+
+lose.png
+size: 548,548
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+huangguan
+  rotate: true
+  xy: 162, 4
+  size: 142, 107
+  orig: 144, 109
+  offset: 1, 1
+  index: -1
+l_bianyuan
+  rotate: false
+  xy: 227, 164
+  size: 35, 84
+  orig: 37, 86
+  offset: 1, 1
+  index: -1
+l_chibang
+  rotate: false
+  xy: 318, 412
+  size: 195, 136
+  orig: 197, 138
+  offset: 1, 1
+  index: -1
+l_piaodai
+  rotate: false
+  xy: 271, 2
+  size: 102, 246
+  orig: 104, 248
+  offset: 1, 1
+  index: -1
+l_qizhi
+  rotate: true
+  xy: 0, 0
+  size: 146, 160
+  orig: 148, 162
+  offset: 1, 1
+  index: -1
+r_bianyuan
+  rotate: false
+  xy: 427, 189
+  size: 35, 84
+  orig: 37, 86
+  offset: 1, 1
+  index: -1
+r_chibang
+  rotate: false
+  xy: 118, 250
+  size: 195, 136
+  orig: 197, 138
+  offset: 1, 1
+  index: -1
+r_piaodai
+  rotate: false
+  xy: 0, 148
+  size: 116, 238
+  orig: 118, 240
+  offset: 1, 1
+  index: -1
+r_qizhi
+  rotate: false
+  xy: 318, 275
+  size: 168, 135
+  orig: 170, 137
+  offset: 1, 1
+  index: -1
+wenzi
+  rotate: true
+  xy: 375, 8
+  size: 265, 50
+  orig: 267, 52
+  offset: 1, 1
+  index: -1
+wenzi_01
+  rotate: true
+  xy: 488, 301
+  size: 109, 60
+  orig: 109, 60
+  offset: 0, 0
+  index: -1
+wenzibeijing
+  rotate: false
+  xy: 0, 388
+  size: 316, 160
+  orig: 318, 162
+  offset: 1, 1
+  index: -1
+zhutipiaodai
+  rotate: true
+  xy: 118, 148
+  size: 100, 107
+  orig: 102, 109
+  offset: 1, 1
+  index: -1

+ 12 - 0
assets/sub_bundle/duplicate/spine/lose.atlas.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.0.0",
+  "importer": "*",
+  "imported": true,
+  "uuid": "500c0b4c-e0fd-4292-a2ba-7cfec4b12b4c",
+  "files": [
+    ".atlas",
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
assets/sub_bundle/duplicate/spine/lose.json


+ 11 - 0
assets/sub_bundle/duplicate/spine/lose.json.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.2.6",
+  "importer": "spine-data",
+  "imported": true,
+  "uuid": "0a759b9c-1266-4386-8278-5d120b924d56",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

BIN
assets/sub_bundle/duplicate/spine/lose.png


+ 134 - 0
assets/sub_bundle/duplicate/spine/lose.png.meta

@@ -0,0 +1,134 @@
+{
+  "ver": "1.0.27",
+  "importer": "image",
+  "imported": true,
+  "uuid": "193b0289-873e-456e-8519-b6245e5ac6dd",
+  "files": [
+    ".json",
+    ".png"
+  ],
+  "subMetas": {
+    "6c48a": {
+      "importer": "texture",
+      "uuid": "193b0289-873e-456e-8519-b6245e5ac6dd@6c48a",
+      "displayName": "lose",
+      "id": "6c48a",
+      "name": "texture",
+      "userData": {
+        "wrapModeS": "clamp-to-edge",
+        "wrapModeT": "clamp-to-edge",
+        "imageUuidOrDatabaseUri": "193b0289-873e-456e-8519-b6245e5ac6dd",
+        "isUuid": true,
+        "visible": false,
+        "minfilter": "linear",
+        "magfilter": "linear",
+        "mipfilter": "none",
+        "anisotropy": 0
+      },
+      "ver": "1.0.22",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    },
+    "f9941": {
+      "importer": "sprite-frame",
+      "uuid": "193b0289-873e-456e-8519-b6245e5ac6dd@f9941",
+      "displayName": "lose",
+      "id": "f9941",
+      "name": "spriteFrame",
+      "userData": {
+        "trimType": "auto",
+        "trimThreshold": 1,
+        "rotated": false,
+        "offsetX": 0,
+        "offsetY": 0,
+        "trimX": 0,
+        "trimY": 0,
+        "width": 548,
+        "height": 548,
+        "rawWidth": 548,
+        "rawHeight": 548,
+        "borderTop": 0,
+        "borderBottom": 0,
+        "borderLeft": 0,
+        "borderRight": 0,
+        "packable": true,
+        "pixelsToUnit": 100,
+        "pivotX": 0.5,
+        "pivotY": 0.5,
+        "meshType": 0,
+        "vertices": {
+          "rawPosition": [
+            -274,
+            -274,
+            0,
+            274,
+            -274,
+            0,
+            -274,
+            274,
+            0,
+            274,
+            274,
+            0
+          ],
+          "indexes": [
+            0,
+            1,
+            2,
+            2,
+            1,
+            3
+          ],
+          "uv": [
+            0,
+            548,
+            548,
+            548,
+            0,
+            0,
+            548,
+            0
+          ],
+          "nuv": [
+            0,
+            0,
+            1,
+            0,
+            0,
+            1,
+            1,
+            1
+          ],
+          "minPos": [
+            -274,
+            -274,
+            0
+          ],
+          "maxPos": [
+            274,
+            274,
+            0
+          ]
+        },
+        "isUuid": true,
+        "imageUuidOrDatabaseUri": "193b0289-873e-456e-8519-b6245e5ac6dd@6c48a",
+        "atlasUuid": ""
+      },
+      "ver": "1.0.12",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    }
+  },
+  "userData": {
+    "type": "sprite-frame",
+    "hasAlpha": true,
+    "fixAlphaTransparencyArtifacts": false,
+    "redirect": "193b0289-873e-456e-8519-b6245e5ac6dd@6c48a"
+  }
+}

+ 384 - 0
assets/sub_bundle/duplicate/spine/victory_chixu.atlas

@@ -0,0 +1,384 @@
+
+victory_chixu.png
+size: 1718,1718
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+caidai_00001
+  rotate: false
+  xy: 0, 711
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00003
+  rotate: false
+  xy: 650, 1371
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00005
+  rotate: false
+  xy: 0, 362
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00007
+  rotate: false
+  xy: 156, 711
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00009
+  rotate: false
+  xy: 806, 1371
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00011
+  rotate: false
+  xy: 0, 13
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00013
+  rotate: false
+  xy: 156, 362
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00015
+  rotate: false
+  xy: 312, 711
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00017
+  rotate: false
+  xy: 624, 716
+  size: 154, 341
+  orig: 154, 347
+  offset: 0, 6
+  index: -1
+caidai_00019
+  rotate: false
+  xy: 962, 1371
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00021
+  rotate: true
+  xy: 650, 1215
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00023
+  rotate: false
+  xy: 156, 13
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00025
+  rotate: false
+  xy: 312, 362
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00027
+  rotate: false
+  xy: 468, 711
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00029
+  rotate: false
+  xy: 780, 234
+  size: 154, 327
+  orig: 154, 347
+  offset: 0, 18
+  index: -1
+caidai_00031
+  rotate: false
+  xy: 624, 377
+  size: 154, 337
+  orig: 154, 347
+  offset: 0, 10
+  index: -1
+caidai_00033
+  rotate: true
+  xy: 650, 1059
+  size: 154, 346
+  orig: 154, 347
+  offset: 0, 1
+  index: -1
+caidai_00035
+  rotate: false
+  xy: 624, 39
+  size: 154, 336
+  orig: 154, 347
+  offset: 0, 11
+  index: -1
+caidai_00037
+  rotate: true
+  xy: 998, 1059
+  size: 154, 343
+  orig: 154, 347
+  offset: 0, 4
+  index: -1
+caidai_00039
+  rotate: false
+  xy: 1118, 1371
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00041
+  rotate: false
+  xy: 312, 13
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00043
+  rotate: false
+  xy: 468, 362
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00045
+  rotate: false
+  xy: 1274, 1371
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00047
+  rotate: true
+  xy: 999, 1215
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+caidai_00049
+  rotate: false
+  xy: 468, 13
+  size: 154, 347
+  orig: 154, 347
+  offset: 0, 0
+  index: -1
+guangdian
+  rotate: false
+  xy: 780, 563
+  size: 237, 247
+  orig: 256, 256
+  offset: 11, 3
+  index: -1
+guangyun
+  rotate: false
+  xy: 0, 1060
+  size: 648, 658
+  orig: 700, 700
+  offset: 27, 21
+  index: -1
+huangguan
+  rotate: true
+  xy: 1612, 250
+  size: 143, 106
+  orig: 145, 108
+  offset: 1, 1
+  index: -1
+kuosan_01
+  rotate: false
+  xy: 780, 812
+  size: 246, 245
+  orig: 256, 256
+  offset: 10, 0
+  index: -1
+kuosan_02
+  rotate: false
+  xy: 1430, 1469
+  size: 252, 249
+  orig: 256, 256
+  offset: 4, 3
+  index: -1
+l_bianyuan
+  rotate: true
+  xy: 1403, 1213
+  size: 35, 84
+  orig: 37, 86
+  offset: 1, 1
+  index: -1
+l_chibang
+  rotate: true
+  xy: 1441, 169
+  size: 169, 164
+  orig: 171, 166
+  offset: 1, 1
+  index: -1
+l_qigan
+  rotate: true
+  xy: 1348, 1161
+  size: 208, 53
+  orig: 210, 55
+  offset: 1, 1
+  index: -1
+l_qizhi
+  rotate: false
+  xy: 1257, 492
+  size: 176, 177
+  orig: 178, 179
+  offset: 1, 1
+  index: -1
+lizi_00
+  rotate: false
+  xy: 780, 0
+  size: 219, 232
+  orig: 350, 350
+  offset: 59, 38
+  index: -1
+lizi_01
+  rotate: true
+  xy: 1157, 236
+  size: 219, 234
+  orig: 350, 350
+  offset: 59, 35
+  index: -1
+lizi_02
+  rotate: true
+  xy: 1028, 677
+  size: 218, 240
+  orig: 350, 350
+  offset: 60, 31
+  index: -1
+lizi_03
+  rotate: true
+  xy: 1430, 1250
+  size: 217, 244
+  orig: 350, 350
+  offset: 60, 27
+  index: -1
+lizi_04
+  rotate: false
+  xy: 1270, 671
+  size: 217, 224
+  orig: 350, 350
+  offset: 60, 47
+  index: -1
+lizi_05
+  rotate: false
+  xy: 1489, 800
+  size: 217, 227
+  orig: 350, 350
+  offset: 60, 44
+  index: -1
+lizi_06
+  rotate: false
+  xy: 1001, 0
+  size: 218, 232
+  orig: 350, 350
+  offset: 59, 38
+  index: -1
+lizi_07
+  rotate: false
+  xy: 1221, 0
+  size: 218, 234
+  orig: 350, 350
+  offset: 59, 35
+  index: -1
+lizi_08
+  rotate: true
+  xy: 1019, 457
+  size: 218, 236
+  orig: 350, 350
+  offset: 59, 32
+  index: -1
+lizi_09
+  rotate: false
+  xy: 936, 234
+  size: 219, 221
+  orig: 350, 350
+  offset: 59, 48
+  index: -1
+lizi_10
+  rotate: false
+  xy: 1489, 573
+  size: 219, 225
+  orig: 350, 350
+  offset: 59, 45
+  index: -1
+lizi_11
+  rotate: true
+  xy: 1489, 1029
+  size: 219, 229
+  orig: 350, 350
+  offset: 59, 41
+  index: -1
+qizhi
+  rotate: true
+  xy: 1343, 1059
+  size: 100, 107
+  orig: 102, 109
+  offset: 1, 1
+  index: -1
+r_bianyuan
+  rotate: true
+  xy: 1403, 1176
+  size: 35, 84
+  orig: 37, 86
+  offset: 1, 1
+  index: -1
+r_chibang
+  rotate: false
+  xy: 1441, 3
+  size: 169, 164
+  orig: 171, 166
+  offset: 1, 1
+  index: -1
+r_qigan
+  rotate: false
+  xy: 1393, 340
+  size: 208, 53
+  orig: 210, 55
+  offset: 1, 1
+  index: -1
+r_qizhi
+  rotate: true
+  xy: 1489, 395
+  size: 176, 177
+  orig: 178, 179
+  offset: 1, 1
+  index: -1
+wenzi
+  rotate: true
+  xy: 1435, 424
+  size: 245, 52
+  orig: 247, 54
+  offset: 1, 1
+  index: -1
+wenzi_01
+  rotate: true
+  xy: 1346, 944
+  size: 113, 62
+  orig: 113, 62
+  offset: 0, 0
+  index: -1
+wenzi_beijing
+  rotate: false
+  xy: 1028, 897
+  size: 316, 160
+  orig: 318, 162
+  offset: 1, 1
+  index: -1

+ 12 - 0
assets/sub_bundle/duplicate/spine/victory_chixu.atlas.meta

@@ -0,0 +1,12 @@
+{
+  "ver": "1.0.0",
+  "importer": "*",
+  "imported": true,
+  "uuid": "6e158b5c-a400-449a-aed3-95fc5dcee31d",
+  "files": [
+    ".atlas",
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
assets/sub_bundle/duplicate/spine/victory_chixu.json


+ 11 - 0
assets/sub_bundle/duplicate/spine/victory_chixu.json.meta

@@ -0,0 +1,11 @@
+{
+  "ver": "1.2.6",
+  "importer": "spine-data",
+  "imported": true,
+  "uuid": "fd5beec0-30eb-4be7-95b9-d8a05d2da7bf",
+  "files": [
+    ".json"
+  ],
+  "subMetas": {},
+  "userData": {}
+}

BIN
assets/sub_bundle/duplicate/spine/victory_chixu.png


+ 134 - 0
assets/sub_bundle/duplicate/spine/victory_chixu.png.meta

@@ -0,0 +1,134 @@
+{
+  "ver": "1.0.27",
+  "importer": "image",
+  "imported": true,
+  "uuid": "455a23b8-f297-477b-91d1-fbdd2bfdc6e2",
+  "files": [
+    ".json",
+    ".png"
+  ],
+  "subMetas": {
+    "6c48a": {
+      "importer": "texture",
+      "uuid": "455a23b8-f297-477b-91d1-fbdd2bfdc6e2@6c48a",
+      "displayName": "victory_chixu",
+      "id": "6c48a",
+      "name": "texture",
+      "userData": {
+        "wrapModeS": "clamp-to-edge",
+        "wrapModeT": "clamp-to-edge",
+        "imageUuidOrDatabaseUri": "455a23b8-f297-477b-91d1-fbdd2bfdc6e2",
+        "isUuid": true,
+        "visible": false,
+        "minfilter": "linear",
+        "magfilter": "linear",
+        "mipfilter": "none",
+        "anisotropy": 0
+      },
+      "ver": "1.0.22",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    },
+    "f9941": {
+      "importer": "sprite-frame",
+      "uuid": "455a23b8-f297-477b-91d1-fbdd2bfdc6e2@f9941",
+      "displayName": "victory_chixu",
+      "id": "f9941",
+      "name": "spriteFrame",
+      "userData": {
+        "trimType": "auto",
+        "trimThreshold": 1,
+        "rotated": false,
+        "offsetX": 0,
+        "offsetY": 0,
+        "trimX": 0,
+        "trimY": 0,
+        "width": 1718,
+        "height": 1718,
+        "rawWidth": 1718,
+        "rawHeight": 1718,
+        "borderTop": 0,
+        "borderBottom": 0,
+        "borderLeft": 0,
+        "borderRight": 0,
+        "packable": true,
+        "pixelsToUnit": 100,
+        "pivotX": 0.5,
+        "pivotY": 0.5,
+        "meshType": 0,
+        "vertices": {
+          "rawPosition": [
+            -859,
+            -859,
+            0,
+            859,
+            -859,
+            0,
+            -859,
+            859,
+            0,
+            859,
+            859,
+            0
+          ],
+          "indexes": [
+            0,
+            1,
+            2,
+            2,
+            1,
+            3
+          ],
+          "uv": [
+            0,
+            1718,
+            1718,
+            1718,
+            0,
+            0,
+            1718,
+            0
+          ],
+          "nuv": [
+            0,
+            0,
+            1,
+            0,
+            0,
+            1,
+            1,
+            1
+          ],
+          "minPos": [
+            -859,
+            -859,
+            0
+          ],
+          "maxPos": [
+            859,
+            859,
+            0
+          ]
+        },
+        "isUuid": true,
+        "imageUuidOrDatabaseUri": "455a23b8-f297-477b-91d1-fbdd2bfdc6e2@6c48a",
+        "atlasUuid": ""
+      },
+      "ver": "1.0.12",
+      "imported": true,
+      "files": [
+        ".json"
+      ],
+      "subMetas": {}
+    }
+  },
+  "userData": {
+    "type": "sprite-frame",
+    "hasAlpha": true,
+    "fixAlphaTransparencyArtifacts": false,
+    "redirect": "455a23b8-f297-477b-91d1-fbdd2bfdc6e2@6c48a"
+  }
+}

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác