|
|
using Microsoft.Xna.Framework.Input;
|
|
|
|
|
|
using Encompass;
|
|
|
|
|
|
using isometricparkfna.Messages;
|
|
|
using isometricparkfna.Components;
|
|
|
|
|
|
namespace isometricparkfna.Engines
|
|
|
{
|
|
|
|
|
|
[Receives(typeof(ToggleWindowMessage),
|
|
|
typeof(ToggleWindowTypeMessage),
|
|
|
typeof(ToggleVisibilityMessage),
|
|
|
typeof(SetWindowVisibilityMessage),
|
|
|
typeof(SelectMessage),
|
|
|
typeof(SetDialogMessage))]
|
|
|
[Reads(typeof(WindowTypeComponent),
|
|
|
typeof(VisibilityComponent),
|
|
|
typeof(SelectedComponent))]
|
|
|
[Writes(typeof(VisibilityComponent),
|
|
|
typeof(SelectedComponent),
|
|
|
typeof(DialogComponent))]
|
|
|
class UIEngine : Engine
|
|
|
{
|
|
|
|
|
|
public override void Update(double dt)
|
|
|
{
|
|
|
foreach (var entity in ReadEntities<SelectedComponent>())
|
|
|
{
|
|
|
SetComponent(entity, new SelectedComponent { selected = false });
|
|
|
}
|
|
|
|
|
|
foreach (ref readonly var windowMessage in ReadMessages<SetWindowVisibilityMessage>())
|
|
|
{
|
|
|
Logging.Spy(windowMessage, "message");
|
|
|
Logging.Spy(windowMessage.Entity, "message.Entity");
|
|
|
Logging.Spy(windowMessage.Entity.ID, "message.Entity.ID");
|
|
|
Logging.Spy(windowMessage.Visibility, "message.Visibility");
|
|
|
foreach (ref readonly var entity in ReadEntities<WindowTypeComponent>())
|
|
|
{
|
|
|
Logging.Spy(entity.ID, "ID");
|
|
|
if (EntityExists(windowMessage.Entity) && entity.ID == windowMessage.Entity.ID)
|
|
|
{
|
|
|
SetComponent(entity, new VisibilityComponent { visible = windowMessage.Visibility });
|
|
|
Logging.Success("Set Visibility.");
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowMessage>())
|
|
|
{
|
|
|
Logging.Spy(windowMessage, "message");
|
|
|
Logging.Spy(windowMessage.Window, "message.Window");
|
|
|
Logging.Spy(windowMessage.Entity, "message.Entity");
|
|
|
foreach (ref readonly var entity in ReadEntities<WindowTypeComponent>())
|
|
|
{
|
|
|
if (EntityExists(windowMessage.Entity) && entity.ID == windowMessage.Entity.ID)
|
|
|
{
|
|
|
var visibilityComponent = GetComponent<VisibilityComponent>(entity);
|
|
|
SetComponent(entity, new VisibilityComponent { visible = !visibilityComponent.visible });
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowTypeMessage>())
|
|
|
{
|
|
|
Logging.Spy(windowMessage, "message");
|
|
|
Logging.Spy(windowMessage.Window, "message.Window");
|
|
|
foreach (ref readonly var entity in ReadEntities<WindowTypeComponent>())
|
|
|
{
|
|
|
|
|
|
var window_type = GetComponent<WindowTypeComponent>(entity).type;
|
|
|
if (window_type == windowMessage.Window)
|
|
|
{
|
|
|
var visibilityComponent = GetComponent<VisibilityComponent>(entity);
|
|
|
SetComponent(entity, new VisibilityComponent { visible = !visibilityComponent.visible });
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
foreach (ref readonly var selectedMessage in ReadMessages<SelectMessage>())
|
|
|
{
|
|
|
SetComponent<SelectedComponent>(selectedMessage.Entity,
|
|
|
new SelectedComponent { selected = true });
|
|
|
}
|
|
|
|
|
|
foreach (ref readonly var dialogMessage in ReadMessages<SetDialogMessage>())
|
|
|
{
|
|
|
if (dialogMessage.newOption != null)
|
|
|
{
|
|
|
SetComponent(dialogMessage.Entity,
|
|
|
new DialogComponent {Dialog = dialogMessage.newOption
|
|
|
});
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
Destroy(dialogMessage.Entity);
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|