private void LoadExpTable() { try { string expTablePath = Path.Combine(Global.DataPath, "res", "data", "expTable.inc"); var expTableData = new ResourceGroup(expTablePath); expTableData.Parse(); foreach (var table in expTableData.Groups) { if (table.Name == "expCharacter") { expTable = new ExpTableData[table.Content.Count - 1]; for (int i = 1; i < table.Content.Count; ++i) { int level = i - 1; string[] expData = table.Content[i].Split('\t'); if (expData.Length < 4) { continue; } expTable[level] = new ExpTableData(level, expData); } } } } catch (Exception e) { Log.Error("Cannot load exp table: {0}", e.Message); } }
/// <inheritdoc /> public void Load() { string expTablePath = GameResourcesConstants.Paths.ExpTablePath; if (!File.Exists(expTablePath)) { _logger.LogWarning("Unable to load exp table. Reason: Cannot find '{0}' file.", expTablePath); return; } using (var expTableFile = new IncludeFile(expTablePath, @"([(){}=,;\n\r\t ])")) { var dropLuckBlock = expTableFile.GetBlock("expDropLuck"); if (dropLuckBlock is null) { _logger.LogWarning("Unable to load exp table. Reason: Cannot find drop luck data."); return; } var expCharacterBlock = expTableFile.GetBlock("expCharacter"); if (expCharacterBlock is null) { _logger.LogWarning("Unable to load exp table. Reason: Cannot find character experience data."); return; } IEnumerable <long[]> dropLuck = LoadDropLuck(dropLuckBlock); IReadOnlyDictionary <int, CharacterExpTableData> characterExperience = LoadCharacterExperience(expCharacterBlock); var expTableData = new ExpTableData(dropLuck, characterExperience); _cache.Set(GameResourcesConstants.ExpTables, expTableData); } _logger.LogInformation("-> Experience tables loaded."); }