Files

59 lines
1.4 KiB
C#

public class Research
{
public ResearchData data;
public double elapsedResearchTime = 0;
public bool paidResources = false;
public ResearchState state;
public Research(ResearchData data)
{
this.data = data;
state = data.Id == "basics" ? ResearchState.RESEARCHED : ResearchState.UNDEFINED;
}
public ResearchResult Execute(double delta)
{
if (!paidResources)
{
if (!CanStart()) return ResearchResult.FAILED;
PayResources();
paidResources = true;
}
elapsedResearchTime += delta;
if (elapsedResearchTime >= data.CraftTime)
{
Complete();
return ResearchResult.FINISHED;
}
return ResearchResult.RESEARCHING;
}
public bool CanStart()
{
return GameData.inventory.CanCraft(data.Inputs, 1);
}
public void PayResources()
{
foreach (Ingredient ingredient in data.Inputs)
{
GameData.inventory.RemoveItem(ingredient.Item, ingredient.Amount);
}
}
public void Complete()
{
if (state == ResearchState.RESEARCHED) return;
state = ResearchState.RESEARCHED;
GameData.robotStats.Apply(data.Effects);
}
public static string GetReadableName(string input)
{
return ItemData.GetReadableName(input);
}
}