Files
LuaCsForBarotraumaEP/Subsurface/Source/Items/Components/Label.cs
2015-08-20 00:42:24 +03:00

107 lines
2.8 KiB
C#

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace Subsurface.Items.Components
{
class Label : ItemComponent
{
GUITextBox textBox;
private string text;
[HasDefaultValue("", true)]
public string Text
{
get { return text; }
set
{
text = value;
}
}
public Label(Item item, XElement element)
: base(item, element)
{
}
public override bool Select(Character character)
{
if (textBox == null)
{
textBox = new GUITextBox(Rectangle.Empty, GUI.style, GuiFrame);
textBox.Wrap = true;
textBox.OnTextChanged = TextChanged;
textBox.LimitText = true;
GUIButton button = new GUIButton(new Rectangle(0,0,100,15), "OK", null, Alignment.BottomRight, GUI.style, GuiFrame);
button.OnClicked = Close;
}
textBox.Text = text;
textBox.Select();
return base.Select(character);
}
public override void DrawHUD(SpriteBatch spriteBatch, Character character)
{
//isActive = true;
GuiFrame.Update((float)Physics.step);
GuiFrame.Draw(spriteBatch);
//int width = 300, height = 300;
//int x = Game1.GraphicsWidth / 2 - width / 2;
//int y = Game1.GraphicsHeight / 2 - height / 2 - 50;
//GUI.DrawRectangle(spriteBatch, new Rectangle(x, y, width, height), Color.Black, true);
if (!textBox.Selected) character.SelectedConstruction = null;
}
private bool TextChanged(GUITextBox textBox, string text)
{
this.text = text;
item.NewComponentEvent(this, true);
return true;
}
private bool Close(GUIButton button, object obj)
{
textBox.Deselect();
return true;
}
public override void FillNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetOutgoingMessage message)
{
message.Write(Text);
}
public override void ReadNetworkData(Networking.NetworkEventType type, Lidgren.Network.NetIncomingMessage message)
{
string newText = "";
try
{
newText = message.ReadString();
}
catch (Exception e)
{
#if DEBUG
DebugConsole.ThrowError("invalid network message", e);
#endif
return;
}
Text = newText;
}
}
}