1 using Vintagestory.API.Client;
2 using Vintagestory.API.Common;
8 public class AutomapMod : ModSystem
10 public const string _configFilename = @"automap.json";
12 private ICoreAPI API { get; set; }
13 private ICoreClientAPI ClientAPI { get; set; }
14 private ILogger Logger { get; set; }
15 private AutomapSystem _localAutomap;
16 private AutomapGUIDialog _automapDialog;
19 public override bool ShouldLoad(EnumAppSide forSide)
21 return forSide.IsClient();
24 public override void StartClientSide(ICoreClientAPI api)
28 if (api.Side == EnumAppSide.Client)
30 this.ClientAPI = api as ICoreClientAPI;
31 this.Logger = Mod.Logger;
33 ClientAPI.Logger.VerboseDebug("Automap Present!");
34 PrepareClientsideConfig( );
35 _localAutomap = new AutomapSystem(this.ClientAPI, this.Logger, this.CachedConfiguration);
36 _automapDialog = new AutomapGUIDialog(ClientAPI, _localAutomap, this.CachedConfiguration);
38 ClientAPI.Input.RegisterHotKey(AutomapGUIDialog._automapControlPanelKey, "Automap control panel", GlKeys.M, HotkeyType.GUIOrOtherControls, shiftPressed: true);
39 ClientAPI.Input.SetHotKeyHandler(AutomapGUIDialog._automapControlPanelKey, ToggleAM_Dialog);
41 ClientAPI.Event.LeaveWorld += PersistParameterChange;
44 base.StartClientSide(api);
47 public override double ExecuteOrder()
52 private bool ToggleAM_Dialog(KeyCombination comb)
54 if (_automapDialog.IsOpened()) _automapDialog.TryClose();
55 else _automapDialog.TryOpen();
60 internal PersistedConfiguration CachedConfiguration {
63 return ( PersistedConfiguration )ClientAPI.ObjectCache[_configFilename];
67 ClientAPI.ObjectCache.Add(_configFilename, value);
71 private void PrepareClientsideConfig( )
73 PersistedConfiguration config = ClientAPI.LoadModConfig<PersistedConfiguration>(_configFilename);
77 Mod.Logger.Warning("Regenerating default config as it was missing / unparsable...");
78 ClientAPI.StoreModConfig<PersistedConfiguration>(new PersistedConfiguration(defaults: true ), _configFilename);
79 config = ClientAPI.LoadModConfig<PersistedConfiguration>(_configFilename);
82 this.CachedConfiguration = config;
85 internal void PersistParameterChange( )
87 //Store altered parameters
89 ClientAPI.StoreModConfig<PersistedConfiguration>(this.CachedConfiguration, _configFilename);