using System; using System.Collections.Generic; using System.Data; using Snowlight.Storage; namespace Snowlight.Game.Pets { public static class PetDataManager { private static Dictionary> mRaces; private static Dictionary> mTricks; private static object mSyncRoot; public static void Initialize(SqlDatabaseClient MySqlClient) { mRaces = new Dictionary>(); mTricks = new Dictionary>(); mSyncRoot = new object(); ReloadData(MySqlClient); } public static void ReloadData(SqlDatabaseClient MySqlClient) { Dictionary> NewRaceData = new Dictionary>(); Dictionary> NewTrickData = new Dictionary>(); DataTable RaceTable = MySqlClient.ExecuteQueryTable("SELECT * FROM pet_races"); foreach (DataRow Row in RaceTable.Rows) { int PetType = (int)Row["pet_type"]; if (!NewRaceData.ContainsKey(PetType)) { NewRaceData.Add(PetType, new List()); } NewRaceData[PetType].Add(new PetRaceData((int)Row["data1"], (int)Row["data2"], (int)Row["data3"])); } DataTable TrickTable = MySqlClient.ExecuteQueryTable("SELECT * FROM pet_tricks"); foreach (DataRow Row in TrickTable.Rows) { int PetType = (int)Row["type"]; if (!NewTrickData.ContainsKey(PetType)) { NewTrickData.Add(PetType, new List()); } NewTrickData[PetType].Add((string)Row["trick"]); } lock (mSyncRoot) { mRaces = NewRaceData; mTricks = NewTrickData; } } public static List GetRaceDataForType(int PetType) { lock (mSyncRoot) { if (mRaces.ContainsKey(PetType)) { return mRaces[PetType]; } } return new List(); } public static List GetTricksForType(int PetType) { List Tricks = new List(); lock (mSyncRoot) { if (mTricks.ContainsKey(0)) { Tricks.AddRange(mTricks[0]); } if (mTricks.ContainsKey(PetType)) { Tricks.AddRange(mTricks[PetType]); } } return Tricks; } } }