using System; using DragonFiesta.FiestaLib; using DragonFiesta.Database; using DragonFiesta.Util; using DragonFiesta.Data; using System.Collections.Generic; namespace DragonFiesta.DataProvider { public partial class DataProvider { public DatabaseManager GameDB { get; set; } public static DataProvider Instance { get; set; } public DataProvider(DatabaseManager pManager) { this.GameDB = pManager; Setup(); } public static bool Initialize(DatabaseManager pManager) { try { Instance = new DataProvider(pManager); return true; } catch(Exception ex) { Console.WriteLine("Failed Load DataProvider {0}", ex); return false; } } private void Setup() { LoadMaps(); LoadStoneByList(); LoadCharacterBaseStats(); } #region Setup private void LoadStoneByList() { using (DatabaseClient pClient = this.GameDB.GetClient()) { SQLResult pResult = pClient.Select(Query.GetStoneList); for (int r = 0; r < pResult.Count; r++) { StonePowerInfo Stone = new StonePowerInfo { pClass = (ClassID)pResult.Read(r, "Class"), Level = pResult.Read(r, "Level"), SPStoneEffectID = pResult.Read(r, "SPStoneEffectID"), HPStoneEffectID = pResult.Read(r, "SPStoneEffectID"), HPStonePrice = pResult.Read(r, "HPStonePrice"), SPStonePrice = pResult.Read(r, "SPStonePrice"), SoulSP = pResult.Read(r, "SoulSP"), SoulHP = pResult.Read(r, "SoulHP"), SPMaxCount = pResult.Read(r, "SPMaxCount"), HPMaxCount = pResult.Read(r, "HPMaxCount"), }; this.StoneList.Add(Stone); } Console.WriteLine("Loaded {0} StoneInfos", this.StoneList.Count); } } private void LoadMaps() { using (DatabaseClient pClient = this.GameDB.GetClient()) { SQLResult pResult = pClient.Select(Query.GetAllMaps); for (int r = 0; r < pResult.Count; r++) { Map map = new Map(); map.ReadMapFromDatabase(pResult, r); this.maps.Add(map.ID, map); } } Console.WriteLine("Loaded {0} maps", this.maps.Count); } private void LoadCharacterBaseStats() { #region ClassInit this.CharacterBaseStats.Add(ClassID.Archer, new List()); this.CharacterBaseStats.Add(ClassID.Cleric, new List()); this.CharacterBaseStats.Add(ClassID.CleverFighter, new List()); this.CharacterBaseStats.Add(ClassID.Enchanter, new List()); this.CharacterBaseStats.Add(ClassID.Fighter, new List()); this.CharacterBaseStats.Add(ClassID.Gambit, new List()); this.CharacterBaseStats.Add(ClassID.Gladiator, new List()); this.CharacterBaseStats.Add(ClassID.Guardian, new List()); this.CharacterBaseStats.Add(ClassID.HawkArcher, new List()); this.CharacterBaseStats.Add(ClassID.HighCleric, new List()); this.CharacterBaseStats.Add(ClassID.HolyKnight, new List()); this.CharacterBaseStats.Add(ClassID.Knight, new List()); this.CharacterBaseStats.Add(ClassID.Mage, new List()); this.CharacterBaseStats.Add(ClassID.Paladin, new List()); this.CharacterBaseStats.Add(ClassID.Ranger, new List()); this.CharacterBaseStats.Add(ClassID.Reaper, new List()); this.CharacterBaseStats.Add(ClassID.Renegade, new List()); this.CharacterBaseStats.Add(ClassID.Scout, new List()); this.CharacterBaseStats.Add(ClassID.SharpShooter, new List()); this.CharacterBaseStats.Add(ClassID.Spectre, new List()); this.CharacterBaseStats.Add(ClassID.Trickster, new List()); this.CharacterBaseStats.Add(ClassID.Warlock, new List()); this.CharacterBaseStats.Add(ClassID.Warrior, new List()); this.CharacterBaseStats.Add(ClassID.Wizard, new List()); this.CharacterBaseStats.Add(ClassID.WizMage, new List()); #endregion using (DatabaseClient pClient = this.GameDB.GetClient()) { foreach(var ClassStats in this.CharacterBaseStats) { SQLResult pResult = pClient.Select(Query.GetBaseStats,ClassStats.Key); for (int r = 0; r < pResult.Count; r++) { CharacterClass BaseStats = new CharacterClass { pClassID = ClassStats.Key, Level = pResult.Read(r, "Level"), EXP = pResult.Read(r, "Exp") }; BaseStats.ClassStats = new CharacterStats { MaxHP = pResult.Read(r, "HP"), MaxSP = pResult.Read(r, "SP"), STR = pResult.Read(r, "Str"), INT = pResult.Read(r, "Int"), END = pResult.Read(r, "End"), DEX = pResult.Read(r, "Dex"), SPR = pResult.Read(r, "Spr"), AIM = pResult.Read(r, "AIM"), DODGE = pResult.Read(r, "Dodge"), DEF = pResult.Read(r, "Def"), MagicDef = pResult.Read(r, "MagicDef"), MinDamage = pResult.Read(r, "MinDamage"), MaxDamage = pResult.Read(r, "MaxDamage"), MinMagicDamage = pResult.Read(r, "MinMagicDamage"), MaxMagicDamage = pResult.Read(r, "MaxMagicDamage"), }; StonePowerInfo power = this.GetStoneInfo(BaseStats.Level, BaseStats.pClassID); if (power != null) { BaseStats.StonesPowers = power; ClassStats.Value.Add(BaseStats); } else Console.WriteLine("warning can not load StoneInfo {0} {1}", BaseStats.Level, BaseStats.pClassID); } Console.WriteLine("Loaded {0} BaseStats by ClassID {1}", ClassStats.Value.Count,ClassStats.Key); } } } #endregion } }