예제 #1
0
        private RectangleF Render(NpcPrinter document, Font font, Graphics graphics, string label, string text,
                                  RectangleF area, int relativeFontSize = 0)
        {
            if (text.IsEmpty() || label.IsEmpty())
            {
                return(area);
            }

            label += ": ";

            graphics.DrawString(label, document.PrinterFontBold, Brushes.Black, area, _formatLeft);

            text = new string(' ', 25) + text;
            var f        = relativeFontSize == 0 ? font : new Font(font.FontFamily, font.Size + relativeFontSize);
            var textArea = graphics.MeasureString(text, f, area.Size, _formatLeft);

            graphics.DrawString(text, f, Brushes.Black, area, _formatLeft);

            if (area.Height - textArea.Height <= 0)
            {
                // No room left
                return(RectangleF.Empty);
            }
            return(new RectangleF(area.X, area.Y + textArea.Height, area.Width, area.Height - textArea.Height));
        }
예제 #2
0
        public void Render(NpcPrinter document, Graphics graphics, RectangleF area)
        {
            /*
             * [NpcId] (+6 point) [Name]  +6 point Bold
             * [Title]                    +4 point
             * [QuoteFromNpc]             +2 point Italics
             * [thin line]
             * Appearance: (bold) [Appearance]
             * Roleplaying: (bold) [Roleplaying]
             * Personality: (bold) [Personality]
             * Motivation: (bold) [Motivation]
             * Background: (bold) [Background]
             * Traits: (bold) [Trait list]
             */

            var newArea = Render(document.PrinterFontBold, graphics, NpcId + " " + NpcName, area, 6);

            Render(document.PrinterFont, graphics, Title, area, 4, true);

            newArea = Render(document.PrinterFontItalics, graphics, QuoteFromNpc, newArea, 2);
            newArea = Render(document, document.PrinterFont, graphics, "Appearance", Appearance, newArea);
            newArea = Render(document, document.PrinterFont, graphics, "Roleplaying", Roleplaying, newArea);
            newArea = Render(document, document.PrinterFont, graphics, "Personality", Personality, newArea);
            newArea = Render(document, document.PrinterFont, graphics, "Motivation", Motivation, newArea);
            if (newArea.Height <= 0)
            {
                return;
            }

            newArea = Render(document, document.PrinterFont, graphics, "Background", Background, newArea);
            if (newArea.Height <= 0)
            {
                return;
            }

            Render(document, document.PrinterFont, graphics, "Traits", RenderableTraits, newArea);
        }