public override void Draw() { if (!initialised) { Init(); } if (!IsVisible()) { return; } var rb = RenderBounds; var offset = int2.Zero; var svc = world.Players.Select(p => p.PlayerActor.TraitOrDefault <StrategicVictoryConditions>()).FirstOrDefault(); var totalWidth = svc.Total * 32; var curX = -totalWidth / 2; foreach (var a in svc.AllPoints) { WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "critical_unowned"), offset + new float2(rb.Left + curX, rb.Top)); if (world.LocalPlayer != null && a.Owner.RelationshipWith(world.LocalPlayer) == PlayerRelationship.Ally) { WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "player_owned"), offset + new float2(rb.Left + curX, rb.Top)); } else if (!a.Owner.NonCombatant) { WidgetUtils.DrawRGBA(ChromeProvider.GetImage("strategic", "enemy_owned"), offset + new float2(rb.Left + curX, rb.Top)); } curX += 32; } offset += new int2(0, 32); if (world.LocalPlayer == null) { return; } var pendingWinner = FindFirstWinningPlayer(world); if (pendingWinner == null) { return; } var winnerSvc = pendingWinner.PlayerActor.Trait <StrategicVictoryConditions>(); var isVictory = pendingWinner.RelationshipWith(world.LocalPlayer) == PlayerRelationship.Ally; var tc = $"Strategic {(isVictory ? "victory" : "defeat")} in {WidgetUtils.FormatTime(winnerSvc.TicksLeft, world.Timestep)}"; var font = Game.Renderer.Fonts["Bold"]; var size = font.Measure(tc); font.DrawTextWithContrast(tc, offset + new float2(rb.Left - size.X / 2 + 1, rb.Top + 1), Color.White, Color.Black, 1); offset += new int2(0, size.Y + 1); }
static RunStatus Run() { if (Settings.Graphics.MaxFramerate < 1) { Settings.Graphics.MaxFramerate = new GraphicSettings().MaxFramerate; Settings.Graphics.CapFramerate = false; } try { Loop(); } finally { // Ensure that the active replay is properly saved if (OrderManager != null) { OrderManager.Dispose(); } } if (worldRenderer != null) { worldRenderer.Dispose(); } ModData.Dispose(); ChromeProvider.Deinitialize(); Sound.Dispose(); Renderer.Dispose(); OnQuit(); return(state); }
public override void Draw() { var disabled = IsDisabled(); var font = Game.Renderer.Fonts[Font]; var rect = RenderBounds; var check = new Rectangle(rect.Location, new Size(Bounds.Height, Bounds.Height)); var state = disabled ? "checkbox-disabled" : Depressed && HasPressedState ? "checkbox-pressed" : Widget.MouseOverWidget == this ? "checkbox-hover" : "checkbox"; WidgetUtils.DrawPanel(state, check); var textSize = font.Measure(Text); font.DrawText(Text, new float2(rect.Left + rect.Height * 1.5f, RenderOrigin.Y - BaseLine + (Bounds.Height - textSize.Y) / 2), Color.White); if (IsChecked() || (Depressed && HasPressedState && !disabled)) { var checkType = GetCheckType(); if (HasPressedState && (Depressed || disabled)) { checkType += "-disabled"; } var offset = new float2(rect.Left + CheckOffset, rect.Top + CheckOffset); WidgetUtils.DrawRGBA(ChromeProvider.GetImage("checkbox-bits", checkType), offset); } }
public override void Draw() { var preview = Preview(); if (preview == null) { return; } // Stash a copy of the minimap to ensure consistency // (it may be modified by another thread) minimap = preview.Minimap; if (minimap == null) { return; } // Update map rect PreviewScale = Math.Min(RenderBounds.Width / minimap.size.X, RenderBounds.Height / minimap.size.Y); var w = (int)(PreviewScale * minimap.size.X); var h = (int)(PreviewScale * minimap.size.Y); var x = RenderBounds.X + (RenderBounds.Width - w) / 2; var y = RenderBounds.Y + (RenderBounds.Height - h) / 2; MapRect = new Rectangle(x, y, w, h); Game.Renderer.RgbaSpriteRenderer.DrawSprite(minimap, new float2(MapRect.Location), new float2(MapRect.Size)); TooltipSpawnIndex = -1; if (ShowSpawnPoints) { var colors = SpawnOccupants().ToDictionary(c => c.Key, c => c.Value.Color.RGB); var spawnPoints = preview.SpawnPoints; foreach (var p in spawnPoints) { var owned = colors.ContainsKey(p); var pos = ConvertToPreview(p); var sprite = ChromeProvider.GetImage("lobby-bits", owned ? "spawn-claimed" : "spawn-unclaimed"); var offset = new int2(sprite.bounds.Width, sprite.bounds.Height) / 2; if (owned) { WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X - offset.X + 1, pos.Y - offset.Y + 1, sprite.bounds.Width - 2, sprite.bounds.Height - 2), colors[p]); } Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos - offset); var fonts = Game.Renderer.Fonts[ChromeMetrics.Get <string>("SpawnFont")]; var number = Convert.ToChar('A' + spawnPoints.IndexOf(p)).ToString(); offset = fonts.Measure(number) / 2; offset.Y += 1; // Does not center well vertically for some reason fonts.DrawTextWithContrast(number, pos - offset, ChromeMetrics.Get <Color>("SpawnColor"), ChromeMetrics.Get <Color>("SpawnContrastColor"), 1); if (((pos - Viewport.LastMousePos).ToFloat2() * offset.ToFloat2()).LengthSquared < 1) { TooltipSpawnIndex = spawnPoints.IndexOf(p) + 1; } } } }
public static int[] GetBorderSizes(string collection) { var images = new[] { "border-t", "border-b", "border-l", "border-r" }; var ss = images.Select(i => ChromeProvider.GetImage(collection, i)).ToList(); return(new[] { (int)ss[0].Size.Y, (int)ss[1].Size.Y, (int)ss[2].Size.X, (int)ss[3].Size.X }); }
public override void Draw() { float scaleBy = 100; var max = Math.Max(pr.OreCapacity, pr.Ore); while (max >= scaleBy) { scaleBy *= 2; } // Current capacity var capacityFrac = pr.OreCapacity / scaleBy; lastCapacityFrac = capacityFrac = float2.Lerp(lastCapacityFrac.GetValueOrDefault(capacityFrac), capacityFrac, .3f); var color = GetBarColor(); var b = RenderBounds; var rect = new RectangleF(b.X, float2.Lerp(b.Bottom, b.Top, capacityFrac), (float)b.Width, capacityFrac * b.Height); Game.Renderer.LineRenderer.FillRect(rect, color); var indicator = ChromeProvider.GetImage("sidebar-bits", "right-indicator"); var storedFrac = pr.Ore / scaleBy; lastStoredFrac = storedFrac = float2.Lerp(lastStoredFrac.GetValueOrDefault(storedFrac), storedFrac, .3f); float2 pos = new float2(b.X, float2.Lerp(b.Bottom, b.Top, storedFrac) - indicator.size.Y / 2); Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, pos); }
public override void DrawOuter() { if (!IsVisible()) { return; } var rb = RenderBounds; var ScrollbarHeight = rb.Height - 2 * ScrollbarWidth; var thumbHeight = ContentHeight == 0 ? 0 : Math.Max(MinimumThumbSize, (int)(ScrollbarHeight * Math.Min(rb.Height * 1f / ContentHeight, 1f))); var thumbOrigin = rb.Y + ScrollbarWidth + (int)((ScrollbarHeight - thumbHeight) * (-1f * ListOffset / (ContentHeight - rb.Height))); if (thumbHeight == ScrollbarHeight) { thumbHeight = 0; } backgroundRect = new Rectangle(rb.X, rb.Y, rb.Width - ScrollbarWidth + 1, rb.Height); upButtonRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Y, ScrollbarWidth, ScrollbarWidth); downButtonRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Bottom - ScrollbarWidth, ScrollbarWidth, ScrollbarWidth); scrollbarRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Y + ScrollbarWidth - 1, ScrollbarWidth, ScrollbarHeight + 2); thumbRect = new Rectangle(rb.Right - ScrollbarWidth, thumbOrigin, ScrollbarWidth, thumbHeight); var upHover = Ui.MouseOverWidget == this && upButtonRect.Contains(Viewport.LastMousePos); var upDisabled = thumbHeight == 0 || ListOffset >= 0; var downHover = Ui.MouseOverWidget == this && downButtonRect.Contains(Viewport.LastMousePos); var downDisabled = thumbHeight == 0 || ListOffset <= Bounds.Height - ContentHeight; var thumbHover = Ui.MouseOverWidget == this && thumbRect.Contains(Viewport.LastMousePos); WidgetUtils.DrawPanel(Background, backgroundRect); WidgetUtils.DrawPanel("scrollpanel-bg", scrollbarRect); ButtonWidget.DrawBackground("button", upButtonRect, upDisabled, UpPressed, upHover, false); ButtonWidget.DrawBackground("button", downButtonRect, downDisabled, DownPressed, downHover, false); if (thumbHeight > 0) { ButtonWidget.DrawBackground("scrollthumb", thumbRect, false, HasMouseFocus && thumbHover, thumbHover, false); } var upOffset = !UpPressed || upDisabled ? 4 : 4 + ButtonDepth; var downOffset = !DownPressed || downDisabled ? 4 : 4 + ButtonDepth; WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", UpPressed || upDisabled ? "up_pressed" : "up_arrow"), new float2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset)); WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", DownPressed || downDisabled ? "down_pressed" : "down_arrow"), new float2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset)); Game.Renderer.EnableScissor(backgroundRect.InflateBy(-1, -1, -1, -1)); foreach (var child in Children) { child.DrawOuter(); } Game.Renderer.DisableScissor(); }
public override bool HandleKeyPress(KeyInput e) { if (e.Event == KeyInputEvent.Down) { var hk = Hotkey.FromKeyInput(e); if (hk == Game.Settings.Keys.DevReloadChromeKey) { ChromeProvider.Initialize(Game.ModData.Manifest.Chrome); return(true); } if (hk == Game.Settings.Keys.HideUserInterfaceKey) { foreach (var child in this.Children) { child.Visible ^= true; } return(true); } if (hk == Game.Settings.Keys.TakeScreenshotKey) { if (e.Event == KeyInputEvent.Down) { Game.TakeScreenshot = true; } return(true); } } return(base.HandleKeyPress(e)); }
public override void Draw() { var scaleBy = 100.0f; var provided = GetProvided(); var used = GetUsed(); var max = Math.Max(provided, used); while (max >= scaleBy) { scaleBy *= 2; } var providedFrac = providedLerp.Update(provided / scaleBy); var usedFrac = usedLerp.Update(used / scaleBy); var color = GetBarColor(); var b = RenderBounds; var rect = new RectangleF(b.X, float2.Lerp(b.Bottom, b.Top, providedFrac), b.Width, providedFrac * b.Height); Game.Renderer.LineRenderer.FillRect(rect, color); var indicator = ChromeProvider.GetImage("sidebar-bits", RightIndicator ? "right-indicator" : "left-indicator"); var indicatorX = RightIndicator ? (b.Right - indicator.size.X) : b.Left; var pos = new float2(indicatorX, float2.Lerp(b.Bottom, b.Top, usedFrac) - indicator.size.Y / 2); Game.Renderer.RgbaSpriteRenderer.DrawSprite(indicator, pos); }
public static void DrawPanelPartial(string collection, Rectangle bounds, PanelSides ps) { var images = new[] { "border-t", "border-b", "border-l", "border-r", "corner-tl", "corner-tr", "corner-bl", "corner-br", "background" }; var ss = images.Select(i => ChromeProvider.GetImage(collection, i)).ToArray(); DrawPanelPartial(ss, bounds, ps); }
public void InitializeFonts(ModData modData) { if (Fonts != null) { foreach (var font in Fonts.Values) { font.Dispose(); } } using (new PerfTimer("SpriteFonts")) { fontSheetBuilder?.Dispose(); fontSheetBuilder = new SheetBuilder(SheetType.BGRA, 512); Fonts = modData.Manifest.Get <Fonts>().FontList.ToDictionary(x => x.Key, x => new SpriteFont(x.Value.Font, modData.DefaultFileSystem.Open(x.Value.Font).ReadAllBytes(), x.Value.Size, x.Value.Ascender, Window.EffectiveWindowScale, fontSheetBuilder)).AsReadOnly(); } Window.OnWindowScaleChanged += (oldNative, oldEffective, newNative, newEffective) => { Game.RunAfterTick(() => { ChromeProvider.SetDPIScale(newEffective); foreach (var f in Fonts) { f.Value.SetScale(newEffective); } }); }; }
/// <summary>Possibly handle keyboard input (if this widget has keyboard focus)</summary> /// <returns><c>true</c>, if keyboard input was handled, <c>false</c> if the input should bubble to the parent widget</returns> /// <param name="e">Key input data</param> public static bool HandleKeyPress(KeyInput e) { if (e.Event == KeyInputEvent.Down) { var hk = Hotkey.FromKeyInput(e); if (hk == Game.Settings.Keys.DevReloadChromeKey) { ChromeProvider.Initialize(Game.ModData); return(true); } if (hk == Game.Settings.Keys.HideUserInterfaceKey) { Root.Visible ^= true; return(true); } if (hk == Game.Settings.Keys.TakeScreenshotKey) { Game.TakeScreenshot = true; return(true); } } if (KeyboardFocusWidget != null) { return(KeyboardFocusWidget.HandleKeyPressOuter(e)); } return(Root.HandleKeyPressOuter(e)); }
public override void Draw() { if (!IsVisible()) { return; } Value = GetValue(); var tr = ThumbRect; var rb = RenderBounds; var trackWidth = rb.Width - rb.Height; var trackOrigin = rb.X + rb.Height / 2; var trackRect = new Rectangle(trackOrigin - 1, rb.Y + (rb.Height - TrackHeight) / 2, trackWidth + 2, TrackHeight); // Tickmarks var tick = ChromeProvider.GetImage("slider", "tick"); for (var i = 0; i < Ticks; i++) { var tickPos = new float2( trackOrigin + (i * (trackRect.Width - (int)tick.Size.X) / (Ticks - 1)) - tick.Size.X / 2, trackRect.Bottom); WidgetUtils.DrawRGBA(tick, tickPos); } // Track WidgetUtils.DrawPanel(Track, trackRect); // Thumb var thumbHover = Ui.MouseOverWidget == this && tr.Contains(Viewport.LastMousePos); ButtonWidget.DrawBackground(Thumb, tr, IsDisabled(), isMoving, thumbHover, false); }
public override void Draw() { if (world.LocalPlayer == null) { return; } if (world.LocalPlayer.WinState != WinState.Undefined) { return; } var digitCollection = "digits-" + world.LocalPlayer.Country.Race; var chromeCollection = "chrome-" + world.LocalPlayer.Country.Race; Game.Renderer.RgbaSpriteRenderer.DrawSprite( ChromeProvider.GetImage(chromeCollection, "moneybin"), new float2(Bounds.Left, 0)); // Cash var cashDigits = (playerResources.DisplayCash + playerResources.DisplayResources).ToString(); var x = Bounds.Right - 65; foreach (var d in cashDigits.Reverse()) { Game.Renderer.RgbaSpriteRenderer.DrawSprite( ChromeProvider.GetImage(digitCollection, (d - '0').ToString()), new float2(x, 6)); x -= 14; } }
public static CachedTransform <(bool Disabled, bool Pressed, bool Hover, bool Focused), Sprite> GetCachedStatefulImage(string collection, string baseName) { return(new CachedTransform <(bool, bool, bool, bool), Sprite>( ((bool Disabled, bool Pressed, bool Hover, bool Focused)args) => { var imageName = GetStatefulImageName(baseName, args.Disabled, args.Pressed, args.Hover, args.Focused); return ChromeProvider.GetImage(collection, imageName) ?? ChromeProvider.GetImage(collection, baseName); }));
public override void DrawOuter() { if (!IsVisible()) { return; } var rb = RenderBounds; var scrollbarHeight = rb.Height - 2 * ScrollbarWidth; var thumbHeight = ContentHeight == 0 ? 0 : Math.Max(MinimumThumbSize, (int)(scrollbarHeight * Math.Min(rb.Height * 1f / ContentHeight, 1f))); var thumbOrigin = rb.Y + ScrollbarWidth + (int)((scrollbarHeight - thumbHeight) * (-1f * currentListOffset / (ContentHeight - rb.Height))); if (thumbHeight == scrollbarHeight) { thumbHeight = 0; } backgroundRect = new Rectangle(rb.X, rb.Y, rb.Width - ScrollbarWidth + 1, rb.Height); upButtonRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Y, ScrollbarWidth, ScrollbarWidth); downButtonRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Bottom - ScrollbarWidth, ScrollbarWidth, ScrollbarWidth); scrollbarRect = new Rectangle(rb.Right - ScrollbarWidth, rb.Y + ScrollbarWidth - 1, ScrollbarWidth, scrollbarHeight + 2); thumbRect = new Rectangle(rb.Right - ScrollbarWidth, thumbOrigin, ScrollbarWidth, thumbHeight); WidgetUtils.DrawPanel(Background, backgroundRect); WidgetUtils.DrawPanel(Background, scrollbarRect); ButtonWidget.DrawBackground(Button, upButtonRect, upDisabled, upPressed, false, false); ButtonWidget.DrawBackground(Button, downButtonRect, downDisabled, downPressed, false, false); if (thumbHeight > 0) { ButtonWidget.DrawBackground(Button, thumbRect, false, false, false); } var upOffset = !upPressed || upDisabled ? 4 : 4 + ButtonDepth; var downOffset = !downPressed || downDisabled ? 4 : 4 + ButtonDepth; WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", upPressed || upDisabled ? "up_pressed" : "up_arrow"), new Vector2(upButtonRect.Left + upOffset, upButtonRect.Top + upOffset)); WidgetUtils.DrawRGBA(ChromeProvider.GetImage("scrollbar", downPressed || downDisabled ? "down_pressed" : "down_arrow"), new Vector2(downButtonRect.Left + downOffset, downButtonRect.Top + downOffset)); var drawBounds = backgroundRect.InflateBy(-BorderWidth, -BorderWidth, -BorderWidth, -BorderWidth); WarGame.Renderer.EnableScissor(drawBounds); drawBounds.Offset((-ChildOrigin).ToPoint()); foreach (var child in Children) { if (child.Bounds.IntersectsWith(drawBounds)) { child.DrawOuter(); } } WarGame.Renderer.DisableScissor(); }
void IUtilityCommand.Run(Utility utility, string[] args) { // HACK: The engine code assumes that Game.modData is set. var modData = Game.ModData = utility.ModData; ChromeProvider.Initialize(modData); var image = args[1]; var zoom = args[2]; var regions = new List <string>(); foreach (var c in ChromeProvider.Collections) { if (c.Value.Image != image) { continue; } var pr = c.Value.PanelRegion; if (pr != null && pr.Length == 8) { var sides = new[] { Pair.New(PanelSides.Top | PanelSides.Left, new Rectangle(pr[0], pr[1], pr[2], pr[3])), Pair.New(PanelSides.Top, new Rectangle(pr[0] + pr[2], pr[1], pr[4], pr[3])), Pair.New(PanelSides.Top | PanelSides.Right, new Rectangle(pr[0] + pr[2] + pr[4], pr[1], pr[6], pr[3])), Pair.New(PanelSides.Left, new Rectangle(pr[0], pr[1] + pr[3], pr[2], pr[5])), Pair.New(PanelSides.Center, new Rectangle(pr[0] + pr[2], pr[1] + pr[3], pr[4], pr[5])), Pair.New(PanelSides.Right, new Rectangle(pr[0] + pr[2] + pr[4], pr[1] + pr[3], pr[6], pr[5])), Pair.New(PanelSides.Bottom | PanelSides.Left, new Rectangle(pr[0], pr[1] + pr[3] + pr[5], pr[2], pr[7])), Pair.New(PanelSides.Bottom, new Rectangle(pr[0] + pr[2], pr[1] + pr[3] + pr[5], pr[4], pr[7])), Pair.New(PanelSides.Bottom | PanelSides.Right, new Rectangle(pr[0] + pr[2] + pr[4], pr[1] + pr[3] + pr[5], pr[6], pr[7])) }; foreach (var s in sides) { var r = s.Second; if (c.Value.PanelSides.HasSide(s.First)) { regions.Add("[\"{0}.<{1}>\",{2},{3},{4},{5}]".F(c.Key, s.First, r.X, r.Y, r.Width, r.Height)); } } } foreach (var kv in c.Value.Regions) { var r = kv.Value; regions.Add("[\"{0}\",{1},{2},{3},{4}]".F(c.Key + "." + kv.Key, r.X, r.Y, r.Width, r.Height)); } } var output = HtmlTemplate.JoinWith("\n").F(zoom, Convert.ToBase64String(modData.ModFiles.Open(image).ReadAllBytes()), "[" + regions.JoinWith(",") + "]"); var outputPath = Path.ChangeExtension(image, ".html"); File.WriteAllLines(outputPath, new[] { output }); Console.WriteLine("Saved {0}", outputPath); }
public static void DrawPanel(string collection, Rectangle bounds) { var sprites = ChromeProvider.GetPanelImages(collection); if (sprites != null) { DrawPanel(bounds, sprites); } }
public override void Draw() { var tabs = Groups[queueGroup].Tabs.Where(t => t.Queue.BuildableItems().Any()); if (!tabs.Any()) { return; } var rb = RenderBounds; 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 leftHover = Ui.MouseOverWidget == this && leftButtonRect.Contains(Viewport.LastMousePos); var rightDisabled = listOffset <= Bounds.Width - rightButtonRect.Width - leftButtonRect.Width - contentWidth; var rightHover = Ui.MouseOverWidget == this && rightButtonRect.Contains(Viewport.LastMousePos); WidgetUtils.DrawPanel(Background, rb); ButtonWidget.DrawBackground(Button, leftButtonRect, leftDisabled, leftPressed, leftHover, false); ButtonWidget.DrawBackground(Button, rightButtonRect, rightDisabled, rightPressed, rightHover, false); var leftArrowImageName = WidgetUtils.GetStatefulImageName(DecorationScrollLeft, leftDisabled, leftPressed, leftHover); var leftArrowImage = ChromeProvider.GetImage(Decorations, leftArrowImageName) ?? ChromeProvider.GetImage(Decorations, DecorationScrollLeft); WidgetUtils.DrawRGBA(leftArrowImage, new float2(leftButtonRect.Left + 2, leftButtonRect.Top + 2)); var rightArrowImageName = WidgetUtils.GetStatefulImageName(DecorationScrollRight, rightDisabled, rightPressed, rightHover); var rightArrowImage = ChromeProvider.GetImage(Decorations, rightArrowImageName) ?? ChromeProvider.GetImage(Decorations, DecorationScrollRight); WidgetUtils.DrawRGBA(rightArrowImage, new float2(rightButtonRect.Left + 2, rightButtonRect.Top + 2)); // Draw tab buttons Game.Renderer.EnableScissor(new Rectangle(leftButtonRect.Right, rb.Y + 1, rightButtonRect.Left - leftButtonRect.Right - 1, rb.Height)); var origin = new int2(leftButtonRect.Right - 1 + (int)listOffset, leftButtonRect.Y); var font = Game.Renderer.Fonts["TinyBold"]; contentWidth = 0; foreach (var tab in tabs) { var rect = new Rectangle(origin.X + contentWidth, origin.Y, TabWidth, rb.Height); var hover = !leftHover && !rightHover && Ui.MouseOverWidget == this && rect.Contains(Viewport.LastMousePos); var highlighted = tab.Queue == CurrentQueue; ButtonWidget.DrawBackground(Button, rect, false, false, hover, highlighted); contentWidth += TabWidth - 1; var textSize = font.Measure(tab.Name); var position = new int2(rect.X + (rect.Width - textSize.X) / 2, rect.Y + (rect.Height - textSize.Y) / 2); font.DrawTextWithContrast(tab.Name, position, tab.Queue.AllQueued().Any(i => i.Done) ? Color.Gold : Color.White, Color.Black, 1); } Game.Renderer.DisableScissor(); }
public MapPreviewWidget() { spawnClaimed = ChromeProvider.GetImage("lobby-bits", "spawn-claimed"); spawnUnclaimed = ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed"); spawnFont = WarGame.Renderer.Fonts[ChromeMetrics.Get <string>("SpawnFont")]; spawnColor = ChromeMetrics.Get <Color>("SpawnColor"); spawnContrastColor = ChromeMetrics.Get <Color>("SpawnContrastColor"); spawnLabelOffset = ChromeMetrics.Get <Int2>("SpawnLabelOffset"); }
public override void Draw() { var name = GetImageName(); var collection = GetImageCollection(); WidgetUtils.DrawRGBA( ChromeProvider.GetImage(collection, name), RenderOrigin); }
void BindButtonIcon(ButtonWidget button) { var icon = button.Get <ImageWidget>("ICON"); var hasDisabled = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-disabled") != null; var hasActive = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active") != null; icon.GetImageName = () => hasActive && button.IsHighlighted() ? icon.ImageName + "-active" : hasDisabled && button.IsDisabled() ? icon.ImageName + "-disabled" : icon.ImageName; }
public override void Draw() { var map = Map(); if (map == null) { return; } if (lastMap != map) { lastMap = map; // Update image data var preview = PreviewCache[map]; if (mapChooserSheet == null || mapChooserSheet.Size.Width != preview.Width || mapChooserSheet.Size.Height != preview.Height) { mapChooserSheet = new Sheet(new Size(preview.Width, preview.Height)); } mapChooserSheet.Texture.SetData(preview); mapChooserSprite = new Sprite(mapChooserSheet, new Rectangle(0, 0, map.Bounds.Width, map.Bounds.Height), TextureChannel.Alpha); } // Update map rect PreviewScale = Math.Min(RenderBounds.Width * 1.0f / map.Bounds.Width, RenderBounds.Height * 1.0f / map.Bounds.Height); var size = Math.Max(map.Bounds.Width, map.Bounds.Height); var dw = (int)(PreviewScale * (size - map.Bounds.Width)) / 2; var dh = (int)(PreviewScale * (size - map.Bounds.Height)) / 2; MapRect = new Rectangle(RenderBounds.X + dw, RenderBounds.Y + dh, (int)(map.Bounds.Width * PreviewScale), (int)(map.Bounds.Height * PreviewScale)); Game.Renderer.RgbaSpriteRenderer.DrawSprite(mapChooserSprite, new float2(MapRect.Location), new float2(MapRect.Size)); if (ShowSpawnPoints) { var colors = SpawnColors(); foreach (var p in map.GetSpawnPoints()) { var owned = colors.ContainsKey(p); var pos = ConvertToPreview(p); var sprite = ChromeProvider.GetImage("spawnpoints", owned ? "owned" : "unowned"); var offset = new int2(-sprite.bounds.Width / 2, -sprite.bounds.Height / 2); if (owned) { WidgetUtils.FillRectWithColor(new Rectangle(pos.X + offset.X + 2, pos.Y + offset.Y + 2, 12, 12), colors[p]); } Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos + offset); } } }
public override void Draw() { Game.Renderer.RgbaSpriteRenderer.DrawSprite(mixerSprite, RenderOrigin, new float2(RenderBounds.Size)); var sprite = ChromeProvider.GetImage("lobby-bits", "colorpicker"); var pos = RenderOrigin + PxFromValue() - new int2((int)sprite.Size.X, (int)sprite.Size.Y) / 2; WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X + 1, pos.Y + 1, (int)sprite.Size.X - 2, (int)sprite.Size.Y - 2), Color); Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos); }
public void InitializeLoaders() { // all this manipulation of static crap here is nasty and breaks // horribly when you use ModData in unexpected ways. ChromeMetrics.Initialize(Manifest.ChromeMetrics); ChromeProvider.Initialize(Manifest.Chrome); VoxelLoader = new VoxelLoader(); CursorProvider = new CursorProvider(this); }
public void InitializeLoaders() { // all this manipulation of static crap here is nasty and breaks // horribly when you use ModData in unexpected ways. ChromeMetrics.Initialize(Manifest.ChromeMetrics); ChromeProvider.Initialize(Manifest.Chrome); SheetBuilder = new SheetBuilder(SheetType.Indexed); SpriteLoader = new SpriteLoader(new string[] { ".shp" }, SheetBuilder); VoxelLoader = new VoxelLoader(); CursorProvider.Initialize(Manifest.Cursors); }
public MapPreviewWidget() { tooltipContainer = Exts.Lazy(() => Ui.Root.Get <TooltipContainerWidget>(TooltipContainer)); spawnClaimed = ChromeProvider.GetImage("lobby-bits", "spawn-claimed"); spawnUnclaimed = ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed"); spawnFont = Game.Renderer.Fonts[ChromeMetrics.Get <string>("SpawnFont")]; spawnColor = ChromeMetrics.Get <Color>("SpawnColor"); spawnContrastColor = ChromeMetrics.Get <Color>("SpawnContrastColor"); spawnLabelOffset = ChromeMetrics.Get <int2>("SpawnLabelOffset"); }
public void InitializeLoaders(IReadOnlyFileSystem fileSystem) { // all this manipulation of static crap here is nasty and breaks // horribly when you use ModData in unexpected ways. ChromeMetrics.Initialize(this); ChromeProvider.Initialize(this); Game.Sound.Initialize(SoundLoaders, fileSystem); CursorProvider = new CursorProvider(this); }
static int DetermineSelectedSpawnPoint(MapPreviewWidget mapPreview, MapPreview preview, MouseInput mi) { var spawnSize = ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed").Size.XY; var selectedSpawn = preview.SpawnPoints .Select((sp, i) => (SpawnLocation: mapPreview.ConvertToPreview(sp, preview.GridType), Index: i)) .Where(a => ((a.SpawnLocation - mi.Location).ToFloat2() / spawnSize * 2).LengthSquared <= 1) .Select(a => a.Index + 1) .FirstOrDefault(); return(selectedSpawn); }
public static void DrawPanelPartial(string collection, Rectangle bounds, PanelSides ps) { DrawPanelPartial(bounds, ps, ChromeProvider.GetImage(collection, "border-t"), ChromeProvider.GetImage(collection, "border-b"), ChromeProvider.GetImage(collection, "border-l"), ChromeProvider.GetImage(collection, "border-r"), ChromeProvider.GetImage(collection, "corner-tl"), ChromeProvider.GetImage(collection, "corner-tr"), ChromeProvider.GetImage(collection, "corner-bl"), ChromeProvider.GetImage(collection, "corner-br"), ChromeProvider.GetImage(collection, "background")); }
private void OnClientConnected(ChromeProvider provider, ChromeProviderClientEventArgs args) { Application.Current.Dispatcher.BeginInvoke( new Action(() => this.Clients.Add(args.ClientChanged))); }