Merge pull request #7193 from pchote/style

Fix and enforce code style in Mods.Common, D2k, and TS.
This commit is contained in:
Oliver Brakmann
2014-12-26 19:33:27 +01:00
39 changed files with 216 additions and 198 deletions

View File

@@ -183,8 +183,14 @@ check:
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Renderer.Null @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Renderer.Null
@echo "Checking for code style violations in OpenRA.GameMonitor..." @echo "Checking for code style violations in OpenRA.GameMonitor..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.GameMonitor @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.GameMonitor
@echo "Checking for code style violations in OpenRA.Mods.Common..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.Common
@echo "Checking for code style violations in OpenRA.Mods.Cnc..." @echo "Checking for code style violations in OpenRA.Mods.Cnc..."
@mono --debug OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.Cnc @mono --debug OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.Cnc
@echo "Checking for code style violations in OpenRA.Mods.D2k..."
@mono --debug OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k
@echo "Checking for code style violations in OpenRA.Mods.TS..."
@mono --debug OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS
# Builds and exports tilesets from a bitmap # Builds and exports tilesets from a bitmap
tsbuild_SRCS := $(shell find OpenRA.TilesetBuilder/ -iname '*.cs') tsbuild_SRCS := $(shell find OpenRA.TilesetBuilder/ -iname '*.cs')

View File

