OSDN Git Service

4fec56d530f5e7032e31d20b7cc95457f84e4d33
[automap/automap.git] / Automap / AutomapMod.cs
1 using Vintagestory.API.Client;
2 using Vintagestory.API.Common;
3
4
5
6 namespace Automap
7 {
8     public class AutomapMod : ModSystem
9     {
10                 public const string _configFilename = @"automap.json";
11
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;
17
18
19         public override bool ShouldLoad(EnumAppSide forSide)
20         {
21             return forSide.IsClient();
22         }
23
24                 public override void StartClientSide(ICoreClientAPI api)
25                 {
26                         this.API = api;
27
28                         if (api.Side == EnumAppSide.Client)
29                         {
30                                 this.ClientAPI = api as ICoreClientAPI;
31                                 this.Logger = Mod.Logger;
32
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);
37
38                                 ClientAPI.Input.RegisterHotKey(AutomapGUIDialog._automapControlPanelKey, "Automap control panel", GlKeys.M, HotkeyType.GUIOrOtherControls, shiftPressed: true);
39                                 ClientAPI.Input.SetHotKeyHandler(AutomapGUIDialog._automapControlPanelKey, ToggleAM_Dialog);
40
41                                 ClientAPI.Event.LeaveWorld += PersistParameterChange;
42                         }
43
44             base.StartClientSide(api);
45         }
46
47                 public override double ExecuteOrder()
48                 {
49                         return 0.2;
50                 }
51
52                 private bool ToggleAM_Dialog(KeyCombination comb)
53                 {
54                         if (_automapDialog.IsOpened()) _automapDialog.TryClose();
55                         else _automapDialog.TryOpen();
56
57                         return true;
58                 }
59
60                 internal PersistedConfiguration CachedConfiguration {
61                         get
62                         {
63                         return ( PersistedConfiguration )ClientAPI.ObjectCache[_configFilename];
64                         }
65                         set
66                         {
67                         ClientAPI.ObjectCache.Add(_configFilename, value);
68                         }
69                 }
70
71                 private void PrepareClientsideConfig( )
72                 {
73                 PersistedConfiguration config = ClientAPI.LoadModConfig<PersistedConfiguration>(_configFilename);
74
75                 if (config == null) {
76                 //Regen default
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);
80                 }
81
82                 this.CachedConfiguration = config;
83                 }
84
85                 internal void PersistParameterChange( )
86                 {
87                 //Store altered parameters
88
89                 ClientAPI.StoreModConfig<PersistedConfiguration>(this.CachedConfiguration, _configFilename);
90                 }
91
92
93
94         }
95 }
96