From 17413f81ff78a85fd39c02ce1f04efc51537b48d Mon Sep 17 00:00:00 2001 From: Westin Miller Date: Fri, 26 Jan 2018 21:48:46 -0800 Subject: [PATCH] Character view model and fixed character display --- Torch.Server/Torch.Server.csproj | 7 +++++ .../ViewModels/Entities/CharacterViewModel.cs | 7 ++++- .../ViewModels/Entities/EntityViewModel.cs | 10 +++++-- .../Views/Entities/CharacterView.xaml | 30 +++++++++++++++++++ .../Views/Entities/CharacterView.xaml.cs | 28 +++++++++++++++++ Torch.Server/Views/EntitiesControl.xaml | 2 +- Torch.Server/Views/EntitiesControl.xaml.cs | 2 ++ 7 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 Torch.Server/Views/Entities/CharacterView.xaml create mode 100644 Torch.Server/Views/Entities/CharacterView.xaml.cs diff --git a/Torch.Server/Torch.Server.csproj b/Torch.Server/Torch.Server.csproj index 4400e35..18431c5 100644 --- a/Torch.Server/Torch.Server.csproj +++ b/Torch.Server/Torch.Server.csproj @@ -245,6 +245,9 @@ + + CharacterView.xaml + EntityControlHost.xaml @@ -378,6 +381,10 @@ Designer MSBuild:Compile + + MSBuild:Compile + Designer + Designer MSBuild:Compile diff --git a/Torch.Server/ViewModels/Entities/CharacterViewModel.cs b/Torch.Server/ViewModels/Entities/CharacterViewModel.cs index d54b005..e111666 100644 --- a/Torch.Server/ViewModels/Entities/CharacterViewModel.cs +++ b/Torch.Server/ViewModels/Entities/CharacterViewModel.cs @@ -6,7 +6,12 @@ namespace Torch.Server.ViewModels.Entities { public CharacterViewModel(MyCharacter character, EntityTreeViewModel tree) : base(character, tree) { - + character.ControllerInfo.ControlAcquired += (x) => { OnPropertyChanged(nameof(Name)); }; + character.ControllerInfo.ControlReleased += (x) => { OnPropertyChanged(nameof(Name)); }; + } + + public CharacterViewModel() + { } } } diff --git a/Torch.Server/ViewModels/Entities/EntityViewModel.cs b/Torch.Server/ViewModels/Entities/EntityViewModel.cs index f4ce39c..c3502d6 100644 --- a/Torch.Server/ViewModels/Entities/EntityViewModel.cs +++ b/Torch.Server/ViewModels/Entities/EntityViewModel.cs @@ -1,7 +1,9 @@ using System.Windows.Controls; +using Sandbox.Game.World; using Torch.API.Managers; using Torch.Collections; using Torch.Server.Managers; +using VRage.Game.Entity; using VRage.Game.ModAPI; using VRage.ModAPI; using VRageMath; @@ -32,10 +34,11 @@ namespace Torch.Server.ViewModels.Entities public virtual string Name { - get => Entity?.DisplayName; + get => Entity?.DisplayName ?? (Entity != null ? $"eid:{Entity.EntityId}" : "nil"); set { - TorchBase.Instance.InvokeBlocking(() => Entity.DisplayName = value); + if (Entity!=null) + TorchBase.Instance.InvokeBlocking(() => Entity.DisplayName = value); OnPropertyChanged(); } } @@ -48,7 +51,8 @@ namespace Torch.Server.ViewModels.Entities if (!Vector3D.TryParse(value, out Vector3D v)) return; - TorchBase.Instance.InvokeBlocking(() => Entity.SetPosition(v)); + if (Entity != null) + TorchBase.Instance.InvokeBlocking(() => Entity.SetPosition(v)); OnPropertyChanged(); } } diff --git a/Torch.Server/Views/Entities/CharacterView.xaml b/Torch.Server/Views/Entities/CharacterView.xaml new file mode 100644 index 0000000..cf50c3d --- /dev/null +++ b/Torch.Server/Views/Entities/CharacterView.xaml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Torch.Server/Views/Entities/CharacterView.xaml.cs b/Torch.Server/Views/Entities/CharacterView.xaml.cs new file mode 100644 index 0000000..a79f437 --- /dev/null +++ b/Torch.Server/Views/Entities/CharacterView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Torch.Server.Views.Entities +{ + /// + /// Interaction logic for GridView.xaml + /// + public partial class CharacterView : UserControl + { + public CharacterView() + { + InitializeComponent(); + } + } +} diff --git a/Torch.Server/Views/EntitiesControl.xaml b/Torch.Server/Views/EntitiesControl.xaml index 39c508f..9e3e342 100644 --- a/Torch.Server/Views/EntitiesControl.xaml +++ b/Torch.Server/Views/EntitiesControl.xaml @@ -54,7 +54,7 @@ - + diff --git a/Torch.Server/Views/EntitiesControl.xaml.cs b/Torch.Server/Views/EntitiesControl.xaml.cs index 1ba3541..1095912 100644 --- a/Torch.Server/Views/EntitiesControl.xaml.cs +++ b/Torch.Server/Views/EntitiesControl.xaml.cs @@ -48,6 +48,8 @@ namespace Torch.Server.Views EditorFrame.Content = new BlockView {DataContext = bvm}; if (e.NewValue is VoxelMapViewModel vvm) EditorFrame.Content = new VoxelMapView {DataContext = vvm}; + if (e.NewValue is CharacterViewModel cvm) + EditorFrame.Content = new CharacterView {DataContext = cvm}; } else {