-
Notifications
You must be signed in to change notification settings - Fork 32
/
IResourceGenerator.cs
36 lines (30 loc) · 1.09 KB
/
IResourceGenerator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using GeodesicGrid;
using System;
namespace Kethane
{
public interface IResourceGenerator
{
IBodyResources Load(CelestialBody body, ConfigNode node);
}
public interface IBodyResources
{
ConfigNode Save();
double MaxQuantity { get; }
double? GetQuantity(Cell cell);
double Extract(Cell cell, double amount);
}
internal class EmptyResourceGenerator : IResourceGenerator
{
private static readonly IBodyResources bodyResources = new BodyResources();
public EmptyResourceGenerator() { }
public EmptyResourceGenerator(ConfigNode node) { }
public IBodyResources Load(CelestialBody body, ConfigNode node) { return bodyResources; }
private class BodyResources : IBodyResources
{
public double MaxQuantity { get { return 0; } }
public ConfigNode Save() { return new ConfigNode(); }
public double? GetQuantity(Cell cell) { return null; }
public double Extract(Cell cell, double amount) { throw new Exception("No deposit here"); }
}
}
}