Make ActorPreview and EditorActorPreview wrap ActorReference.

This commit is contained in:
Paul Chote
2020-06-12 13:21:09 +01:00
committed by reaperrr
parent ae7cfa56b7
commit c6c3a8c60d
22 changed files with 265 additions and 162 deletions

View File

@@ -130,23 +130,24 @@ namespace OpenRA.Mods.Common.Traits
yield return new EditorActorSlider("Facing", EditorFacingDisplayOrder, 0, 255, 8,
actor =>
{
var init = actor.Init<FacingInit>();
var init = actor.GetInitOrDefault<FacingInit>(this);
return init != null ? init.Value : InitialFacing;
},
(actor, value) =>
{
// TODO: This can all go away once turrets are properly defined as a relative facing
var turretInit = actor.Init<TurretFacingInit>();
var turretsInit = actor.Init<TurretFacingsInit>();
var facingInit = actor.Init<FacingInit>();
var turretsInit = actor.GetInitOrDefault<TurretFacingsInit>();
var facingInit = actor.GetInitOrDefault<FacingInit>();
var oldFacing = facingInit != null ? facingInit.Value : InitialFacing;
var newFacing = (int)value;
if (turretInit != null)
var turretInits = actor.GetInits<TurretFacingInit>().ToList();
actor.RemoveInits<TurretFacingInit>();
foreach (var turretInit in turretInits)
{
var newTurretFacing = (turretInit.Value + newFacing - oldFacing + 255) % 255;
actor.ReplaceInit(new TurretFacingInit(this, newTurretFacing));
actor.AddInit(new TurretFacingInit(turretInit.InstanceName, newTurretFacing));
}
if (turretsInit != null)