forked from JuicyJabon/QoLCompendium
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQoLCompendium.cs
More file actions
113 lines (102 loc) · 4.08 KB
/
QoLCompendium.cs
File metadata and controls
113 lines (102 loc) · 4.08 KB
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
global using Microsoft.Xna.Framework;
global using Microsoft.Xna.Framework.Graphics;
global using QoLCompendium.Core;
global using ReLogic.Content;
global using System;
global using System.Collections.Generic;
global using System.IO;
global using System.Linq;
global using Terraria;
global using Terraria.Audio;
global using Terraria.GameContent;
global using Terraria.GameContent.UI.Elements;
global using Terraria.ID;
global using Terraria.Localization;
global using Terraria.ModLoader;
global using Terraria.UI;
global using static QoLCompendium.Core.QoLCConfig;
using QoLCompendium.Core.Changes.BuffChanges;
using QoLCompendium.Core.Changes.ItemChanges.ReforgeSystems;
using QoLCompendium.Core.UI.Panels;
using System.Reflection;
namespace QoLCompendium
{
public class QoLCompendium : Mod
{
#pragma warning disable CA2211
public static Mod Instance;
public static QoLCompendium instance;
public static QoLCConfig mainConfig;
public static MainClientConfig mainClientConfig;
public static ItemConfig itemConfig;
public static ShopConfig shopConfig;
public static TooltipConfig tooltipConfig;
public static CrossModConfig crossModConfig;
public static VeinminerConfig veinminerConfig;
public static int? LastOpenedBank;
#pragma warning restore CA2211
public override uint ExtraPlayerBuffSlots => (uint)mainConfig.ExtraBuffSlots;
public override void PostSetupContent()
{
BuffSystem.DoBuffIntegration();
Common.PostSetupTasks();
LoadModSupport.PostSetupTasks();
PermanentCalamityBuffUI.GetCalamityBuffData();
PermanentHomewardJourneyBuffUI.GetHomewardJourneyBuffData();
PermanentMartinsOrderBuffUI.GetMartinsOrderBuffData();
PermanentSOTSBuffUI.GetSOTSBuffData();
PermanentSpiritClassicBuffUI.GetSpiritClassicBuffData();
PermanentThoriumBuffUI.GetThoriumBuffData();
Prefixes.PostSetupTasks();
}
public override void Load()
{
On_Player.HandleBeingInChestRange += ChestRange;
On_WorldGen.moveRoom += WorldGen_moveRoom;
instance = this;
Instance = this;
ModConditions.LoadSupportedMods();
LoadModSupport.LoadTasks();
}
public override void Unload()
{
instance = null;
Instance = null;
mainConfig = null;
mainClientConfig = null;
itemConfig = null;
shopConfig = null;
tooltipConfig = null;
crossModConfig = null;
veinminerConfig = null;
On_Player.HandleBeingInChestRange -= ChestRange;
On_WorldGen.moveRoom -= WorldGen_moveRoom;
Common.UnloadTasks();
LoadModSupport.UnloadTasks();
}
public override void HandlePacket(BinaryReader reader, int whoAmI)
{
foreach (var npc in from n in Main.npc where n is not null && n.active && n.townNPC && !n.homeless select n)
TownEntitiesTeleportToHome(npc, npc.homeTileX, npc.homeTileY);
}
private void WorldGen_moveRoom(On_WorldGen.orig_moveRoom orig, int x, int y, int n)
{
orig.Invoke(x, y, n);
if (Main.npc.IndexInRange(n) && Main.npc[n] is not null)
TownEntitiesTeleportToHome(Main.npc[n], Main.npc[n].homeTileX, Main.npc[n].homeTileY);
}
internal static void TownEntitiesTeleportToHome(NPC npc, int homeFloorX, int homeFloorY)
{
npc?.GetType().GetMethod("AI_007_TownEntities_TeleportToHome",
BindingFlags.Instance | BindingFlags.NonPublic,
new[] { typeof(int), typeof(int) })?
.Invoke(npc, new object[] { homeFloorX, homeFloorY });
}
private void ChestRange(On_Player.orig_HandleBeingInChestRange orig, Player player)
{
if (player.chest == LastOpenedBank) return;
if (LastOpenedBank != null) LastOpenedBank = null;
orig.Invoke(player);
}
}
}