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:
parent
43d5ebdd35
commit
af88788e4f
50 changed files with 5799 additions and 712 deletions
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue