using SA_LTT.Base;
|
using System.Collections.Generic;
|
using System.IO;
|
|
namespace SA_LTT.Info.RecipeInfo
|
{
|
public class RecipeManager : XmlManager<Recipe>
|
{
|
Equipment _equipment;
|
readonly string _extension = ".xml";
|
readonly string _filePath = @"Recipe\";
|
|
private Dictionary<string, Recipe> _recipes = new Dictionary<string, Recipe>();
|
|
public Dictionary<string, Recipe> Recipes
|
{
|
get
|
{
|
return _recipes;
|
}
|
|
set
|
{
|
_recipes = value;
|
}
|
}
|
|
public RecipeManager(Equipment equipment)
|
{
|
_equipment = equipment;
|
RefreshRecipes();
|
}
|
|
public void RefreshRecipes()
|
{
|
DirectoryInfo directoryInfo = new DirectoryInfo(Equipment.infoFilePath + _filePath);
|
|
if (directoryInfo.Exists == false)
|
{
|
directoryInfo.Create();
|
}
|
|
foreach (FileInfo fileInfo in directoryInfo.GetFiles("*.xml"))
|
{
|
Recipe recipe = new Recipe();
|
|
if (TryReadFile(fileInfo.FullName, out recipe))
|
{
|
if (Recipes.ContainsKey(recipe.Name))
|
{
|
Recipes[recipe.Name] = recipe.Clone();
|
}
|
else
|
{
|
Recipes.Add(recipe.Name, recipe.Clone());
|
}
|
}
|
}
|
}
|
|
public void SaveOrCreate(Recipe recipe)
|
{
|
SaveFile(Equipment.infoFilePath + _filePath + recipe.Name + _extension, recipe);
|
|
if (Recipes.ContainsKey(recipe.Name))
|
{
|
Recipes[recipe.Name] = recipe.Clone();
|
}
|
else
|
{
|
Recipes.Add(recipe.Name, recipe.Clone());
|
}
|
}
|
|
public void Delete(string recipeName)
|
{
|
DeleteFile(Equipment.infoFilePath + _filePath + recipeName + _extension);
|
|
if (Recipes.ContainsKey(recipeName))
|
{
|
Recipes.Remove(recipeName);
|
}
|
}
|
|
public bool ExistsRecipe(string recipeName)
|
{
|
if (Recipes.ContainsKey(recipeName))
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public Recipe GetRecipe(string recipeName)
|
{
|
if (ExistsRecipe(recipeName))
|
{
|
return Recipes[recipeName].Clone();
|
}
|
else
|
{
|
return null;
|
}
|
}
|
|
public Recipe[] GetRecipeList()
|
{
|
List<Recipe> recipeList = new List<Recipe>();
|
|
foreach (Recipe recipe in Recipes.Values)
|
{
|
recipeList.Add(recipe.Clone());
|
}
|
|
return recipeList.ToArray();
|
}
|
}
|
}
|