terraria-source-code/UI/IngameFancyUI.cs
2021-10-27 18:03:19 -04:00

167 lines
5.7 KiB
C#

// Decompiled with JetBrains decompiler
// Type: Terraria.UI.IngameFancyUI
// Assembly: Terraria, Version=1.3.5.3, Culture=neutral, PublicKeyToken=null
// MVID: 68659D26-2BE6-448F-8663-74FA559E6F08
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
using Terraria.Achievements;
using Terraria.GameContent.UI.States;
using Terraria.GameInput;
using Terraria.Localization;
using Terraria.UI.Gamepad;
namespace Terraria.UI
{
public class IngameFancyUI
{
private static bool CoverForOneUIFrame;
public static void CoverNextFrame() => IngameFancyUI.CoverForOneUIFrame = true;
public static bool CanCover()
{
if (!IngameFancyUI.CoverForOneUIFrame)
return false;
IngameFancyUI.CoverForOneUIFrame = false;
return true;
}
public static void OpenAchievements()
{
IngameFancyUI.CoverNextFrame();
Main.playerInventory = false;
Main.editChest = false;
Main.npcChatText = "";
Main.inFancyUI = true;
Main.InGameUI.SetState((UIState) Main.AchievementsMenu);
}
public static void OpenAchievementsAndGoto(Achievement achievement)
{
IngameFancyUI.OpenAchievements();
Main.AchievementsMenu.GotoAchievement(achievement);
}
public static void OpenKeybinds()
{
IngameFancyUI.CoverNextFrame();
Main.playerInventory = false;
Main.editChest = false;
Main.npcChatText = "";
Main.inFancyUI = true;
Main.InGameUI.SetState((UIState) Main.ManageControlsMenu);
}
public static bool CanShowVirtualKeyboard(int context) => UIVirtualKeyboard.CanDisplay(context);
public static void OpenVirtualKeyboard(int keyboardContext)
{
IngameFancyUI.CoverNextFrame();
Main.PlaySound(12);
string labelText = "";
switch (keyboardContext)
{
case 1:
Main.editSign = true;
labelText = Language.GetTextValue("UI.EnterMessage");
break;
case 2:
labelText = Language.GetTextValue("UI.EnterNewName");
Player player = Main.player[Main.myPlayer];
Main.npcChatText = Main.chest[player.chest].name;
if (Main.tile[player.chestX, player.chestY].type == (ushort) 21)
Main.defaultChestName = Lang.chestType[(int) Main.tile[player.chestX, player.chestY].frameX / 36].Value;
if (Main.tile[player.chestX, player.chestY].type == (ushort) 467)
Main.defaultChestName = Lang.chestType2[(int) Main.tile[player.chestX, player.chestY].frameX / 36].Value;
if (Main.tile[player.chestX, player.chestY].type == (ushort) 88)
Main.defaultChestName = Lang.dresserType[(int) Main.tile[player.chestX, player.chestY].frameX / 54].Value;
if (Main.npcChatText == "")
Main.npcChatText = Main.defaultChestName;
Main.editChest = true;
break;
}
Main.clrInput();
if (!IngameFancyUI.CanShowVirtualKeyboard(keyboardContext))
return;
Main.inFancyUI = true;
switch (keyboardContext)
{
case 1:
Main.InGameUI.SetState((UIState) new UIVirtualKeyboard(labelText, Main.npcChatText, (UIVirtualKeyboard.KeyboardSubmitEvent) (s =>
{
Main.SubmitSignText();
IngameFancyUI.Close();
}), (Action) (() =>
{
Main.InputTextSignCancel();
IngameFancyUI.Close();
}), keyboardContext));
break;
case 2:
Main.InGameUI.SetState((UIState) new UIVirtualKeyboard(labelText, Main.npcChatText, (UIVirtualKeyboard.KeyboardSubmitEvent) (s =>
{
ChestUI.RenameChestSubmit(Main.player[Main.myPlayer]);
IngameFancyUI.Close();
}), (Action) (() =>
{
ChestUI.RenameChestCancel();
IngameFancyUI.Close();
}), keyboardContext));
break;
}
UILinkPointNavigator.GoToDefaultPage(1);
}
public static void Close()
{
Main.inFancyUI = false;
Main.PlaySound(11);
if (!Main.gameMenu && (!(Main.InGameUI.CurrentState is UIVirtualKeyboard) || UIVirtualKeyboard.KeyboardContext == 2))
Main.playerInventory = true;
Main.InGameUI.SetState((UIState) null);
UILinkPointNavigator.Shortcuts.FANCYUI_SPECIAL_INSTRUCTIONS = 0;
}
public static bool Draw(SpriteBatch spriteBatch, GameTime gameTime)
{
if (!Main.gameMenu && Main.player[Main.myPlayer].dead && !Main.player[Main.myPlayer].ghost)
{
IngameFancyUI.Close();
Main.playerInventory = false;
return false;
}
bool flag = false;
if (Main.InGameUI.CurrentState is UIVirtualKeyboard && UIVirtualKeyboard.KeyboardContext > 0)
{
if (!Main.inFancyUI)
Main.InGameUI.SetState((UIState) null);
if (Main.screenWidth >= 1705 || !PlayerInput.UsingGamepad)
flag = true;
}
if (!Main.gameMenu)
{
Main.mouseText = false;
if (Main.InGameUI != null && Main.InGameUI.IsElementUnderMouse())
Main.player[Main.myPlayer].mouseInterface = true;
Main.instance.GUIBarsDraw();
if (Main.InGameUI.CurrentState is UIVirtualKeyboard && UIVirtualKeyboard.KeyboardContext > 0)
Main.instance.GUIChatDraw();
if (!Main.inFancyUI)
Main.InGameUI.SetState((UIState) null);
Main.instance.DrawMouseOver();
Main.DrawCursor(Main.DrawThickCursor());
}
return flag;
}
public static void MouseOver()
{
if (!Main.inFancyUI || !Main.InGameUI.IsElementUnderMouse())
return;
Main.mouseText = true;
}
}
}