-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
SherbetVaultsPlugin.cs
116 lines (95 loc) · 3.84 KB
/
SherbetVaultsPlugin.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
using System.Collections.Generic;
using Rocket.API;
using Rocket.Core;
using Rocket.Core.Logging;
using Rocket.Core.Plugins;
using SDG.Unturned;
using SherbetVaults.Database;
using SherbetVaults.Models;
using SherbetVaults.Models.Config;
using SherbetVaults.Models.Restrictions;
using SherbetVaults.Models.Utility;
namespace SherbetVaults
{
public partial class SherbetVaultsPlugin : RocketPlugin<SherbetVaultsConfig>
{
#region "Properties"
public DatabaseManager Database { get; private set; }
public VaultManager VaultManager { get; private set; }
public VaultSelector VaultSelector { get; private set; }
public RestrictionBuilder RestrictionBuilder { get; private set; }
public RestrictionTool RestrictionTool { get; private set; }
public ItemTableTool ItemTable { get; private set; }
public List<VaultRestrictionGroup> RestrictionGroups { get; private set; }
public SherbetVaultsConfig Config => Configuration.Instance;
public List<VaultConfig> VaultConfigs => Config.Vaults;
#endregion "Properties"
public override void LoadPlugin()
{
var version = typeof(SherbetVaultsPlugin).Assembly.GetName().Version;
Logger.Log($"Loading Sherbet Vaults v{version}...");
try
{
LoadPluginInternal();
}
catch (System.Exception ex)
{
Logger.LogError("Failed to load SherbetVaults");
Logger.LogError("");
Logger.LogError(ex.Message);
Logger.LogError(ex.StackTrace);
Logger.LogError("");
Logger.LogError("Support: https://discord.shimmymysherbet.com/");
}
}
private void LoadPluginInternal()
{
var version = typeof(SherbetVaultsPlugin).Assembly.GetName().Version;
VaultManager = new VaultManager(this);
RestrictionBuilder = new RestrictionBuilder(this);
RestrictionTool = new RestrictionTool(this);
Database = new DatabaseManager(this);
VaultSelector = new VaultSelector(this);
ItemTable = new ItemTableTool();
RestrictionGroups = new List<VaultRestrictionGroup>();
if (!Database.Connect(out var errorMessage))
{
Logger.Log($"Failed to connect to database: {errorMessage}");
UnloadPlugin(PluginState.Failure);
return;
}
Database.CheckSchema();
Database.InitQueue();
RestrictionBuilder.Init();
Logger.Log("Loading restriction settings...");
RestrictionGroups = RestrictionBuilder.BuildGroups(Config.Restrictions, out var errors);
if (errors == 0)
{
Logger.Log($"Loaded {RestrictionGroups.Count} Restriction Groups with no errors.");
}
else
{
Logger.LogWarning($"Loaded {RestrictionGroups.Count} Restriction Groups with {errors} error/s.");
}
Provider.onEnemyDisconnected += OnPlayerDisconnect;
Level.onLevelLoaded += OnLevelLoaded;
base.LoadPlugin();
Logger.Log($"Sherbet Vaults v{version} by ShimmyMySherbet#5694 Loaded!");
}
public override void UnloadPlugin(PluginState state = PluginState.Unloaded)
{
Provider.onEnemyDisconnected -= OnPlayerDisconnect;
Level.onLevelLoaded -= OnLevelLoaded;
Database.Dispose();
base.UnloadPlugin(state);
}
private void OnLevelLoaded(int lvl)
{
ItemTable.ReInit();
}
private void OnPlayerDisconnect(SteamPlayer player)
{
VaultManager.RemovePlayerCache(player.playerID.steamID.m_SteamID);
}
}
}