Keep selection on mcv deploy/undeploy. Bonus: build tab opens on mcv deploy

This commit is contained in:
Paul Chote
2010-07-25 20:01:08 +12:00
parent e850cb7ff8
commit 4650642311
3 changed files with 24 additions and 3 deletions

View File

@@ -18,7 +18,17 @@ namespace OpenRA
public class Selection
{
List<Actor> actors = new List<Actor>();
public void Add(World w, Actor a)
{
actors.Add(a);
foreach (var ns in w.WorldActor.traits.WithInterface<INotifySelection>())
ns.SelectionChanged();
}
public bool Contains(Actor a)
{
return actors.AsEnumerable().Contains(a);
}
public void Combine(World world, IEnumerable<Actor> newSelection, bool isCombine, bool isClick)
{
var oldSelection = actors.AsEnumerable();

View File

@@ -9,6 +9,8 @@
#endregion
using System;
using System.Linq;
using System.Collections.Generic;
using OpenRA.Traits;
namespace OpenRA.Mods.RA.Activities
@@ -36,14 +38,19 @@ namespace OpenRA.Mods.RA.Activities
{
if (isCanceled) return NextActivity;
self.World.AddFrameEndTask(_ =>
self.World.AddFrameEndTask(w =>
{
var selected = Game.controller.selection.Contains(self);
self.World.Remove(self);
foreach (var s in sounds)
Sound.PlayToPlayer(self.Owner, s, self.CenterLocation);
var a = self.World.CreateActor(actor, self.Location + offset, self.Owner);
a.Health = GetHealthToTransfer(self, a, transferPercentage);
if (selected)
Game.controller.selection.Add(w, a);
});
return this;
}

View File

@@ -18,13 +18,17 @@ namespace OpenRA.Mods.RA.Activities
public IActivity NextActivity { get; set; }
bool started;
void DoUndeploy(World w,Actor self)
void DoUndeploy(World w, Actor self)
{
var selected = Game.controller.selection.Contains(self);
w.Remove(self);
var mcv = w.CreateActor("mcv", self.Location + new int2(1, 1), self.Owner);
mcv.Health = TransformIntoActor.GetHealthToTransfer(self, mcv, true);
mcv.traits.Get<Unit>().Facing = 96;
if (selected)
Game.controller.selection.Add(w, mcv);
}
public IActivity Tick(Actor self)