Files
tbd-station-14/Content.Client/GameObjects/Components/Items/ClientHandsComponent.cs
Pieter-Jan Briers 68f4fd995e Update submodule, fix HandsGui.
HandsGui now works with the new system. The port was sloppy though so
somebody might want to come and refactor this so that it doesn't force
its own position and size.
2017-11-13 19:48:21 +01:00

57 lines
1.7 KiB
C#

using Content.Client.Interfaces.GameObjects;
using Content.Client.UserInterface;
using Content.Shared.GameObjects;
using Lidgren.Network;
using SS14.Client.Interfaces.UserInterface;
using SS14.Client.UserInterface;
using SS14.Shared;
using SS14.Shared.GameObjects;
using SS14.Shared.Interfaces.GameObjects;
using SS14.Shared.IoC;
using System.Collections.Generic;
namespace Content.Client.GameObjects
{
public class HandsComponent : SharedHandsComponent, IHandsComponent
{
private readonly Dictionary<string, IEntity> hands = new Dictionary<string, IEntity>();
public string ActiveIndex { get; private set; }
public IEntity GetEntity(string index)
{
if (hands.TryGetValue(index, out var entity))
{
return entity;
}
return null;
}
public override void HandleComponentState(ComponentState state)
{
var cast = (HandsComponentState)state;
hands.Clear();
foreach (var hand in cast.Hands)
{
hands[hand.Key] = Owner.EntityManager.GetEntity(hand.Value);
}
ActiveIndex = cast.ActiveIndex;
// Tell UI to update.
var uiMgr = IoCManager.Resolve<IUserInterfaceManager>();
if (!uiMgr.TryGetSingleComponent<HandsGui>(out var component))
{
component = new HandsGui();
uiMgr.AddComponent(component);
}
component.UpdateHandIcons();
}
public void SendChangeHand(string index)
{
Owner.SendComponentNetworkMessage(this, NetDeliveryMethod.ReliableUnordered, index);
}
}
}