Even More Modifiers  1.0.0.0
A mod for rolling various bonus stats on items
CubeCraftRow.cs
Go to the documentation of this file.
1 using System;
2 using Loot.Api.Cubes;
3 using Loot.Ext;
4 using Loot.Soulforging;
7 using Microsoft.Xna.Framework;
8 using Terraria;
9 using Terraria.ID;
10 using Terraria.ModLoader;
11 using Terraria.UI;
12 
13 namespace Loot.UI.Tabs.Soulforging
14 {
15  class CubeCraftRow : GuiFramedElement
16  {
17  internal int Type;
18  internal Item Cube;
19  internal Action<Item> OnCubeUpdate;
20 
21  private int CraftingCost;
22  internal CubeCraftButton CubeButton;
23  private GuiTextPanel Panel;
24  private GuiImageButton CraftButton;
25 
26  public void UpdateText()
27  {
28  CraftingCost = ((MagicalCube)(Cube.modItem))?.EssenceCraftCost ?? 0;
29  Panel?.UpdateText($"{CraftingCost} essence cost");
30  Panel?.SetHoverText($"Crafting one {Cube.HoverName} costs {CraftingCost} essence");
31  }
32 
33  public CubeCraftRow(int type) : base(new Vector2(400, 55), new Vector2(0, 0))
34  {
35  Type = type;
36  Cube = new Item();
37  Cube.SetDefaults(type);
38  Cube.stack = 0;
39  }
40 
41  public override void OnInitialize()
42  {
43  base.OnInitialize();
44 
45  CubeButton = new CubeCraftButton(
46  GuiButton.ButtonType.StoneInnerBevel,
47  hintTexture: Main.itemTexture[Type]
48  );
49  CubeButton.Item = Cube;
50  CubeButton.OnClick += CubeButtonOnOnClick;
51  Frame.Append(CubeButton);
52 
53  Panel = new GuiTextPanel();
54  Panel.RightOf(CubeButton);
55  Frame.Append(Panel);
56 
57  CraftButton = new GuiImageButton(GuiButton.ButtonType.None, ModContent.GetTexture("Terraria/UI/Craft_Toggle_3"));
58  CraftButton.Left.Percent = 1.0f;
59  CraftButton.Left.Pixels = -CraftButton.Width.Pixels - GuiTab.PADDING;
60  CraftButton.OnClick += CraftCube;
61  Panel.Append(CraftButton);
62  }
63 
64  private void CubeButtonOnOnClick(UIMouseEvent evt, UIElement listeningelement)
65  {
66  if (CubeButton.Item.stack > 0 && Main.mouseItem.IsAir)
67  {
68  Main.mouseItem = Cube.Clone();
69  Cube.stack = 0;
70  CubeButton.Item = Cube.Clone();
71  OnCubeUpdate?.Invoke(Cube);
72  }
73  }
74 
75  private void CraftCube(UIMouseEvent evt, UIElement listeningelement)
76  {
77  var info = Main.LocalPlayer.GetModPlayer<LootEssencePlayer>();
78  if (info.Essence >= CraftingCost)
79  {
80  Main.PlaySound(SoundID.Item37, -1, -1);
81  Cube.stack++;
82  CubeButton.Item = Cube.Clone();
83  info.UseEssence(CraftingCost);
84  OnCubeUpdate?.Invoke(Cube);
85  }
86  }
87  }
88 }
Defines a magical cube A magical cube is used to change modifiers on an item
Definition: MagicalCube.cs:12
void CubeButtonOnOnClick(UIMouseEvent evt, UIElement listeningelement)
Definition: CubeCraftRow.cs:64
void CraftCube(UIMouseEvent evt, UIElement listeningelement)
Definition: CubeCraftRow.cs:75