123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- //
- // FillGlobalConfig.hpp
- // auto_fill_jewel_v3
- //
- // Created by Red on 2024/11/25.
- // 从 config.json 读取全局盘子和宝石配置数据
- #ifndef FillGlobalConfig_hpp
- #define FillGlobalConfig_hpp
- #include <stdio.h>
- #include "contourdata.h"
- #include <string>
- using std::string;
- #include "ajson5.hpp"
- #include <unordered_map>
- using std::unordered_map;
- #include <vector>
- using std::vector;
- #define FILLGLOBALCONFIG_JEWELSIZE_SM 0
- #define FILLGLOBALCONFIG_JEWELSIZE_MD 1
- #define FILLGLOBALCONFIG_JEWELSIZE_LG 2
- #define FILLGLOBALCONFIG_DIFFCULTY_NORM 0
- #define FILLGLOBALCONFIG_DIFFCULTY_HARD1 1
- #define FILLGLOBALCONFIG_DIFFCULTY_HARD2 2
- #define FILLGLOBALCONFIG_PLATESIZE_SM 1
- #define FILLGLOBALCONFIG_PLATESIZE_MD 2
- #define FILLGLOBALCONFIG_PLATESIZE_LG 3
- struct FillGlobalConfig {
-
- //这个结构体似乎不用了
- struct ContourConfig {
- string _name;
- ContourData _contour ;
- } ;
- bool init(string filename) ;
- bool initJewelItems( string filename ) ;
- bool initLevelDatas( string filename ) ;
- bool initPlateItems( string filename ) ;
-
- //静态全局单例
- static FillGlobalConfig* getInstance() ;
-
- vector<ContourConfig> _plateContours ;
- vector<ContourConfig> _jewelContours ;
- ContourData* getContourDataByPngName(string& pngname) ;
-
- //宝石基本信息
- struct JewelItem {
- int _id ;
- string _category;
- string _jewelName;
- string _code1;
- string _code2;
- int _size ; // 0-SM 1-MD 2-LG
- float _scale;// 0.0-1.0
- string _pngName;
- string _yzName;
- string _contourName;
- float _bbWidth;
- float _bbHeight;
- string _etc; //备注信息
- };
- JewelItem* getJewelItemById(int jid){ return _mapJewelItems.find(jid)!=_mapJewelItems.end()?(&_mapJewelItems[jid]):nullptr; }
- int getJewelItemCount() { return _mapJewelItems.size() ; }
-
-
- //关卡组成数据
- struct LevelData {
- int _id ;
- int _subId ;
- int _difficulty;//难度 0-普通, 1-难 , 2-极难
- vector<int> _jewelIds ;
- vector<int> _cnts ;//宝石个数,读取的时候要把组数乘以3计算出宝石个数。
- } ;
- //levelId 是关卡主编号值, subIndex是子关卡的索引值(从0开始)
- LevelData* getLevelData(int levelId,int subIndex) { return (_mapLevelDatas.find(levelId)!=_mapLevelDatas.end())?(&_mapLevelDatas[levelId][subIndex]):nullptr; }
- int getSubLevelCount(int levelId) { return (_mapLevelDatas.find(levelId)!=_mapLevelDatas.end())?(_mapLevelDatas[levelId].size()):0; }
- int getLevelCount() { return _mapLevelDatas.size() ; }
- LevelData& getLevelDataByIndex(int index) { auto it = _mapLevelDatas.begin(); std::advance(it,index); return it->second[0] ;}
-
- //盘子基本信息
- struct PlateItem {
- int _id ;
- string _name;
- int _size ;// 0-MINI 1-SM 2-MD 3-LG
- string _pngName ;
- string _contourName;
- float _blx,_bly,_trx,_try ;// bl for bottom-left, tr for top-right.
- double _bigJewCap ;//大宝石容量
- float _bbwid,_bbhei ;//精灵图片尺寸
- string _etc ;
- } ;
- PlateItem* getPlateItemById(int pid){ return _mapPlateItems.find(pid)!=_mapPlateItems.end()?(&_mapPlateItems[pid]):nullptr; }
- int getPlateItemCount( int plateSzId ) { return (_mapPlateIdArray.find(plateSzId)!=_mapPlateIdArray.end())?(_mapPlateIdArray[plateSzId].size()):0; }
- PlateItem* getPlateItemBySzNIndex(int plateSzId,int index){ return (_mapPlateIdArray.find(plateSzId)!=_mapPlateIdArray.end())?( getPlateItemById(_mapPlateIdArray[plateSzId][index])):nullptr; }
-
- private:
- static FillGlobalConfig* _s_instance ;
-
- unordered_map<int, JewelItem> _mapJewelItems ;
- unordered_map<int, vector<LevelData> > _mapLevelDatas ;// key 为主关卡编号, vector<LevelData> 为子关卡数组
- unordered_map<int, PlateItem> _mapPlateItems ;
- unordered_map<int, vector<int> > _mapPlateIdArray; // key为小、中、大的整数编码值, value为该类型下面的盘子ID数组
-
- } ;
- #endif /* GlobalConfig_hpp */
|