@@ -26,7 +26,7 @@ namespace OpenRA.Mods.Common.Activities
this.desiredFacing = desiredFacing; this.desiredFacing = desiredFacing;
} }
public override Activity Tick( Actor self ) public override Activity Tick(Actor self)
{ {
if (IsCanceled) if (IsCanceled)
return NextActivity; return NextActivity;
@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.Activities
var facing = self.Trait<IFacing>(); var facing = self.Trait<IFacing>();
if( desiredFacing == facing.Facing ) if (desiredFacing == facing.Facing)
return NextActivity; return NextActivity;
facing.Facing = Util.TickFacing(facing.Facing, desiredFacing, facing.ROT); facing.Facing = Util.TickFacing(facing.Facing, desiredFacing, facing.ROT);

View File

@@ -30,9 +30,9 @@ namespace OpenRA.Mods.Common.Activities
return (remainingTicks-- == 0) ? NextActivity : this; return (remainingTicks-- == 0) ? NextActivity : this;
} }
public override void Cancel( Actor self ) public override void Cancel(Actor self)
{ {
if( !interruptable ) if (!interruptable)
return; return;
remainingTicks = 0; remainingTicks = 0;
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.Activities
return (f == null || f()) ? NextActivity : this; return (f == null || f()) ? NextActivity : this;
} }
public override void Cancel( Actor self ) public override void Cancel(Actor self)
{ {
if (!interruptable) if (!interruptable)
return; return;

View File

@@ -17,6 +17,8 @@ namespace OpenRA.Mods.Common.Effects
{ {
public class Beacon : IEffect public class Beacon : IEffect
{ {
static readonly int MaxArrowHeight = 512;
readonly Player owner; readonly Player owner;
readonly WPos position; readonly WPos position;
readonly string palettePrefix; readonly string palettePrefix;
@@ -26,8 +28,7 @@ namespace OpenRA.Mods.Common.Effects
readonly Animation poster; readonly Animation poster;
readonly Animation clock; readonly Animation clock;
static readonly int maxArrowHeight = 512; int arrowHeight = MaxArrowHeight;
int arrowHeight = maxArrowHeight;
int arrowSpeed = 50; int arrowSpeed = 50;
// Player-placed beacons are removed after a delay // Player-placed beacons are removed after a delay
@@ -69,7 +70,7 @@ namespace OpenRA.Mods.Common.Effects
public void Tick(World world) public void Tick(World world)
{ {
arrowHeight += arrowSpeed; arrowHeight += arrowSpeed;
var clamped = arrowHeight.Clamp(0, maxArrowHeight); var clamped = arrowHeight.Clamp(0, MaxArrowHeight);
if (arrowHeight != clamped) if (arrowHeight != clamped)
{ {
arrowHeight = clamped; arrowHeight = clamped;

View File

@@ -19,6 +19,8 @@ namespace OpenRA.Mods.Common.Effects
{ {
public class FloatingText : IEffect public class FloatingText : IEffect
{ {
static readonly WVec Velocity = new WVec(0, 0, 86);
readonly SpriteFont font; readonly SpriteFont font;
readonly string text; readonly string text;
Color color; Color color;
@@ -34,13 +36,12 @@ namespace OpenRA.Mods.Common.Effects
this.remaining = duration; this.remaining = duration;
} }
static readonly WVec velocity = new WVec(0, 0, 86);
public void Tick(World world) public void Tick(World world)
{ {
if (--remaining <= 0) if (--remaining <= 0)
world.AddFrameEndTask(w => w.Remove(this)); world.AddFrameEndTask(w => w.Remove(this));
pos += velocity; pos += Velocity;
} }
public IEnumerable<IRenderable> Render(WorldRenderer wr) public IEnumerable<IRenderable> Render(WorldRenderer wr)

View File

@@ -19,6 +19,8 @@ namespace OpenRA.Mods.Common.Graphics
public int Length { get { return trail.Length; } } public int Length { get { return trail.Length; } }
readonly World world; readonly World world;
readonly Color color;
readonly int zOffset;
// Store trail positions in a circular buffer // Store trail positions in a circular buffer
readonly WPos[] trail; readonly WPos[] trail;
@@ -26,9 +28,6 @@ namespace OpenRA.Mods.Common.Graphics
int length; int length;
int skip; int skip;
readonly Color color;
readonly int zOffset;
public ContrailRenderable(World world, Color color, int length, int skip, int zOffset) public ContrailRenderable(World world, Color color, int length, int skip, int zOffset)
: this(world, new WPos[length], 0, 0, skip, color, zOffset) { } : this(world, new WPos[length], 0, 0, skip, color, zOffset) { }
@@ -43,7 +42,7 @@ namespace OpenRA.Mods.Common.Graphics
this.zOffset = zOffset; this.zOffset = zOffset;
} }
public WPos Pos { get { return trail[idx(next - 1)]; } } public WPos Pos { get { return trail[Index(next - 1)]; } }
public float Scale { get { return 1f; } } public float Scale { get { return 1f; } }
public PaletteReference Palette { get { return null; } } public PaletteReference Palette { get { return null; } }
public int ZOffset { get { return zOffset; } } public int ZOffset { get { return zOffset; } }
@@ -67,13 +66,13 @@ namespace OpenRA.Mods.Common.Graphics
wlr.LineWidth = wr.Viewport.Zoom; wlr.LineWidth = wr.Viewport.Zoom;
// Start of the first line segment is the tail of the list - don't smooth it. // Start of the first line segment is the tail of the list - don't smooth it.
var curPos = trail[idx(next - skip - 1)]; var curPos = trail[Index(next - skip - 1)];
var curCell = wr.world.Map.CellContaining(curPos); var curCell = wr.world.Map.CellContaining(curPos);
var curColor = color; var curColor = color;
for (var i = 0; i < length - skip - 4; i++) for (var i = 0; i < length - skip - 4; i++)
{ {
var j = next - skip - i - 2; var j = next - skip - i - 2;
var nextPos = Average(trail[idx(j)], trail[idx(j - 1)], trail[idx(j - 2)], trail[idx(j - 3)]); var nextPos = Average(trail[Index(j)], trail[Index(j - 1)], trail[Index(j - 2)], trail[Index(j - 3)]);
var nextCell = wr.world.Map.CellContaining(nextPos); var nextCell = wr.world.Map.CellContaining(nextPos);
var nextColor = Exts.ColorLerp(i * 1f / (length - 4), color, Color.Transparent); var nextColor = Exts.ColorLerp(i * 1f / (length - 4), color, Color.Transparent);
@@ -91,7 +90,7 @@ namespace OpenRA.Mods.Common.Graphics
public void RenderDebugGeometry(WorldRenderer wr) { } public void RenderDebugGeometry(WorldRenderer wr) { }
// Array index modulo length // Array index modulo length
int idx(int i) int Index(int i)
{ {
var j = i % trail.Length; var j = i % trail.Length;
return j < 0 ? j + trail.Length : j; return j < 0 ? j + trail.Length : j;
@@ -105,7 +104,7 @@ namespace OpenRA.Mods.Common.Graphics
public void Update(WPos pos) public void Update(WPos pos)
{ {
trail[next] = pos; trail[next] = pos;
next = idx(next + 1); next = Index(next + 1);
if (length < trail.Length) if (length < trail.Length)
length++; length++;

View File

@@ -87,13 +87,13 @@ namespace OpenRA.Mods.Common.Graphics
public IRenderable AsDecoration() { return this; } public IRenderable AsDecoration() { return this; }
// This will need generalizing once we support TS/RA2 terrain // This will need generalizing once we support TS/RA2 terrain
static readonly float[] groundNormal = new float[] { 0, 0, 1, 1 }; static readonly float[] GroundNormal = new float[] { 0, 0, 1, 1 };
public void BeforeRender(WorldRenderer wr) public void BeforeRender(WorldRenderer wr)
{ {
var draw = voxels.Where(v => v.DisableFunc == null || !v.DisableFunc()); var draw = voxels.Where(v => v.DisableFunc == null || !v.DisableFunc());
renderProxy = Game.Renderer.WorldVoxelRenderer.RenderAsync( renderProxy = Game.Renderer.WorldVoxelRenderer.RenderAsync(
wr, draw, camera, scale, groundNormal, lightSource, wr, draw, camera, scale, GroundNormal, lightSource,
lightAmbientColor, lightDiffuseColor, lightAmbientColor, lightDiffuseColor,
palette, normalsPalette, shadowPalette); palette, normalsPalette, shadowPalette);
} }
@@ -154,15 +154,15 @@ namespace OpenRA.Mods.Common.Graphics
} }
} }
static readonly uint[] ix = new uint[] { 0, 0, 0, 0, 3, 3, 3, 3 }; static readonly uint[] CornerXIndex = new uint[] { 0, 0, 0, 0, 3, 3, 3, 3 };
static readonly uint[] iy = new uint[] { 1, 1, 4, 4, 1, 1, 4, 4 }; static readonly uint[] CornerYIndex = new uint[] { 1, 1, 4, 4, 1, 1, 4, 4 };
static readonly uint[] iz = new uint[] { 2, 5, 2, 5, 2, 5, 2, 5 }; static readonly uint[] CornerZIndex = new uint[] { 2, 5, 2, 5, 2, 5, 2, 5 };
static void DrawBoundsBox(float2 pxPos, float[] transform, float[] bounds, Color c) static void DrawBoundsBox(float2 pxPos, float[] transform, float[] bounds, Color c)
{ {
var corners = new float2[8]; var corners = new float2[8];
for (var i = 0; i < 8; i++) for (var i = 0; i < 8; i++)
{ {
var vec = new float[] { bounds[ix[i]], bounds[iy[i]], bounds[iz[i]], 1 }; var vec = new float[] { bounds[CornerXIndex[i]], bounds[CornerYIndex[i]], bounds[CornerZIndex[i]], 1 };
var screen = Util.MatrixVectorMultiply(transform, vec); var screen = Util.MatrixVectorMultiply(transform, vec);
corners[i] = pxPos + new float2(screen[0], screen[1]); corners[i] = pxPos + new float2(screen[0], screen[1]);
} }

View File

@@ -11,8 +11,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.FileSystem; using OpenRA.FileSystem;
using OpenRA.Widgets;
using OpenRA.Mods.Common.Widgets.Logic; using OpenRA.Mods.Common.Widgets.Logic;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.LoadScreens namespace OpenRA.Mods.Common.LoadScreens
{ {

View File

@@ -79,7 +79,7 @@ namespace OpenRA.Mods.Common.Scripting
{ {
var group = actors.ToList(); var group = actors.ToList();
var copy = (LuaFunction)func.CopyReference(); var copy = (LuaFunction)func.CopyReference();
Action<Actor> OnMemberKilled = m => Action<Actor> onMemberKilled = m =>
{ {
try try
{ {
@@ -97,7 +97,7 @@ namespace OpenRA.Mods.Common.Scripting
}; };
foreach (var a in group) foreach (var a in group)
GetScriptTriggers(a).OnKilledInternal += OnMemberKilled; GetScriptTriggers(a).OnKilledInternal += onMemberKilled;
} }
[Desc("Call a function when one of the actors in a group is killed. The callback " + [Desc("Call a function when one of the actors in a group is killed. The callback " +
@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Scripting
{ {
var called = false; var called = false;
var copy = (LuaFunction)func.CopyReference(); var copy = (LuaFunction)func.CopyReference();
Action<Actor> OnMemberKilled = m => Action<Actor> onMemberKilled = m =>
{ {
try try
{ {
@@ -126,7 +126,7 @@ namespace OpenRA.Mods.Common.Scripting
}; };
foreach (var a in actors) foreach (var a in actors)
GetScriptTriggers(a).OnKilledInternal += OnMemberKilled; GetScriptTriggers(a).OnKilledInternal += onMemberKilled;
} }
[Desc("Call a function when this actor produces another actor. " + [Desc("Call a function when this actor produces another actor. " +
@@ -192,7 +192,7 @@ namespace OpenRA.Mods.Common.Scripting
var group = actors.ToList(); var group = actors.ToList();
var copy = (LuaFunction)func.CopyReference(); var copy = (LuaFunction)func.CopyReference();
Action<Actor> OnMemberRemoved = m => Action<Actor> onMemberRemoved = m =>
{ {
try try
{ {
@@ -210,7 +210,7 @@ namespace OpenRA.Mods.Common.Scripting
}; };
foreach (var a in group) foreach (var a in group)
GetScriptTriggers(a).OnRemovedInternal += OnMemberRemoved; GetScriptTriggers(a).OnRemovedInternal += onMemberRemoved;
} }
[Desc("Call a function when this actor is captured. The callback function " + [Desc("Call a function when this actor is captured. The callback function " +
@@ -227,7 +227,7 @@ namespace OpenRA.Mods.Common.Scripting
var called = false; var called = false;
var copy = (LuaFunction)func.CopyReference(); var copy = (LuaFunction)func.CopyReference();
Action<Actor> OnKilledOrCaptured = m => Action<Actor> onKilledOrCaptured = m =>
{ {
try try
{ {
@@ -244,8 +244,8 @@ namespace OpenRA.Mods.Common.Scripting
} }
}; };
GetScriptTriggers(a).OnCapturedInternal += OnKilledOrCaptured; GetScriptTriggers(a).OnCapturedInternal += onKilledOrCaptured;
GetScriptTriggers(a).OnKilledInternal += OnKilledOrCaptured; GetScriptTriggers(a).OnKilledInternal += onKilledOrCaptured;
} }
[Desc("Call a function when all of the actors in a group have been killed or captured. " + [Desc("Call a function when all of the actors in a group have been killed or captured. " +
@@ -255,7 +255,7 @@ namespace OpenRA.Mods.Common.Scripting
var group = actors.ToList(); var group = actors.ToList();
var copy = (LuaFunction)func.CopyReference(); var copy = (LuaFunction)func.CopyReference();
Action<Actor> OnMemberKilledOrCaptured = m => Action<Actor> onMemberKilledOrCaptured = m =>
{ {
try try
{ {
@@ -277,8 +277,8 @@ namespace OpenRA.Mods.Common.Scripting
foreach (var a in group) foreach (var a in group)
{ {
GetScriptTriggers(a).OnCapturedInternal += OnMemberKilledOrCaptured; GetScriptTriggers(a).OnCapturedInternal += onMemberKilledOrCaptured;
GetScriptTriggers(a).OnKilledInternal += OnMemberKilledOrCaptured; GetScriptTriggers(a).OnKilledInternal += onMemberKilledOrCaptured;
} }
} }

View File

@@ -17,9 +17,9 @@ namespace OpenRA.Mods.Common.Server
{ {
public class PlayerPinger : ServerTrait, ITick public class PlayerPinger : ServerTrait, ITick
{ {
int PingInterval = 5000; // Ping every 5 seconds static readonly int PingInterval = 5000; // Ping every 5 seconds
int ConnReportInterval = 20000; // Report every 20 seconds static readonly int ConnReportInterval = 20000; // Report every 20 seconds
int ConnTimeout = 90000; // Drop unresponsive clients after 90 seconds static readonly int ConnTimeout = 90000; // Drop unresponsive clients after 90 seconds
// TickTimeout is in microseconds // TickTimeout is in microseconds
public int TickTimeout { get { return PingInterval * 100; } } public int TickTimeout { get { return PingInterval * 100; } }

View File

@@ -75,8 +75,7 @@ namespace OpenRA.Mods.Common.Traits
WRange.FromCells(Info.Range), WRange.FromCells(Info.Range),
0, 0,
Color.FromArgb(128, Ready() ? Color.White : Color.Red), Color.FromArgb(128, Ready() ? Color.White : Color.Red),
Color.FromArgb(96, Color.Black) Color.FromArgb(96, Color.Black));
);
} }
// Selection bar // Selection bar

View File

@@ -22,5 +22,5 @@ namespace OpenRA.Mods.Common.Traits
public readonly string[] NodeTypes = { "wall" }; public readonly string[] NodeTypes = { "wall" };
} }
public class LineBuild {} public class LineBuild { }
} }

View File

@@ -19,5 +19,5 @@ namespace OpenRA.Mods.Common.Traits
public readonly string[] Types = { "wall" }; public readonly string[] Types = { "wall" };
} }
public class LineBuildNode {} public class LineBuildNode { }
} }

View File

@@ -26,15 +26,15 @@ namespace OpenRA.Mods.Common.Traits
class Burns : ITick, ISync class Burns : ITick, ISync
{ {
[Sync] int ticks; [Sync] int ticks;
BurnsInfo Info; BurnsInfo info;
public Burns(Actor self, BurnsInfo info) public Burns(Actor self, BurnsInfo info)
{ {
Info = info; this.info = info;
var anim = new Animation(self.World, "fire", () => 0); var anim = new Animation(self.World, "fire", () => 0);
anim.IsDecoration = true; anim.IsDecoration = true;
anim.PlayRepeating(Info.Anim); anim.PlayRepeating(info.Anim);
self.Trait<RenderSprites>().Add("fire", anim); self.Trait<RenderSprites>().Add("fire", anim);
} }
@@ -42,8 +42,8 @@ namespace OpenRA.Mods.Common.Traits
{ {
if (--ticks <= 0) if (--ticks <= 0)
{ {
self.InflictDamage(self, Info.Damage, null); self.InflictDamage(self, info.Damage, null);
ticks = Info.Interval; ticks = info.Interval;
} }
} }
} }

View File

@@ -25,19 +25,19 @@ namespace OpenRA.Mods.Common.Traits
class LightPaletteRotator : ITick, IPaletteModifier class LightPaletteRotator : ITick, IPaletteModifier
{ {
float t = 0;
public void Tick(Actor self)
{
t += .5f;
}
readonly LightPaletteRotatorInfo info; readonly LightPaletteRotatorInfo info;
float t = 0;
public LightPaletteRotator(LightPaletteRotatorInfo info) public LightPaletteRotator(LightPaletteRotatorInfo info)
{ {
this.info = info; this.info = info;
} }
public void Tick(Actor self)
{
t += .5f;
}
public void AdjustPalette(IReadOnlyDictionary<string, MutablePalette> palettes) public void AdjustPalette(IReadOnlyDictionary<string, MutablePalette> palettes)
{ {
foreach (var pal in palettes) foreach (var pal in palettes)

View File

@@ -20,12 +20,12 @@ namespace OpenRA.Mods.Common.Traits
public class NukePaletteEffect : IPaletteModifier, ITick public class NukePaletteEffect : IPaletteModifier, ITick
{ {
const int nukeEffectLength = 20; const int NukeEffectLength = 20;
int remainingFrames; int remainingFrames;
public void Enable() public void Enable()
{ {
remainingFrames = nukeEffectLength; remainingFrames = NukeEffectLength;
} }
public void Tick(Actor self) public void Tick(Actor self)
@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Traits
if (remainingFrames == 0) if (remainingFrames == 0)
return; return;
var frac = (float)remainingFrames / nukeEffectLength; var frac = (float)remainingFrames / NukeEffectLength;
foreach (var pal in palettes) foreach (var pal in palettes)
{ {

View File

@@ -25,10 +25,9 @@ namespace OpenRA.Mods.Common.Traits
class WaterPaletteRotation : ITick, IPaletteModifier class WaterPaletteRotation : ITick, IPaletteModifier
{ {
float t = 0;
readonly WaterPaletteRotationInfo info; readonly WaterPaletteRotationInfo info;
readonly World world; readonly World world;
float t = 0;
public WaterPaletteRotation(World world, WaterPaletteRotationInfo info) public WaterPaletteRotation(World world, WaterPaletteRotationInfo info)
{ {

View File

@@ -16,7 +16,7 @@ namespace OpenRA.Mods.Common.Traits
public class RadarColorFromTerrainInfo : ITraitInfo public class RadarColorFromTerrainInfo : ITraitInfo
{ {
public readonly string Terrain; public readonly string Terrain;
public object Create( ActorInitializer init ) { return new RadarColorFromTerrain(init.self,Terrain); } public object Create(ActorInitializer init) { return new RadarColorFromTerrain(init.self, Terrain); }
} }
public class RadarColorFromTerrain : IRadarColorModifier public class RadarColorFromTerrain : IRadarColorModifier

View File

@@ -88,6 +88,8 @@ namespace OpenRA.Mods.Common.Traits
} }
} }
readonly RenderSpritesInfo info;
string cachedImage = null;
Dictionary<string, AnimationWrapper> anims = new Dictionary<string, AnimationWrapper>(); Dictionary<string, AnimationWrapper> anims = new Dictionary<string, AnimationWrapper>();
public static Func<int> MakeFacingFunc(Actor self) public static Func<int> MakeFacingFunc(Actor self)
@@ -97,9 +99,6 @@ namespace OpenRA.Mods.Common.Traits
return () => facing.Facing; return () => facing.Facing;
} }
readonly RenderSpritesInfo info;
string cachedImage = null;
public RenderSprites(Actor self) public RenderSprites(Actor self)
{ {
info = self.Info.Traits.Get<RenderSpritesInfo>(); info = self.Info.Traits.Get<RenderSpritesInfo>();
@@ -107,8 +106,8 @@ namespace OpenRA.Mods.Common.Traits
public static string GetImage(ActorInfo actor) public static string GetImage(ActorInfo actor)
{ {
var Info = actor.Traits.Get<RenderSpritesInfo>(); var info = actor.Traits.Get<RenderSpritesInfo>();
return (Info.Image ?? actor.Name).ToLowerInvariant(); return (info.Image ?? actor.Name).ToLowerInvariant();
} }
public string GetImage(Actor self) public string GetImage(Actor self)

View File

@@ -75,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits
rotorAnim.ReplaceAnim(isFlying ? info.Sequence : info.GroundSequence); rotorAnim.ReplaceAnim(isFlying ? info.Sequence : info.GroundSequence);
} }
static public int ZOffsetFromCenter(Actor self, WPos pos, int offset) public static int ZOffsetFromCenter(Actor self, WPos pos, int offset)
{ {
var delta = self.CenterPosition - pos; var delta = self.CenterPosition - pos;
return delta.Y + delta.Z + offset; return delta.Y + delta.Z + offset;

View File

@@ -20,16 +20,16 @@ namespace OpenRA.Mods.Common.Traits
public class ShakeOnDeath : INotifyKilled public class ShakeOnDeath : INotifyKilled
{ {
readonly ShakeOnDeathInfo Info; readonly ShakeOnDeathInfo info;
public ShakeOnDeath(ShakeOnDeathInfo info) public ShakeOnDeath(ShakeOnDeathInfo info)
{ {
this.Info = info; this.info = info;
} }
public void Killed(Actor self, AttackInfo e) public void Killed(Actor self, AttackInfo e)
{ {
self.World.WorldActor.Trait<ScreenShaker>().AddEffect(Info.Intensity, self.CenterPosition, 1); self.World.WorldActor.Trait<ScreenShaker>().AddEffect(info.Intensity, self.CenterPosition, 1);
} }
} }
} }

View File

@@ -22,19 +22,19 @@ namespace OpenRA.Mods.Common.Traits
public class SoundOnDamageTransition : INotifyDamageStateChanged public class SoundOnDamageTransition : INotifyDamageStateChanged
{ {
readonly SoundOnDamageTransitionInfo Info; readonly SoundOnDamageTransitionInfo info;
public SoundOnDamageTransition(SoundOnDamageTransitionInfo info) public SoundOnDamageTransition(SoundOnDamageTransitionInfo info)
{ {
Info = info; this.info = info;
} }
public void DamageStateChanged(Actor self, AttackInfo e) public void DamageStateChanged(Actor self, AttackInfo e)
{ {
if (e.DamageState == DamageState.Dead) if (e.DamageState == DamageState.Dead)
Sound.Play(Info.DestroyedSound, self.CenterPosition); Sound.Play(info.DestroyedSound, self.CenterPosition);
else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy) else if (e.DamageState >= DamageState.Heavy && e.PreviousDamageState < DamageState.Heavy)
Sound.Play(Info.DamagedSound, self.CenterPosition); Sound.Play(info.DamagedSound, self.CenterPosition);
} }
} }
} }

View File

@@ -39,7 +39,7 @@ namespace OpenRA.Mods.Common.Traits
wr.AddPalette(info.Name, new ImmutablePalette(Enumerable.Range(0, Palette.Size).Select(i => (uint)c[i % 8].ToArgb()))); wr.AddPalette(info.Name, new ImmutablePalette(Enumerable.Range(0, Palette.Size).Select(i => (uint)c[i % 8].ToArgb())));
} }
static Color[] Fog = new[] static readonly Color[] Fog = new[]
{ {
Color.Transparent, Color.Green, Color.Transparent, Color.Green,
Color.Blue, Color.Yellow, Color.Blue, Color.Yellow,
@@ -49,7 +49,7 @@ namespace OpenRA.Mods.Common.Traits
Color.FromArgb(32, 0, 0, 0) Color.FromArgb(32, 0, 0, 0)
}; };
static Color[] Shroud = new[] static readonly Color[] Shroud = new[]
{ {
Color.Transparent, Color.Green, Color.Transparent, Color.Green,
Color.Blue, Color.Yellow, Color.Blue, Color.Yellow,

View File

@@ -22,12 +22,12 @@ namespace OpenRA.Mods.Common
[Desc("Range between falloff steps.")] [Desc("Range between falloff steps.")]
public readonly WRange Spread = new WRange(43); public readonly WRange Spread = new WRange(43);
[Desc("Ranges at which each Falloff step is defined. Overrides Spread.")]
public WRange[] Range = null;
[Desc("Damage percentage at each range step")] [Desc("Damage percentage at each range step")]
public readonly int[] Falloff = { 100, 37, 14, 5, 2, 1, 0 }; public readonly int[] Falloff = { 100, 37, 14, 5, 2, 1, 0 };
[Desc("Ranges at which each Falloff step is defined. Overrides Spread.")]
public WRange[] Range = null;
public void InitializeRange() public void InitializeRange()
{ {
if (Range != null) if (Range != null)

View File

@@ -22,7 +22,10 @@ namespace OpenRA.Mods.Common.Widgets
public float[] VRange = { 0.2f, 1.0f }; public float[] VRange = { 0.2f, 1.0f };
public event Action OnChange = () => { }; public event Action OnChange = () => { };
float H, S, V; public float H { get; private set; }
public float S { get; private set; }
public float V { get; private set; }
byte[] front, back; byte[] front, back;
Sprite mixerSprite; Sprite mixerSprite;
bool isMoving; bool isMoving;

View File

@@ -28,22 +28,22 @@ namespace OpenRA.Mods.Common.Widgets.Logic
WorldRenderer worldRenderer; WorldRenderer worldRenderer;
SoundDevice soundDevice; SoundDevice soundDevice;
static readonly string originalSoundDevice; static readonly string OriginalSoundDevice;
static readonly string originalSoundEngine; static readonly string OriginalSoundEngine;
static readonly WindowMode originalGraphicsMode; static readonly WindowMode OriginalGraphicsMode;
static readonly string originalGraphicsRenderer; static readonly string OriginalGraphicsRenderer;
static readonly int2 originalGraphicsWindowedSize; static readonly int2 OriginalGraphicsWindowedSize;
static readonly int2 originalGraphicsFullscreenSize; static readonly int2 OriginalGraphicsFullscreenSize;
static SettingsLogic() static SettingsLogic()
{ {
var original = Game.Settings; var original = Game.Settings;
originalSoundDevice = original.Sound.Device; OriginalSoundDevice = original.Sound.Device;
originalSoundEngine = original.Sound.Engine; OriginalSoundEngine = original.Sound.Engine;
originalGraphicsMode = original.Graphics.Mode; OriginalGraphicsMode = original.Graphics.Mode;
originalGraphicsRenderer = original.Graphics.Renderer; OriginalGraphicsRenderer = original.Graphics.Renderer;
originalGraphicsWindowedSize = original.Graphics.WindowedSize; OriginalGraphicsWindowedSize = original.Graphics.WindowedSize;
originalGraphicsFullscreenSize = original.Graphics.FullscreenSize; OriginalGraphicsFullscreenSize = original.Graphics.FullscreenSize;
} }
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
@@ -66,12 +66,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
current.Save(); current.Save();
Action closeAndExit = () => { Ui.CloseWindow(); onExit(); }; Action closeAndExit = () => { Ui.CloseWindow(); onExit(); };
if (originalSoundDevice != current.Sound.Device || if (OriginalSoundDevice != current.Sound.Device ||
originalSoundEngine != current.Sound.Engine || OriginalSoundEngine != current.Sound.Engine ||
originalGraphicsMode != current.Graphics.Mode || OriginalGraphicsMode != current.Graphics.Mode ||
originalGraphicsRenderer != current.Graphics.Renderer || OriginalGraphicsRenderer != current.Graphics.Renderer ||
originalGraphicsWindowedSize != current.Graphics.WindowedSize || OriginalGraphicsWindowedSize != current.Graphics.WindowedSize ||
originalGraphicsFullscreenSize != current.Graphics.FullscreenSize) OriginalGraphicsFullscreenSize != current.Graphics.FullscreenSize)
ConfirmationDialogs.PromptConfirmAction( ConfirmationDialogs.PromptConfirmAction(
"Restart Now?", "Restart Now?",
"Some changes will not be applied until\nthe game is restarted. Restart now?", "Some changes will not be applied until\nthe game is restarted. Restart now?",

View File

@@ -29,6 +29,10 @@ namespace OpenRA.Mods.Common.Widgets
public Action AfterClose = () => { }; public Action AfterClose = () => { };
public Action<float> Animating = _ => { }; public Action<float> Animating = _ => { };
readonly World world;
readonly WorldRenderer worldRenderer;
readonly RadarPings radarPings;
float radarMinimapHeight; float radarMinimapHeight;
int frame; int frame;
bool hasRadar; bool hasRadar;
@@ -46,11 +50,6 @@ namespace OpenRA.Mods.Common.Widgets
Sprite shroudSprite; Sprite shroudSprite;
Shroud renderShroud; Shroud renderShroud;
readonly World world;
readonly WorldRenderer worldRenderer;
readonly RadarPings radarPings;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public RadarWidget(World world, WorldRenderer worldRenderer) public RadarWidget(World world, WorldRenderer worldRenderer)
{ {
@@ -100,9 +99,9 @@ namespace OpenRA.Mods.Common.Widgets
unsafe unsafe
{ {
fixed (byte* _colors = &radarData[0]) fixed (byte* colorBytes = &radarData[0])
{ {
var colors = (int*)_colors; var colors = (int*)colorBytes;
colors[(uv.Y + dy) * stride + uv.X + dx] = terrain.Color.ToArgb(); colors[(uv.Y + dy) * stride + uv.X + dx] = terrain.Color.ToArgb();
} }
} }
@@ -123,9 +122,9 @@ namespace OpenRA.Mods.Common.Widgets
unsafe unsafe
{ {
fixed (byte* _colors = &radarData[0]) fixed (byte* colorBytes = &radarData[0])
{ {
var colors = (int*)_colors; var colors = (int*)colorBytes;
colors[(uv.Y + dy) * stride + uv.X + dx] = color; colors[(uv.Y + dy) * stride + uv.X + dx] = color;
} }
} }
@@ -280,9 +279,9 @@ namespace OpenRA.Mods.Common.Widgets
unsafe unsafe
{ {
fixed (byte* _colors = &radarData[0]) fixed (byte* colorBytes = &radarData[0])
{ {
var colors = (int*)_colors; var colors = (int*)colorBytes;
foreach (var t in world.ActorsWithTrait<IRadarSignature>()) foreach (var t in world.ActorsWithTrait<IRadarSignature>())
{ {

View File

@@ -95,7 +95,6 @@ namespace OpenRA.Mods.D2k.Traits
}) })
.OrderBy(p => (self.Location - p.Actor.Location).LengthSquared); .OrderBy(p => (self.Location - p.Actor.Location).LengthSquared);
foreach (var p in carryables) foreach (var p in carryables)
{ {
// Check if its actually me who's the best candidate // Check if its actually me who's the best candidate

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.D2k.Traits
public readonly ushort Template = 0; public readonly ushort Template = 0;
[Desc("The terrain types that this template will be placed on")] [Desc("The terrain types that this template will be placed on")]
public readonly string[] TerrainTypes = {}; public readonly string[] TerrainTypes = { };
[Desc("Offset relative to the actor TopLeft. Not used if the template is PickAny")] [Desc("Offset relative to the actor TopLeft. Not used if the template is PickAny")]
public readonly CVec Offset = CVec.Zero; public readonly CVec Offset = CVec.Zero;

View File

@@ -41,8 +41,12 @@ namespace OpenRA.Mods.D2k.Widgets
public int IconWidth = 64; public int IconWidth = 64;
public int IconHeight = 48; public int IconHeight = 48;
ProductionQueue CurrentQueue; readonly WorldRenderer worldRenderer;
List<ProductionQueue> VisibleQueues; readonly World world;
readonly OrderManager orderManager;
ProductionQueue currentQueue;
List<ProductionQueue> visibleQueues;
bool paletteOpen = false; bool paletteOpen = false;
@@ -59,10 +63,6 @@ namespace OpenRA.Mods.D2k.Widgets
Animation cantBuild; Animation cantBuild;
Animation clock; Animation clock;
readonly WorldRenderer worldRenderer;
readonly World world;
readonly OrderManager orderManager;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public BuildPaletteWidget(OrderManager orderManager, World world, WorldRenderer worldRenderer) public BuildPaletteWidget(OrderManager orderManager, World world, WorldRenderer worldRenderer)
{ {
@@ -73,13 +73,13 @@ namespace OpenRA.Mods.D2k.Widgets
cantBuild = new Animation(world, "clock"); cantBuild = new Animation(world, "clock");
cantBuild.PlayFetchIndex("idle", () => 0); cantBuild.PlayFetchIndex("idle", () => 0);
clock = new Animation(world, "clock"); clock = new Animation(world, "clock");
VisibleQueues = new List<ProductionQueue>(); visibleQueues = new List<ProductionQueue>();
CurrentQueue = null; currentQueue = null;
} }
public override void Initialize(WidgetArgs args) public override void Initialize(WidgetArgs args)
{ {
paletteOpenOrigin = new float2(Game.Renderer.Resolution.Width - Columns*IconWidth - 23, 280); paletteOpenOrigin = new float2(Game.Renderer.Resolution.Width - Columns * IconWidth - 23, 280);
paletteClosedOrigin = new float2(Game.Renderer.Resolution.Width - 16, 280); paletteClosedOrigin = new float2(Game.Renderer.Resolution.Width - 16, 280);
paletteOrigin = paletteClosedOrigin; paletteOrigin = paletteClosedOrigin;
base.Initialize(args); base.Initialize(args);
@@ -87,29 +87,30 @@ namespace OpenRA.Mods.D2k.Widgets
public override Rectangle EventBounds public override Rectangle EventBounds
{ {
get { return new Rectangle((int)(paletteOrigin.X) - 24, (int)(paletteOrigin.Y), 239, Math.Max(IconHeight * numActualRows, 40 * tabs.Count + 9)); } get { return new Rectangle((int)paletteOrigin.X - 24, (int)paletteOrigin.Y, 239, Math.Max(IconHeight * numActualRows, 40 * tabs.Count + 9)); }
} }
public override void Tick() public override void Tick()
{ {
VisibleQueues.Clear(); visibleQueues.Clear();
var queues = world.ActorsWithTrait<ProductionQueue>() var queues = world.ActorsWithTrait<ProductionQueue>()
.Where(p => p.Actor.Owner == world.LocalPlayer) .Where(p => p.Actor.Owner == world.LocalPlayer)
.Select(p => p.Trait); .Select(p => p.Trait);
if (CurrentQueue != null && CurrentQueue.Actor.Destroyed) if (currentQueue != null && currentQueue.Actor.Destroyed)
CurrentQueue = null; currentQueue = null;
foreach (var queue in queues) foreach (var queue in queues)
{ {
if (queue.AllItems().Any()) if (queue.AllItems().Any())
VisibleQueues.Add(queue); visibleQueues.Add(queue);
else if (CurrentQueue == queue) else if (currentQueue == queue)
CurrentQueue = null; currentQueue = null;
} }
if (CurrentQueue == null)
CurrentQueue = VisibleQueues.FirstOrDefault(); if (currentQueue == null)
currentQueue = visibleQueues.FirstOrDefault();
TickPaletteAnimation(world); TickPaletteAnimation(world);
} }
@@ -151,7 +152,7 @@ namespace OpenRA.Mods.D2k.Widgets
paletteAnimating = true; paletteAnimating = true;
paletteOpen = true; paletteOpen = true;
CurrentQueue = queue; currentQueue = queue;
} }
public override bool HandleKeyPress(KeyInput e) public override bool HandleKeyPress(KeyInput e)
@@ -195,10 +196,11 @@ namespace OpenRA.Mods.D2k.Widgets
public override void Draw() public override void Draw()
{ {
if (!IsVisible()) return; if (!IsVisible())
// TODO: fix return;
DrawPalette(CurrentQueue); // TODO: fix
DrawPalette(currentQueue);
DrawBuildTabs(world); DrawBuildTabs(world);
} }
@@ -231,7 +233,6 @@ namespace OpenRA.Mods.D2k.Widgets
WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "bottom"), WidgetUtils.DrawRGBA(ChromeProvider.GetImage(paletteCollection, "bottom"),
new float2(origin.X - 9, origin.Y - 1 + IconHeight * numActualRows)); new float2(origin.X - 9, origin.Y - 1 + IconHeight * numActualRows));
// Icons // Icons
string tooltipItem = null; string tooltipItem = null;
var tooltipHotkey = Hotkey.Invalid; var tooltipHotkey = Hotkey.Invalid;
@@ -279,7 +280,9 @@ namespace OpenRA.Mods.D2k.Widgets
if (++x == Columns) { x = 0; y++; } if (++x == Columns) { x = 0; y++; }
i++; i++;
} }
if (x != 0) y++;
if (x != 0)
y++;
foreach (var ob in overlayBits) foreach (var ob in overlayBits)
WidgetUtils.DrawSHPCentered(ob.First, ob.Second + iconOffset, worldRenderer); WidgetUtils.DrawSHPCentered(ob.First, ob.Second + iconOffset, worldRenderer);
@@ -334,7 +337,7 @@ namespace OpenRA.Mods.D2k.Widgets
Sound.PlayNotification(world.Map.Rules, null, "Sounds", "TabClick", null); Sound.PlayNotification(world.Map.Rules, null, "Sounds", "TabClick", null);
if (name != null) if (name != null)
HandleBuildPalette(world, name, (mi.Button == MouseButton.Left)); HandleBuildPalette(world, name, mi.Button == MouseButton.Left);
}; };
} }
@@ -347,8 +350,8 @@ namespace OpenRA.Mods.D2k.Widgets
Sound.PlayNotification(world.Map.Rules, null, "Sounds", "TabClick", null); Sound.PlayNotification(world.Map.Rules, null, "Sounds", "TabClick", null);
var wasOpen = paletteOpen; var wasOpen = paletteOpen;
paletteOpen = CurrentQueue != queue || !wasOpen; paletteOpen = currentQueue != queue || !wasOpen;
CurrentQueue = queue; currentQueue = queue;
if (wasOpen != paletteOpen) if (wasOpen != paletteOpen)
paletteAnimating = true; paletteAnimating = true;
}; };
@@ -367,16 +370,16 @@ namespace OpenRA.Mods.D2k.Widgets
void HandleBuildPalette(World world, string item, bool isLmb) void HandleBuildPalette(World world, string item, bool isLmb)
{ {
var unit = world.Map.Rules.Actors[item]; var unit = world.Map.Rules.Actors[item];
var producing = CurrentQueue.AllQueued().FirstOrDefault(a => a.Item == item); var producing = currentQueue.AllQueued().FirstOrDefault(a => a.Item == item);
if (isLmb) if (isLmb)
{ {
if (producing != null && producing == CurrentQueue.CurrentItem()) if (producing != null && producing == currentQueue.CurrentItem())
{ {
if (producing.Done) if (producing.Done)
{ {
if (unit.Traits.Contains<BuildingInfo>()) if (unit.Traits.Contains<BuildingInfo>())
world.OrderGenerator = new PlaceBuildingOrderGenerator(CurrentQueue, item); world.OrderGenerator = new PlaceBuildingOrderGenerator(currentQueue, item);
else else
StartProduction(world, item); StartProduction(world, item);
return; return;
@@ -384,21 +387,21 @@ namespace OpenRA.Mods.D2k.Widgets
if (producing.Paused) if (producing.Paused)
{ {
world.IssueOrder(Order.PauseProduction(CurrentQueue.Actor, item, false)); world.IssueOrder(Order.PauseProduction(currentQueue.Actor, item, false));
return; return;
} }
} }
else else
{ {
// Check if the item's build-limit has already been reached // Check if the item's build-limit has already been reached
var queued = CurrentQueue.AllQueued().Count(a => a.Item == unit.Name); var queued = currentQueue.AllQueued().Count(a => a.Item == unit.Name);
var inWorld = world.ActorsWithTrait<Buildable>().Count(a => a.Actor.Info.Name == unit.Name && a.Actor.Owner == world.LocalPlayer); var inWorld = world.ActorsWithTrait<Buildable>().Count(a => a.Actor.Info.Name == unit.Name && a.Actor.Owner == world.LocalPlayer);
var buildLimit = unit.Traits.Get<BuildableInfo>().BuildLimit; var buildLimit = unit.Traits.Get<BuildableInfo>().BuildLimit;
if (!((buildLimit != 0) && (inWorld + queued >= buildLimit))) if (!((buildLimit != 0) && (inWorld + queued >= buildLimit)))
Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", CurrentQueue.Info.QueuedAudio, world.LocalPlayer.Country.Race); Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", currentQueue.Info.QueuedAudio, world.LocalPlayer.Country.Race);
else else
Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", CurrentQueue.Info.BlockedAudio, world.LocalPlayer.Country.Race); Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", currentQueue.Info.BlockedAudio, world.LocalPlayer.Country.Race);
} }
StartProduction(world, item); StartProduction(world, item);
@@ -410,15 +413,15 @@ namespace OpenRA.Mods.D2k.Widgets
// instant cancel of things we havent really started yet, and things that are finished // instant cancel of things we havent really started yet, and things that are finished
if (producing.Paused || producing.Done || producing.TotalCost == producing.RemainingCost) if (producing.Paused || producing.Done || producing.TotalCost == producing.RemainingCost)
{ {
Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", CurrentQueue.Info.CancelledAudio, world.LocalPlayer.Country.Race); Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", currentQueue.Info.CancelledAudio, world.LocalPlayer.Country.Race);
var numberToCancel = Game.GetModifierKeys().HasModifier(Modifiers.Shift) ? 5 : 1; var numberToCancel = Game.GetModifierKeys().HasModifier(Modifiers.Shift) ? 5 : 1;
world.IssueOrder(Order.CancelProduction(CurrentQueue.Actor, item, numberToCancel)); world.IssueOrder(Order.CancelProduction(currentQueue.Actor, item, numberToCancel));
} }
else else
{ {
Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", CurrentQueue.Info.OnHoldAudio, world.LocalPlayer.Country.Race); Sound.PlayNotification(world.Map.Rules, world.LocalPlayer, "Speech", currentQueue.Info.OnHoldAudio, world.LocalPlayer.Country.Race);
world.IssueOrder(Order.PauseProduction(CurrentQueue.Actor, item, true)); world.IssueOrder(Order.PauseProduction(currentQueue.Actor, item, true));
} }
} }
} }
@@ -426,29 +429,29 @@ namespace OpenRA.Mods.D2k.Widgets
void StartProduction(World world, string item) void StartProduction(World world, string item)
{ {
world.IssueOrder(Order.StartProduction(CurrentQueue.Actor, item, world.IssueOrder(Order.StartProduction(currentQueue.Actor, item,
Game.GetModifierKeys().HasModifier(Modifiers.Shift) ? 5 : 1)); Game.GetModifierKeys().HasModifier(Modifiers.Shift) ? 5 : 1));
} }
void DrawBuildTabs(World world) void DrawBuildTabs(World world)
{ {
const int tabWidth = 24; const int TabWidth = 24;
const int tabHeight = 40; const int TabHeight = 40;
var x = paletteOrigin.X - tabWidth; var x = paletteOrigin.X - TabWidth;
var y = paletteOrigin.Y + 9; var y = paletteOrigin.Y + 9;
tabs.Clear(); tabs.Clear();
foreach (var queue in VisibleQueues) foreach (var queue in visibleQueues)
{ {
string[] tabKeys = { "normal", "ready", "selected" }; string[] tabKeys = { "normal", "ready", "selected" };
var producing = queue.CurrentItem(); var producing = queue.CurrentItem();
var index = queue == CurrentQueue ? 2 : (producing != null && producing.Done) ? 1 : 0; var index = queue == currentQueue ? 2 : (producing != null && producing.Done) ? 1 : 0;
var race = world.LocalPlayer.Country.Race; var race = world.LocalPlayer.Country.Race;
WidgetUtils.DrawRGBA(ChromeProvider.GetImage("tabs-" + tabKeys[index], race + "-" + queue.Info.Type), new float2(x, y)); WidgetUtils.DrawRGBA(ChromeProvider.GetImage("tabs-" + tabKeys[index], race + "-" + queue.Info.Type), new float2(x, y));
var rect = new Rectangle((int)x, (int)y, tabWidth, tabHeight); var rect = new Rectangle((int)x, (int)y, TabWidth, TabHeight);
tabs.Add(Pair.New(rect, HandleTabClick(queue, world))); tabs.Add(Pair.New(rect, HandleTabClick(queue, world)));
if (rect.Contains(Viewport.LastMousePos)) if (rect.Contains(Viewport.LastMousePos))
@@ -463,7 +466,7 @@ namespace OpenRA.Mods.D2k.Widgets
font.DrawText(text, new float2(rect.Left - sz.X - 20, rect.Top + 12), Color.White); font.DrawText(text, new float2(rect.Left - sz.X - 20, rect.Top + 12), Color.White);
} }
y += tabHeight; y += TabHeight;
} }
} }
@@ -484,7 +487,7 @@ namespace OpenRA.Mods.D2k.Widgets
var tooltip = info.Traits.Get<TooltipInfo>(); var tooltip = info.Traits.Get<TooltipInfo>();
var buildable = info.Traits.Get<BuildableInfo>(); var buildable = info.Traits.Get<BuildableInfo>();
var cost = info.Traits.Get<ValuedInfo>().Cost; var cost = info.Traits.Get<ValuedInfo>().Cost;
var canBuildThis = CurrentQueue.CanBuild(info); var canBuildThis = currentQueue.CanBuild(info);
var longDescSize = Game.Renderer.Fonts["Regular"].Measure(tooltip.Description.Replace("\\n", "\n")).Y; var longDescSize = Game.Renderer.Fonts["Regular"].Measure(tooltip.Description.Replace("\\n", "\n")).Y;
if (!canBuildThis) longDescSize += 8; if (!canBuildThis) longDescSize += 8;
@@ -499,11 +502,11 @@ namespace OpenRA.Mods.D2k.Widgets
var power = pl.PlayerActor.Trait<PowerManager>(); var power = pl.PlayerActor.Trait<PowerManager>();
DrawRightAligned("${0}".F(cost), pos + new int2(-5, 5), DrawRightAligned("${0}".F(cost), pos + new int2(-5, 5),
(resources.DisplayCash + resources.DisplayResources >= cost ? Color.White : Color.Red)); resources.DisplayCash + resources.DisplayResources >= cost ? Color.White : Color.Red);
var lowpower = power.PowerState != PowerState.Normal; var lowpower = power.PowerState != PowerState.Normal;
var time = CurrentQueue.GetBuildTime(info.Name) var time = currentQueue.GetBuildTime(info.Name)
* ((lowpower) ? CurrentQueue.Info.LowPowerSlowdown : 1); * (lowpower ? currentQueue.Info.LowPowerSlowdown : 1);
DrawRightAligned(WidgetUtils.FormatTime(time), pos + new int2(-5, 35), lowpower ? Color.Red : Color.White); DrawRightAligned(WidgetUtils.FormatTime(time), pos + new int2(-5, 35), lowpower ? Color.Red : Color.White);
var pis = info.Traits.WithInterface<PowerInfo>().Where(i => i.UpgradeMinEnabledLevel < 1); var pis = info.Traits.WithInterface<PowerInfo>().Where(i => i.UpgradeMinEnabledLevel < 1);
@@ -532,7 +535,7 @@ namespace OpenRA.Mods.D2k.Widgets
bool DoBuildingHotkey(KeyInput e, World world) bool DoBuildingHotkey(KeyInput e, World world)
{ {
if (!paletteOpen) return false; if (!paletteOpen) return false;
if (CurrentQueue == null) return false; if (currentQueue == null) return false;
var key = Hotkey.FromKeyInput(e); var key = Hotkey.FromKeyInput(e);
var ks = Game.Settings.Keys; var ks = Game.Settings.Keys;
@@ -546,7 +549,7 @@ namespace OpenRA.Mods.D2k.Widgets
} }
} }
var allBuildables = CurrentQueue.AllItems().OrderBy(a => a.Traits.Get<BuildableInfo>().BuildPaletteOrder).ToArray(); var allBuildables = currentQueue.AllItems().OrderBy(a => a.Traits.Get<BuildableInfo>().BuildPaletteOrder).ToArray();
var toBuild = allBuildables.ElementAtOrDefault(slot); var toBuild = allBuildables.ElementAtOrDefault(slot);
if (toBuild != null) if (toBuild != null)
{ {
@@ -562,16 +565,17 @@ namespace OpenRA.Mods.D2k.Widgets
bool ChangeTab(bool reverse) bool ChangeTab(bool reverse)
{ {
Sound.PlayNotification(world.Map.Rules, null, "Sounds", "TabClick", null); Sound.PlayNotification(world.Map.Rules, null, "Sounds", "TabClick", null);
var queues = VisibleQueues.Concat(VisibleQueues); var queues = visibleQueues.Concat(visibleQueues);
if (reverse) if (reverse)
queues = queues.Reverse(); queues = queues.Reverse();
var nextQueue = queues.SkipWhile(q => q != CurrentQueue) var nextQueue = queues.SkipWhile(q => q != currentQueue)
.ElementAtOrDefault(1); .ElementAtOrDefault(1);
if (nextQueue != null) if (nextQueue != null)
{ {
SetCurrentTab(nextQueue); SetCurrentTab(nextQueue);
return true; return true;
} }
return true; return true;
} }
} }

View File

@@ -11,8 +11,8 @@
using System; using System;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using OpenRA.Mods.Common.Widgets;
using OpenRA.Mods.Common.Traits; using OpenRA.Mods.Common.Traits;
using OpenRA.Mods.Common.Widgets;
using OpenRA.Mods.D2k.Widgets; using OpenRA.Mods.D2k.Widgets;
using OpenRA.Mods.RA; using OpenRA.Mods.RA;
using OpenRA.Mods.RA.Widgets; using OpenRA.Mods.RA.Widgets;
@@ -63,7 +63,7 @@ namespace OpenRA.Mods.D2k.Widgets.Logic
Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs()); Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
} }
enum RadarBinState { Closed, BinAnimating, RadarAnimating, Open }; enum RadarBinState { Closed, BinAnimating, RadarAnimating, Open }
void InitPlayerWidgets() void InitPlayerWidgets()
{ {
var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs()); var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
@@ -80,11 +80,11 @@ namespace OpenRA.Mods.D2k.Widgets.Logic
radarMap.AfterOpen = () => binState = RadarBinState.Open; radarMap.AfterOpen = () => binState = RadarBinState.Open;
radarMap.AfterClose = () => binState = RadarBinState.BinAnimating; radarMap.AfterClose = () => binState = RadarBinState.BinAnimating;
radarBin.Get<ImageWidget>("RADAR_BIN_BG").GetImageCollection = () => "chrome-"+world.LocalPlayer.Country.Race; radarBin.Get<ImageWidget>("RADAR_BIN_BG").GetImageCollection = () => "chrome-" + world.LocalPlayer.Country.Race;
var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>(); var powerManager = world.LocalPlayer.PlayerActor.Trait<PowerManager>();
var powerBar = radarBin.Get<ResourceBarWidget>("POWERBAR"); var powerBar = radarBin.Get<ResourceBarWidget>("POWERBAR");
powerBar.IndicatorCollection = "power-"+world.LocalPlayer.Country.Race; powerBar.IndicatorCollection = "power-" + world.LocalPlayer.Country.Race;
powerBar.GetProvided = () => powerManager.PowerProvided; powerBar.GetProvided = () => powerManager.PowerProvided;
powerBar.GetUsed = () => powerManager.PowerDrained; powerBar.GetUsed = () => powerManager.PowerDrained;
powerBar.TooltipFormat = "Power Usage: {0}/{1}"; powerBar.TooltipFormat = "Power Usage: {0}/{1}";
@@ -106,7 +106,7 @@ namespace OpenRA.Mods.D2k.Widgets.Logic
.Any(a => a.Actor.Owner == world.LocalPlayer && a.Trait.IsActive); .Any(a => a.Actor.Owner == world.LocalPlayer && a.Trait.IsActive);
if (radarActive != cachedRadarActive) if (radarActive != cachedRadarActive)
Sound.PlayNotification(world.Map.Rules, null, "Sounds", (radarActive ? "RadarUp" : "RadarDown"), null); Sound.PlayNotification(world.Map.Rules, null, "Sounds", radarActive ? "RadarUp" : "RadarDown", null);
cachedRadarActive = radarActive; cachedRadarActive = radarActive;
// Switch to observer mode after win/loss // Switch to observer mode after win/loss

View File

@@ -29,8 +29,11 @@ namespace OpenRA.Mods.D2k.Widgets
public override void Draw() public override void Draw()
{ {
if( world.LocalPlayer == null ) return; if (world.LocalPlayer == null)
if( world.LocalPlayer.WinState != WinState.Undefined ) return; return;
if (world.LocalPlayer.WinState != WinState.Undefined)
return;
var digitCollection = "digits-" + world.LocalPlayer.Country.Race; var digitCollection = "digits-" + world.LocalPlayer.Country.Race;
var chromeCollection = "chrome-" + world.LocalPlayer.Country.Race; var chromeCollection = "chrome-" + world.LocalPlayer.Country.Race;

View File

@@ -20,8 +20,8 @@ namespace OpenRA.Mods.D2k.Widgets
public int2 ClosedOffset = int2.Zero; public int2 ClosedOffset = int2.Zero;
public int AnimationLength = 0; public int AnimationLength = 0;
public Func<bool> IsOpen = () => false; public Func<bool> IsOpen = () => false;
public Action AfterOpen = () => {}; public Action AfterOpen = () => { };
public Action AfterClose = () => {}; public Action AfterClose = () => { };
int2 offset; int2 offset;
int frame; int frame;

View File

@@ -27,13 +27,14 @@ namespace OpenRA.Mods.D2k.Widgets
public int IconWidth = 64; public int IconWidth = 64;
public int IconHeight = 48; public int IconHeight = 48;
Animation icon; readonly List<Pair<Rectangle, Action<MouseInput>>> buttons = new List<Pair<Rectangle, Action<MouseInput>>>();
Animation clock;
readonly List<Pair<Rectangle, Action<MouseInput>>> buttons = new List<Pair<Rectangle,Action<MouseInput>>>();
readonly World world; readonly World world;
readonly WorldRenderer worldRenderer; readonly WorldRenderer worldRenderer;
Animation icon;
Animation clock;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public SupportPowerBinWidget(World world, WorldRenderer worldRenderer) public SupportPowerBinWidget(World world, WorldRenderer worldRenderer)
{ {
@@ -74,7 +75,8 @@ namespace OpenRA.Mods.D2k.Widgets
{ {
buttons.Clear(); buttons.Clear();
if( world.LocalPlayer == null ) return; if (world.LocalPlayer == null)
return;
var manager = world.LocalPlayer.PlayerActor.Trait<SupportPowerManager>(); var manager = world.LocalPlayer.PlayerActor.Trait<SupportPowerManager>();
var powers = manager.Powers.Where(p => !p.Value.Disabled); var powers = manager.Powers.Where(p => !p.Value.Disabled);
@@ -82,7 +84,7 @@ namespace OpenRA.Mods.D2k.Widgets
if (numPowers == 0) return; if (numPowers == 0) return;
var rectBounds = RenderBounds; var rectBounds = RenderBounds;
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-top"),new float2(rectBounds.X,rectBounds.Y)); WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-top"), new float2(rectBounds.X, rectBounds.Y));
for (var i = 1; i < numPowers; i++) for (var i = 1; i < numPowers; i++)
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-middle"), new float2(rectBounds.X, rectBounds.Y + i * 51)); WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-middle"), new float2(rectBounds.X, rectBounds.Y + i * 51));
WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-bottom"), new float2(rectBounds.X, rectBounds.Y + numPowers * 51)); WidgetUtils.DrawRGBA(WidgetUtils.GetChromeImage(world, "specialbin-bottom"), new float2(rectBounds.X, rectBounds.Y + numPowers * 51));
@@ -104,17 +106,17 @@ namespace OpenRA.Mods.D2k.Widgets
if (rect.Contains(Viewport.LastMousePos)) if (rect.Contains(Viewport.LastMousePos))
{ {
var pos = drawPos.ToInt2(); var pos = drawPos.ToInt2();
var tl = new int2(pos.X-3,pos.Y-3); var tl = new int2(pos.X - 3, pos.Y - 3);
var m = new int2(pos.X+64+3,pos.Y+48+3); var m = new int2(pos.X + 64 + 3, pos.Y + 48 + 3);
var br = tl + new int2(64+3+20,40); var br = tl + new int2(64 + 3 + 20, 40);
if (sp.TotalTime > 0) if (sp.TotalTime > 0)
br += new int2(0,20); br += new int2(0, 20);
if (sp.Info.LongDesc != null) if (sp.Info.LongDesc != null)
br += Game.Renderer.Fonts["Regular"].Measure(sp.Info.LongDesc.Replace("\\n", "\n")); br += Game.Renderer.Fonts["Regular"].Measure(sp.Info.LongDesc.Replace("\\n", "\n"));
else else
br += new int2(300,0); br += new int2(300, 0);
var border = WidgetUtils.GetBorderSizes("dialog4"); var border = WidgetUtils.GetBorderSizes("dialog4");
@@ -130,9 +132,9 @@ namespace OpenRA.Mods.D2k.Widgets
if (sp.TotalTime > 0) if (sp.TotalTime > 0)
{ {
pos += new int2(0,20); pos += new int2(0, 20);
Game.Renderer.Fonts["Bold"].DrawText(WidgetUtils.FormatTime(sp.RemainingTime), pos, Color.White); Game.Renderer.Fonts["Bold"].DrawText(WidgetUtils.FormatTime(sp.RemainingTime), pos, Color.White);
Game.Renderer.Fonts["Bold"].DrawText("/ {0}".F(WidgetUtils.FormatTime(sp.TotalTime)), pos + new int2(45,0), Color.White); Game.Renderer.Fonts["Bold"].DrawText("/ {0}".F(WidgetUtils.FormatTime(sp.TotalTime)), pos + new int2(45, 0), Color.White);
} }
if (sp.Info.LongDesc != null) if (sp.Info.LongDesc != null)
@@ -160,7 +162,7 @@ namespace OpenRA.Mods.D2k.Widgets
font.DrawTextWithContrast(overlay, overlayPos - new float2(size.X / 2, 0), Color.White, Color.Black, 1); font.DrawTextWithContrast(overlay, overlayPos - new float2(size.X / 2, 0), Color.White, Color.Black, 1);
} }
buttons.Add(Pair.New(rect,HandleSupportPower(kv.Key, manager))); buttons.Add(Pair.New(rect, HandleSupportPower(kv.Key, manager)));
y += 51; y += 51;
} }

View File

@@ -36,8 +36,8 @@ namespace OpenRA.Mods.TS.Traits
public readonly WAngle LightPitch = WAngle.FromDegrees(50); public readonly WAngle LightPitch = WAngle.FromDegrees(50);
public readonly WAngle LightYaw = WAngle.FromDegrees(240); public readonly WAngle LightYaw = WAngle.FromDegrees(240);
public readonly float[] LightAmbientColor = new float[] {0.6f, 0.6f, 0.6f}; public readonly float[] LightAmbientColor = new float[] { 0.6f, 0.6f, 0.6f };
public readonly float[] LightDiffuseColor = new float[] {0.4f, 0.4f, 0.4f}; public readonly float[] LightDiffuseColor = new float[] { 0.4f, 0.4f, 0.4f };
public virtual object Create(ActorInitializer init) { return new RenderVoxels(init.self, this); } public virtual object Create(ActorInitializer init) { return new RenderVoxels(init.self, this); }
@@ -59,7 +59,6 @@ namespace OpenRA.Mods.TS.Traits
this.LightYaw, this.LightAmbientColor, this.LightDiffuseColor, body.CameraPitch, this.LightYaw, this.LightAmbientColor, this.LightDiffuseColor, body.CameraPitch,
palette, init.WorldRenderer.Palette(NormalsPalette), init.WorldRenderer.Palette("shadow")); palette, init.WorldRenderer.Palette(NormalsPalette), init.WorldRenderer.Palette("shadow"));
} }
} }
public class RenderVoxels : IRender, INotifyOwnerChanged public class RenderVoxels : IRender, INotifyOwnerChanged
@@ -77,7 +76,7 @@ namespace OpenRA.Mods.TS.Traits
this.info = info; this.info = info;
body = self.Trait<IBodyOrientation>(); body = self.Trait<IBodyOrientation>();
camera = new WRot(WAngle.Zero, body.CameraPitch - new WAngle(256), new WAngle(256)); camera = new WRot(WAngle.Zero, body.CameraPitch - new WAngle(256), new WAngle(256));
lightSource = new WRot(WAngle.Zero,new WAngle(256) - info.LightPitch, info.LightYaw); lightSource = new WRot(WAngle.Zero, new WAngle(256) - info.LightPitch, info.LightYaw);
} }
bool initializePalettes = true; bool initializePalettes = true;

View File

@@ -40,7 +40,7 @@ namespace OpenRA.Mods.TS.Traits
var turretOrientation = body.QuantizeOrientation(new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(t.InitialFacing) - orientation.Yaw), facings); var turretOrientation = body.QuantizeOrientation(new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(t.InitialFacing) - orientation.Yaw), facings);
var turretOffset = body.LocalToWorld(t.Offset.Rotate(orientation)); var turretOffset = body.LocalToWorld(t.Offset.Rotate(orientation));
yield return new VoxelAnimation(voxel, () => turretOffset, () => new [] { turretOrientation, orientation }, yield return new VoxelAnimation(voxel, () => turretOffset, () => new[] { turretOrientation, orientation },
() => false, () => 0); () => false, () => 0);
} }
} }
@@ -76,7 +76,7 @@ namespace OpenRA.Mods.TS.Traits
var turretOrientation = turreted != null ? turreted.LocalOrientation(self) : WRot.Zero; var turretOrientation = turreted != null ? turreted.LocalOrientation(self) : WRot.Zero;
var quantizedBody = body.QuantizeOrientation(self, self.Orientation); var quantizedBody = body.QuantizeOrientation(self, self.Orientation);
var quantizedTurret = body.QuantizeOrientation(self, turretOrientation); var quantizedTurret = body.QuantizeOrientation(self, turretOrientation);
return turretOffset + body.LocalToWorld(localOffset.Rotate(quantizedTurret).Rotate(quantizedBody)); return turretOffset + body.LocalToWorld(localOffset.Rotate(quantizedTurret).Rotate(quantizedBody));
} }

View File

@@ -48,12 +48,12 @@ namespace OpenRA.Mods.TS.Traits
var voxel = VoxelProvider.GetVoxel(rv.Image, info.Sequence); var voxel = VoxelProvider.GetVoxel(rv.Image, info.Sequence);
rv.Add(new VoxelAnimation(voxel, () => WVec.Zero, rv.Add(new VoxelAnimation(voxel, () => WVec.Zero,
() => new[]{ body.QuantizeOrientation(self, self.Orientation) }, () => new[] { body.QuantizeOrientation(self, self.Orientation) },
() => false, () => 0)); () => false, () => 0));
// Selection size // Selection size
var rvi = self.Info.Traits.Get<RenderVoxelsInfo>(); var rvi = self.Info.Traits.Get<RenderVoxelsInfo>();
var s = (int)(rvi.Scale*voxel.Size.Aggregate(Math.Max)); var s = (int)(rvi.Scale * voxel.Size.Aggregate(Math.Max));
size = new int2(s, s); size = new int2(s, s);
} }

View File

@@ -37,7 +37,7 @@ namespace OpenRA.Mods.TS.Traits
{ {
// Rotate vectors to expected orientation // Rotate vectors to expected orientation
// Voxel coordinates are x=forward, y=right, z=up // Voxel coordinates are x=forward, y=right, z=up
var channel = new int[] {2,1,0}; var channel = new int[] { 2, 1, 0 };
var n = info.Type == NormalType.RedAlert2 ? RA2Normals : TSNormals; var n = info.Type == NormalType.RedAlert2 ? RA2Normals : TSNormals;
// Map normals into color range // Map normals into color range
@@ -48,8 +48,8 @@ namespace OpenRA.Mods.TS.Traits
data[i] = 0xFF000000; data[i] = 0xFF000000;
for (var j = 0; j < 3; j++) for (var j = 0; j < 3; j++)
{ {
var t = (n[3*i + j] + 1) / 2; var t = (n[3 * i + j] + 1) / 2;
data[i] |= (uint)((byte)(t*0xFF + 0.5) << (8*channel[j])); data[i] |= (uint)((byte)(t * 0xFF + 0.5) << (8 * channel[j]));
} }
} }

View File

@@ -252,6 +252,11 @@
<BooleanProperty Name="Enabled">False</BooleanProperty> <BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings> </RuleSettings>
</Rule> </Rule>
<Rule Name="OpeningCurlyBracketsMustNotBePrecededByBlankLine">
<RuleSettings>
<BooleanProperty Name="Enabled">False</BooleanProperty>
</RuleSettings>
</Rule>
</Rules> </Rules>
<AnalyzerSettings /> <AnalyzerSettings />
</Analyzer> </Analyzer>