using Microsoft.Xna.Framework;
using System.Linq;
namespace OpenVIII.Fields
{
///
/// Currently a menu for field screen to enable or disable elements or test scripts.
///
public class FieldMenu : Menu
{
#region Enums
private enum Mode
{
On
}
#endregion Enums
#region Methods
public static FieldMenu Create() => Create();
public override bool Inputs()
{
bool r = false;
switch ((Mode)GetMode())
{
case Mode.On:
r = Data[GetMode()].Inputs() || r;
break;
}
r = base.Inputs() || r;
return r;
}
protected override void Init()
{
//Size = new Vector2(960f, 720f);
Size = new Vector2(1280f, 720f);
base.Init();
Data[Mode.On] = IGMData.FieldDebugControls.Create(new Rectangle(0, 0, 480, 360));
Data.Where(x => x.Value != null).ForEach(x => ModeChangeHandler += x.Value.ModeChangeEvent);
SetMode(Mode.On);
}
#endregion Methods
}
}
namespace OpenVIII.Fields.IGMData
{
public class FieldDebugControls : OpenVIII.IGMData.Base
{
#region Fields
private const int totalrows = 6;
#endregion Fields
#region Properties
public IGMDataItem.Text ClassicSpriteBatchMode { get => (IGMDataItem.Text)ITEM[4, 0]; protected set => ITEM[4, 0] = value; }
public IGMDataItem.Text FieldName { get => (IGMDataItem.Text)ITEM[0, 0]; protected set => ITEM[0, 0] = value; }
public IGMDataItem.Text FourceDump { get => (IGMDataItem.Text)ITEM[5, 0]; protected set => ITEM[5, 0] = value; }
public IGMDataItem.Text PerspectiveQuadMode { get => (IGMDataItem.Text)ITEM[3, 0]; protected set => ITEM[3, 0] = value; }
public IGMDataItem.Text QuadBG { get => (IGMDataItem.Text)ITEM[2, 0]; protected set => ITEM[2, 0] = value; }
public IGMDataItem.Text WalkMesh { get => (IGMDataItem.Text)ITEM[1, 0]; protected set => ITEM[1, 0] = value; }
public IGMDataItem.Text MouseLocationIn3D { get => (IGMDataItem.Text)ITEM[Count-1, 0]; protected set => ITEM[Count-1, 0] = value; }
#endregion Properties
#region Methods
public static FieldDebugControls Create(Rectangle pos) => Create(totalrows+1, 1, new IGMDataItem.Box { Pos = pos }, 1, totalrows);
public override bool Inputs()
{
Memory.IsMouseVisible = true;
return base.Inputs();
}
public override void Inputs_Left()
{
if (CURSOR_SELECT == 0)
{
if (Memory.FieldHolder.FieldID > 0)
Memory.FieldHolder.FieldID--;
else
Memory.FieldHolder.FieldID = checked((ushort)(Memory.FieldHolder.fields.Length - 1));
Module.ResetField();
}
else skipsnd = true;
base.Inputs_Left();
}
public override bool Inputs_OKAY()
{
int i = 0;
if (CURSOR_SELECT == i++)
Module.ResetField();
else if (CURSOR_SELECT == i++)
{
Module.Toggles = Module.Toggles.Flip(Module._Toggles.WalkMesh);
Refresh();
}
else if (CURSOR_SELECT == i++)
{
Module.Toggles = Module.Toggles.Flip(Module._Toggles.Quad);
if (Module.Toggles.HasFlag(Module._Toggles.ClassicSpriteBatch))
Module.Toggles = Module.Toggles.Flip(Module._Toggles.ClassicSpriteBatch);
Refresh();
}
else if (CURSOR_SELECT == i++)
{
if (Module.Toggles.HasFlag(Module._Toggles.Quad))
{
Module.Toggles = Module.Toggles.Flip(Module._Toggles.Perspective);
Refresh();
}
else skipsnd = true;
}
else if (CURSOR_SELECT == i++)
{
Module.Toggles = Module.Toggles.Flip(Module._Toggles.ClassicSpriteBatch);
if (Module.Toggles.HasFlag(Module._Toggles.Quad))
Module.Toggles = Module.Toggles.Flip(Module._Toggles.Quad);
if (Module.Background.HasSpriteBatchTexturesLoaded)
Refresh();
else
Module.ResetField();
}
else if (CURSOR_SELECT == i++)
{
Module.Toggles = Module.Toggles.Flip(Module._Toggles.DumpingData);
Refresh();
}
else skipsnd = true;
return base.Inputs_OKAY() || true;
}
public override void Inputs_Right()
{
if (CURSOR_SELECT == 0)
{
if (Memory.FieldHolder.FieldID < checked((ushort)(Memory.FieldHolder.fields.Length - 1)))
Memory.FieldHolder.FieldID++;
else
Memory.FieldHolder.FieldID = 0;
Module.ResetField();
}
else skipsnd = true;
base.Inputs_Right();
}
public override void Refresh()
{
FieldName.Data = $"Field: { Memory.FieldHolder.FieldID} - { Memory.FieldHolder.GetString().ToUpper()}";
BLANKS[0] = false;
if (Module.Mod != Module.Field_mods.DISABLED)
{
WalkMesh.Data = $"Draw WalkMesh: {Module.Toggles.HasFlag(Module._Toggles.WalkMesh)}";
BLANKS[1] = false;
QuadBG.Data = $"Draw Quad BG: {Module.Toggles.HasFlag(Module._Toggles.Quad)}";
BLANKS[2] = false;
PerspectiveQuadMode.Data = $"Perspective for Quads: {Module.Toggles.HasFlag(Module._Toggles.Quad) && Module.Toggles.HasFlag(Module._Toggles.Perspective)}";
if (Module.Toggles.HasFlag(Module._Toggles.Quad))
{
BLANKS[3] = false;
PerspectiveQuadMode.FontColor = Font.ColorID.White;
}
else
{
BLANKS[3] = true;
PerspectiveQuadMode.FontColor = Font.ColorID.Grey;
}
ClassicSpriteBatchMode.Data = $"Classic SpriteBatch: {Module.Toggles.HasFlag(Module._Toggles.ClassicSpriteBatch)}";
BLANKS[4] = false;
FourceDump.Data = $"Onload Dump Textures: {Module.Toggles.HasFlag(Module._Toggles.DumpingData)}";
BLANKS[5] = false;
}
else
{
BLANKS[1] = true;
BLANKS[2] = true;
BLANKS[3] = true;
BLANKS[4] = true;
BLANKS[5] = true;
}
BLANKS[Count - 1] = true;
base.Refresh();
}
public override bool Update()
{
if ((Module.Background?.MouseLocation ?? Vector3.Zero) != Vector3.Zero)
MouseLocationIn3D.Data = $"Mouse Cords: {Module.Background?.MouseLocation}";
else
MouseLocationIn3D.Data = null;
return base.Update();
}
protected override void Init()
{
base.Init();
foreach (int i in Enumerable.Range(0, Count))
{
ITEM[i, 0] = new IGMDataItem.Text { Pos = SIZE[i] };
}
Cursor_Status = Cursor_Status.Enabled;
MouseLocationIn3D = new IGMDataItem.Text { Pos = SIZE[Rows - 1], Scale = new Vector2(1.5f) };
MouseLocationIn3D.Y = Y + Height+10;
}
protected override void InitShift(int i, int col, int row)
{
base.InitShift(i, col, row);
SIZE[i].Inflate(-22, -8);
SIZE[i].Offset(0, 12 + (-8 * row));
}
#endregion Methods
}
}