void DrawProductionTooltip(World world, string unit, int2 pos) { var tooltipSprite = ChromeProvider.GetImage(renderer, chromeCollection, "tooltip-bg"); var p = pos.ToFloat2() - new float2(tooltipSprite.size.X, 0); rgbaRenderer.DrawSprite(tooltipSprite, p, "chrome"); var info = Rules.Info[unit]; var buildable = info.Traits.Get<BuildableInfo>(); renderer.BoldFont.DrawText(rgbaRenderer, buildable.Description, p.ToInt2() + new int2(5, 5), Color.White); DrawRightAligned( "${0}".F(buildable.Cost), pos + new int2(-5,5), world.LocalPlayer.Cash + world.LocalPlayer.Ore >= buildable.Cost ? Color.White : Color.Red); var bi = info.Traits.GetOrDefault<BuildingInfo>(); if (bi != null) DrawRightAligned("ϟ{0}".F(bi.Power), pos + new int2(-5, 20), world.LocalPlayer.PowerProvided - world.LocalPlayer.PowerDrained + bi.Power >= 0 ? Color.White : Color.Red); var buildings = Rules.TechTree.GatherBuildings( world.LocalPlayer ); p += new int2(5, 5); p += new int2(0, 15); if (!Rules.TechTree.CanBuild(info, world.LocalPlayer, buildings)) { var prereqs = buildable.Prerequisites .Select( a => Description( a ) ); renderer.RegularFont.DrawText(rgbaRenderer, "Requires {0}".F(string.Join(", ", prereqs.ToArray())), p.ToInt2(), Color.White); } if (buildable.LongDesc != null) { p += new int2(0, 15); renderer.RegularFont.DrawText(rgbaRenderer, buildable.LongDesc.Replace( "\\n", "\n" ), p.ToInt2(), Color.White); } rgbaRenderer.Flush(); }