|
|
|
|
|
using System.IO;
|
|
|
|
|
|
using Microsoft.Xna.Framework.Input;
|
|
|
using Newtonsoft.Json;
|
|
|
using Encompass;
|
|
|
|
|
|
using isometricparkfna.Messages;
|
|
|
using isometricparkfna.Components;
|
|
|
|
|
|
namespace isometricparkfna.Engines
|
|
|
{
|
|
|
|
|
|
|
|
|
[Receives(typeof(ToggleWindowTypeMessage), typeof(ToggleWindowMessage),
|
|
|
typeof(GameStateMessage),
|
|
|
typeof(ToggleVisibilityMessage),
|
|
|
typeof(SetResolutionMessage),
|
|
|
typeof(SetFontMessage))]
|
|
|
[Reads(typeof(AreaComponent),
|
|
|
typeof(ContractStatusComponent))]
|
|
|
class GameBridgeEngine : Engine
|
|
|
{
|
|
|
|
|
|
public FNAGame game;
|
|
|
|
|
|
public GameBridgeEngine(FNAGame game)
|
|
|
{
|
|
|
this.game = game;
|
|
|
}
|
|
|
|
|
|
public override void Update(double dt)
|
|
|
{
|
|
|
|
|
|
foreach (ref readonly var windowMessage in ReadMessages<ToggleWindowTypeMessage>())
|
|
|
{
|
|
|
switch (windowMessage.Window)
|
|
|
{
|
|
|
case Window.Debug:
|
|
|
game.show_another_window = !game.show_another_window;
|
|
|
break;
|
|
|
case Window.Budget:
|
|
|
game.showBudget = !game.showBudget;
|
|
|
break;
|
|
|
case Window.Forest:
|
|
|
game.showForest = !game.showForest;
|
|
|
break;
|
|
|
case Window.News:
|
|
|
game.showNews = !game.showNews;
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
}
|
|
|
foreach (ref readonly var visibilityMessage in ReadMessages<ToggleVisibilityMessage>())
|
|
|
{
|
|
|
|
|
|
switch (visibilityMessage.Element)
|
|
|
{
|
|
|
case Element.Grid:
|
|
|
game.showGrid = !game.showGrid;
|
|
|
break;
|
|
|
case Element.Trees:
|
|
|
game.showTrees = !game.showTrees;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
foreach (ref readonly var stateMessage in ReadMessages<GameStateMessage>())
|
|
|
{
|
|
|
game.isPlaying = stateMessage.isPlaying;
|
|
|
}
|
|
|
foreach (ref readonly var resolutionMessage in ReadMessages<SetResolutionMessage>())
|
|
|
{
|
|
|
game.setResolution(resolutionMessage.resolution,
|
|
|
resolutionMessage.fullscreen);
|
|
|
|
|
|
}
|
|
|
foreach (ref readonly var fontMessage in ReadMessages<SetFontMessage>())
|
|
|
{
|
|
|
game.setFont(fontMessage.fontName, fontMessage.fontSize);
|
|
|
Options.writeOptions(fontMessage.fontName, fontMessage.fontSize);
|
|
|
|
|
|
}
|
|
|
|
|
|
game.in_zone = false;
|
|
|
foreach (ref readonly var entity in ReadEntities<AreaComponent>())
|
|
|
{
|
|
|
var areaComponent = GetComponent<AreaComponent>(entity);
|
|
|
var contractStatusComponent = GetComponent<ContractStatusComponent>(entity);
|
|
|
foreach (var square in areaComponent.squares)
|
|
|
{
|
|
|
if (game.mouseGrid == square)
|
|
|
{
|
|
|
game.in_zone = true;
|
|
|
if (contractStatusComponent.status == ContractStatus.Active)
|
|
|
{
|
|
|
game.in_active_zone = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|