/// <summary> /// 检查数据是否完整 /// </summary> /// <returns><c>true</c>, if data validate was checked, <c>false</c> otherwise.</returns> private bool CheckDataValidate() { string playerDataPath = CommonData.originDataPath + "PlayerData.json"; string oriPlayerData = DataHandler.LoadDataString(playerDataPath); bool playerDataValidate = StringEncryption.Validate(oriPlayerData); string buyRecordDataPath = CommonData.originDataPath + "/BuyRecord.json"; string oriBuyRecordData = DataHandler.LoadDataString(buyRecordDataPath); bool buyRecordValidate = StringEncryption.Validate(oriBuyRecordData); return(playerDataValidate && buyRecordValidate); }
public void LoadGameDatas() { string gameDataSource = DataHandler.LoadDataString("/Users/houlianghong/Desktop/MyGameData/关卡原始数据.csv"); string[] gameLevelDataStrings = gameDataSource.Split(new string[] { "\n" }, System.StringSplitOptions.RemoveEmptyEntries); for (int i = 1; i < gameLevelDataStrings.Length; i++) { Debug.LogFormat("第{0}层", i - 1); HLHGameLevelData gameLevelData = InitGameLevelDatas(gameLevelDataStrings [i]); gameLevelDatas.Add(gameLevelData); } }
public void LoadGameDatas() { string gameDataSource = DataHandler.LoadDataString("/Users/houlianghong/Desktop/MyGameData/GameLevelData.csv"); string[] gameLevelDataStrings = gameDataSource.Split(new string[] { "\n" }, System.StringSplitOptions.RemoveEmptyEntries); for (int i = 1; i < gameLevelDataStrings.Length; i++) { MyGameLevelData gameLevelData = new MyGameLevelData(gameLevelDataStrings [i], i - 1, allGoodsGroup); gameLevelDatas.Add(gameLevelData); } SaveGoodsInfoOfTrader(); }
public static void InitSpellItemsFromData() { string skillScrollOriFilePath = "/Users/houlianghong/Desktop/MyGameData/技能卷轴原始数据.csv"; string skillScrollDataString = DataHandler.LoadDataString(skillScrollOriFilePath); SkillScrollDataHelper loader = new SkillScrollDataHelper(); loader.LoadAllItemsWithFullDataString(skillScrollDataString); string propertyGemstoneDataPath = CommonData.originDataPath + "/GameItems/SkillScrollDatas.json"; DataHandler.SaveInstanceListToFile <SkillScrollModel>(loader.skillScrollModels, propertyGemstoneDataPath); Debug.Log("技能卷轴数据完成"); }
public static void InitSpellItemsFromData() { string propertyGemstoneOriFilePath = "/Users/houlianghong/Desktop/MyGameData/属性宝石原始数据.csv"; string propertyGemstoneDataString = DataHandler.LoadDataString(propertyGemstoneOriFilePath); PropertyGemstoneDataHelper loader = new PropertyGemstoneDataHelper(); loader.LoadAllItemsWithFullDataString(propertyGemstoneDataString); string propertyGemstoneDataPath = CommonData.originDataPath + "/GameItems/PropertyGemstoneDatas.json"; DataHandler.SaveInstanceListToFile <PropertyGemstoneModel>(loader.propertyGemstoneModels, propertyGemstoneDataPath); Debug.Log("属性宝石数据完成"); }
public static void InitSpellItemsFromData() { string spellItemDataPath = "/Users/houlianghong/Desktop/MyGameData/拼写物品原始数据.csv"; string spellItemDataString = DataHandler.LoadDataString(spellItemDataPath); SpellItemDataHelper loader = new SpellItemDataHelper(); loader.LoadAllItemsWithFullDataString(spellItemDataString); string spellITemDataPath = CommonData.originDataPath + "/GameItems/SpellItemDatas.json"; DataHandler.SaveInstanceListToFile <SpellItemModel>(loader.spellItemModels, spellITemDataPath); Debug.Log("拼写物品数据完成"); }
public static void InitSpellItemsFromData() { /******************** 注意: *******************/ // 1. 原始数据格式必须使用【消耗品原始数据表(02_resume_design)】导出的csv文件,原始表格尾部不能有空行 // 2. 原始数据存放的地址根据实际地址进行修改 string consumablesOriFilePath = "/Users/houlianghong/Desktop/MyGameData/消耗品原始数据.csv"; /******************** 注意: *******************/ string consumablesDataString = DataHandler.LoadDataString(consumablesOriFilePath); ConsumablesDataHelper loader = new ConsumablesDataHelper(); loader.LoadAllItemsWithFullDataString(consumablesDataString); string consumablesDataPath = CommonData.originDataPath + "/GameItems/ConsumablesDatas.json"; DataHandler.SaveInstanceListToFile <ConsumablesModel>(loader.consumablesModels, consumablesDataPath); Debug.Log("消耗品数据完成"); }
public static void LoadAllProverbData() { List <HLHSentenceAndPoem> saps = new List <HLHSentenceAndPoem>(); string oriProverbData = DataHandler.LoadDataString(sapOriFilePath); string[] sapbDatasArray = oriProverbData.Split(new char[] { '\n' }, System.StringSplitOptions.RemoveEmptyEntries); for (int i = 1; i < sapbDatasArray.Length; i++) { string sapData = sapbDatasArray[i]; HLHSentenceAndPoem sap = GenerateHLHProverb(sapData); saps.Add(sap); } //string formatData = JsonHelper.ToJson<HLHProverb>(proverbs.ToArray()); DataHandler.SaveInstanceListToFile <HLHSentenceAndPoem>(saps, sapTargetFilePath); }
public static void LoadNewItemDataFromLocalFile() { string newItemDataPath = "/Users/houlianghong/Desktop/MyGameData/物品设计.csv"; string fullItemDataString = DataHandler.LoadDataString(newItemDataPath); NewItemDataLoader loader = new NewItemDataLoader(); loader.LoadAllItemsWithFullDataString(fullItemDataString); for (int i = 0; i < loader.newItemModels.Count; i++) { ItemModel im = loader.newItemModels [i]; Debug.Log(im); } string newItemModelsDataPath = CommonData.originDataPath + "/NewItemDatas.json"; DataHandler.SaveInstanceListToFile <ItemModel> (loader.newItemModels, newItemModelsDataPath); }
static private ItemModel[] ItemsToJson() { string csv = DataHandler.LoadDataString("itemsData.csv"); string[] dataArray = csv.Split(new string[] { "\n" }, System.StringSplitOptions.RemoveEmptyEntries); List <ItemModel> allItem = new List <ItemModel> (); for (int i = 1; i < dataArray.Length; i++) { string[] itemStr = dataArray [i].Split(','); ItemModel itemModel = new ItemModel(); itemModel.itemId = System.Convert.ToInt32(itemStr [0]); itemModel.itemName = itemStr[1]; itemModel.itemGeneralDescription = itemStr[2]; itemModel.spriteName = itemStr[3]; itemModel.itemType = (ItemType)System.Convert.ToInt16(itemStr[4]); itemModel.itemNameInEnglish = itemStr[5]; itemModel.attackGain = System.Convert.ToInt16(itemStr[6]); // itemModel.attackSpeedGain = System.Convert.ToInt16(itemStr[7]); itemModel.armorGain = System.Convert.ToInt16(itemStr[8]); itemModel.magicResistGain = System.Convert.ToInt16(itemStr[9]); itemModel.critGain = System.Convert.ToInt16(itemStr[10]); itemModel.dodgeGain = System.Convert.ToInt16(itemStr[11]); itemModel.healthGain = System.Convert.ToInt16(itemStr[12]); itemModel.manaGain = System.Convert.ToInt16(itemStr [13]); // itemModel.equipmentType = (EquipmentType)System.Convert.ToInt16 (itemStr [14]); allItem.Add(itemModel); } ItemModel[] ItemArray = new ItemModel[allItem.Count]; allItem.CopyTo(ItemArray); return(ItemArray); }
public static void GenerateNewEquipmentData() { /******************** 注意: *******************/ // 1. 原始数据格式必须使用【装备原始数据表(01_equip_design)】导出的csv文件,原始表格尾部不能有空行 // 2. 原始数据存放的地址根据实际地址进行修改 string newItemDataSourcePath = "/Users/houlianghong/Desktop/MyGameData/装备原始数据.csv"; /******************** 注意: *******************/ string newItemDataString = DataHandler.LoadDataString(newItemDataSourcePath); NewItemDataLoader loader = new NewItemDataLoader(); loader.LoadAllItemsWithFullDataString(newItemDataString); string newItemModelsDataPath = CommonData.originDataPath + "/GameItems/EquipmentDatas.json"; DataHandler.SaveInstanceListToFile <EquipmentModel> (loader.newItemModels, newItemModelsDataPath); Debug.Log("装备数据完成"); }
private static void LoadCET4WordsData() { string wordsPath = "/Users/houlianghong/Desktop/MyGameData/CET4.csv"; string wordsString = DataHandler.LoadDataString(wordsPath); string[] wordsStrings = wordsString.Split(new string[] { "\n" }, System.StringSplitOptions.RemoveEmptyEntries); itemsProperties.Clear(); for (int i = 1; i < wordsStrings.Length; i++) { string[] wordDataArray = wordsStrings [i].Split(new char[] { ',' }); string wordId = (i - 1).ToString(); string spell = wordDataArray[0].Replace("'", "''"); string phoneticSymbol = wordDataArray [1].Replace('+', ',').Replace("'", "''"); string explaination = wordDataArray [2].Replace('+', ','); string example = ""; itemsProperties.Add(new string[] { wordId, spell, phoneticSymbol, explaination, example, "0", "0" }); } }
public static void EncodeData() { string playerDataPath = CommonData.originDataPath + "/PlayerData_ori.json"; string targetDataPath_1 = CommonData.originDataPath + "/PlayerData.json"; string targetDataPath_2 = CommonData.originDataPath + "/OriginalPlayerData.json"; string source = DataHandler.LoadDataString(playerDataPath); string encode = StringEncryption.Encode(source); DataHandler.SaveDataString(encode, targetDataPath_1); DataHandler.SaveDataString(encode, targetDataPath_2); string buyRecordDataPath = CommonData.originDataPath + "/BuyRecord_ori.json"; string buyRecordTargetPath = CommonData.originDataPath + "/BuyRecord.json"; source = DataHandler.LoadDataString(buyRecordDataPath); encode = StringEncryption.Encode(source); DataHandler.SaveDataString(encode, buyRecordTargetPath); }
public static void InitPuzzleDatas() { string sourceDataFilePath = "/Users/houlianghong/Desktop/MyGameData/PuzzlesData.csv"; string sourcePuzzleData = DataHandler.LoadDataString(sourceDataFilePath); List <Puzzle> puzzles = new List <Puzzle>(); string[] puzzleDataArray = sourcePuzzleData.Split(new char[] { '\n' }); for (int i = 1; i < puzzleDataArray.Length; i++) { Puzzle puzzle = GeneratePuzzleFromDataString(puzzleDataArray[i]); Debug.Log(puzzle.question); puzzles.Add(puzzle); } string targetFilePath = CommonData.originDataPath + "/PuzzleDatas.json"; DataHandler.SaveInstanceListToFile <Puzzle>(puzzles, targetFilePath); Debug.Log("puzzles finish!"); }
/// <summary> /// 读取地图数据,并将数据转化为自定义的MapData模型 /// </summary> /// <returns>The map.</returns> /// <param name="mapDataPath">Map data path.</param> private static HLHMapData ReadMap(string mapDataPath, FileInfo fi) { // 读取原始json数据 string oriMapDataString = DataHandler.LoadDataString(mapDataPath); // MiniJson解析json数据 Dictionary <string, object> oriMapDataDic = Json.Deserialize(oriMapDataString) as Dictionary <string, object>; // 获取地图宽高 int mapHeight = int.Parse(oriMapDataDic ["height"].ToString()); int mapWidth = int.Parse(oriMapDataDic ["width"].ToString()); Debug.LogFormat("name:{0},height:{1},width:{2}", fi.Name, mapHeight, mapWidth); // 获取标准地图块宽高 int mapTileHeight = int.Parse(oriMapDataDic ["tileheight"].ToString()); int mapTileWidth = int.Parse(oriMapDataDic ["tilewidth"].ToString()); // 获取地图上所有图层的数据 List <object> layersDataArray = (List <object>)oriMapDataDic ["layers"]; List <object> tileSetsArray = (List <object>)oriMapDataDic ["tilesets"]; // 所有构建地图使用的图层 List <MapLayer> mapLayers = new List <MapLayer> (); // 所有地图附加信息图层 List <MapAttachedInfoLayer> attachedInfoLayers = new List <MapAttachedInfoLayer> (); // 地图块图集名称 string tileSetsImageName = string.Empty; // 地图块数据(内含walkable info array) MapTilesInfo tileInfo = null; Dictionary <string, object> tileSetInfo = null; int[,] mapWalkableInfoArray = new int[mapWidth, mapHeight]; for (int m = 0; m < mapWidth; m++) { for (int n = 0; n < mapHeight; n++) { mapWalkableInfoArray[m, n] = 1; } } for (int j = 0; j < layersDataArray.Count; j++) { Dictionary <string, object> layerDataDic = layersDataArray [j] as Dictionary <string, object>; List <MapTile> tileDatas = new List <MapTile> (); //获取当前层的类型名称 string layerType = layerDataDic ["type"].ToString(); // 当前层为地图层 if (layerType.Equals("tilelayer")) { List <object> tileDataArray = (List <object>)layerDataDic["data"]; string layerName = layerDataDic["name"].ToString(); if (layerName.Equals("FloorLayer")) { Dictionary <string, object> tileSetsNameDic = layerDataDic["properties"] as Dictionary <string, object>; tileSetsImageName = tileSetsNameDic["TilesetImageName"].ToString(); tileInfo = GetMapTilesInfoWithName(tileSetsImageName); } if (tileSetInfo == null) { for (int k = 0; k < tileSetsArray.Count; k++) { Dictionary <string, object> tempTileSetInfo = tileSetsArray[k] as Dictionary <string, object>; string sourceName = tempTileSetInfo["source"] as string; if (sourceName.Contains(tileSetsImageName)) { tileSetInfo = tempTileSetInfo; break; } } } //获取当前层使用的地图块的firstGid int firstGid = int.Parse(tileSetInfo["firstgid"].ToString()); for (int k = 0; k < tileDataArray.Count; k++) { int row = mapHeight - k / mapWidth - 1; int col = k % mapWidth; int tileIndex = int.Parse(tileDataArray [k].ToString()) - firstGid; if (tileIndex >= 0) { bool canWalk = false; //Debug.LogFormat("mapName:{0},layerName:{1},tileIndex:{2},firstGid:{3}",fi.Name, layerName, tileIndex,firstGid); canWalk = tileInfo.walkableInfoArray [tileIndex] == 1; int miniMapInfo = tileInfo.miniMapInfoArray[tileIndex]; MapTile tile = new MapTile(new Vector2(col, row), tileIndex, canWalk, miniMapInfo); tileDatas.Add(tile); if (layerName == "DecorationLayer") { mapWalkableInfoArray[col, row] = 0; } } } MapLayer layer = new MapLayer(layerName, tileDatas); mapLayers.Add(layer); } // 当前层为事件层 if (layerType.Equals("objectgroup")) { string layerName = layerDataDic ["name"].ToString(); List <MapAttachedInfoTile> attachedInfoTiles = new List <MapAttachedInfoTile> (); List <object> attachedInfoList = (List <object>)layerDataDic ["objects"]; //int monsterCount = 0; for (int k = 0; k < attachedInfoList.Count; k++) { Dictionary <string, object> attachedInfo = attachedInfoList [k] as Dictionary <string, object>; string type = attachedInfo ["type"].ToString(); //Debug.Log(type); //if(type=="monster"){ // monsterCount++; //} float posX = float.Parse(attachedInfo ["x"].ToString()); float posY = float.Parse(attachedInfo ["y"].ToString()); int col = Mathf.RoundToInt(posX / mapTileWidth); int row = mapHeight - Mathf.RoundToInt(posY / mapTileHeight); Vector2 pos = new Vector2(col, row); if (mapWalkableInfoArray[col, row] == 0 && type != "doorGear" && type != "keyDoorGear") { Debug.LogFormat("地图:{0},事件位置和某种装饰位置重合:[{1}/{2},事件类型:{3}](如果装饰不是墙体,则不是错误)", fi.Name, col, mapHeight - row - 1, type); } Dictionary <string, object> properties = null; MapAttachedInfoTile attachedInfoTile = null; List <KVPair> kvPairs = new List <KVPair> (); if (!attachedInfo.ContainsKey("properties")) { attachedInfoTile = new MapAttachedInfoTile(type, pos, kvPairs); attachedInfoTiles.Add(attachedInfoTile); continue; } properties = attachedInfo ["properties"] as Dictionary <string, object>; IDictionaryEnumerator dicEnumerator = properties.GetEnumerator(); while (dicEnumerator.MoveNext()) { string key = dicEnumerator.Key.ToString(); string value = dicEnumerator.Value.ToString(); // Debug.LogFormat ("key:{0},value:{1}",key,value); KVPair kv = new KVPair(key, value); kvPairs.Add(kv); } attachedInfoTile = new MapAttachedInfoTile(type, pos, kvPairs); attachedInfoTiles.Add(attachedInfoTile); } MapAttachedInfoLayer attachedInfoLayer = new MapAttachedInfoLayer(layerName, attachedInfoTiles); attachedInfoLayers.Add(attachedInfoLayer); } } HLHMapData mapData = new HLHMapData(mapHeight, mapWidth, tileSetsImageName, mapLayers, attachedInfoLayers); return(mapData); }
private void WordsDataToDataBase(string wordsFilePath, string wordsTableName, MySQLiteHelper sql) { bool isSimpleWordsTableExist = sql.CheckTableExist(wordsTableName); if (isSimpleWordsTableExist) { sql.DeleteTable(wordsTableName);; } // isFamiliar 是否熟悉,熟悉为1,不熟悉为0 sql.CreateTable(wordsTableName, new string[] { "wordId", "spell", "phoneticSymbol", "explaination", "sentenceEN", "sentenceCH", "pronouncationURL", "wordLength", "learnedTimes", "ungraspTimes", "isFamiliar", "backupPronounciationURL" }, new string[] { "PRIMARY KEY NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL", "NOT NULL" }, new string[] { "INTEGER", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "INTEGER DEFAULT 0", "INTEGER DEFAULT 0", "INTEGER DEFAULT 0", "INTEGER DEFAULT 0", "TEXT" }); string simpleWordsData = DataHandler.LoadDataString(wordsFilePath); string[] simpleWordsDataArray = simpleWordsData.Split(new char[] { '\n' }, System.StringSplitOptions.RemoveEmptyEntries); sql.BeginTransaction(); for (int i = 1; i < simpleWordsDataArray.Length; i++) { string singleWordData = simpleWordsDataArray [i]; string[] datas = singleWordData.Split(new char[] { ',' }, System.StringSplitOptions.RemoveEmptyEntries); string wordId = (i - 1).ToString(); string spell = "'" + datas [0].Replace("'", "''") + "'"; string explaination = "'" + ExplainationNormalization(datas [1]) + "'"; string phoneticSymbol = "'" + datas [2].Replace("'", "''") + "'"; string sentenceEN = "'" + datas [3].Replace("'", "''").Replace('+', ',') + "'"; string sentenceCH = "'" + datas [4].Replace("'", "''").Replace('+', ',') + "'"; string pronounciationURL = "'" + datas [5] + "'"; string backupPronounciationURL = string.Format("'https://ssl.gstatic.com/dictionary/static/sounds/oxford/{0}--_gb_1.mp3'", datas[0]); string wordLength = (spell.Length - 2).ToString(); string[] wordInput = new string[] { wordId, spell, phoneticSymbol, explaination, sentenceEN, sentenceCH, pronounciationURL, wordLength, "0", "0", "0", backupPronounciationURL }; sql.InsertValues(wordsTableName, wordInput); } sql.EndTransaction(); }
private static MonsterModel[] LoadMonsterModels(string monsterDataPath) { string monsterDataString = DataHandler.LoadDataString(monsterDataPath); string[] monsterDatas = monsterDataString.Split(new char[] { '\n' }, System.StringSplitOptions.None); MonsterModel[] monsterModels = new MonsterModel[monsterDatas.Length - 1]; for (int i = 1; i < monsterDatas.Length; i++) { string monsterData = monsterDatas [i]; MonsterModel mm = new MonsterModel(); monsterModels [i - 1] = mm; string[] detailDatas = monsterData.Split(new char[] { ',' }, System.StringSplitOptions.None); mm.monsterId = int.Parse(detailDatas [0]); mm.monsterName = detailDatas [1]; mm.monsterSkeName = detailDatas [3]; mm.attackInterval = float.Parse(detailDatas [5]); mm.gold = int.Parse(detailDatas [6]); mm.experience = int.Parse(detailDatas [7]); mm.maxHealth = int.Parse(detailDatas [8]); mm.attack = int.Parse(detailDatas [9]); mm.armor = int.Parse(detailDatas [10]); mm.magicAttack = int.Parse(detailDatas [11]); mm.magicResist = int.Parse(detailDatas [12]); mm.crit = float.Parse(detailDatas [13]); mm.dodge = float.Parse(detailDatas [14]); mm.armorDecrease = int.Parse(detailDatas [15]); mm.magicResistDecrease = int.Parse(detailDatas [16]); mm.critHurtScaler = float.Parse(detailDatas [17]); mm.attackSpeedLevel = int.Parse(detailDatas[18]); mm.evaluate = int.Parse(detailDatas[19]); mm.story = detailDatas[20]; mm.monsterSays[0] = detailDatas[21].Replace('+', ','); mm.monsterSays[1] = detailDatas[22].Replace('+', ','); mm.monsterSays[2] = detailDatas[23].Replace('+', ','); //PropertyType type = GetProperty(int.Parse(detailDatas[21])); //float value = float.Parse(detailDatas[22]); //mm.puzzleCorrectDecrease = new PropertySet(type, value); //type = GetProperty(int.Parse(detailDatas[23])); //value = float.Parse(detailDatas[24]); //mm.puzzleWrongIncrease = new PropertySet(type, value); } return(monsterModels); }