forked from SamsonAllen13/ClickerClass
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLegsLayer.cs
81 lines (70 loc) · 2.39 KB
/
LegsLayer.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
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Collections.Generic;
using Terraria;
using Terraria.DataStructures;
using Terraria.ModLoader;
namespace ClickerClass.DrawLayers
{
//Items manually register data which this layer is using
public sealed class LegsLayer : PlayerDrawLayer
{
private static Dictionary<int, DrawLayerData> LegsLayerData { get; set; }
/// <summary>
/// Add data associated with the leg equip slot here, usually in <see cref="ModType.SetStaticDefaults"/>.
/// <para>Don't forget the !Main.dedServ check!</para>
/// </summary>
/// <param name="legSlot">Leg equip slot</param>
/// <param name="data">Data</param>
public static void RegisterData(int legSlot, DrawLayerData data)
{
if (!LegsLayerData.ContainsKey(legSlot))
{
LegsLayerData.Add(legSlot, data);
}
}
public override void Load()
{
LegsLayerData = new Dictionary<int, DrawLayerData>();
}
public override void Unload()
{
LegsLayerData = null;
}
public override Position GetDefaultPosition()
{
return new AfterParent(PlayerDrawLayers.Leggings);
}
public override bool GetDefaultVisibility(PlayerDrawSet drawInfo)
{
Player drawPlayer = drawInfo.drawPlayer;
if (drawPlayer.dead || drawPlayer.invis || drawPlayer.legs == -1)
{
return false;
}
return true;
}
protected override void Draw(ref PlayerDrawSet drawInfo)
{
Player drawPlayer = drawInfo.drawPlayer;
if (!LegsLayerData.TryGetValue(drawPlayer.legs, out DrawLayerData data))
{
return;
}
Color color = drawPlayer.GetImmuneAlphaPure(data.Color(drawInfo), drawInfo.shadow);
Texture2D texture = data.Texture.Value;
if (drawInfo.isSitting && (!DrawLayerHelper.ShouldOverrideLegs_CheckShoes(ref drawInfo) || drawPlayer.wearsRobe))
{
DrawLayerHelper.DrawSittingLegsMethod(ref drawInfo, texture, color, drawInfo.cLegs);
return;
}
Vector2 drawPos = drawInfo.Position - Main.screenPosition + new Vector2(drawPlayer.width / 2 - drawPlayer.legFrame.Width / 2, drawPlayer.height - drawPlayer.legFrame.Height + 4f) + drawPlayer.legPosition;
Vector2 legsOffset = drawInfo.legsOffset;
DrawData drawData = new DrawData(texture, drawPos.Floor() + legsOffset, drawPlayer.legFrame, color, drawPlayer.legRotation, legsOffset, 1f, drawInfo.playerEffect, 0)
{
shader = drawInfo.cLegs
};
drawInfo.DrawDataCache.Add(drawData);
}
}
}