0224995 1 сар өмнө
parent
commit
2688983602

+ 28 - 1
assets/Script/Frames/DataManager.ts

@@ -31,7 +31,34 @@ class DataCtrl{
             //每一行就是一个数据 创建一个空对象 存储数据
             let obj = {};
             for(let j = 1; j <cols.length; j++){
-                obj[keys[j]] = cols[j];
+                //获取当前字符串值 根据类型定数据
+                let val = cols[j];
+                let v;
+                switch(types[j]){
+                    case "boolean":
+                        v = Boolean(val);
+                        break;
+                    case "string":
+                        v = val;
+                        break;
+                    case "number":
+                        v = Number(val);
+                        break;
+                    case "string[]":
+                        v = val.split(";");
+                        break;
+                    case "number[]":
+                        v = val.split(";");
+                        let arr:number[] = [];
+                        for(const info of v){
+                            arr.push(Number(v));
+                        }
+                        v = arr;
+                        break;
+                    default:
+                        break;
+                }
+                obj[keys[j]] = v;
             }
             const data: DataBase = <DataBase>obj;
             this._datas.set(Number(data.id), data);

+ 38 - 12
assets/Script/Frames/ResourcesMgr.ts

@@ -1,13 +1,14 @@
-import { Asset, AssetManager, Prefab, resources, SpriteFrame, TiledMapAsset } from "cc";
+import { Asset, AssetManager, log, Prefab, resources, SpriteAtlas, SpriteFrame, TiledMapAsset } from "cc";
 
 class ResourcesMgr{
 
     static instance: ResourcesMgr = null;
 
-    private _spriteFrame: Map<string,SpriteFrame> = new Map();
-    private _prefab: Map<string, Prefab> = new Map();
-    private _tmxAsset: Map<number,TiledMapAsset> = new Map();
-    async loadAllRes(path: string, onProgress:((finish: number,total: number, item: AssetManager.RequestItem)=>void) = null){
+    private _spriteFrames: Map<string,SpriteFrame> = new Map();
+    private _prefabs: Map<string, Prefab> = new Map();
+    private _tmxAsset: Map<string,TiledMapAsset> = new Map();
+    async loadAllRes(path: string, onProgress:(
+        (finish: number,total: number, item: AssetManager.RequestItem)=>void) = null){
         //下载resources文件夹下的所有资源
         //异步函数
         const assets: Asset[] = await new Promise<Asset[]>((value, reject)=>{
@@ -24,28 +25,53 @@ class ResourcesMgr{
         })
        //遍历所有资源 分门别类存储到对应的容器中
        for(const asset of assets){
-    
+          this.addRes(asset,asset.name);
        }
     }
 
-    addRes(name: string | string, asset: Asset){
+    async load(path: string, name?: string, atlas: boolean = true){
+        const asset: Asset = await new Promise((value, reject)=>{
+            resources.load(path, (err: Error, asset: Asset)=>{
+                if(err){
+                    reject(err);
+                }
+                else{
+                    value(asset);
+                }
+            })
+        });
+        this.addRes(asset, name, atlas)
+    }
+
+    addRes(asset: Asset, name: string,  atlas: boolean = true){
         if(asset instanceof SpriteFrame){
-            this._spriteFrame.set(String(name), asset);
+            this._spriteFrames.set(String(name), asset);
         }
         if(asset instanceof Prefab){
-            this._prefab.set(String(name), asset);
+            this._prefabs.set(String(name), asset);
+            //console.log(this._prefabs)
         }
         if(asset instanceof TiledMapAsset){
-            this._tmxAsset.set(Number(name), asset)
+            this._tmxAsset.set((name), asset)
+        }
+        if(asset instanceof SpriteAtlas){
+            if(atlas){
+                for(const frame of asset.getSpriteFrames()){
+                    this._spriteFrames.set(name + frame.name, frame);
+                }
+            }
         }
     }
 
     getSpriteFrame(name: string): SpriteFrame{
-        return this._spriteFrame.get(name);
+        return this._spriteFrames.get(name);
     }
 
     getPrefab(name: string): Prefab{
-        return this._prefab.get(name);
+        return this._prefabs.get(name);
+    }
+    getTmxAsset(name: string): TiledMapAsset{
+        return this._tmxAsset.get(name);
     }
 }
 

+ 2 - 1
assets/Script/Game/GameFrameWork/MonsterMgr.ts

@@ -10,7 +10,8 @@ export class MonsterMgr extends Component {
     start() {
         //this.monsterPre = resMgr.getPrefab("Monster");
         this.schedule(()=>{
-            const monster = instantiate(this.monsterPre);
+            //const monster = instantiate(this.monsterPre);
+            const monster = instantiate(resMgr.getPrefab("Monster"));
             monster.parent = this.node;
         }, 2)
     }

+ 97 - 50
assets/Script/Game/GameResMgr.ts

@@ -1,58 +1,105 @@
-const ResPath = [
-    {
-        bg:[
-            "Theme/Theme1/BG0/BG1-hd.pvr.ccz/spriteFrame",
-            "Theme/Theme1/BG0/BG2-hd.pvr.ccz/spriteFrame",
-        ],
-        monster:[
-            "Theme/Theme1/Items/Monsters01-hd",
-            "Theme/Theme1/Items/Monsters02-hd",
-        ],
-        obs:[
-            "Theme/Theme1/Items/Object01-hd",
-            "Theme/Theme1/Items/Object02-hd",
-        ],
-        pathImg:"Theme/Theme1/BGlv/BG-hd.pvr.ccz/spriteFrame",
-        tmx:"Theme/Theme1/BG1lv/BGPath"
+// const ResPath = [
+//     {
+//         bg:[
+//             "Theme/Theme1/BG0/BG1-hd.pvr.ccz/spriteFrame",
+//             "Theme/Theme1/BG0/BG2-hd.pvr.ccz/spriteFrame",
+//         ],
+//         monster:[
+//             "Theme/Theme1/Items/Monsters01-hd",
+//             "Theme/Theme1/Items/Monsters02-hd",
+//         ],
+//         obs:[
+//             "Theme/Theme1/Items/Object01-hd",
+//             "Theme/Theme1/Items/Object02-hd",
+//         ],
+//         pathImg:"Theme/Theme1/BGlv/BG-hd.pvr.ccz/spriteFrame",
+//         tmx:"Theme/Theme1/BG1lv/BGPath"
+
+import { Asset, SpriteFrame, TiledMapAsset } from "cc";
+import { GameResData } from "../DataItem/ItemData";
+import { dataMgr } from "../Frames/DataManager";
+import { GameInfo } from "../GameInfo";
+import { resMgr } from "../Frames/ResourcesMgr";
+
         
-    },
-    {
-        bg:[
-            "Theme/Theme2/BG0/BG1-hd.pvr.ccz/spriteFrame",
-            "Theme/Theme2/BG0/BG2-hd.pvr.ccz/spriteFrame",
-        ],
-        monster:[
-            "Theme/Theme2/Items/Monsters01-hd",
-            "Theme/Theme2/Items/Monsters02-hd",
-        ],
-        obs:[
-            "Theme/Theme2/Items/Object01-hd",
-            "Theme/Theme2/Items/Object02-hd",
-        ],
-        pathImg:"Theme/Theme2/BGlv/BG-hd.pvr.ccz/spriteFrame",
-        tmx:"Theme/Theme2/BG1lv/BGPath"
-    },
-    {
-        bg:[
-            "Theme/Theme2/BG0/BG1-hd.pvr.ccz/spriteFrame",
-            "Theme/Theme2/BG0/BG2-hd.pvr.ccz/spriteFrame",
-        ],
-        monster:[
-            "Theme/Theme2/Items/Monsters01-hd",
-            "Theme/Theme2/Items/Monsters02-hd",
-        ],
-        obs:[
-            "Theme/Theme2/Items/Object01-hd",
-            "Theme/Theme2/Items/Object02-hd",
-        ],
-        pathImg:"Theme/Theme2/BGlv/BG-hd.pvr.ccz/spriteFrame",
-        tmx:"Theme/Theme2/BG1lv/BGPath"
-    },
-]
+//     },
+//     {
+//         bg:[
+//             "Theme/Theme2/BG0/BG1-hd.pvr.ccz/spriteFrame",
+//             "Theme/Theme2/BG0/BG2-hd.pvr.ccz/spriteFrame",
+//         ],
+//         monster:[
+//             "Theme/Theme2/Items/Monsters01-hd",
+//             "Theme/Theme2/Items/Monsters02-hd",
+//         ],
+//         obs:[
+//             "Theme/Theme2/Items/Object01-hd",
+//             "Theme/Theme2/Items/Object02-hd",
+//         ],
+//         pathImg:"Theme/Theme2/BGlv/BG-hd.pvr.ccz/spriteFrame",
+//         tmx:"Theme/Theme2/BG1lv/BGPath"
+//     },
+//     {
+//         bg:[
+//             "Theme/Theme2/BG0/BG1-hd.pvr.ccz/spriteFrame",
+//             "Theme/Theme2/BG0/BG2-hd.pvr.ccz/spriteFrame",
+//         ],
+//         monster:[
+//             "Theme/Theme2/Items/Monsters01-hd",
+//             "Theme/Theme2/Items/Monsters02-hd",
+//         ],
+//         obs:[
+//             "Theme/Theme2/Items/Object01-hd",
+//             "Theme/Theme2/Items/Object02-hd",
+//         ],
+//         pathImg:"Theme/Theme2/BGlv/BG-hd.pvr.ccz/spriteFrame",
+//         tmx:"Theme/Theme2/BG1lv/BGPath"
+//     },
+// ]
 
 class GameResMgr{
+    private _resData: GameResData[] = null;
     static instance: GameResMgr = null;
 
+    async loadGameRes(){
+        this._resData = dataMgr.getAllDataByName("GameResPath");
+        for(let i = 0; i < this._resData.length; i++){
+            const data = this._resData[i];
+            let path;
+            let name;
+            if(data.replace[0]){
+                path = data.path.replace(data.replace[0], String(GameInfo.Instance.CurTheme));
+                name = data.resName.replace(data.replace[0], String(GameInfo.Instance.CurTheme));
+            }
+            if(data.replace[1]){
+                path = path.replace(data.replace[1], String(GameInfo.Instance.CurLv));
+                name = name.replace(data.replace[1], String(GameInfo.Instance.CurLv));
+            }
+            //通过上面的名字和路径 加载资源
+            await resMgr.load(path, name, data.atlas);
+        }
+    }
+
+    getMapBg(style: number): SpriteFrame{
+        const name: string = `${GameInfo.Instance.CurLv}-${style}`;
+        return resMgr.getSpriteFrame(name);
+    }
+
+    getPathBg(): SpriteFrame{
+        const name: string = `${GameInfo.Instance.CurLv}-${GameInfo.Instance.CurLv}-pathBg`;
+        return resMgr.getSpriteFrame(name);
+    }
+
+    getTmx(): TiledMapAsset{
+        const name: string = `${GameInfo.Instance.CurLv}-${GameInfo.Instance.CurLv}-tmx`;
+        return resMgr.getTmxAsset(name);
+    }
+
+    getMonsterFrame(name: string): SpriteFrame{
+        name = `${GameInfo.Instance.CurLv}-name`;
+        return resMgr.getSpriteFrame(name);
+    }
+
 }
 
 export const gameResMgr: GameResMgr = GameResMgr.instance = new GameResMgr();

+ 8 - 8
assets/resources/Data/GameResPath.csv

@@ -1,10 +1,10 @@
 数据的属性,id,resName,path,replace,atlas
 数据类型,number,string,string,string[],boolean
-瓦片地图,1,theme-lv-tmx,Themetheme/BGlv/BGPath,theme;lv,0
-地图画面,2,theme-lv-pathBg,Themetheme/BGlv/BG-hd.pvr.ccz/spriteFrame,theme;lv,0
-背景1,3,theme-1,Themetheme/BG0/BG1-hd.pvr.ccz/spriteFrame,theme,0
-背景2,4,theme-2,Themetheme/BG0/BG2-hd.pvr.ccz/spriteFrame,theme,0
-怪物图集1,5,theme-,Themetheme/Items/Monsters01-hd,theme,1
-怪物图集2,6,theme-,Themetheme/Items/Monsters02-hd,theme,1
-障碍物图集1,7,theme-1-,Themetheme/Items/Object01-hd,theme,1
-障碍物图集2,8,theme-2-,Themetheme/Items/Object02-hd,theme,1
+瓦片地图,1,theme-lv-tmx,Theme/Themetheme/BGlv/BGPath,theme;lv,0
+地图画面,2,theme-lv-pathBg,Theme/Themetheme/BGlv/BG-hd.pvr.ccz/spriteFrame,theme;lv,0
+背景1,3,theme-1,Theme/Themetheme/BG0/BG1-hd.pvr.ccz/spriteFrame,theme,0
+背景2,4,theme-2,Theme/Themetheme/BG0/BG2-hd.pvr.ccz/spriteFrame,theme,0
+怪物图集1,5,theme-,Theme/Themetheme/Items/Monsters01-hd,theme,1
+怪物图集2,6,theme-,Theme/Themetheme/Items/Monsters02-hd,theme,1
+障碍物图集1,7,theme-1-,Theme/Themetheme/Items/Object01-hd,theme,1
+障碍物图集2,8,theme-2-,Theme/Themetheme/Items/Object02-hd,theme,1