1 using System.Collections.ObjectModel;
4 using Vintagestory.API.Client;
5 using Vintagestory.API.Common;
10 public class AutomapMod : ModSystem
12 public const string _configFilename = @"automap.json";
14 private ICoreAPI API { get; set; }
15 private ICoreClientAPI ClientAPI { get; set; }
16 private ILogger Logger { get; set; }
17 private AutomapSystem _localAutomap;
18 private AutomapGUIDialog _automapDialog;
21 public override bool ShouldLoad(EnumAppSide forSide)
23 return forSide.IsClient();
26 public override void StartClientSide(ICoreClientAPI api)
30 if (api.Side == EnumAppSide.Client)
32 this.ClientAPI = api as ICoreClientAPI;
33 this.Logger = Mod.Logger;
35 ClientAPI.Logger.VerboseDebug("Automap Present!");
36 PrepareClientsideConfig( );
37 _localAutomap = new AutomapSystem(this.ClientAPI, this.Logger, this.CachedConfiguration);
38 _automapDialog = new AutomapGUIDialog(ClientAPI, _localAutomap, this.CachedConfiguration);
40 ClientAPI.Input.RegisterHotKey(AutomapGUIDialog._automapControlPanelKey, "Automap control panel", GlKeys.M, HotkeyType.GUIOrOtherControls, shiftPressed: true);
41 ClientAPI.Input.SetHotKeyHandler(AutomapGUIDialog._automapControlPanelKey, ToggleAM_Dialog);
43 ClientAPI.Event.LeaveWorld += PersistParameterChange;
46 base.StartClientSide(api);
49 public override double ExecuteOrder()
54 private bool ToggleAM_Dialog(KeyCombination comb)
56 if (_automapDialog.IsOpened()) _automapDialog.TryClose();
57 else _automapDialog.TryOpen();
62 internal PersistedConfiguration CachedConfiguration {
65 return ( PersistedConfiguration )ClientAPI.ObjectCache[_configFilename];
69 ClientAPI.ObjectCache.Add(_configFilename, value);
73 private void PrepareClientsideConfig( )
75 PersistedConfiguration config = ClientAPI.LoadModConfig<PersistedConfiguration>(_configFilename);
79 Mod.Logger.Warning("Regenerating default config as it was missing / unparsable...");
80 ClientAPI.StoreModConfig<PersistedConfiguration>(new PersistedConfiguration(defaults: true ), _configFilename);
81 config = ClientAPI.LoadModConfig<PersistedConfiguration>(_configFilename);
84 this.CachedConfiguration = config;
87 internal void PersistParameterChange( )
89 //Store altered parameters
91 ClientAPI.StoreModConfig<PersistedConfiguration>(this.CachedConfiguration, _configFilename);
94 #region External Interfaces
95 //Perhaps Other mods can make use of POI / EOI?
97 public ReadOnlyCollection<PointOfInterest> PointsOfInterest {
100 return _localAutomap.POIs.ToList().AsReadOnly();
104 public ReadOnlyCollection<EntityOfInterest> EntitiesOfInterest {
107 return _localAutomap.EOIs.ToList().AsReadOnly();
111 public CommandType Status
113 get { return _localAutomap.CurrentState; }