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