protected override void DrawContents(Gdk.Drawable d) { Gdk.GC gc = new Gdk.GC(d); Cairo.Context g = Gdk.CairoHelper.Create(d); g.SelectFontFace("Lucida Console", FontSlant.Normal, FontWeight.Bold); g.SetFontSize(24); TextExtents te; Cairo.Color greenish = new Color(.3, .8, .8); Cairo.Color gray = new Color(.4, .4, .4); Cairo.Color white = new Color(1, 1, 1); string lvl, hp, hpm, mp, mpm, s; #region Character Status d.DrawPixbuf(gc, Graphics.GetProfile(Selected.Name), 0, 0, X + xpic, Y + ypic, Graphics.PROFILE_WIDTH, Graphics.PROFILE_HEIGHT, Gdk.RgbDither.None, 0, 0); g.Color = new Color(.3, .8, .8); g.MoveTo(X + x3, Y + ya); g.ShowText("LV"); g.MoveTo(X + x3, Y + yb); g.ShowText("HP"); g.MoveTo(X + x3, Y + yc); g.ShowText("MP"); g.Color = new Color(1, 1, 1); Graphics.ShadowedText(g, Selected.Name, X + x3, Y + y); lvl = Selected.Level.ToString(); hp = Selected.HP.ToString() + "/"; hpm = Selected.MaxHP.ToString(); mp = Selected.MP.ToString() + "/"; mpm = Selected.MaxMP.ToString(); te = g.TextExtents(lvl); Graphics.ShadowedText(g, lvl, X + x4 - te.Width, Y + ya); te = g.TextExtents(hp); Graphics.ShadowedText(g, hp, X + x5 - te.Width, Y + yb); te = g.TextExtents(hpm); Graphics.ShadowedText(g, hpm, X + x6 - te.Width, Y + yb); te = g.TextExtents(mp); Graphics.ShadowedText(g, mp, X + x5 - te.Width, Y + yc); te = g.TextExtents(mpm); Graphics.ShadowedText(g, mpm, X + x6 - te.Width, Y + yc); #endregion Status Graphics.ShadowedText(g, greenish, "Attack", X + x0, Y + ym); Graphics.ShadowedText(g, greenish, "Halve", X + x0, Y + yn); Graphics.ShadowedText(g, greenish, "Void", X + x0, Y + yo); Graphics.ShadowedText(g, greenish, "Absorb", X + x0, Y + yp); g.SetFontSize(16); double x = (double)x1; double r = (double)(ym + ys); foreach (Element e in Enum.GetValues(typeof(Element))) { if (x > W - stop) { x = x1; r = r + ys; } s = e.ToString() + " "; te = g.TextExtents(s); if (Selected.Halves(e)) { Graphics.ShadowedText(g, white, e.ToString(), X + x, Y + r); } else { Graphics.ShadowedText(g, gray, e.ToString(), X + x, Y + r); } x += te.XAdvance; } x = (double)x1; r = (double)(yn + ys); foreach (Element e in Enum.GetValues(typeof(Element))) { if (x > W - stop) { x = x1; r = r + ys; } s = e.ToString() + " "; te = g.TextExtents(s); if (Selected.Halves(e)) { Graphics.ShadowedText(g, white, e.ToString(), X + x, Y + r); } else { Graphics.ShadowedText(g, gray, e.ToString(), X + x, Y + r); } x += te.XAdvance; } x = (double)x1; r = (double)(yo + ys); foreach (Element e in Enum.GetValues(typeof(Element))) { if (x > W - stop) { x = x1; r = r + ys; } s = e.ToString() + " "; te = g.TextExtents(s); if (Selected.Voids(e)) { Graphics.ShadowedText(g, white, e.ToString(), X + x, Y + r); } else { Graphics.ShadowedText(g, gray, e.ToString(), X + x, Y + r); } x += te.XAdvance; } x = (double)x1; r = (double)(yp + ys); foreach (Element e in Enum.GetValues(typeof(Element))) { if (x > W - stop) { x = x1; r = r + ys; } s = e.ToString() + " "; te = g.TextExtents(s); if (Selected.Absorbs(e)) { Graphics.ShadowedText(g, white, e.ToString(), X + x, Y + r); } else { Graphics.ShadowedText(g, gray, e.ToString(), X + x, Y + r); } x += te.XAdvance; } ((IDisposable)g.Target).Dispose(); ((IDisposable)g).Dispose(); }