From 21ab0b461cab34c3b879429e62e862a56b9f7c70 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 17 Jun 2012 17:51:25 -0500 Subject: [PATCH] Added straightforward hover behavior for all units. Give a unit a nonzero Altitude: in its Mobile: block and the WithShadow: trait to make it hover. --- OpenRA.Mods.RA/Move/Mobile.cs | 9 +++------ OpenRA.Mods.RA/Move/Move.cs | 8 ++++++++ OpenRA.Mods.RA/Render/WithShadow.cs | 3 ++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/OpenRA.Mods.RA/Move/Mobile.cs b/OpenRA.Mods.RA/Move/Mobile.cs index 0dddfdd7f0..c674139016 100755 --- a/OpenRA.Mods.RA/Move/Mobile.cs +++ b/OpenRA.Mods.RA/Move/Mobile.cs @@ -30,6 +30,7 @@ namespace OpenRA.Mods.RA.Move public readonly int Speed = 1; public readonly bool OnRails = false; public readonly bool SharesCell = false; + public readonly int Altitude; public virtual object Create(ActorInitializer init) { return new Mobile(init, this); } @@ -110,7 +111,7 @@ namespace OpenRA.Mods.RA.Move int2 __fromCell, __toCell; public SubCell fromSubCell, toSubCell; - int __altitude; + //int __altitude; [Sync] public int Facing @@ -120,11 +121,7 @@ namespace OpenRA.Mods.RA.Move } [Sync] - public int Altitude - { - get { return __altitude; } - set { __altitude = value; } - } + public int Altitude { get; set; } public int ROT { get { return Info.ROT; } } public int InitialFacing { get { return Info.InitialFacing; } } diff --git a/OpenRA.Mods.RA/Move/Move.cs b/OpenRA.Mods.RA/Move/Move.cs index fb4ecbcd5d..15d090d3c4 100755 --- a/OpenRA.Mods.RA/Move/Move.cs +++ b/OpenRA.Mods.RA/Move/Move.cs @@ -95,6 +95,14 @@ namespace OpenRA.Mods.RA.Move public override Activity Tick( Actor self ) { var mobile = self.Trait(); + var info = self.Info.Traits.Get(); + + if (mobile.Altitude != info.Altitude) + { + if (mobile.Altitude < info.Altitude) + ++mobile.Altitude; + return this; + } if (destination == mobile.toCell) return NextActivity; diff --git a/OpenRA.Mods.RA/Render/WithShadow.cs b/OpenRA.Mods.RA/Render/WithShadow.cs index c07a047dba..1419dd0d8a 100644 --- a/OpenRA.Mods.RA/Render/WithShadow.cs +++ b/OpenRA.Mods.RA/Render/WithShadow.cs @@ -13,6 +13,7 @@ using System.Collections.Generic; using System.Linq; using OpenRA.Traits; using OpenRA.Mods.RA.Air; +using OpenRA.Mods.RA.Move; namespace OpenRA.Mods.RA.Render { @@ -25,7 +26,7 @@ namespace OpenRA.Mods.RA.Render var move = self.Trait(); /* rude hack */ - var visualOffset = (move is Helicopter && move.Altitude > 0) + var visualOffset = ((move is Helicopter || move is Mobile) && move.Altitude > 0) ? Math.Abs((self.ActorID + Game.LocalTick) / 5 % 4 - 1) - 1 : 0; var shadowSprites = r.Select(a => a.WithPalette("shadow"));