Simple network replication for hands, untested.

This commit is contained in:
PJB3005
2017-09-26 21:27:48 +02:00
parent a464acf354
commit 4f2d059de4
8 changed files with 107 additions and 10 deletions

View File

@@ -62,6 +62,8 @@
<Compile Include="EntryPoint.cs" />
<Compile Include="Prototypes\DiscoBall.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="GameObjects\Components\Items\HandsComponent.cs" />
<Compile Include="Interfaces\GameObjects\Components\Items\IHandsComponent.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Content.Shared\Content.Shared.csproj">

View File

@@ -1,4 +1,6 @@
using SS14.Shared.ContentPack;
using Content.Client.GameObjects;
using Content.Client.Interfaces.GameObjects;
using SS14.Shared.ContentPack;
using SS14.Shared.Interfaces.GameObjects;
using SS14.Shared.IoC;
@@ -12,6 +14,9 @@ namespace Content.Client
factory.RegisterIgnore("Inventory");
factory.RegisterIgnore("Item");
factory.Register<HandsComponent>();
factory.RegisterReference<HandsComponent, IHandsComponent>();
}
}
}

View File

@@ -0,0 +1,34 @@
using Content.Client.Interfaces.GameObjects;
using Content.Shared.GameObjects;
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 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);
}
}
}
}

View File

@@ -0,0 +1,16 @@
using Content.Client.Interfaces.GameObjects;
using Content.Shared.GameObjects;
using SS14.Shared.GameObjects;
using SS14.Shared.Interfaces.GameObjects;
using SS14.Shared.IoC;
using System.Collections.Generic;
namespace Content.Client.Interfaces.GameObjects
{
// HYPER SIMPLE HANDS API CLIENT SIDE.
// To allow for showing the HUD, mostly.
public interface IHandsComponent
{
IEntity GetEntity(string index);
}
}