Fix player attachment events.

This commit is contained in:
Pieter-Jan Briers
2019-04-29 12:53:09 +02:00
parent 02e35502a1
commit 77d92675e2

View File

@@ -44,6 +44,8 @@ namespace Content.Client
{ {
public class EntryPoint : GameClient public class EntryPoint : GameClient
{ {
[Dependency] private readonly IPlayerManager _playerManager;
public override void Init() public override void Init()
{ {
#if DEBUG #if DEBUG
@@ -146,6 +148,8 @@ namespace Content.Client
var stylesheet = new NanoStyle(); var stylesheet = new NanoStyle();
IoCManager.Resolve<IUserInterfaceManager>().Stylesheet = stylesheet.Stylesheet; IoCManager.Resolve<IUserInterfaceManager>().Stylesheet = stylesheet.Stylesheet;
IoCManager.InjectDependencies(this);
} }
/// <summary> /// <summary>
@@ -155,33 +159,24 @@ namespace Content.Client
/// <param name="args"></param> /// <param name="args"></param>
public void SubscribePlayerAttachmentEvents(object sender, EventArgs args) public void SubscribePlayerAttachmentEvents(object sender, EventArgs args)
{ {
IoCManager.Resolve<IPlayerManager>().LocalPlayer.EntityAttached += AttachPlayerToEntity; _playerManager.LocalPlayer.EntityAttached += AttachPlayerToEntity;
IoCManager.Resolve<IPlayerManager>().LocalPlayer.EntityDetached += DetachPlayerFromEntity; _playerManager.LocalPlayer.EntityDetached += DetachPlayerFromEntity;
AttachPlayerToEntity(IoCManager.Resolve<IPlayerManager>().LocalPlayer, EventArgs.Empty);
} }
/// <summary> /// <summary>
/// Add the character interface master which combines all character interfaces into one window /// Add the character interface master which combines all character interfaces into one window
/// </summary> /// </summary>
/// <param name="sender"></param> public static void AttachPlayerToEntity(EntityAttachedEventArgs eventArgs)
/// <param name="args"></param>
public void AttachPlayerToEntity(object sender, EventArgs args)
{ {
var localplayer = (LocalPlayer)sender; eventArgs.NewEntity.AddComponent<CharacterInterface>();
localplayer.ControlledEntity?.AddComponent<CharacterInterface>();
} }
/// <summary> /// <summary>
/// Remove the character interface master from this entity now that we have detached ourselves from it /// Remove the character interface master from this entity now that we have detached ourselves from it
/// </summary> /// </summary>
/// <param name="sender"></param> public static void DetachPlayerFromEntity(EntityDetachedEventArgs eventArgs)
/// <param name="args"></param>
public void DetachPlayerFromEntity(object sender, EventArgs args)
{ {
var localplayer = (LocalPlayer)sender; eventArgs.OldEntity.RemoveComponent<CharacterInterface>();
//Wont work atm, controlled entity gets nulled before this event fires
localplayer.ControlledEntity?.RemoveComponent<CharacterInterface>();
} }
public override void PostInit() public override void PostInit()