using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace WindowsGame1
{
class TextBox
{
Vector2 position;
Vector2 boxDim;
string labelText;
string boxText;
int blinkTicks;
bool blink = false;
bool selected = false;
bool mouseDownLast = false;
List<Keys> keyPressedLast = new List<Keys>();
KeyboardState lastState;
KeyboardState currentState;
public string BoxText
{
get
{
return boxText;
}
}
int maxCharacters;
public TextBox(Vector2 newPosition, Vector2 bounds, string label, string startText, int max)
{
position = newPosition;
boxDim = bounds;
labelText = label;
boxText = startText;
maxCharacters = max;
}
public void update()
{
KeyboardState keyboard = Keyboard.GetState();
blinkTicks++;
if (blinkTicks > 6)
{
blink = !blink;
blinkTicks = 0;
}
if (new Rectangle((int)position.X, (int)position.Y, (int)boxDim.X, (int)boxDim.Y).Contains(Mouse.GetState().X, Mouse.GetState().Y) && Mouse.GetState().LeftButton == ButtonState.Pressed && !mouseDownLast)
{
selected = !selected;
if (!selected)
{
blinkTicks = 0;
blink = false;
}
}
if (selected)
{
if (keyboard.IsKeyDown(Keys.Back) && boxText.Length > 0)
boxText = boxText.Remove(boxText.Length - 1);
string characterPressed = "";
if (keyboard.IsKeyDown(Keys.Space))
characterPressed = " ";
if (keyboard.IsKeyDown(Keys.A))
characterPressed = "A";
if (keyboard.IsKeyDown(Keys.B))
characterPressed = "B";
if (keyboard.IsKeyDown(Keys.C))
characterPressed = "C";
if (keyboard.IsKeyDown(Keys.D))
characterPressed = "D";
if (keyboard.IsKeyDown(Keys.E))
characterPressed = "E";
if (keyboard.IsKeyDown(Keys.F))
characterPressed = "F";
if (keyboard.IsKeyDown(Keys.G))
characterPressed = "G";
if (keyboard.IsKeyDown(Keys.H))
characterPressed = "H";
if (keyboard.IsKeyDown(Keys.I))
characterPressed = "I";
if (keyboard.IsKeyDown(Keys.J))
characterPressed = "J";
if (keyboard.IsKeyDown(Keys.K))
characterPressed = "K";
if (keyboard.IsKeyDown(Keys.L))
characterPressed = "L";
if (keyboard.IsKeyDown(Keys.M))
characterPressed = "M";
if (keyboard.IsKeyDown(Keys.N))
characterPressed = "N";
if (keyboard.IsKeyDown(Keys.O))
characterPressed = "O";
if (keyboard.IsKeyDown(Keys.P))
characterPressed = "P";
if (keyboard.IsKeyDown(Keys.Q))
characterPressed = "Q";
if (keyboard.IsKeyDown(Keys.R))
characterPressed = "R";
if (keyboard.IsKeyDown(Keys.S))
characterPressed = "S";
if (keyboard.IsKeyDown(Keys.T))
characterPressed = "T";
if (keyboard.IsKeyDown(Keys.U))
characterPressed = "U";
if (keyboard.IsKeyDown(Keys.V))
characterPressed = "V";
if (keyboard.IsKeyDown(Keys.W))
characterPressed = "W";
if (keyboard.IsKeyDown(Keys.X))
characterPressed = "X";
if (keyboard.IsKeyDown(Keys.Y))
characterPressed = "Y";
if (keyboard.IsKeyDown(Keys.Z))
characterPressed = "Z";
if (characterPressed.Length != 0)
Console.WriteLine(characterPressed);
if (characterPressed.Length != 0)
{
if (keyboard.IsKeyDown(Keys.LeftShift) || keyboard.IsKeyDown(Keys.RightShift))
characterPressed = characterPressed.ToUpper();
else
characterPressed = characterPressed.ToLower();
Keys key = (Keys) Enum.Parse(typeof(Keys), characterPressed, true);
boxText = boxText.Insert(boxText.Length, characterPressed);
}
/*switch (pressedKeys[letterIndex])
{
case Keys.A:
case Keys.B:
case Keys.C:
case Keys.D:
case Keys.E:
case Keys.F:
case Keys.G:
case Keys.H:
case Keys.I:
case Keys.J:
case Keys.K:
case Keys.L:
case Keys.M:
case Keys.N:
case Keys.O:
case Keys.P:
case Keys.Q:
case Keys.R:
case Keys.S:
case Keys.T:
case Keys.U:
case Keys.V:
case Keys.W:
case Keys.X:
case Keys.Y:
case Keys.Z:
char [] appendCharacter = keyboard.GetPressedKeys()[0].ToString().ToCharArray();
if (keyboard.IsKeyDown(Keys.LeftShift) || keyboard.IsKeyDown(Keys.RightShift))
appendCharacter[0] = Char.ToUpper(appendCharacter[0]);
else
appendCharacter[0] = Char.ToLower(appendCharacter[0]);
boxText = boxText.Insert(boxText.Length, appendCharacter[0].ToString());
break;
}*/
}
if (boxText.Length > maxCharacters)
boxText = boxText.Remove(maxCharacters);
mouseDownLast = Mouse.GetState().LeftButton == ButtonState.Pressed;
}
public void draw(SpriteBatch spriteBatch)
{
LineDrawer.drawLine(new Vector2(position.X, position.Y), new Vector2(position.X + boxDim.X, position.Y), spriteBatch);
LineDrawer.drawLine(new Vector2(position.X, position.Y), new Vector2(position.X, position.Y + boxDim.Y), spriteBatch);
LineDrawer.drawLine(new Vector2(position.X, position.Y + boxDim.Y), new Vector2(position.X + boxDim.X, position.Y + boxDim.Y), spriteBatch);
LineDrawer.drawLine(new Vector2(position.X + boxDim.X, position.Y), new Vector2(position.X + boxDim.X, position.Y + boxDim.Y), spriteBatch);
TextDrawer.setSize(10);
TextDrawer.drawText(labelText, new Vector2((position.X - TextDrawer.measureString(labelText).X) - 10, position.Y), false, spriteBatch);
TextDrawer.setSize((int)(boxDim.Y - 10));
TextDrawer.drawText(boxText, new Vector2(position.X + 3, position.Y + 3), false, spriteBatch);
float cursorX = position.X + 3 + TextDrawer.measureString(boxText).X + 2;
if (blink && selected)
LineDrawer.drawLine(new Vector2(cursorX, position.Y + 3), new Vector2(cursorX, position.Y + 3 + TextDrawer.measureString(labelText).Y), spriteBatch);
}
}
}