Merge pull request #6957 from ScottNZ/bleed

Set passenger facings when they are unloading
This commit is contained in:
obrakmann
2014-11-15 23:54:15 +01:00
3 changed files with 27 additions and 1 deletions

View File

@@ -8,6 +8,7 @@
*/
#endregion
using System;
using System.Linq;
using System.Collections.Generic;
using OpenRA.Traits;
@@ -27,6 +28,9 @@ namespace OpenRA.Mods.RA
public readonly string[] InitialUnits = { };
public readonly bool EjectOnSell = true;
[Desc("Which direction the passenger will face (relative to the transport) when unloading.")]
public readonly int PassengerFacing = 128;
public object Create(ActorInitializer init) { return new Cargo(init, this); }
}
@@ -36,6 +40,7 @@ namespace OpenRA.Mods.RA
readonly Actor self;
readonly List<Actor> cargo = new List<Actor>();
readonly HashSet<Actor> reserves = new HashSet<Actor>();
readonly Lazy<IFacing> facing;
int totalWeight = 0;
int reservedWeight = 0;
@@ -82,6 +87,7 @@ namespace OpenRA.Mods.RA
totalWeight = cargo.Sum(c => GetWeight(c));
}
facing = Exts.Lazy(self.TraitOrDefault<IFacing>);
}
public void Created(Actor self)
@@ -184,19 +190,38 @@ namespace OpenRA.Mods.RA
public Actor Unload(Actor self)
{
var a = cargo[0];
cargo.RemoveAt(0);
totalWeight -= GetWeight(a);
SetPassengerFacing(a);
foreach (var npe in self.TraitsImplementing<INotifyPassengerExited>())
npe.PassengerExited(self, a);
var p = a.Trait<Passenger>();
p.Transport = null;
foreach (var u in p.Info.GrantUpgrades)
self.Trait<UpgradeManager>().RevokeUpgrade(self, u, p);
return a;
}
void SetPassengerFacing(Actor passenger)
{
if (facing.Value == null)
return;
var passengerFacing = passenger.TraitOrDefault<IFacing>();
if (passengerFacing != null)
passengerFacing.Facing = facing.Value.Facing + Info.PassengerFacing;
var passengerTurreted = passenger.TraitOrDefault<Turreted>();
if (passengerTurreted != null)
passengerTurreted.TurretFacing = facing.Value.Facing + Info.PassengerFacing;
}
public IEnumerable<PipType> GetPips(Actor self)
{
var numPips = Info.PipCount;

View File

@@ -69,4 +69,4 @@ LST:
Types: Infantry, Vehicle
MaxWeight: 5
PipCount: 5
PassengerFacing: 0

View File

@@ -234,6 +234,7 @@ LST:
Types: Infantry, Vehicle
MaxWeight: 5
PipCount: 5
PassengerFacing: 0
RepairableNear:
Explodes:
Weapon: UnitExplodeShip