protected static void RenderEntityDetails(int x, int y, ShopItemControl display, IEntity shopItem, ISystemContainer systemContainer, ISpriteManager spriteManager) { BLT.Font(""); SpriteAppearance appearance = shopItem.Has <SpriteAppearance>() ? shopItem.Get <SpriteAppearance>() : new SpriteAppearance { Bottom = "unknown" }; AnimationFrame frame = shopItem.Has <Animated>() ? systemContainer.AnimationSystem.GetFrame(shopItem) : AnimationFrame.Idle0; Price price = shopItem.Get <Price>(); var playerWealth = systemContainer.ItemSystem.CheckWealth(systemContainer.PlayerSystem.Player, price.Currency); var canAfford = playerWealth >= price.Amount; BLTLayers.Set(BLTLayers.UIElementPieces, display.ActivityIndex); string appearanceBottom = appearance.Bottom; RenderSpriteIfSpecified(x + 4 + BLTTilesIOSystem.TILE_SPACING * 2, y + 4, spriteManager, appearanceBottom, frame); BLTLayers.Set(BLTLayers.UIElementPieces + 1, display.ActivityIndex); string appearanceTop = appearance.Top; RenderSpriteIfSpecified(x + 4 + BLTTilesIOSystem.TILE_SPACING * 2, y + 4, spriteManager, appearanceTop, frame); BLTLayers.Set(BLTLayers.Text, display.ActivityIndex); BLT.Font("text"); BLT.Print(new Rectangle(x + 2, y + BLTTilesIOSystem.TILE_SPACING * 2 + 2, 6 * BLTTilesIOSystem.TILE_SPACING, 10), ContentAlignment.TopCenter, shopItem.GetBLTName()); BLT.Color(canAfford ? Color.Gold : Color.Gray); BLT.Print(new Rectangle(x + 2, y + BLTTilesIOSystem.TILE_SPACING * 2 + 12, 6 * BLTTilesIOSystem.TILE_SPACING, 10), ContentAlignment.TopCenter, $"{price.Amount} {price.Currency}"); BLT.Color(Color.White); }
private static void RenderBarContent(int x, int y, int totalLength, decimal percentage, int bar_left, int bar_fill, int bar_full_right, int bar_right) { if (percentage > 0) { var lengthToCover = percentage * totalLength - 6; if (lengthToCover - 1 < 0) { BLT.Put(x + 1, y + 2, bar_right); } else { BLT.Put(x + 1, y + 2, bar_left); for (int i = 3; i < lengthToCover - 1; i += 2) { BLT.Put(x + i, y + 2, bar_fill); } if (percentage == 1) { BLT.Put(x + totalLength - 7, y + 2, bar_full_right); } else { BLT.Put(x + (int)lengthToCover - 1, y + 2, bar_right); } } } }
private static void RenderHighlightedCells(IDataRogueControl control, ISpriteSheet topSprite, ISpriteSheet bottomSprite, IMap currentMap, int cameraX, int cameraY, int renderWidth, int renderHeight, int offsetX, int offsetY, List <MapCoordinate> highlightedCells) { var checks = new bool[renderWidth + 2, renderHeight + 2]; for (int y = 0; y < renderHeight; y++) { for (int x = 0; x < renderWidth; x++) { var lookupX = cameraX - offsetX + x; var lookupY = cameraY - offsetY + y; var currentCell = new MapCoordinate(currentMap.MapKey, lookupX, lookupY); checks[x + 1, y + 1] = highlightedCells.Contains(currentCell); } } BLT.Color(Color.FromArgb(128, 255, 255, 255)); if (bottomSprite != null) { RenderLayer(BLTLayers.MapShade, control, bottomSprite, renderWidth, renderHeight, checks); } if (topSprite != null) { RenderLayer(BLTLayers.MapShade + 1, control, topSprite, renderWidth, renderHeight, checks); } }
protected override void DisplayInternal(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov) { var display = control as MenuActionsControl; if (display.AvailableActions.Count > 1) { BLT.Font("text"); BLTLayers.Set(BLTLayers.Text, display.ActivityIndex); BLT.Color(display.Color); var x = control.Position.X; var y = control.Position.Y; BLT.Print(x, y, "[["); x += BLT.Measure("[[").Width; foreach (var action in display.AvailableActions) { if (action == display.SelectedAction) { BLT.Color(display.SelectedColor); } BLT.Print(x, y, action.ToString()); BLT.Color(""); x += BLT.Measure(action.ToString()).Width; BLT.Print(x, y, "|"); x += BLT.Measure("|").Width; } x -= BLT.Measure("|").Width; BLT.Print(x, y, "]]"); } }
protected static void RenderSpriteIfSpecified(int x, int y, ISpriteManager spriteManager, string spriteName, AnimationFrame frame) { if (!string.IsNullOrEmpty(spriteName)) { BLT.Put(x, y, spriteManager.Tile(spriteName, frame)); } }
public void Initialise(GameLoopEventHandler onUpdate, GameLoopEventHandler onRender, IEntityDataProvider graphicsDataProvider) { BLT.Open(); _update = onUpdate; _render = onRender; var config = $"window: size={Configuration.InitialWidth * TILE_SPACING}x{Configuration.InitialHeight * TILE_SPACING}, cellsize=4x4, title='{Configuration.WindowTitle}'"; BLT.Set(config); BLT.Set("input: precise-mouse=false, filter=[keyboard,mouse+];"); BLT.Set("text font: Images/Tileset/Andux_sleipnir_8x12_tf.png, codepage=437, size=8x12, spacing=2x3;"); BLT.Set("textLarge font: Images/Tileset/Andux_sleipnir_8x12_tf.png, codepage=437, size=8x12, resize=16x24, resize-filter=nearest, spacing=4x6;"); BLT.Set("textXLarge font: Images/Tileset/Andux_sleipnir_8x12_tf.png, codepage=437, size=8x12, resize=32x48, resize-filter=nearest, spacing=8x12;"); _spriteManager = SetUpSpriteManager(graphicsDataProvider); List <IDataRogueControlRenderer> controlRenderers = BLTControlRenderer.DefaultControlRenderers; controlRenderers.AddRange(Configuration.AdditionalControlRenderers); Renderer = new BLTTilesUnifiedRenderer(controlRenderers, _spriteManager, Configuration); BLT.Refresh(); }
private void CheckInput() { while (BLT.HasInput() && !isClosed) { var input = BLT.Read(); if (input == BLT.TK_CLOSE) { isClosed = true; } if (IsMouseMove(input)) { _mouseActive = true; _mouseX = BLT.State(BLT.TK_MOUSE_X); _mouseY = BLT.State(BLT.TK_MOUSE_Y); } if (IsClickEvent(input)) { _mouseActive = true; } else { ResolveKeyboardInput(input); } SetMouseButtons(input); } }
public MapCoordinate GetMapEditorMapCoordinateFromMousePosition(MapCoordinate cameraPosition, int x, int y) { var lookupX = cameraPosition.X - BLT.State(BLT.TK_WIDTH) / (2 * BLTTilesIOSystem.TILE_SPACING) + x / BLTTilesIOSystem.TILE_SPACING; var lookupY = cameraPosition.Y - BLT.State(BLT.TK_HEIGHT) / (2 * BLTTilesIOSystem.TILE_SPACING) + y / BLTTilesIOSystem.TILE_SPACING; return(new MapCoordinate(cameraPosition.Key, lookupX, lookupY)); }
protected override void DisplayInternal(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov) { var messageLog = control as MessageLogControl; var numberOfMessages = messageLog.NumberOfMessages; BLTLayers.Set(BLTLayers.Text, control.ActivityIndex); BLT.Font("text"); var messagesToRender = systemContainer.MessageSystem.RecentMessages(numberOfMessages); messagesToRender.Reverse(); var x = control.Position.Left; var y = control.Position.Bottom; foreach (var message in messagesToRender) { var size = BLT.Measure(message.Text); y -= size.Height + 1; BLT.Color(message.Color); BLT.Print(x, y, message.Text); } BLT.Color(""); BLT.Font(""); }
private void RenderMapShade(ISpriteManager spriteManager, bool[,] renderTracker, bool[,] fovTracker, int renderWidth, int renderHeight, BLTMapRendererOffset[,,] offsetTracker, IDataRogueControl mapConfiguration) { var shadeSprite = spriteManager.Get("shade"); BLTLayers.Set(BLTLayers.MapShade, mapConfiguration.ActivityIndex); BLT.Font(""); BLT.Color(Color.White); for (int x = 0; x < renderWidth; x++) { for (int y = 0; y < renderHeight; y++) { if (renderTracker[x + 1, y + 1]) { var offsetX = (int)Math.Floor(offsetTracker[x + 1, y + 1, 0].OffsetX * BLTTilesIOSystem.TILE_SPACING); var offsetY = (int)Math.Floor(offsetTracker[x + 1, y + 1, 0].OffsetY * BLTTilesIOSystem.TILE_SPACING); if (!fovTracker[x + 1, y + 1]) { var sprite = shadeSprite.Tile(TileDirections.None); BLT.Put(mapConfiguration.Position.Left + x * BLTTilesIOSystem.TILE_SPACING + offsetX, mapConfiguration.Position.Top + y * BLTTilesIOSystem.TILE_SPACING + offsetY, sprite); } else { var aboveConnect = (fovTracker[x + 1, y]); var belowConnect = (fovTracker[x + 1, y + 2]); var leftConnect = (fovTracker[x, y + 1]); var rightConnect = (fovTracker[x + 2, y + 1]); var directions = TileDirections.None; if (aboveConnect) { directions |= TileDirections.Up; } if (belowConnect) { directions |= TileDirections.Down; } if (leftConnect) { directions |= TileDirections.Left; } if (rightConnect) { directions |= TileDirections.Right; } var sprite = shadeSprite.Tile(directions); BLT.Put( mapConfiguration.Position.Left + x * BLTTilesIOSystem.TILE_SPACING + offsetX, mapConfiguration.Position.Top + y * BLTTilesIOSystem.TILE_SPACING + offsetY, sprite); } } } } }
private void RenderMapParticles(ISystemContainer systemContainer, bool[,] renderTracker, bool[,] fovTracker, List <IEntity>[,] particlesTracker, int renderWidth, int renderHeight, IDataRogueControl mapConfiguration) { BLTLayers.Set(BLTLayers.MapParticles, mapConfiguration.ActivityIndex); BLT.Font("text"); for (int x = 0; x < renderWidth; x++) { for (int y = 0; y < renderHeight; y++) { if (renderTracker[x + 1, y + 1] && fovTracker[x + 1, y + 1] && particlesTracker[x + 1, y + 1].Any()) { foreach (var particle in particlesTracker[x + 1, y + 1]) { var textParticle = particle.Get <TextParticle>(); BLT.Color(textParticle.Color); var moving = particle.TryGet <Moving>(); var offsetX = (int)Math.Floor((moving?.OffsetX ?? 0) * BLTTilesIOSystem.TILE_SPACING); var offsetY = (int)Math.Floor((moving?.OffsetY ?? 0) * BLTTilesIOSystem.TILE_SPACING); BLT.Print( (int)(mapConfiguration.Position.Left + x * BLTTilesIOSystem.TILE_SPACING + offsetX), (int)(mapConfiguration.Position.Top + y * BLTTilesIOSystem.TILE_SPACING + offsetY), textParticle.Text); } } } } }
public static void Set(int layer, int activityIndex) { if (activityIndex > 11) { throw new ApplicationException("Can't have more than 11 layers of activities"); } BLT.Layer(layer + activityIndex * FULL_LAYER_SIZE); }
private static void RenderBarFillMask(int x, int y, ISpriteManager spriteManager, int totalLength, decimal percentage, Color color, IDataRogueControl display) { BLTLayers.Set(BLTLayers.UIMasks, display.ActivityIndex); BLT.Color(color); var mask_main = spriteManager.Tile("bar_fill_mask"); RenderBarContent(x, y, totalLength, percentage, mask_main, mask_main, mask_main, mask_main); BLT.Color(""); }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { var display = control as MenuActionsControl; var text = $"[[{string.Join("|", display.AvailableActions.Select(a => a.ToString()))}]]"; BLT.Font("text"); var size = BLT.Measure(text); return(size); }
private void LoadSpriteSheetFile(string imageFile, int spriteWidth, int spriteHeight, int scaling, int spacing) { string configString = $"0x{_offset.ToString("X")}: {imageFile}, size={spriteWidth}x{spriteHeight}, resize={spriteWidth * scaling}x{spriteHeight * scaling}, resize-filter=nearest, spacing={spacing}x{spacing};"; var ok = BLT.Set(configString); if (!ok) { throw new Exception($"BLT wasn't OK with sprite loading (tried to load {imageFile}). Check that the sprite is set to 'Copy Always'."); } }
private void SetMouseButtons(int input) { var leftMouseCurrentlyDown = BLT.State(BLT.TK_MOUSE_LEFT) == 1; var rightMouseCurrentlyDown = BLT.State(BLT.TK_MOUSE_RIGHT) == 1; _leftClick = _leftMouseDown && !leftMouseCurrentlyDown; _rightClick = _rightMouseDown && !rightMouseCurrentlyDown; _leftMouseDown = leftMouseCurrentlyDown; _rightMouseDown = rightMouseCurrentlyDown; }
protected override void DisplayInternal(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov) { var display = control as MenuSelectorControl; var baseX = control.Position.Left; var y = control.Position.Top; var sprite = spriteManager.Get(display.Direction == TileDirections.Left ? "selector_left" : "selector_right"); BLTLayers.Set(BLTLayers.UIElementPieces, display.ActivityIndex); BLT.Font(""); BLT.PutExt(baseX, y, 0, -1, sprite.Tile(display.Direction)); }
protected static void RenderText(int x, int y, int activityIndex, out Size textSize, string text, Color color, bool updateY = true, string font = "text") { BLTLayers.Set(BLTLayers.Text, activityIndex); BLT.Font(font); BLT.Color(color); BLT.Print(x, y, text); textSize = BLT.Measure(text); textSize.Height += 1; BLT.Color(""); }
protected override void DisplayInternal(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov) { var x = control.Position.X; var y = control.Position.Y; var display = control as IDataRogueInfoControl; var player = systemContainer.PlayerSystem.Player; var ac = Math.Floor(systemContainer.EventSystem.GetStat(player, "AC")); var ev = Math.Floor(systemContainer.EventSystem.GetStat(player, "EV")); var sh = Math.Floor(systemContainer.EventSystem.GetStat(player, "SH")); var currentAegis = Math.Floor(systemContainer.EventSystem.GetStat(player, "CurrentAegisLevel")); var aegis = Math.Floor(systemContainer.EventSystem.GetStat(player, "Aegis")); var aegisText = $"{currentAegis}/{aegis}"; var renderAegis = aegis > 0; var tiltFighter = player.Get <TiltFighter>(); var brokenTicks = tiltFighter.BrokenTicks; var broken = brokenTicks > 0; if (broken) { BLT.Font(""); BLTLayers.Set(BLTLayers.UIElements, control.ActivityIndex); RenderSpriteIfSpecified(x, y, spriteManager, "defence_broken", AnimationFrame.Idle0); BLTLayers.Set(BLTLayers.Text, control.ActivityIndex); BLT.Font("text"); BLT.Print(x + 10, y + 2, $"DEFENCE BROKEN (Recovery: {100 - brokenTicks / 200}%)"); } else { BLT.Font(""); BLTLayers.Set(BLTLayers.UIElements, control.ActivityIndex); RenderSpriteIfSpecified(x, y, spriteManager, "AC", AnimationFrame.Idle0); RenderSpriteIfSpecified(x + 10, y, spriteManager, "SH", AnimationFrame.Idle0); RenderSpriteIfSpecified(x + 20, y, spriteManager, "EV", AnimationFrame.Idle0); if (renderAegis) { var aegisSprite = currentAegis > 0 ? "aegis" : "aegis_none"; RenderSpriteIfSpecified(x + 30, y, spriteManager, aegisSprite, AnimationFrame.Idle0); } BLTLayers.Set(BLTLayers.Text, control.ActivityIndex); BLT.Font("text"); PrintTextCentered(ac.ToString(), x + 4, y + 2); PrintTextCentered(sh.ToString(), x + 4 + 10, y + 2); PrintTextCentered(ev.ToString(), x + 4 + 20, y + 2); if (renderAegis) { PrintTextCentered(aegisText, x + 4 + 30, y + 2); } } }
private static void RenderBarContainer(int x, int y, ISpriteManager spriteManager, int totalLength, IDataRogueControl display) { BLTLayers.Set(BLTLayers.UIElements, display.ActivityIndex); BLT.Put(x, y, spriteManager.Tile("bar_container_left")); for (int i = 4; i < totalLength - 6; i += 2) { BLT.Put(x + i, y, spriteManager.Tile("bar_container_mid")); } BLT.Put(x + totalLength - 4 - 4, y, spriteManager.Tile("bar_container_right")); }
private void ResolveKeyboardInput(int input) { var key = BLTKeyConverter.FromBLTInput(input); _keyCombination = new KeyCombination { Key = key, Ctrl = BLT.State(BLT.TK_CONTROL) != 0, Shift = BLT.State(BLT.TK_SHIFT) != 0, Alt = BLT.State(BLT.TK_ALT) != 0, }; }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { var display = control as MultipleChoiceFormData; var text = display.Value.ToString(); BLT.Font("text"); var textSize = BLT.Measure(text); return(new Size(textSize.Width + 6, textSize.Height)); }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl display, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { var statsControl = (display as IDataRogueInfoControl); var entity = statsControl.Entity; BLT.Font("textLarge"); var textSize = BLT.Measure(entity.GetBLTName()); BLT.Font(""); return(new Size(Math.Max(60, textSize.Width + 22), Height)); }
private void CircularcalcBtn_Click(object sender, EventArgs e) { double HCRT, Bt, HLC, WCF, BLT; if (Discanalrecttextbox.Text == "" || averageyradTextBox1.Text == "" || rblradTextBox2.Text == "" || cflradTextBox3.Text == "" || calradTextBox4.Text == "" || slopradTextBox5.Text == "" || BtmwdthradTextBox7.Text == "" || SIradTextBox1.Text == "" || LIradTextBox1.Text == "") { MessageBox.Show("please fill the filled corectly", "message", MessageBoxButtons.OKCancel, MessageBoxIcon.Error); } else { QC = Convert.ToDouble(Discanalrecttextbox.Text); Y1 = Convert.ToDouble(averageyradTextBox1.Text); RBL = Convert.ToDouble(rblradTextBox2.Text); CFL = Convert.ToDouble(cflradTextBox3.Text); CAL = Convert.ToDouble(calradTextBox4.Text); S = Convert.ToDouble(slopradTextBox5.Text); b = Convert.ToDouble(BtmwdthradTextBox7.Text); LI = Convert.ToDouble(LIradTextBox1.Text); SI = Convert.ToDouble(SIradTextBox1.Text); } HCRT = (double)0.9 * Y1; Bt = QC / ((double)1.61 * (Math.Sqrt(Math.Pow(HCRT, 3)))); HLC = CAL * S; HLI = LI * SI; if (CanaltypecomboBox1.Text == "Trapezoidal") { WDC = (double)0.8673 * b; } else if (CanaltypecomboBox1.Text == "Rectangular") { WDC = (double)b / 2; } WCF = CFL + HLI + HLC + WDC; BLT = WCF - HCRT; if (BLT < RBL) { bwtradTextBox8.Text = Math.Round(Bt, 2).ToString(); bltradTextBox9.Text = Math.Round(RBL, 2).ToString(); } else { bwtradTextBox8.Text = Bt.ToString(); bltradTextBox9.Text = BLT.ToString(); } radButton1.Visible = true; }
public void Render(ISystemContainer systemContainer, IActivity activity, int activityIndex) { if (activity.RendersEntireSpace) { BLT.Clear(); } var playerFov = systemContainer.ActivitySystem.GameplayActivity.Running ? FOVHelper.CalculatePlayerFov(systemContainer) : null; activity.Layout(_controlRenderers, systemContainer, playerFov, _spriteManager); Paint(systemContainer, activity, playerFov, activityIndex); }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { var display = control as IDataRogueInfoControl; var text = display.Parameters; BLT.Font("textLarge"); var size = BLT.Measure(text); size.Height += 1; return(size); }
protected override void DisplayInternal(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov) { var display = control as IDataRogueInfoControl; var text = display.Parameters; BLT.Font("textLarge"); BLTLayers.Set(BLTLayers.Text, display.ActivityIndex); BLT.Color(display.Color); BLT.Print(display.Position.X, display.Position.Y, text); BLT.Color(""); }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { var display = control as StatsFormData; var stats = display.Stats; var statTotal = $"[[{display.CurrentTotalStat.ToString().PadLeft(4)}/{display.MaxTotalStat.ToString().PadRight(4)}]]"; var statTotalSize = BLT.Measure(statTotal); var longestStat = stats.Max(s => BLT.Measure(s.statName).Width); var longest = Math.Max(longestStat, statTotalSize.Width); return(new Size(longest, 4 * (stats.Count + 1))); }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { var display = control as IDataRogueInfoControl; var entity = display.Entity; var experience = entity.Get <Experience>(); var text1 = $"Level: {experience.Level}"; var text2 = $" XP: {experience.Amount}"; BLT.Font(""); var size1 = BLT.Measure(text1); var size2 = BLT.Measure(text2); return(new Size(Math.Max(size1.Width, size2.Width), size1.Height + size2.Height)); }
protected override Size Measure(ISpriteManager spriteManager, IDataRogueControl control, ISystemContainer systemContainer, List <MapCoordinate> playerFov, Rectangle boundingBox, Padding padding, HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment) { BLT.Font("text"); var textSize = BLT.Measure(new String('@', 30)); var textBoxSize = textSize.Width + 4; if (textBoxSize % TILE_SIZE != 0) { textBoxSize = (textBoxSize / TILE_SIZE + 1) * TILE_SIZE; } var numberOfTiles = textBoxSize / TILE_SIZE; return(new Size(numberOfTiles * TILE_SIZE, TILE_SIZE)); }