diff --git a/OpenRA.Mods.Cnc/CncLoadScreen.cs b/OpenRA.Mods.Cnc/CncLoadScreen.cs index 8d2c2de1ae..5c96d4959e 100644 --- a/OpenRA.Mods.Cnc/CncLoadScreen.cs +++ b/OpenRA.Mods.Cnc/CncLoadScreen.cs @@ -19,19 +19,19 @@ namespace OpenRA.Mods.Cnc { public class CncLoadScreen : ILoadScreen { - Dictionary Info; + Dictionary loadInfo; Stopwatch loadTimer = new Stopwatch(); Sprite[] ss; int loadTick; float2 nodPos, gdiPos, evaPos; Sprite nodLogo, gdiLogo, evaLogo, brightBlock, dimBlock; - Rectangle Bounds; + Rectangle bounds; Renderer r; NullInputHandler nih = new NullInputHandler(); public void Init(Dictionary info) { - Info = info; + loadInfo = info; // Avoid standard loading mechanisms so we // can display loadscreen as early as possible @@ -40,26 +40,26 @@ namespace OpenRA.Mods.Cnc var s = new Sheet("mods/cnc/uibits/chrome.png"); var res = Renderer.Resolution; - Bounds = new Rectangle(0, 0, res.Width, res.Height); + bounds = new Rectangle(0, 0, res.Width, res.Height); - ss = new [] + ss = new[] { - new Sprite(s, new Rectangle(161,128,62,33), TextureChannel.Alpha), - new Sprite(s, new Rectangle(161,223,62,33), TextureChannel.Alpha), - new Sprite(s, new Rectangle(128,161,33,62), TextureChannel.Alpha), - new Sprite(s, new Rectangle(223,161,33,62), TextureChannel.Alpha), - new Sprite(s, new Rectangle(128,128,33,33), TextureChannel.Alpha), - new Sprite(s, new Rectangle(223,128,33,33), TextureChannel.Alpha), - new Sprite(s, new Rectangle(128,223,33,33), TextureChannel.Alpha), - new Sprite(s, new Rectangle(223,223,33,33), TextureChannel.Alpha) + new Sprite(s, new Rectangle(161, 128, 62, 33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(161, 223, 62, 33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(128, 161, 33, 62), TextureChannel.Alpha), + new Sprite(s, new Rectangle(223, 161, 33, 62), TextureChannel.Alpha), + new Sprite(s, new Rectangle(128, 128, 33, 33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(223, 128, 33, 33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(128, 223, 33, 33), TextureChannel.Alpha), + new Sprite(s, new Rectangle(223, 223, 33, 33), TextureChannel.Alpha) }; nodLogo = new Sprite(s, new Rectangle(0, 256, 256, 256), TextureChannel.Alpha); gdiLogo = new Sprite(s, new Rectangle(256, 256, 256, 256), TextureChannel.Alpha); evaLogo = new Sprite(s, new Rectangle(256, 64, 128, 64), TextureChannel.Alpha); - nodPos = new float2(Bounds.Width / 2 - 384, Bounds.Height / 2 - 128); - gdiPos = new float2(Bounds.Width / 2 + 128, Bounds.Height / 2 - 128); - evaPos = new float2(Bounds.Width - 43 - 128, 43); + nodPos = new float2(bounds.Width / 2 - 384, bounds.Height / 2 - 128); + gdiPos = new float2(bounds.Width / 2 + 128, bounds.Height / 2 - 128); + evaPos = new float2(bounds.Width - 43 - 128, 43); brightBlock = new Sprite(s, new Rectangle(320, 0, 16, 35), TextureChannel.Alpha); dimBlock = new Sprite(s, new Rectangle(336, 0, 16, 35), TextureChannel.Alpha); @@ -83,19 +83,19 @@ namespace OpenRA.Mods.Cnc r.RgbaSpriteRenderer.DrawSprite(nodLogo, nodPos); r.RgbaSpriteRenderer.DrawSprite(evaLogo, evaPos); - WidgetUtils.DrawPanelPartial(ss, Bounds, PanelSides.Edges); - var barY = Bounds.Height - 78; + WidgetUtils.DrawPanelPartial(ss, bounds, PanelSides.Edges); + var barY = bounds.Height - 78; if (!setup && r.Fonts != null) { loadingFont = r.Fonts["BigBold"]; loadingText = "Loading"; - loadingPos = new float2((Bounds.Width - loadingFont.Measure(loadingText).X) / 2, barY); + loadingPos = new float2((bounds.Width - loadingFont.Measure(loadingText).X) / 2, barY); versionFont = r.Fonts["Regular"]; versionText = WidgetUtils.ActiveModVersion(); var versionSize = versionFont.Measure(versionText); - versionPos = new float2(Bounds.Width - 107 - versionSize.X/2, 115 - versionSize.Y/2); + versionPos = new float2(bounds.Width - 107 - versionSize.X / 2, 115 - versionSize.Y / 2); setup = true; } @@ -109,9 +109,9 @@ namespace OpenRA.Mods.Cnc { var block = loadTick == i ? brightBlock : dimBlock; r.RgbaSpriteRenderer.DrawSprite(block, - new float2(Bounds.Width / 2 - 114 - i * 32, barY)); + new float2(bounds.Width / 2 - 114 - i * 32, barY)); r.RgbaSpriteRenderer.DrawSprite(block, - new float2(Bounds.Width / 2 + 114 + i * 32 - 16, barY)); + new float2(bounds.Width / 2 + 114 + i * 32 - 16, barY)); } r.EndFrame(nih); @@ -125,19 +125,18 @@ namespace OpenRA.Mods.Cnc void TestAndContinue() { Ui.ResetAll(); - if (!FileSystem.Exists(Info["TestFile"])) + if (!FileSystem.Exists(loadInfo["TestFile"])) { var args = new WidgetArgs() { { "continueLoading", () => TestAndContinue() }, - { "installData", Info } + { "installData", loadInfo } }; - Ui.LoadWidget(Info["InstallerBackgroundWidget"], Ui.Root, args); - Ui.OpenWindow(Info["InstallerMenuWidget"], args); + Ui.LoadWidget(loadInfo["InstallerBackgroundWidget"], Ui.Root, args); + Ui.OpenWindow(loadInfo["InstallerMenuWidget"], args); } else Game.LoadShellMap(); } } -} - +} \ No newline at end of file diff --git a/OpenRA.Mods.Cnc/CncMenuPaletteEffect.cs b/OpenRA.Mods.Cnc/CncMenuPaletteEffect.cs index 71ee66a307..e3cbe78313 100644 --- a/OpenRA.Mods.Cnc/CncMenuPaletteEffect.cs +++ b/OpenRA.Mods.Cnc/CncMenuPaletteEffect.cs @@ -49,7 +49,7 @@ namespace OpenRA.Mods.Cnc Color ColorForEffect(EffectType t, Color orig) { - switch(t) + switch (t) { case EffectType.Black: return Color.FromArgb(orig.A, Color.Black); @@ -62,7 +62,7 @@ namespace OpenRA.Mods.Cnc } } - public void AdjustPalette(Dictionary palettes) + public void AdjustPalette(Dictionary palettes) { if (to == EffectType.None && remainingFrames == 0) return; diff --git a/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs b/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs index 7086c416cd..c56c0dd91f 100755 --- a/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs +++ b/OpenRA.Mods.Cnc/Missions/CncShellmapScript.cs @@ -19,18 +19,18 @@ namespace OpenRA.Mods.RA { class CncShellmapScriptInfo : TraitInfo { } - class CncShellmapScript: IWorldLoaded, ITick + class CncShellmapScript : IWorldLoaded, ITick { - Dictionary Actors; - static CPos ViewportOrigin; + static CPos viewportOrigin; + Dictionary actors; public void WorldLoaded(World w) { var b = w.Map.Bounds; - ViewportOrigin = new CPos(b.Left + b.Width/2, b.Top + b.Height/2); - Game.MoveViewport(ViewportOrigin.ToFloat2()); + viewportOrigin = new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2); + Game.MoveViewport(viewportOrigin.ToFloat2()); - Actors = w.WorldActor.Trait().Actors; + actors = w.WorldActor.Trait().Actors; SetViewport(); } @@ -38,7 +38,7 @@ namespace OpenRA.Mods.RA void SetViewport() { var t = (ticks + 45) % (360f * speed) * (Math.PI / 180) * 1f / speed; - var loc = ViewportOrigin.ToFloat2() + (new float2(-15,4) * float2.FromAngle( (float)t )); + var loc = viewportOrigin.ToFloat2() + (new float2(-15, 4) * float2.FromAngle((float)t)); Game.viewport.Center(loc); } @@ -51,16 +51,16 @@ namespace OpenRA.Mods.RA if (ticks == 0) { - LoopTrack(Actors["boat1"], Actors["tl1"].Location, Actors["tr1"].Location); - LoopTrack(Actors["boat3"], Actors["tl1"].Location, Actors["tr1"].Location); - LoopTrack(Actors["boat2"], Actors["tl3"].Location, Actors["tr3"].Location); - LoopTrack(Actors["boat4"], Actors["tl3"].Location, Actors["tr3"].Location); - CreateUnitsInTransport(Actors["lst1"], new string[] {"htnk"}); - CreateUnitsInTransport(Actors["lst2"], new string[] {"mcv"}); - CreateUnitsInTransport(Actors["lst3"], new string[] {"htnk"}); - LoopTrack(Actors["lst1"], Actors["tl2"].Location, Actors["tr2"].Location); - LoopTrack(Actors["lst2"], Actors["tl2"].Location, Actors["tr2"].Location); - LoopTrack(Actors["lst3"], Actors["tl2"].Location, Actors["tr2"].Location); + LoopTrack(actors["boat1"], actors["tl1"].Location, actors["tr1"].Location); + LoopTrack(actors["boat3"], actors["tl1"].Location, actors["tr1"].Location); + LoopTrack(actors["boat2"], actors["tl3"].Location, actors["tr3"].Location); + LoopTrack(actors["boat4"], actors["tl3"].Location, actors["tr3"].Location); + CreateUnitsInTransport(actors["lst1"], new string[] { "htnk" }); + CreateUnitsInTransport(actors["lst2"], new string[] { "mcv" }); + CreateUnitsInTransport(actors["lst3"], new string[] { "htnk" }); + LoopTrack(actors["lst1"], actors["tl2"].Location, actors["tr2"].Location); + LoopTrack(actors["lst2"], actors["tl2"].Location, actors["tr2"].Location); + LoopTrack(actors["lst3"], actors["tl2"].Location, actors["tr2"].Location); } ticks++; @@ -73,8 +73,8 @@ namespace OpenRA.Mods.RA foreach (var i in cargo) c.Load(transport, transport.World.CreateActor(false, i.ToLowerInvariant(), new TypeDictionary { - new OwnerInit( transport.Owner ), - new FacingInit( f.Facing ), + new OwnerInit(transport.Owner), + new FacingInit(f.Facing), })); } @@ -83,7 +83,7 @@ namespace OpenRA.Mods.RA var mobile = self.Trait(); self.QueueActivity(mobile.ScriptedMove(left)); self.QueueActivity(new SimpleTeleport(right)); - self.QueueActivity(new CallFunc(() => LoopTrack(self,left,right))); + self.QueueActivity(new CallFunc(() => LoopTrack(self, left, right))); } } } diff --git a/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs b/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs index 97fc4f0c66..6261f6689a 100644 --- a/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs +++ b/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs @@ -15,25 +15,25 @@ using OpenRA.FileFormats; using OpenRA.Mods.RA; using OpenRA.Mods.RA.Activities; using OpenRA.Mods.RA.Move; +using OpenRA.Scripting; using OpenRA.Traits; using OpenRA.Widgets; -using OpenRA.Scripting; namespace OpenRA.Mods.Cnc.Missions { class Gdi01ScriptInfo : TraitInfo { } - class Gdi01Script: IWorldLoaded, ITick + class Gdi01Script : IWorldLoaded, ITick { - Dictionary Actors; - Dictionary Players; + Dictionary actors; + Dictionary players; public void WorldLoaded(World w) { - Players = w.Players.ToDictionary(p => p.InternalName); - Actors = w.WorldActor.Trait().Actors; + players = w.Players.ToDictionary(p => p.InternalName); + actors = w.WorldActor.Trait().Actors; var b = w.Map.Bounds; - Game.MoveViewport(new CPos(b.Left + b.Width/2, b.Top + b.Height/2).ToFloat2()); + Game.MoveViewport(new CPos(b.Left + b.Width / 2, b.Top + b.Height / 2).ToFloat2()); Action afterFMV = () => { @@ -48,10 +48,10 @@ namespace OpenRA.Mods.Cnc.Missions { Action afterFMV = () => { - Players["GoodGuy"].WinState = WinState.Won; + players["GoodGuy"].WinState = WinState.Won; started = false; Sound.StopMusic(); - Sound.PlayToPlayer(Players["GoodGuy"], "accom1.aud"); + Sound.PlayToPlayer(players["GoodGuy"], "accom1.aud"); }; Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "consyard.vqa", afterFMV)); } @@ -60,10 +60,10 @@ namespace OpenRA.Mods.Cnc.Missions { Action afterFMV = () => { - Players["GoodGuy"].WinState = WinState.Lost; + players["GoodGuy"].WinState = WinState.Lost; started = false; Sound.StopMusic(); - Sound.PlayToPlayer(Players["GoodGuy"], "fail1.aud"); + Sound.PlayToPlayer(players["GoodGuy"], "fail1.aud"); }; Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "gameover.vqa", afterFMV)); } @@ -82,27 +82,29 @@ namespace OpenRA.Mods.Cnc.Missions SetGunboatPath(); self.World.AddFrameEndTask(w => { - //Initial Nod reinforcements - foreach (var i in new[]{ "e1", "e1" }) + // Initial Nod reinforcements + foreach (var i in new[] { "e1", "e1" }) { var a = self.World.CreateActor(i.ToLowerInvariant(), new TypeDictionary { - new OwnerInit(Players["BadGuy"]), + new OwnerInit(players["BadGuy"]), new FacingInit(0), - new LocationInit(Actors["nod0"].Location), + new LocationInit(actors["nod0"].Location), }); var mobile = a.Trait(); - a.QueueActivity(mobile.MoveTo(Actors["nod1"].Location, 2 )); - a.QueueActivity(mobile.MoveTo(Actors["nod2"].Location, 2 )); - a.QueueActivity(mobile.MoveTo(Actors["nod3"].Location, 2 )); + a.QueueActivity(mobile.MoveTo(actors["nod1"].Location, 2)); + a.QueueActivity(mobile.MoveTo(actors["nod2"].Location, 2)); + a.QueueActivity(mobile.MoveTo(actors["nod3"].Location, 2)); + // TODO: Queue hunt order } }); } + // GoodGuy win conditions // BadGuy is dead var badcount = self.World.Actors.Count(a => a != a.Owner.PlayerActor && - a.Owner == Players["BadGuy"] && !a.IsDead()); + a.Owner == players["BadGuy"] && !a.IsDead()); if (badcount != lastBadCount) { Game.Debug("{0} badguys remain".F(badcount)); @@ -112,51 +114,51 @@ namespace OpenRA.Mods.Cnc.Missions OnVictory(self.World); } - //GoodGuy lose conditions: MCV/cyard must survive + // GoodGuy lose conditions: MCV/cyard must survive var hasAnything = self.World.ActorsWithTrait() - .Any( a => a.Actor.Owner == Players["GoodGuy"] ); + .Any(a => a.Actor.Owner == players["GoodGuy"]); if (!hasAnything) OnLose(self.World); // GoodGuy reinforcements - if (ticks == 25*5) + if (ticks == 25 * 5) { ReinforceFromSea(self.World, - Actors["lstStart"].Location, - Actors["lstEnd"].Location, + actors["lstStart"].Location, + actors["lstEnd"].Location, new CPos(53, 53), - new string[] {"e1","e1","e1"}, - Players["GoodGuy"]); + new string[] { "e1", "e1", "e1" }, + players["GoodGuy"]); } - if (ticks == 25*15) + if (ticks == 25 * 15) { ReinforceFromSea(self.World, - Actors["lstStart"].Location, - Actors["lstEnd"].Location, + actors["lstStart"].Location, + actors["lstEnd"].Location, new CPos(53, 53), - new string[] {"e1","e1","e1"}, - Players["GoodGuy"]); + new string[] { "e1", "e1", "e1" }, + players["GoodGuy"]); } - if (ticks == 25*30) + if (ticks == 25 * 30) { ReinforceFromSea(self.World, - Actors["lstStart"].Location, - Actors["lstEnd"].Location, + actors["lstStart"].Location, + actors["lstEnd"].Location, new CPos(53, 53), - new string[] {"jeep"}, - Players["GoodGuy"]); + new string[] { "jeep" }, + players["GoodGuy"]); } - if (ticks == 25*60) + if (ticks == 25 * 60) { ReinforceFromSea(self.World, - Actors["lstStart"].Location, - Actors["lstEnd"].Location, + actors["lstStart"].Location, + actors["lstEnd"].Location, new CPos(53, 53), - new string[] {"jeep"}, - Players["GoodGuy"]); + new string[] { "jeep" }, + players["GoodGuy"]); } ticks++; @@ -164,11 +166,11 @@ namespace OpenRA.Mods.Cnc.Missions void SetGunboatPath() { - var self = Actors[ "Gunboat" ]; + var self = actors["Gunboat"]; var mobile = self.Trait(); - self.Trait().stance = UnitStance.AttackAnything; //TODO: this is ignored - self.QueueActivity(mobile.ScriptedMove(Actors["gunboatLeft"].Location)); - self.QueueActivity(mobile.ScriptedMove(Actors["gunboatRight"].Location)); + self.Trait().stance = UnitStance.AttackAnything; // TODO: this is ignored + self.QueueActivity(mobile.ScriptedMove(actors["gunboatLeft"].Location)); + self.QueueActivity(mobile.ScriptedMove(actors["gunboatRight"].Location)); self.QueueActivity(new CallFunc(() => SetGunboatPath())); } @@ -176,13 +178,13 @@ namespace OpenRA.Mods.Cnc.Missions { world.AddFrameEndTask(w => { - Sound.PlayToPlayer(w.LocalPlayer,"reinfor1.aud"); + Sound.PlayToPlayer(w.LocalPlayer, "reinfor1.aud"); var a = w.CreateActor("lst", new TypeDictionary { - new LocationInit( startPos ), - new OwnerInit( player ), - new FacingInit( 0 ), + new LocationInit(startPos), + new OwnerInit(player), + new FacingInit(0), }); var mobile = a.Trait(); @@ -190,8 +192,8 @@ namespace OpenRA.Mods.Cnc.Missions foreach (var i in items) cargo.Load(a, world.CreateActor(false, i.ToLowerInvariant(), new TypeDictionary { - new OwnerInit( player ), - new FacingInit( 0 ), + new OwnerInit(player), + new FacingInit(0), })); a.CancelActivity(); diff --git a/OpenRA.Mods.Cnc/Missions/Nod01Script.cs b/OpenRA.Mods.Cnc/Missions/Nod01Script.cs index 0fa3cfaa12..be8b23def6 100644 --- a/OpenRA.Mods.Cnc/Missions/Nod01Script.cs +++ b/OpenRA.Mods.Cnc/Missions/Nod01Script.cs @@ -11,16 +11,16 @@ using System; using System.Collections.Generic; using System.Linq; +using OpenRA.FileFormats; using OpenRA.Mods.Cnc; using OpenRA.Mods.RA; -using OpenRA.Mods.RA.Air; -using OpenRA.Mods.RA.Move; using OpenRA.Mods.RA.Activities; -using OpenRA.Mods.RA.Missions; +using OpenRA.Mods.RA.Air; using OpenRA.Mods.RA.Buildings; +using OpenRA.Mods.RA.Missions; +using OpenRA.Mods.RA.Move; using OpenRA.Scripting; using OpenRA.Traits; -using OpenRA.FileFormats; namespace OpenRA.Mods.Cnc.Missions { @@ -90,6 +90,7 @@ namespace OpenRA.Mods.Cnc.Missions NODReinforceNthA(); Sound.Play("reinfor1.aud"); } + if (world.FrameNumber == 1400) { NODReinforceNthB(); @@ -107,6 +108,7 @@ namespace OpenRA.Mods.Cnc.Missions Sound.Play("reinfor1.aud"); } } + if (levelvillage.Status == ObjectiveStatus.InProgress) { if (vil01.Destroyed && vil02.Destroyed && vil03.Destroyed && vil04.Destroyed && vil05.Destroyed && vil06.Destroyed && diff --git a/OpenRA.Mods.Cnc/PoisonedByTiberium.cs b/OpenRA.Mods.Cnc/PoisonedByTiberium.cs index 3bdb6330bf..8792168f5e 100644 --- a/OpenRA.Mods.Cnc/PoisonedByTiberium.cs +++ b/OpenRA.Mods.Cnc/PoisonedByTiberium.cs @@ -34,12 +34,12 @@ namespace OpenRA.Mods.Cnc var rl = self.World.WorldActor.Trait(); var r = rl.GetResource(self.Location); - if( r == null ) return; - if( !info.Resources.Contains(r.info.Name) ) return; + if (r == null) return; + if (!info.Resources.Contains(r.info.Name)) return; var weapon = Rules.Weapons[info.Weapon.ToLowerInvariant()]; - self.InflictDamage( self.World.WorldActor, weapon.Warheads[ 0 ].Damage, weapon.Warheads[ 0 ] ); + self.InflictDamage(self.World.WorldActor, weapon.Warheads[0].Damage, weapon.Warheads[0]); poisonTicks = weapon.ROF; } } diff --git a/OpenRA.Mods.Cnc/ProductionQueueFromSelection.cs b/OpenRA.Mods.Cnc/ProductionQueueFromSelection.cs index 938cef99cb..8d2c4cb97e 100644 --- a/OpenRA.Mods.Cnc/ProductionQueueFromSelection.cs +++ b/OpenRA.Mods.Cnc/ProductionQueueFromSelection.cs @@ -20,13 +20,13 @@ namespace OpenRA.Mods.Cnc.Widgets { public string ProductionTabsWidget = null; - public object Create( ActorInitializer init ) { return new ProductionQueueFromSelection(init.world, this); } + public object Create(ActorInitializer init) { return new ProductionQueueFromSelection(init.world, this); } } class ProductionQueueFromSelection : INotifySelection { - Lazy tabsWidget; readonly World world; + Lazy tabsWidget; public ProductionQueueFromSelection(World world, ProductionQueueFromSelectionInfo info) { diff --git a/OpenRA.Mods.Cnc/SpawnViceroid.cs b/OpenRA.Mods.Cnc/SpawnViceroid.cs index b7f584abe2..d385da15d3 100644 --- a/OpenRA.Mods.Cnc/SpawnViceroid.cs +++ b/OpenRA.Mods.Cnc/SpawnViceroid.cs @@ -26,28 +26,28 @@ namespace OpenRA.Mods.Cnc class SpawnViceroid : INotifyKilled { - readonly SpawnViceroidInfo Info; + readonly SpawnViceroidInfo spawnViceroidInfo; - public SpawnViceroid(SpawnViceroidInfo info) { Info = info; } + public SpawnViceroid(SpawnViceroidInfo info) { spawnViceroidInfo = info; } public void Killed(Actor self, AttackInfo e) { - if (e.Warhead == null || e.Warhead.InfDeath != Info.InfDeath) return; - if (self.World.SharedRandom.Next(100) > Info.Probability) return; + if (e.Warhead == null || e.Warhead.InfDeath != spawnViceroidInfo.InfDeath) return; + if (self.World.SharedRandom.Next(100) > spawnViceroidInfo.Probability) return; self.World.AddFrameEndTask(w => { var td = new TypeDictionary { - new LocationInit( self.Location ), - new OwnerInit( self.World.Players.First(p => p.InternalName == Info.Owner) ) + new LocationInit(self.Location), + new OwnerInit(self.World.Players.First(p => p.InternalName == spawnViceroidInfo.Owner)) }; var facing = self.TraitOrDefault(); if (facing != null) - td.Add(new FacingInit( facing.Facing )); + td.Add(new FacingInit(facing.Facing)); - w.CreateActor(Info.ViceroidActor, td); + w.CreateActor(spawnViceroidInfo.ViceroidActor, td); }); } } diff --git a/OpenRA.Mods.Cnc/TiberiumRefinery.cs b/OpenRA.Mods.Cnc/TiberiumRefinery.cs index 49a77be9ea..ef0729cf33 100644 --- a/OpenRA.Mods.Cnc/TiberiumRefinery.cs +++ b/OpenRA.Mods.Cnc/TiberiumRefinery.cs @@ -20,8 +20,7 @@ namespace OpenRA.Mods.Cnc public class TiberiumRefinery : OreRefinery { - public TiberiumRefinery(Actor self, TiberiumRefineryInfo info) - : base(self, info) {} + public TiberiumRefinery(Actor self, TiberiumRefineryInfo info) : base(self, info) { } public override Activity DockSequence(Actor harv, Actor self) { diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs index 32d9a57cda..713bdc578b 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs @@ -26,12 +26,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var hotkeyLabel = "({0})".F(button.Key.ToUpperInvariant()); hotkey.GetText = () => hotkeyLabel; - hotkey.Bounds.X = labelWidth + 2*label.Bounds.X; + hotkey.Bounds.X = labelWidth + 2 * label.Bounds.X; var panelWidth = hotkey.Bounds.X + label.Bounds.X + Game.Renderer.Fonts[label.Font].Measure(hotkeyLabel).X; widget.Bounds.Width = panelWidth; } } -} - +} \ No newline at end of file diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs index 12f6995fa0..75f77f6f2c 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs @@ -24,6 +24,17 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic Widget ingameRoot; World world; + static void BindOrderButton(World world, Widget parent, string button, string icon) + where T : IOrderGenerator, new() + { + var w = parent.Get(button); + w.OnClick = () => world.ToggleInputMode(); + w.IsHighlighted = () => world.OrderGenerator is T; + + w.Get("ICON").GetImageName = + () => world.OrderGenerator is T ? icon + "-active" : icon; + } + void AddChatLine(Color c, string from, string text) { ingameRoot.Get("CHAT_DISPLAY").AddLine(c, from, text); @@ -114,7 +125,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic .Any(a => a.Actor.Owner == world.LocalPlayer && a.Trait.IsActive); if (radarEnabled != cachedRadarEnabled) - Sound.PlayNotification(null, "Sounds", (radarEnabled ? "RadarUp" : "RadarDown"), null); + Sound.PlayNotification(null, "Sounds", radarEnabled ? "RadarUp" : "RadarDown", null); cachedRadarEnabled = radarEnabled; // Switch to observer mode after win/loss @@ -152,16 +163,5 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic return Color.LimeGreen; }; } - - static void BindOrderButton(World world, Widget parent, string button, string icon) - where T : IOrderGenerator, new() - { - var w = parent.Get(button); - w.OnClick = () => world.ToggleInputMode(); - w.IsHighlighted = () => world.OrderGenerator is T; - - w.Get("ICON").GetImageName = - () => world.OrderGenerator is T ? icon+"-active" : icon; - } } } diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameMenuLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameMenuLogic.cs index bdb80ccfec..2cd9679375 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameMenuLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameMenuLogic.cs @@ -49,7 +49,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic }); }; - Action doNothing = () => {}; + Action doNothing = () => { }; menu.Get("QUIT_BUTTON").OnClick = () => CncWidgetUtils.PromptConfirmAction("Abort Mission", "Leave this game and return to the menu?", onQuit, doNothing); @@ -92,35 +92,35 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic // Menu panels - ordered from lowest to highest priority var panelParent = Game.OpenWindow(world, "INGAME_MENU_PANEL"); - PanelType Panel = PanelType.Objectives; + PanelType panelType = PanelType.Objectives; var visibleButtons = 0; // Debug / Cheats panel var debugButton = panelParent.Get("DEBUG_BUTTON"); - debugButton.OnClick = () => Panel = PanelType.Debug; - debugButton.IsHighlighted = () => Panel == PanelType.Debug; + debugButton.OnClick = () => panelType = PanelType.Debug; + debugButton.IsHighlighted = () => panelType == PanelType.Debug; if (world.LocalPlayer != null && world.LobbyInfo.GlobalSettings.AllowCheats) { - Panel = PanelType.Debug; + panelType = PanelType.Debug; visibleButtons++; - var debugPanel = Game.LoadWidget(world, "CHEATS_PANEL", panelParent, new WidgetArgs(){{"onExit", doNothing}}); - debugPanel.IsVisible = () => Panel == PanelType.Debug; + var debugPanel = Game.LoadWidget(world, "CHEATS_PANEL", panelParent, new WidgetArgs() { { "onExit", doNothing } }); + debugPanel.IsVisible = () => panelType == PanelType.Debug; debugButton.IsVisible = () => visibleButtons > 1; } // Mission objectives var iop = world.WorldActor.TraitsImplementing().FirstOrDefault(); var objectivesButton = panelParent.Get("OBJECTIVES_BUTTON"); - objectivesButton.OnClick = () => Panel = PanelType.Objectives; - objectivesButton.IsHighlighted = () => Panel == PanelType.Objectives; + objectivesButton.OnClick = () => panelType = PanelType.Objectives; + objectivesButton.IsHighlighted = () => panelType == PanelType.Objectives; if (iop != null && iop.ObjectivesPanel != null) { - Panel = PanelType.Objectives; + panelType = PanelType.Objectives; visibleButtons++; var objectivesPanel = Game.LoadWidget(world, iop.ObjectivesPanel, panelParent, new WidgetArgs()); - objectivesPanel.IsVisible = () => Panel == PanelType.Objectives; + objectivesPanel.IsVisible = () => panelType == PanelType.Objectives; objectivesButton.IsVisible = () => visibleButtons > 1; } } diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallFromCDLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallFromCDLogic.cs index 5a435c8e99..c024894a8c 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallFromCDLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallFromCDLogic.cs @@ -54,9 +54,9 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic public static bool IsValidDisk(string diskRoot) { var files = new string[][] { - new [] { diskRoot, "CONQUER.MIX" }, - new [] { diskRoot, "DESERT.MIX" }, - new [] { diskRoot, "INSTALL", "SETUP.Z" }, + new[] { diskRoot, "CONQUER.MIX" }, + new[] { diskRoot, "DESERT.MIX" }, + new[] { diskRoot, "INSTALL", "SETUP.Z" }, }; return files.All(f => File.Exists(f.Aggregate(Path.Combine))); @@ -89,7 +89,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var installTotal = filesToExtract.Count() + filesToExtract.Count(); var onProgress = (Action)(s => Game.RunAfterTick(() => { - progressBar.Percentage = installCounter*100/installTotal; + progressBar.Percentage = installCounter * 100 / installTotal; installCounter++; statusLabel.GetText = () => s; @@ -97,12 +97,12 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var onError = (Action)(s => Game.RunAfterTick(() => { - statusLabel.GetText = () => "Error: "+s; + statusLabel.GetText = () => "Error: " + s; backButton.IsDisabled = () => false; retryButton.IsDisabled = () => false; })); - new Thread( _ => + new Thread(_ => { try { diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallLogic.cs index 4d49ac346e..349f543ebf 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncInstallLogic.cs @@ -17,7 +17,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic public class CncInstallLogic { [ObjectCreator.UseCtor] - public CncInstallLogic(Widget widget, Dictionary installData, Action continueLoading) + public CncInstallLogic(Widget widget, Dictionary installData, Action continueLoading) { var panel = widget.Get("INSTALL_PANEL"); var args = new WidgetArgs() @@ -43,8 +43,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic { Ui.OpenWindow("MODS_PANEL", new WidgetArgs() { - { "onExit", () => {} }, - // Close this panel + { "onExit", () => { } }, { "onSwitch", Ui.CloseWindow }, }); }; diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncMenuLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncMenuLogic.cs index 4abf3ca97e..6e2ca0d708 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncMenuLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncMenuLogic.cs @@ -16,9 +16,9 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic { public class CncMenuLogic { - enum MenuType { Main, Multiplayer, Settings, None } + enum MenuType { Main, Multiplayer, Settings, None } - MenuType Menu = MenuType.Main; + MenuType menuType = MenuType.Main; Widget rootMenu; [ObjectCreator.UseCtor] @@ -32,85 +32,85 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic // Menu buttons var mainMenu = widget.Get("MAIN_MENU"); - mainMenu.IsVisible = () => Menu == MenuType.Main; + mainMenu.IsVisible = () => menuType == MenuType.Main; mainMenu.Get("SOLO_BUTTON").OnClick = StartSkirmishGame; - mainMenu.Get("MULTIPLAYER_BUTTON").OnClick = () => Menu = MenuType.Multiplayer; + mainMenu.Get("MULTIPLAYER_BUTTON").OnClick = () => menuType = MenuType.Multiplayer; mainMenu.Get("MODS_BUTTON").OnClick = () => { - Menu = MenuType.None; + menuType = MenuType.None; Ui.OpenWindow("MODS_PANEL", new WidgetArgs() { - { "onExit", () => Menu = MenuType.Main }, + { "onExit", () => menuType = MenuType.Main }, { "onSwitch", RemoveShellmapUI } }); }; - mainMenu.Get("SETTINGS_BUTTON").OnClick = () => Menu = MenuType.Settings; + mainMenu.Get("SETTINGS_BUTTON").OnClick = () => menuType = MenuType.Settings; mainMenu.Get("QUIT_BUTTON").OnClick = Game.Exit; // Multiplayer menu var multiplayerMenu = widget.Get("MULTIPLAYER_MENU"); - multiplayerMenu.IsVisible = () => Menu == MenuType.Multiplayer; + multiplayerMenu.IsVisible = () => menuType == MenuType.Multiplayer; - multiplayerMenu.Get("BACK_BUTTON").OnClick = () => Menu = MenuType.Main; + multiplayerMenu.Get("BACK_BUTTON").OnClick = () => menuType = MenuType.Main; multiplayerMenu.Get("JOIN_BUTTON").OnClick = () => OpenGamePanel("SERVERBROWSER_PANEL"); multiplayerMenu.Get("CREATE_BUTTON").OnClick = () => OpenGamePanel("CREATESERVER_PANEL"); multiplayerMenu.Get("DIRECTCONNECT_BUTTON").OnClick = () => OpenGamePanel("DIRECTCONNECT_PANEL"); // Settings menu var settingsMenu = widget.Get("SETTINGS_MENU"); - settingsMenu.IsVisible = () => Menu == MenuType.Settings; + settingsMenu.IsVisible = () => menuType == MenuType.Settings; settingsMenu.Get("REPLAYS_BUTTON").OnClick = () => { - Menu = MenuType.None; + menuType = MenuType.None; Ui.OpenWindow("REPLAYBROWSER_PANEL", new WidgetArgs() { - { "onExit", () => Menu = MenuType.Settings }, + { "onExit", () => menuType = MenuType.Settings }, { "onStart", RemoveShellmapUI } }); }; settingsMenu.Get("MUSIC_BUTTON").OnClick = () => { - Menu = MenuType.None; + menuType = MenuType.None; Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs() { - { "onExit", () => Menu = MenuType.Settings }, + { "onExit", () => menuType = MenuType.Settings }, }); }; settingsMenu.Get("CREDITS_BUTTON").OnClick = () => { - Menu = MenuType.None; + menuType = MenuType.None; Ui.OpenWindow("CREDITS_PANEL", new WidgetArgs() { - { "onExit", () => Menu = MenuType.Settings }, + { "onExit", () => menuType = MenuType.Settings }, }); }; settingsMenu.Get("SETTINGS_BUTTON").OnClick = () => { - Menu = MenuType.None; + menuType = MenuType.None; Game.OpenWindow("SETTINGS_PANEL", new WidgetArgs() { - { "onExit", () => Menu = MenuType.Settings }, + { "onExit", () => menuType = MenuType.Settings }, }); }; - settingsMenu.Get("BACK_BUTTON").OnClick = () => Menu = MenuType.Main; + settingsMenu.Get("BACK_BUTTON").OnClick = () => menuType = MenuType.Main; rootMenu.Get("RECBLOCK").IsVisible = () => world.FrameNumber / 25 % 2 == 0; } void OpenGamePanel(string id) { - Menu = MenuType.None; + menuType = MenuType.None; Ui.OpenWindow(id, new WidgetArgs() { - { "onExit", () => Menu = MenuType.Multiplayer }, + { "onExit", () => menuType = MenuType.Multiplayer }, { "openLobby", () => OpenLobbyPanel(MenuType.Multiplayer, false) } }); } @@ -122,10 +122,10 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic void OpenLobbyPanel(MenuType menu, bool addBots) { - Menu = MenuType.None; + menuType = MenuType.None; Game.OpenWindow("SERVER_LOBBY", new WidgetArgs() { - { "onExit", () => { Game.Disconnect(); Menu = menu; } }, + { "onExit", () => { Game.Disconnect(); menuType = menu; } }, { "onStart", RemoveShellmapUI }, { "addBots", addBots } }); @@ -138,7 +138,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic ConnectionLogic.Connect(IPAddress.Loopback.ToString(), Game.CreateLocalServer(map), () => OpenLobbyPanel(MenuType.Main, true), - () => { Game.CloseServer(); Menu = MenuType.Main; }); + () => { Game.CloseServer(); menuType = MenuType.Main; }); } } } diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs index 392e15c176..96ba7a49f4 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncSettingsLogic.cs @@ -16,9 +16,9 @@ using OpenRA.FileFormats; using OpenRA.FileFormats.Graphics; using OpenRA.GameRules; using OpenRA.Mods.RA; +using OpenRA.Mods.RA.Widgets; using OpenRA.Mods.RA.Widgets.Logic; using OpenRA.Widgets; -using OpenRA.Mods.RA.Widgets; namespace OpenRA.Mods.Cnc.Widgets.Logic { @@ -27,7 +27,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic enum PanelType { General, Input } SoundDevice soundDevice; - PanelType Settings = PanelType.General; + PanelType settingsPanel = PanelType.General; ColorPreviewManagerWidget colorPreview; World world; @@ -39,11 +39,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic // General pane var generalButton = panel.Get("GENERAL_BUTTON"); - generalButton.OnClick = () => Settings = PanelType.General; - generalButton.IsHighlighted = () => Settings == PanelType.General; + generalButton.OnClick = () => settingsPanel = PanelType.General; + generalButton.IsHighlighted = () => settingsPanel == PanelType.General; var generalPane = panel.Get("GENERAL_CONTROLS"); - generalPane.IsVisible = () => Settings == PanelType.General; + generalPane.IsVisible = () => settingsPanel == PanelType.General; var gameSettings = Game.Settings.Game; var playerSettings = Game.Settings.Player; @@ -102,7 +102,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic // Audio var soundSlider = generalPane.Get("SOUND_SLIDER"); - soundSlider.OnChange += x => { soundSettings.SoundVolume = x; Sound.SoundVolume = x;}; + soundSlider.OnChange += x => { soundSettings.SoundVolume = x; Sound.SoundVolume = x; }; soundSlider.Value = soundSettings.SoundVolume; var musicSlider = generalPane.Get("MUSIC_SLIDER"); @@ -122,11 +122,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic // Input pane var inputPane = panel.Get("INPUT_CONTROLS"); - inputPane.IsVisible = () => Settings == PanelType.Input; + inputPane.IsVisible = () => settingsPanel == PanelType.Input; var inputButton = panel.Get("INPUT_BUTTON"); - inputButton.OnClick = () => Settings = PanelType.Input; - inputButton.IsHighlighted = () => Settings == PanelType.Input; + inputButton.OnClick = () => settingsPanel = PanelType.Input; + inputButton.IsHighlighted = () => settingsPanel == PanelType.Input; var classicMouseCheckbox = inputPane.Get("CLASSICORDERS_CHECKBOX"); classicMouseCheckbox.IsChecked = () => gameSettings.UseClassicMouseStyle; @@ -154,7 +154,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic int x, y; int.TryParse(windowWidth.Text, out x); int.TryParse(windowHeight.Text, out y); - graphicsSettings.WindowedSize = new int2(x,y); + graphicsSettings.WindowedSize = new int2(x, y); soundSettings.Device = soundDevice.Device; soundSettings.Engine = soundDevice.Engine; Game.Settings.Save(); @@ -163,6 +163,28 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic }; } + static bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s) + { + var options = new Dictionary() + { + { "Disabled", MouseScrollType.Disabled }, + { "Standard", MouseScrollType.Standard }, + { "Inverted", MouseScrollType.Inverted }, + }; + + Func setupItem = (o, itemTemplate) => + { + var item = ScrollItemWidget.Setup(itemTemplate, + () => s.MouseScroll == options[o], + () => s.MouseScroll = options[o]); + item.Get("LABEL").GetText = () => o; + return item; + }; + + dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); + return true; + } + bool ShowColorPicker(DropDownButtonWidget color, PlayerSettings s) { Action onChange = c => colorPreview.Color = c; @@ -183,28 +205,6 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic return true; } - static bool ShowMouseScrollDropdown(DropDownButtonWidget dropdown, GameSettings s) - { - var options = new Dictionary() - { - { "Disabled", MouseScrollType.Disabled }, - { "Standard", MouseScrollType.Standard }, - { "Inverted", MouseScrollType.Inverted }, - }; - - Func setupItem = (o, itemTemplate) => - { - var item = ScrollItemWidget.Setup(itemTemplate, - () => s.MouseScroll == options[o], - () => s.MouseScroll = options[o]); - item.Get("LABEL").GetText = () => o; - return item; - }; - - dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 500, options.Keys, setupItem); - return true; - } - bool ShowAudioDeviceDropdown(DropDownButtonWidget dropdown, SoundSettings s, SoundDevice[] devices) { var i = 0; diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTabsLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTabsLogic.cs index aeb8f48df0..c8165241ee 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTabsLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTabsLogic.cs @@ -10,8 +10,8 @@ using System; using System.Drawing; -using OpenRA.Mods.RA.Orders; using OpenRA.Mods.RA.Buildings; +using OpenRA.Mods.RA.Orders; using OpenRA.Traits; using OpenRA.Widgets; @@ -42,8 +42,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var chromeName = button.ProductionGroup.ToLowerInvariant(); var icon = button.Get("ICON"); - icon.GetImageName = () => button.IsDisabled() ? chromeName+"-disabled" : - tabs.Groups[button.ProductionGroup].Alert ? chromeName+"-alert" : chromeName; + icon.GetImageName = () => button.IsDisabled() ? chromeName + "-disabled" : + tabs.Groups[button.ProductionGroup].Alert ? chromeName + "-alert" : chromeName; } [ObjectCreator.UseCtor] diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTooltipLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTooltipLogic.cs index 3c1a22b236..632f7eb0b9 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTooltipLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/ProductionTooltipLogic.cs @@ -23,8 +23,8 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic [ObjectCreator.UseCtor] public ProductionTooltipLogic(Widget widget, TooltipContainerWidget tooltipContainer, ProductionPaletteWidget palette) { - var pm = palette.world.LocalPlayer.PlayerActor.Trait(); - var pr = palette.world.LocalPlayer.PlayerActor.Trait(); + var pm = palette.World.LocalPlayer.PlayerActor.Trait(); + var pr = palette.World.LocalPlayer.PlayerActor.Trait(); widget.IsVisible = () => palette.TooltipActor != null; var nameLabel = widget.Get("NAME"); @@ -75,20 +75,20 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var descString = tooltip.Description.Replace("\\n", "\n"); descLabel.GetText = () => descString; - var leftWidth = new [] {font.Measure(tooltip.Name).X, requiresFont.Measure(requiresString).X, descFont.Measure(descString).X}.Aggregate(Math.Max); - var rightWidth = new [] {font.Measure(powerString).X, font.Measure(timeString).X, font.Measure(costString).X}.Aggregate(Math.Max); - timeLabel.Bounds.X = powerLabel.Bounds.X = costLabel.Bounds.X = leftWidth + 2*nameLabel.Bounds.X; - widget.Bounds.Width = leftWidth + rightWidth + 3*nameLabel.Bounds.X; + var leftWidth = new[] { font.Measure(tooltip.Name).X, requiresFont.Measure(requiresString).X, descFont.Measure(descString).X }.Aggregate(Math.Max); + var rightWidth = new[] { font.Measure(powerString).X, font.Measure(timeString).X, font.Measure(costString).X }.Aggregate(Math.Max); + timeLabel.Bounds.X = powerLabel.Bounds.X = costLabel.Bounds.X = leftWidth + 2 * nameLabel.Bounds.X; + widget.Bounds.Width = leftWidth + rightWidth + 3 * nameLabel.Bounds.X; var leftHeight = font.Measure(tooltip.Name).Y + requiresFont.Measure(requiresString).Y + descFont.Measure(descString).Y; var rightHeight = font.Measure(powerString).Y + font.Measure(timeString).Y + font.Measure(costString).Y; - widget.Bounds.Height = Math.Max(leftHeight, rightHeight)*3/2 + 3*nameLabel.Bounds.Y; + widget.Bounds.Height = Math.Max(leftHeight, rightHeight) * 3 / 2 + 3 * nameLabel.Bounds.Y; lastActor = actor; }; } - static string ActorName( string a ) + static string ActorName(string a) { ActorInfo ai; Rules.Info.TryGetValue(a.ToLowerInvariant(), out ai); @@ -98,5 +98,4 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic return a; } } -} - +} \ No newline at end of file diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/SupportPowerTooltipLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/SupportPowerTooltipLogic.cs index 85060a45a3..0d1bb46690 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/SupportPowerTooltipLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/SupportPowerTooltipLogic.cs @@ -43,7 +43,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic return; // no instances actually exist (race with destroy) time = "{0} / {1}".F(WidgetUtils.FormatTime(sp.RemainingTime), - WidgetUtils.FormatTime(sp.Info.ChargeTime*25)); + WidgetUtils.FormatTime(sp.Info.ChargeTime * 25)); if (sp == lastPower) return; @@ -53,7 +53,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic var timeWidth = timeFont.Measure(time).X; var topWidth = nameFont.Measure(name).X + timeWidth + timeOffset; var descSize = descFont.Measure(desc); - widget.Bounds.Width = 2*nameLabel.Bounds.X + Math.Max(topWidth, descSize.X); + widget.Bounds.Width = 2 * nameLabel.Bounds.X + Math.Max(topWidth, descSize.X); widget.Bounds.Height = baseHeight + descSize.Y; timeLabel.Bounds.X = widget.Bounds.Width - nameLabel.Bounds.X - timeWidth; lastPower = sp; @@ -64,5 +64,4 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic descLabel.GetText = () => desc; } } -} - +} \ No newline at end of file diff --git a/OpenRA.Mods.Cnc/Widgets/ProductionPaletteWidget.cs b/OpenRA.Mods.Cnc/Widgets/ProductionPaletteWidget.cs index b77c41159e..b172f81fc9 100755 --- a/OpenRA.Mods.Cnc/Widgets/ProductionPaletteWidget.cs +++ b/OpenRA.Mods.Cnc/Widgets/ProductionPaletteWidget.cs @@ -40,7 +40,7 @@ namespace OpenRA.Mods.Cnc.Widgets public readonly string HoldText = ""; public string TooltipActor { get; private set; } - public readonly World world; + public readonly World World; Lazy tooltipContainer; ProductionQueue currentQueue; @@ -52,7 +52,7 @@ namespace OpenRA.Mods.Cnc.Widgets } public override Rectangle EventBounds { get { return eventBounds; } } - Dictionary Icons = new Dictionary(); + Dictionary icons = new Dictionary(); Dictionary iconSprites; Animation cantBuild, clock; Rectangle eventBounds = Rectangle.Empty; @@ -63,7 +63,7 @@ namespace OpenRA.Mods.Cnc.Widgets [ObjectCreator.UseCtor] public ProductionPaletteWidget(World world, WorldRenderer worldRenderer) { - this.world = world; + this.World = world; this.worldRenderer = worldRenderer; tooltipContainer = Lazy.New(() => Ui.Root.Get(TooltipContainer)); @@ -93,7 +93,7 @@ namespace OpenRA.Mods.Cnc.Widgets { if (TooltipContainer != null) tooltipContainer.Value.SetTooltip(TooltipTemplate, - new WidgetArgs() {{ "palette", this }}); + new WidgetArgs() { { "palette", this } }); } public override void MouseExited() @@ -104,7 +104,7 @@ namespace OpenRA.Mods.Cnc.Widgets public override bool HandleMouseInput(MouseInput mi) { - var icon = Icons.Where(i => i.Key.Contains(mi.Location)) + var icon = icons.Where(i => i.Key.Contains(mi.Location)) .Select(i => i.Value).FirstOrDefault(); if (mi.Event == MouseInputEvent.Move) @@ -126,29 +126,28 @@ namespace OpenRA.Mods.Cnc.Widgets if (first != null && first.Done && actor.Traits.Contains()) { Sound.Play(TabClick); - world.OrderGenerator = new PlaceBuildingOrderGenerator(CurrentQueue.self, icon.Name); + World.OrderGenerator = new PlaceBuildingOrderGenerator(CurrentQueue.self, icon.Name); } - // Resume a paused item else if (first != null && first.Paused) { + // Resume a paused item Sound.Play(TabClick); - world.IssueOrder(Order.PauseProduction(CurrentQueue.self, icon.Name, false)); + World.IssueOrder(Order.PauseProduction(CurrentQueue.self, icon.Name, false)); } - // Queue a new item else if (CurrentQueue.BuildableItems().Any(a => a.Name == icon.Name)) { + // Queue a new item Sound.Play(TabClick); - Sound.PlayNotification(world.LocalPlayer, "Speech", CurrentQueue.Info.QueuedAudio, world.LocalPlayer.Country.Race); - world.IssueOrder(Order.StartProduction(CurrentQueue.self, icon.Name, + Sound.PlayNotification(World.LocalPlayer, "Speech", CurrentQueue.Info.QueuedAudio, World.LocalPlayer.Country.Race); + World.IssueOrder(Order.StartProduction(CurrentQueue.self, icon.Name, Game.GetModifierKeys().HasModifier(Modifiers.Shift) ? 5 : 1)); } else Sound.Play(DisabledTabClick); } - - // Hold/Cancel an existing item else if (mi.Button == MouseButton.Right) { + // Hold/Cancel an existing item if (first != null) { Sound.Play(TabClick); @@ -156,25 +155,26 @@ namespace OpenRA.Mods.Cnc.Widgets // instant cancel of things we havent started yet and things that are finished if (first.Paused || first.Done || first.TotalCost == first.RemainingCost) { - Sound.PlayNotification(world.LocalPlayer, "Speech", CurrentQueue.Info.CancelledAudio, world.LocalPlayer.Country.Race); - world.IssueOrder(Order.CancelProduction(CurrentQueue.self, icon.Name, + Sound.PlayNotification(World.LocalPlayer, "Speech", CurrentQueue.Info.CancelledAudio, World.LocalPlayer.Country.Race); + World.IssueOrder(Order.CancelProduction(CurrentQueue.self, icon.Name, Game.GetModifierKeys().HasModifier(Modifiers.Shift) ? 5 : 1)); } else { - Sound.PlayNotification(world.LocalPlayer, "Speech", CurrentQueue.Info.OnHoldAudio, world.LocalPlayer.Country.Race); - world.IssueOrder(Order.PauseProduction(CurrentQueue.self, icon.Name, true)); + Sound.PlayNotification(World.LocalPlayer, "Speech", CurrentQueue.Info.OnHoldAudio, World.LocalPlayer.Country.Race); + World.IssueOrder(Order.PauseProduction(CurrentQueue.self, icon.Name, true)); } } else Sound.Play(DisabledTabClick); } + return true; } public void RefreshIcons() { - Icons = new Dictionary(); + icons = new Dictionary(); if (CurrentQueue == null) return; @@ -185,7 +185,7 @@ namespace OpenRA.Mods.Cnc.Widgets { var x = i % Columns; var y = i / Columns; - var rect = new Rectangle(rb.X + x * 64 + 1, rb.Y + y * 48 + 1, 64, 48); + var rect = new Rectangle(rb.X + x * 64 + 1, rb.Y + y * 48 + 1, 64, 48); var pi = new ProductionIcon() { Name = item.Name, @@ -193,20 +193,20 @@ namespace OpenRA.Mods.Cnc.Widgets Pos = new float2(rect.Location), Queued = CurrentQueue.AllQueued().Where(a => a.Item == item.Name).ToList(), }; - Icons.Add(rect, pi); + icons.Add(rect, pi); i++; } - eventBounds = Icons.Keys.Aggregate(Rectangle.Union); + eventBounds = icons.Keys.Aggregate(Rectangle.Union); } public override void Draw() { overlayFont = Game.Renderer.Fonts["TinyBold"]; - timeOffset = new float2(32,24) - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2; - queuedOffset = new float2(4,2); - holdOffset = new float2(32,24) - overlayFont.Measure(HoldText) / 2; - readyOffset = new float2(32,24) - overlayFont.Measure(ReadyText) / 2; + timeOffset = new float2(32, 24) - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2; + queuedOffset = new float2(4, 2); + holdOffset = new float2(32, 24) - overlayFont.Measure(HoldText) / 2; + readyOffset = new float2(32, 24) - overlayFont.Measure(ReadyText) / 2; if (CurrentQueue == null) return; @@ -214,11 +214,11 @@ namespace OpenRA.Mods.Cnc.Widgets var buildableItems = CurrentQueue.BuildableItems().OrderBy(a => a.Traits.Get().BuildPaletteOrder); // Background - foreach (var rect in Icons.Keys) - WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1,1,1,1)); + foreach (var rect in icons.Keys) + WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1, 1, 1, 1)); // Icons - foreach (var icon in Icons.Values) + foreach (var icon in icons.Values) { WidgetUtils.DrawSHP(icon.Sprite, icon.Pos, worldRenderer); @@ -237,7 +237,7 @@ namespace OpenRA.Mods.Cnc.Widgets } // Overlays - foreach (var icon in Icons.Values) + foreach (var icon in icons.Values) { var total = icon.Queued.Count; if (total > 0) @@ -267,7 +267,7 @@ namespace OpenRA.Mods.Cnc.Widgets public override string GetCursor(int2 pos) { - var icon = Icons.Where(i => i.Key.Contains(pos)) + var icon = icons.Where(i => i.Key.Contains(pos)) .Select(i => i.Value).FirstOrDefault(); return icon != null ? base.GetCursor(pos) : null; diff --git a/OpenRA.Mods.Cnc/Widgets/ProductionTabsWidget.cs b/OpenRA.Mods.Cnc/Widgets/ProductionTabsWidget.cs index b618409176..41c5be3040 100755 --- a/OpenRA.Mods.Cnc/Widgets/ProductionTabsWidget.cs +++ b/OpenRA.Mods.Cnc/Widgets/ProductionTabsWidget.cs @@ -68,8 +68,8 @@ namespace OpenRA.Mods.Cnc.Widgets public readonly int ArrowWidth = 20; public Dictionary Groups; - int ContentWidth = 0; - float ListOffset = 0; + int contentWidth = 0; + float listOffset = 0; bool leftPressed = false; bool rightPressed = false; Rectangle leftButtonRect; @@ -107,10 +107,14 @@ namespace OpenRA.Mods.Cnc.Widgets public string QueueGroup { - get { return queueGroup; } + get + { + return queueGroup; + } + set { - ListOffset = 0; + listOffset = 0; queueGroup = value; SelectNextTab(false); } @@ -118,7 +122,11 @@ namespace OpenRA.Mods.Cnc.Widgets public ProductionQueue CurrentQueue { - get { return paletteWidget.Value.CurrentQueue; } + get + { + return paletteWidget.Value.CurrentQueue; + } + set { paletteWidget.Value.CurrentQueue = value; @@ -134,9 +142,9 @@ namespace OpenRA.Mods.Cnc.Widgets leftButtonRect = new Rectangle(rb.X, rb.Y, ArrowWidth, rb.Height); rightButtonRect = new Rectangle(rb.Right - ArrowWidth, rb.Y, ArrowWidth, rb.Height); - var leftDisabled = ListOffset >= 0; + var leftDisabled = listOffset >= 0; var leftHover = Ui.MouseOverWidget == this && leftButtonRect.Contains(Viewport.LastMousePos); - var rightDisabled = ListOffset <= Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - ContentWidth; + var rightDisabled = listOffset <= Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - contentWidth; var rightHover = Ui.MouseOverWidget == this && rightButtonRect.Contains(Viewport.LastMousePos); WidgetUtils.DrawPanel("panel-black", rb); @@ -150,20 +158,20 @@ namespace OpenRA.Mods.Cnc.Widgets // Draw tab buttons Game.Renderer.EnableScissor(leftButtonRect.Right, rb.Y + 1, rightButtonRect.Left - leftButtonRect.Right - 1, rb.Height); - var origin = new int2(leftButtonRect.Right - 1 + (int)ListOffset, leftButtonRect.Y); + var origin = new int2(leftButtonRect.Right - 1 + (int)listOffset, leftButtonRect.Y); SpriteFont font = Game.Renderer.Fonts["TinyBold"]; - ContentWidth = 0; + contentWidth = 0; foreach (var tab in Groups[queueGroup].Tabs) { - var rect = new Rectangle(origin.X + ContentWidth, origin.Y, TabWidth, rb.Height); + var rect = new Rectangle(origin.X + contentWidth, origin.Y, TabWidth, rb.Height); var hover = !leftHover && !rightHover && Ui.MouseOverWidget == this && rect.Contains(Viewport.LastMousePos); var baseName = tab.Queue == CurrentQueue ? "button-highlighted" : "button"; ButtonWidget.DrawBackground(baseName, rect, false, false, hover, false); - ContentWidth += TabWidth - 1; + contentWidth += TabWidth - 1; int2 textSize = font.Measure(tab.Name); - int2 position = new int2(rect.X + (rect.Width - textSize.X)/2, rect.Y + (rect.Height - textSize.Y)/2); + int2 position = new int2(rect.X + (rect.Width - textSize.X) / 2, rect.Y + (rect.Height - textSize.Y) / 2); font.DrawTextWithContrast(tab.Name, position, tab.Queue.CurrentDone ? Color.Gold : Color.White, Color.Black, 1); } @@ -172,8 +180,8 @@ namespace OpenRA.Mods.Cnc.Widgets void Scroll(int direction) { - ListOffset += direction*ScrollVelocity; - ListOffset = Math.Min(0,Math.Max(Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - ContentWidth, ListOffset)); + listOffset += direction * ScrollVelocity; + listOffset = Math.Min(0, Math.Max(Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - contentWidth, listOffset)); } // Is added to world.ActorAdded by the SidebarLogic handler @@ -242,8 +250,8 @@ namespace OpenRA.Mods.Cnc.Widgets leftPressed = leftButtonRect.Contains(mi.Location); rightPressed = rightButtonRect.Contains(mi.Location); - var leftDisabled = ListOffset >= 0; - var rightDisabled = ListOffset <= Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - ContentWidth; + var leftDisabled = listOffset >= 0; + var rightDisabled = listOffset <= Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - contentWidth; if (leftPressed || rightPressed) { @@ -254,10 +262,10 @@ namespace OpenRA.Mods.Cnc.Widgets } // Check production tabs - var offsetloc = mi.Location - new int2(leftButtonRect.Right - 1 + (int)ListOffset, leftButtonRect.Y); - if (offsetloc.X > 0 && offsetloc.X < ContentWidth) + var offsetloc = mi.Location - new int2(leftButtonRect.Right - 1 + (int)listOffset, leftButtonRect.Y); + if (offsetloc.X > 0 && offsetloc.X < contentWidth) { - CurrentQueue = Groups[queueGroup].Tabs[offsetloc.X/(TabWidth - 1)].Queue; + CurrentQueue = Groups[queueGroup].Tabs[offsetloc.X / (TabWidth - 1)].Queue; Sound.PlayNotification(null, "Sounds", "ClickSound", null); } diff --git a/OpenRA.Mods.Cnc/Widgets/ProductionTypeButtonWidget.cs b/OpenRA.Mods.Cnc/Widgets/ProductionTypeButtonWidget.cs index f7643ba15b..6cb77cfeee 100644 --- a/OpenRA.Mods.Cnc/Widgets/ProductionTypeButtonWidget.cs +++ b/OpenRA.Mods.Cnc/Widgets/ProductionTypeButtonWidget.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.Cnc.Widgets { public readonly string ProductionGroup; - public ProductionTypeButtonWidget() : base() {} + public ProductionTypeButtonWidget() : base() { } protected ProductionTypeButtonWidget(ProductionTypeButtonWidget other) : base(other) { diff --git a/OpenRA.Mods.Cnc/Widgets/SupportPowersWidget.cs b/OpenRA.Mods.Cnc/Widgets/SupportPowersWidget.cs index 3f6b20a2a4..f6532a83cc 100755 --- a/OpenRA.Mods.Cnc/Widgets/SupportPowersWidget.cs +++ b/OpenRA.Mods.Cnc/Widgets/SupportPowersWidget.cs @@ -14,31 +14,33 @@ using System.Drawing; using System.Linq; using OpenRA.FileFormats; using OpenRA.Graphics; -using OpenRA.Widgets; using OpenRA.Mods.RA; +using OpenRA.Widgets; namespace OpenRA.Mods.Cnc.Widgets { public class SupportPowersWidget : Widget { - public int Spacing = 10; - public readonly string ReadyText = ""; public readonly string HoldText = ""; - Dictionary iconSprites; - Animation clock; - Dictionary Icons = new Dictionary(); - public readonly string TooltipContainer; public readonly string TooltipTemplate = "SUPPORT_POWER_TOOLTIP"; + + public int Spacing = 10; + + readonly WorldRenderer worldRenderer; + readonly SupportPowerManager spm; + + Dictionary iconSprites; + Animation clock; + Dictionary icons = new Dictionary(); + public SupportPowerInstance TooltipPower { get; private set; } Lazy tooltipContainer; Rectangle eventBounds; public override Rectangle EventBounds { get { return eventBounds; } } - readonly WorldRenderer worldRenderer; - readonly SupportPowerManager spm; SpriteFont overlayFont; float2 holdOffset, readyOffset, timeOffset; @@ -50,7 +52,7 @@ namespace OpenRA.Mods.Cnc.Widgets tooltipContainer = Lazy.New(() => Ui.Root.Get(TooltipContainer)); - iconSprites = Rules.Info.Values.SelectMany( u => u.Traits.WithInterface() ) + iconSprites = Rules.Info.Values.SelectMany(u => u.Traits.WithInterface()) .Select(u => u.Image).Distinct() .ToDictionary( u => u, @@ -68,7 +70,7 @@ namespace OpenRA.Mods.Cnc.Widgets public void RefreshIcons() { - Icons = new Dictionary(); + icons = new Dictionary(); var powers = spm.Powers.Values.Where(p => !p.Disabled); var i = 0; @@ -83,26 +85,26 @@ namespace OpenRA.Mods.Cnc.Widgets Sprite = iconSprites[p.Info.Image] }; - Icons.Add(rect, power); + icons.Add(rect, power); i++; } - eventBounds = (Icons.Count == 0) ? Rectangle.Empty : Icons.Keys.Aggregate(Rectangle.Union); + eventBounds = (icons.Count == 0) ? Rectangle.Empty : icons.Keys.Aggregate(Rectangle.Union); } public override void Draw() { overlayFont = Game.Renderer.Fonts["TinyBold"]; - holdOffset = new float2(32,24) - overlayFont.Measure(HoldText) / 2; - readyOffset = new float2(32,24) - overlayFont.Measure(ReadyText) / 2; - timeOffset = new float2(32,24) - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2; + holdOffset = new float2(32, 24) - overlayFont.Measure(HoldText) / 2; + readyOffset = new float2(32, 24) - overlayFont.Measure(ReadyText) / 2; + timeOffset = new float2(32, 24) - overlayFont.Measure(WidgetUtils.FormatTime(0)) / 2; // Background - foreach (var rect in Icons.Keys) - WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1,1,1,1)); + foreach (var rect in icons.Keys) + WidgetUtils.DrawPanel("panel-black", rect.InflateBy(1, 1, 1, 1)); // Icons - foreach (var p in Icons.Values) + foreach (var p in icons.Values) { WidgetUtils.DrawSHP(p.Sprite, p.Pos, worldRenderer); @@ -115,7 +117,7 @@ namespace OpenRA.Mods.Cnc.Widgets } // Overlay - foreach (var p in Icons.Values) + foreach (var p in icons.Values) { if (p.Power.Ready) overlayFont.DrawTextWithContrast(ReadyText, @@ -142,7 +144,7 @@ namespace OpenRA.Mods.Cnc.Widgets { if (TooltipContainer == null) return; tooltipContainer.Value.SetTooltip(TooltipTemplate, - new WidgetArgs() {{ "palette", this }}); + new WidgetArgs() { { "palette", this } }); } public override void MouseExited() @@ -155,7 +157,7 @@ namespace OpenRA.Mods.Cnc.Widgets { if (mi.Event == MouseInputEvent.Move) { - var icon = Icons.Where(i => i.Key.Contains(mi.Location)) + var icon = icons.Where(i => i.Key.Contains(mi.Location)) .Select(i => i.Value).FirstOrDefault(); TooltipPower = (icon != null) ? icon.Power : null; return false; @@ -164,7 +166,7 @@ namespace OpenRA.Mods.Cnc.Widgets if (mi.Event != MouseInputEvent.Down) return false; - var clicked = Icons.Where(i => i.Key.Contains(mi.Location)) + var clicked = icons.Where(i => i.Key.Contains(mi.Location)) .Select(i => i.Value).FirstOrDefault(); if (clicked != null) diff --git a/OpenRA.Mods.Cnc/WithCargo.cs b/OpenRA.Mods.Cnc/WithCargo.cs index 2379fd057b..7151f4a61f 100644 --- a/OpenRA.Mods.Cnc/WithCargo.cs +++ b/OpenRA.Mods.Cnc/WithCargo.cs @@ -21,8 +21,8 @@ namespace OpenRA.Mods.Cnc public class WithCargoInfo : ITraitInfo, Requires, Requires { [Desc("Cargo position relative to turret or body. (forward, right, up) triples")] - public readonly WRange[] LocalOffset = {}; - public readonly string[] DisplayTypes = {}; + public readonly WRange[] LocalOffset = { }; + public readonly string[] DisplayTypes = { }; public object Create(ActorInitializer init) { return new WithCargo(init.self, this); } } @@ -31,7 +31,7 @@ namespace OpenRA.Mods.Cnc { Cargo cargo; IFacing facing; - WithCargoInfo Info; + WithCargoInfo cargoInfo; WVec[] positions; IBodyOrientation body; @@ -39,7 +39,7 @@ namespace OpenRA.Mods.Cnc { cargo = self.Trait(); facing = self.TraitOrDefault(); - Info = info; + cargoInfo = info; body = self.Trait(); @@ -48,7 +48,7 @@ namespace OpenRA.Mods.Cnc positions = new WVec[info.LocalOffset.Length / 3]; for (var i = 0; i < info.LocalOffset.Length / 3; i++) - positions[i] = new WVec(info.LocalOffset[3*i], info.LocalOffset[3*i + 1], info.LocalOffset[3*i + 2]); + positions[i] = new WVec(info.LocalOffset[3 * i], info.LocalOffset[3 * i + 1], info.LocalOffset[3 * i + 2]); } public IEnumerable ModifyRender(Actor self, WorldRenderer wr, IEnumerable r) @@ -66,7 +66,7 @@ namespace OpenRA.Mods.Cnc cargoFacing.Facing = facing.Facing; var cargoPassenger = c.Trait(); - if (Info.DisplayTypes.Contains(cargoPassenger.info.CargoType)) + if (cargoInfo.DisplayTypes.Contains(cargoPassenger.info.CargoType)) { var offset = pos - c.CenterPosition + body.LocalToWorld(positions[i++ % positions.Length].Rotate(bodyOrientation)); foreach (var cr in c.Render(wr))