public override bool Paint(Writeable writeContext) { if (!Dirty) { return(false); } Coord nextMessage = new Coord(0, 0); _linkMask.Clear(); writeContext.Clear(); foreach (LogMessage message in _logger.MostRecent()) { LinkPrint linkPrint = StringPrinter.PrintLinkedText(message, writeContext, 255 - nextMessage.Y * 255 / writeContext.Height, nextMessage.X, nextMessage.Y); foreach (var(key, value) in linkPrint.LinkMask) { _linkMask.Add(key, value); } nextMessage = new Coord(0, linkPrint.End.Y + 1); if (nextMessage.Y >= writeContext.Height) { break; } } Dirty = false; return(true); }
public override bool Paint(Writeable writeContext) { if (!Dirty) { return(false); } int width = writeContext.Width; int fill = width * ResourceMeter.CurrentValue / ResourceMeter.MaxCapacity; int cap = width * ResourceMeter.CurrentCapacity / ResourceMeter.MaxCapacity; writeContext.Clear(); for (int i = 0; i < cap; i++) { writeContext.SetGlyph(0, i, new Glyph(i < Label.Length ? (Characters)Label[i] : Characters.SPACE, _fillColor.Inverted(), i < fill ? _fillColor : _capacityColor)); } Dirty = false; return(true); }