private void PrintBar(string name, int y, StatBlock stats, int statID) { var str = $"{name} ({stats.Cur(statID)}/{stats.Max(statID)})"; var width = Data.Size.X; var offset = (width - str.Length) / 2; var p = stats.Perc(statID); var fgColor = Color.White;// (p > 0.8) ? Color.Green : (p > 0.5) ? Color.Yellow : (p > 0.2) ? Color.Orange : Color.Red; for (int x = 0; x < width; x++) { var bgColor = (x <= p * width + 0.5) ? Color.Red : Color.Black; var ascii = (x >= offset && x < str.Length + offset) ? str[x - offset] : ' '; Data[new Vec(x, y)] = new Symbol { Ascii = ascii, BackgroundColor = bgColor, TextColor = fgColor }; } }
public void BarValues() { var sb = new StatBlock(10, 0, 0); Assert.AreEqual(sb.Cur(0), 10); Assert.AreEqual(sb.Max(0), 10); Assert.AreEqual(sb.Perc(0), 1f); /* * sb.TakeDamage( -= 5; * Assert.AreEqual(sb.Cur(0), 5); * Assert.AreEqual(sb.Max, 10); * Assert.AreEqual(sb.Perc, 0.5f); * * b.Current += 15; * Assert.AreEqual(sb.Current, 10); * Assert.AreEqual(sb.Max, 10); * Assert.AreEqual(sb.Perc, 1f); * * b.Max = 15; * Assert.AreEqual(sb.Current, 10); * Assert.AreEqual(sb.Max, 15); * * b.Max = 5; * Assert.AreEqual(b.Current, 5); * Assert.AreEqual(b.Max, 5); * Assert.AreEqual(b.Perc, 1f); * * b.Max = 10; * Assert.AreEqual(b.Current, 5); * Assert.AreEqual(b.Max, 10); * Assert.AreEqual(b.Perc, 0.5f); * * b.Current -= 20; * Assert.AreEqual(b.Current, 0); * Assert.AreEqual(b.Max, 10); * Assert.AreEqual(b.Perc, 0f); */ }