Files
tbd-station-14/Content.Server/GameObjects/EntitySystems/Click/ClickParser.cs
Acruid 830159390b Input Handling (#90)
* Migrates the Examine system to the new Input system.

* Update Engine.
2018-08-08 11:43:49 -07:00

68 lines
2.1 KiB
C#

using System;
using SS14.Server.Interfaces.Player;
using SS14.Shared.GameObjects;
using SS14.Shared.GameObjects.Systems;
using SS14.Shared.Input;
using SS14.Shared.Interfaces.GameObjects;
using SS14.Shared.Interfaces.Network;
using SS14.Shared.IoC;
namespace Content.Server.GameObjects.EntitySystems
{
/// <summary>
/// Catches clicks from the client and parses them to relevant entity systems
/// </summary>
public class ClickParserSystem : EntitySystem
{
/// <inheritdoc />
public override void RegisterMessageTypes()
{
base.RegisterMessageTypes();
RegisterMessageType<ClickEventMessage>();
}
/// <summary>
/// Grab click events sent from the client input system
/// </summary>
/// <param name="channel"></param>
/// <param name="message"></param>
public override void HandleNetMessage(INetChannel channel, EntitySystemMessage message)
{
base.HandleNetMessage(channel, message);
var playerMan = IoCManager.Resolve<IPlayerManager>();
var session = playerMan.GetSessionByChannel(channel);
var playerentity = session.AttachedEntity;
if (playerentity == null)
return;
switch (message)
{
case ClickEventMessage msg:
ParseClickMessage(msg, playerentity);
break;
}
}
/// <summary>
/// Parse click to the relevant entity system
/// </summary>
/// <param name="message"></param>
/// <param name="player"></param>
private void ParseClickMessage(ClickEventMessage message, IEntity player)
{
switch (message.Click)
{
case ClickType.Left:
EntitySystemManager.GetEntitySystem<InteractionSystem>().UserInteraction(message, player);
break;
case ClickType.Right:
//Verb System
break;
}
}
}
}