-
Notifications
You must be signed in to change notification settings - Fork 2
/
ModEntry.cs
133 lines (111 loc) · 6.6 KB
/
ModEntry.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using StardewModdingAPI;
using StardewModdingAPI.Events;
using System;
using System.Reflection;
using System.Collections.Generic;
namespace ExpandedFridgeAGAIN
{
//* The entry point of the mod handled by SMAPI.
public class ModEntry : Mod
{
private static ModEntry _instance = null;
public ModConfig Config { get; private set; }
public FridgeManager FridgeManager { get; private set; }
//* Setup instance and load our first event-hooks
public override void Entry(IModHelper helper)
{
//* Setup DebugLog
_instance = this;
//* Show debug info etc.
//TODO: Investigate why this crashes now.
//var buildTime = modUtilities.GetBuildDate(Assembly.GetExecutingAssembly());
//buildTime = buildTime.ToLocalTime();
DebugLog("ExpandedFridgeAGAIN v" + GetType().Assembly.GetName().Version.ToString(3) +" (" + Constants.TargetPlatform + ") loaded.", LogLevel.Info);
//DebugLog("Binary Compiled: " + buildTime.ToString("d/M/yyyy h:mm tt"));
//* Load Config
Config = Helper.ReadConfig<ModConfig>();
DebugLog(Helper.Translation.Get("Debug.ConfigurationLoaded"));
//* Prepare Event Hooks
Helper.Events.GameLoop.GameLaunched += onLaunched;
}
//* Setup for GenericModConfigMenu support.
private void onLaunched(object sender, GameLaunchedEventArgs e)
{
//* Hook into GMCM
var api = Helper.ModRegistry.GetApi<GenericModConfigMenuAPI>("spacechase0.GenericModConfigMenu");
if (api != null){
//* Register with GMCM
api.Register(ModManifest, () => Config = new ModConfig(), () => Helper.WriteConfig(Config));
//* Our Key-binds
api.AddKeybind(ModManifest, () => Config.NextFridgeTabButton, (SButton val) => Config.NextFridgeTabButton = val, () => Helper.Translation.Get("Config.NextFridgeTabButton"), () => Helper.Translation.Get("Config.NextFridgeTabButtonDesc"),"NextFridgeTabButton");
api.AddKeybind(ModManifest, () => Config.LastFridgeTabButton, (SButton val) => Config.LastFridgeTabButton = val, () => Helper.Translation.Get("Config.LastFridgeTabButton"), () => Helper.Translation.Get("Config.LastFridgeTabButtonDesc"),"LastFridgeTabButton");
//* Our Options
api.AddBoolOption(ModManifest,() => Config.ShowDebugMessages, (bool val) => Config.ShowDebugMessages = val, ()=> Helper.Translation.Get("Config.ShowDebugMessages") + ".", () => Helper.Translation.Get("Config.ShowDebugMessagesDesc"),"ShowDebugMessages");
api.AddBoolOption(ModManifest,() => Config.HideMiniFridges, (bool val) => Config.HideMiniFridges = val, () => Helper.Translation.Get("Config.HideMiniFridges") + ".", () => Helper.Translation.Get("Config.HideMiniFridgesDesc"),"HideMiniFridges");
//* Detect changes mid-game.
api.OnFieldChanged(ModManifest,onFieldChanged);
DebugLog(Helper.Translation.Get("Debug.GenericModConfigMenuFound"));
}else{ //* Could not find GenericModConfigMenu ??
DebugLog(Helper.Translation.Get("Debug.GenericModConfigMenuMissing"));
}
//* Check for incompatible mods.
//TODO: Check for more incompatible mods.
bool BetterChestsLoaded = Helper.ModRegistry.IsLoaded("furyx639.BetterChests");
if (BetterChestsLoaded){
DebugLog(Helper.Translation.Get("Debug.BetterChestsDetected"), LogLevel.Warn);
}
bool ExpandedFridgeLoaded = Helper.ModRegistry.IsLoaded("Uwazouri.ExpandedFridge");
if (ExpandedFridgeLoaded){
DebugLog(Helper.Translation.Get("Debug.ExpandedFridgeDetected"), LogLevel.Warn);
}
//* Print options to the log
if (Config.ShowDebugMessages){
DebugLog(Helper.Translation.Get("Debug.OptionEnabledRuntime", new { option = Helper.Translation.Get("Config.ShowDebugMessages") }), LogLevel.Info);
if (Config.HideMiniFridges){
DebugLog(Helper.Translation.Get("Debug.OptionEnabledRuntime", new { option = Helper.Translation.Get("Config.HideMiniFridges") }), LogLevel.Info);
}else{
DebugLog(Helper.Translation.Get("Debug.OptionDisabledRuntime", new { option = Helper.Translation.Get("Config.HideMiniFridges") }), LogLevel.Info);
}
DebugLog(Helper.Translation.Get("Debug.KeySetTo", new { option = "NextFridgeTabButton" }) + Config.NextFridgeTabButton.ToString() + ".", LogLevel.Info);
DebugLog(Helper.Translation.Get("Debug.KeySetTo", new { option = "LastFridgeTabButton" }) + Config.LastFridgeTabButton.ToString() + ".", LogLevel.Info);
}
//* Start FridgeManager once we are all setup & before the start of the first day.
FridgeManager = new FridgeManager(_instance);
}
//* The method invoked when we detect configuration changes.
private void onFieldChanged(string str, object obj)
{
if (str == "ShowDebugMessages"){
if((bool)obj){
DebugLog(Helper.Translation.Get("Debug.OptionEnabledRuntime", new { option = str }));
}else{
DebugLog(Helper.Translation.Get("Debug.OptionDisabledRuntime", new { option = str }));
}
}
else if(str == "HideMiniFridges"){
if((bool)obj){
DebugLog(Helper.Translation.Get("Debug.OptionEnabledRuntime", new { option = str }));
}else{
DebugLog(Helper.Translation.Get("Debug.OptionDisabledRuntime", new { option = str }));
}
}
else if(str == "NextFridgeTabButton"){
DebugLog(Helper.Translation.Get("Debug.KeySetTo", new { option = str }) + obj.ToString() + ".");
}
else if(str == "LastFridgeTabButton"){
DebugLog(Helper.Translation.Get("Debug.KeySetTo", new { option = str }) + obj.ToString() + ".");
}
}
//* Prints message in console log with given log level if enabled.
public static void DebugLog(string message, LogLevel level = LogLevel.Debug)
{
if(level != LogLevel.Debug){
_instance.Monitor.Log(message, level);
}else{
if (_instance.Config.ShowDebugMessages){
_instance.Monitor.Log(message, level);
}
}
}
}
}