protected override void AddedToScene() { base.AddedToScene(); DrawNode.Clear(); var blocks = HelpText.Split(new[] { "$" }, StringSplitOptions.RemoveEmptyEntries); var rects = new CCRect[blocks.Length]; float margin = VisibleBoundsWorldspace.Size.Width / 1080 * 10; float width = VisibleBoundsWorldspace.Size.Width - margin * 2; float height = VisibleBoundsWorldspace.Size.Height / blocks.Length; for (int i = 0; i < blocks.Length; i++) { float x = VisibleBoundsWorldspace.MinX + margin; float y = VisibleBoundsWorldspace.MaxY - margin - height * (i + 1); rects[i] = new CCRect(x, y, width, height); } for (int i = 0; i < rects.Length; i++) { DrawNode.DrawText(rects[i].Center, blocks[i].Replace("$", ""), Font.ArialFonts[VisualSettings.HelpTextFontSize], rects[i].Size * 0.95f); } }
private void Render() { { DrawNode.Clear(); var visualSettings = World.GameSettings.VisualSettings; int fontSize = visualSettings.StatisticsFontSize; var spriteSize = fontSize * 2f; var margin = 10; float x = visualSettings.StatisticsMargin; float y0 = VisibleBoundsWorldspace.MaxY - visualSettings.StatisticsMargin - spriteSize * 0 - margin * 0; float y1 = VisibleBoundsWorldspace.MaxY - visualSettings.StatisticsMargin - spriteSize * 1 - margin * 1; float y2 = VisibleBoundsWorldspace.MaxY - visualSettings.StatisticsMargin - spriteSize * 2 - margin * 2; float y3 = VisibleBoundsWorldspace.MaxY - visualSettings.StatisticsMargin - spriteSize * 3 - margin * 3; var resourceManager = World.GlobalResourceManager; var s0 = resourceManager.EnvironmentResource.Energy.ToString(CultureInfo.InvariantCulture); var s1 = resourceManager.Knowledge.Knowledge1.ToString(); var s2 = resourceManager.Knowledge.Knowledge2.ToString(); var s3 = resourceManager.Knowledge.Knowledge3.ToString(); DrawNode.DrawText(x + spriteSize - spriteSize / 8 + (float)Sqrt(s0.Length) / 1.5f * fontSize, y0, s0, Font.ArialFonts[fontSize], CCSize.Zero); DrawNode.DrawText(x + spriteSize - spriteSize / 8 + (float)Sqrt(s1.Length) / 1.5f * fontSize, y1, s1, Font.ArialFonts[fontSize], CCSize.Zero); DrawNode.DrawText(x + spriteSize - spriteSize / 8 + (float)Sqrt(s2.Length) / 1.5f * fontSize, y2, s2, Font.ArialFonts[fontSize], CCSize.Zero); DrawNode.DrawText(x + spriteSize - spriteSize / 8 + (float)Sqrt(s3.Length) / 1.5f * fontSize, y3, s3, Font.ArialFonts[fontSize], CCSize.Zero); DrawNode.DrawCircle(new CCPoint(x, y0), spriteSize / 2, CCColor4B.White); DrawNode.DrawCircle(new CCPoint(x, y1), spriteSize / 2, CCColor4B.White); DrawNode.DrawCircle(new CCPoint(x, y2), spriteSize / 2, CCColor4B.White); DrawNode.DrawCircle(new CCPoint(x, y3), spriteSize / 2, CCColor4B.White); EnergySprite.Position = new CCPoint(x, y0); Knowledge1Sprite.Position = new CCPoint(x, y1); Knowledge2Sprite.Position = new CCPoint(x, y2); Knowledge3Sprite.Position = new CCPoint(x, y3); EnergySprite.ContentSize = Knowledge1Sprite.ContentSize = Knowledge2Sprite.ContentSize = Knowledge3Sprite.ContentSize = new CCSize(spriteSize * 0.8f, spriteSize * 0.8f); } { var colorCollection = World.GameSettings.VisualSettings.ColorCollection; var margin = World.GameSettings.VisualSettings.StatisticsMargin; var radius = 45; var x = VisibleBoundsWorldspace.MaxX - margin; var y = VisibleBoundsWorldspace.MaxY - margin; var position = new CCPoint(x, y); DrawNode.DrawCircle(position, radius, colorCollection.FastForewardBackground, 2, colorCollection.FastForewardBorder); FastForewardSprite.Color = new CCColor3B(World.GameSpeed.GetColor(colorCollection)); FastForewardSprite.Position = position + new CCPoint(2, 0); FastForewardSprite.ContentSize = new CCSize(radius * 2, radius * 2) * 0.8f; } RenderEnvironmentValues(); }
private void RenderHexagon(Hexagon hexagon) { var visualSettings = World.GameSettings.VisualSettings; var colorCollection = visualSettings.ColorCollection; var layoutSettings = World.GameSettings.LayoutSettings; var worldPosition = hexagon.Position.GetWorldPosition(layoutSettings.HexagonRadius, layoutSettings.HexagonMargin); var corners = Corners.Select(c => c * layoutSettings.HexagonRadius + worldPosition).ToArray(); var innerColor = colorCollection.GetInnerHexagonColor(hexagon.ResourceType); var outerColor = colorCollection.GetOuterHexagonColor(hexagon.ResourceType); var center = new CCV3F_C4B(worldPosition, innerColor); var adjacentHexagonPositions = hexagon.Position.GetAdjacentHexagonPositions(); for (int i = 0; i < corners.Length; i++) { var p1 = new CCV3F_C4B(corners[i], outerColor); var p2 = new CCV3F_C4B(corners[(i + 1) % corners.Length], outerColor); DrawNode.DrawTriangle(p1, center, p2); if (World.HexagonManager[adjacentHexagonPositions[(6 - i + 2) % 6]]?.ResourceType != hexagon.ResourceType) { DrawNode.DrawLine(corners[i], corners[(i + 1) % corners.Length], visualSettings.HexagonOuterBorderThickness, colorCollection.HexagonBorder); } } DrawNode.DrawText(worldPosition, hexagon.ResourceType.GetText(), Font.ArialFonts[32], new CCSize(layoutSettings.HexagonRadius * 2, layoutSettings.HexagonRadius * 2)); }