forked from blushiemagic/MagicStorage
-
Notifications
You must be signed in to change notification settings - Fork 0
/
InterfaceHelper.cs
68 lines (63 loc) · 1.66 KB
/
InterfaceHelper.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
using System;
using System.Collections.Generic;
using System.Reflection;
using Terraria;
using Terraria.DataStructures;
using Terraria.ModLoader;
using Terraria.UI;
using MagicStorage.Components;
namespace MagicStorage
{
public static class InterfaceHelper
{
private static FieldInfo _itemIconCacheTimeInfo;
public static void Initialize()
{
_itemIconCacheTimeInfo = typeof(Main).GetField("_itemIconCacheTime", BindingFlags.NonPublic | BindingFlags.Static);
}
public static void ModifyInterfaceLayers(List<GameInterfaceLayer> layers)
{
for (int k = 0; k < layers.Count; k++)
{
if (layers[k].Name == "Vanilla: Inventory")
{
layers.Insert(k + 1, new LegacyGameInterfaceLayer("MagicStorage: StorageAccess", DrawStorageGUI, InterfaceScaleType.UI));
k++;
}
}
}
public static bool DrawStorageGUI()
{
Player player = Main.player[Main.myPlayer];
StoragePlayer modPlayer = player.GetModPlayer<StoragePlayer>(MagicStorage.Instance);
Point16 storageAccess = modPlayer.ViewingStorage();
if (!Main.playerInventory || storageAccess.X < 0 || storageAccess.Y < 0)
{
return true;
}
ModTile modTile = TileLoader.GetTile(Main.tile[storageAccess.X, storageAccess.Y].type);
if (modTile == null || !(modTile is StorageAccess))
{
return true;
}
TEStorageHeart heart = ((StorageAccess)modTile).GetHeart(storageAccess.X, storageAccess.Y);
if (heart == null)
{
return true;
}
if (modTile is CraftingAccess)
{
CraftingGUI.Draw(heart);
}
else
{
StorageGUI.Draw(heart);
}
return true;
}
public static void HideItemIconCache()
{
_itemIconCacheTimeInfo.SetValue(null, 0);
}
}
}