1.script.cs
using System.IO;
using System.Runtime.Serialization;
using System.Text;
namespace PrimalEditor.Components
{
DataContract
class Script : Component
{
private string _name;
DataMember
public string Name
{
get => _name;
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged(Name);
}
}
}
public override IMSComponent GetMultiselectionComponent(MSEntity msEntity) => new MSScript(msEntity);
public override void WriteToBinary(BinaryWriter bw)
{
var nameBytes = Encoding.UTF8.GetBytes(Name);
bw.Write(nameBytes.Length);
bw.Write(nameBytes);
}
public Script(GameEntity owner) : base(owner)
{
}
}
sealed class MSScript : MSComponent<Script>
{
private string _name;
DataMember
public string Name
{
get => _name;
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged(Name);
}
}
}
protected override bool UpdateComponents(string propertyName)
{
if (propertyName == nameof(Name))
{
SelectedComponents.ForEach(c => c.Name = _name);
return true;
}
return false;
}
protected override bool UpdateMSComponent()
{
Name = MSEntity.GetMixedValue(SelectedComponents, new Func<Script, string>(x => x.Name));
return true;
}
public MSScript(MSEntity msEntity) : base(msEntity)
{
Refresh();
}
}
}