예제 #1
0
        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);
        }
예제 #2
0
        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);
        }