|
|
using System;
|
|
|
using System.Text.RegularExpressions;
|
|
|
using System.Linq;
|
|
|
|
|
|
using Microsoft.Xna.Framework.Input;
|
|
|
|
|
|
using Encompass;
|
|
|
using Ink.Runtime;
|
|
|
using TraceryNet;
|
|
|
|
|
|
using isometricparkfna.Messages;
|
|
|
using isometricparkfna.Components;
|
|
|
|
|
|
namespace isometricparkfna.Engines
|
|
|
{
|
|
|
|
|
|
[Receives(typeof(ToggleWindowMessage),
|
|
|
typeof(ToggleWindowTypeMessage),
|
|
|
typeof(ToggleVisibilityMessage),
|
|
|
typeof(SetWindowVisibilityMessage),
|
|
|
typeof(SelectMessage),
|
|
|
typeof(SetDialogMessage),
|
|
|
typeof(DialogChoiceMessage))]
|
|
|
[Reads(typeof(DialogComponent),
|
|
|
typeof(WindowTypeComponent),
|
|
|
typeof(VisibilityComponent),
|
|
|
typeof(SelectedComponent))]
|
|
|
[Writes(typeof(VisibilityComponent),
|
|
|
typeof(SelectedComponent))]
|
|
|
class UIEngine : Engine
|
|
|
{
|
|
|
public Story Story;
|
|
|
|
|
|
public UIEngine(Story story)
|
|
|
{
|
|
|
this.Story = story;
|
|
|
}
|
|
|
|
|
|
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)
|
|
|
{
|
|
|
AddComponent(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);
|
|
|
AddComponent(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 });
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|