Commit Description:
Add indicators to ContractsWindow.
Commit Description:
Add indicators to ContractsWindow.
File last commit:
Show/Diff file:
Action:
isometric-park-fna/Engines/UIEngine.cs
104 lines | 3.8 KiB | text/x-csharp | CSharpLexer
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);
}
}
}
}
}