Local AI Testing & Interactive Tech Tab

Refactored game loop to allow full local testing
Added AI controller abstractions
Added ability to save database to local copy for offline testing
Tech Tab is now interactive, has properties panel
This commit is contained in:
hyperion51 2020-04-23 03:31:17 +01:00
commit af88788e4f
50 changed files with 5799 additions and 712 deletions

View file

@ -11,15 +11,12 @@ public class DatabaseCache
public event Action<DatabaseEntry> OnDataUpdateLocal;
public event Action<DatabaseEntry> OnDataDeleteLocal;
public event Action<DatabaseEntry> OnDataUpdateRemote;
public Action<string> Logger = Console.WriteLine;
private readonly Dictionary<Guid, DatabaseEntry> _entries = new Dictionary<Guid, DatabaseEntry>();
private readonly Dictionary<Type, Dictionary<Guid, DatabaseEntry>> _types = new Dictionary<Type, Dictionary<Guid, DatabaseEntry>>();
private DirectoryInfo _dir;
public IEnumerable<DatabaseEntry> AllEntries => _entries.Values;
@ -90,4 +87,19 @@ public class DatabaseCache
if (!remote)
OnDataDeleteLocal?.Invoke(entry);
}
public void Load(string path)
{
RegisterResolver.Register();
var bytes = File.ReadAllBytes(Path.Combine(path, "AetherDB.msgpack"));
var entries = MessagePackSerializer.Deserialize<DatabaseEntry[]>(bytes);
AddAll(entries);
}
public void Save(string path)
{
RegisterResolver.Register();
var entries = AllEntries.ToArray();
File.WriteAllBytes(Path.Combine(path, "AetherDB.msgpack"), MessagePackSerializer.Serialize(entries));
}
}