Commit Description:
Merge in m4-beginning.
Commit Description:
Merge in m4-beginning.
References:
File last commit:
Show/Diff file:
Action:
isometric-park-fna/Engines/GameBridgeEngine.cs
104 lines | 3.3 KiB | text/x-csharp | CSharpLexer
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;
}
}
}
}
}
}
}