public void draw(BufferedImage buf) { WritableRaster dst = buf.getRaster(); blit(dst, bg.getRaster(), Coord.z); alphablit(dst, rmeter(sbars[0].getRaster(), lmax[0], max), mc[0]); alphablit( dst, lmeter(sbars[1].getRaster(), lmax[1], max), mc[1].sub(bars[1].getWidth() - 1, 0)); alphablit( dst, lmeter(sbars[2].getRaster(), lmax[2], max), mc[2].sub(bars[2].getWidth() - 1, 0)); alphablit(dst, rmeter(sbars[3].getRaster(), lmax[3], max), mc[3]); if (lfood != null) { double e = foodeff(lfood); alphablit(dst, rgmeter(lfood, e, 0), mc[0]); alphablit(dst, lgmeter(lfood, e, 1), mc[1].sub(bars[1].getWidth() - 1, 0)); alphablit(dst, lgmeter(lfood, e, 2), mc[2].sub(bars[1].getWidth() - 1, 0)); alphablit(dst, rgmeter(lfood, e, 3), mc[3]); } alphablit(dst, rmeter(bars[0].getRaster(), lev[0], max), mc[0]); alphablit(dst, lmeter(bars[1].getRaster(), lev[1], max), mc[1].sub(bars[1].getWidth() - 1, 0)); alphablit(dst, lmeter(bars[2].getRaster(), lev[2], max), mc[2].sub(bars[2].getWidth() - 1, 0)); alphablit(dst, rmeter(bars[3].getRaster(), lev[3], max), mc[3]); StringBuilder tbuf = new StringBuilder(); for (int i = 0; i < 4; i++) tbuf.append( String.format( "%s: %s/%s\n", rnm[i], Utils.fpformat(lev[i], 3, 1), Utils.fpformat(lmax[i], 3, 1))); tooltip = RichText.render(tbuf.toString(), 0).tex(); }
public void tick(double dt) { if (updt) { nw = 0; int aw = 0; for (TypeMod m : mods) { if (m.rn == null) { try { BufferedImage img = m.t.get().layer(Resource.imgc).img; String nm = m.t.get().layer(Resource.tooltip).t; Text rt = tnf.render(nm); int h = Inventory.sqsz.y; BufferedImage buf = TexI.mkbuf(new Coord(img.getWidth() + 10 + rt.sz().x, h)); Graphics g = buf.getGraphics(); g.drawImage(img, 0, (h - img.getHeight()) / 2, null); g.drawImage(rt.img, img.getWidth() + 10, (h - rt.sz().y) / 2, null); g.dispose(); m.rn = new TexI(rasterimg(blurmask2(buf.getRaster(), 2, 1, new Color(32, 0, 0)))); m.rh = new TexI(rasterimg(blurmask2(buf.getRaster(), 2, 1, new Color(192, 128, 0)))); } catch (Loading l) { } } if (m.ra == null) { Text rt = tnf.render( (int) Math.round(m.a * 100) + "%", new Color(255, (int) (255 * m.a), (int) (255 * m.a))); m.ra = new TexI(rasterimg(blurmask2(rt.img.getRaster(), 2, 1, new Color(0, 0, 0)))); } nw = Math.max(nw, m.rn.sz().x); aw = Math.max(aw, m.ra.sz().x); } int h = (Inventory.sqsz.y + 5) * mods.size(); h += levels.sz().y + 20; resize(new Coord(Math.max(nw + 20 + aw, boxsz.x), h)); this.c = Gobble.this.parentpos(parent).add(boxc).add(0, boxsz.y + 5); updt = false; } }