public void draw(GOut g) { Coord c = new Coord(xoff, 0); for (Spec s : inputs) { GOut sg = g.reclip(c, Inventory.invsq.sz()); sg.image(Inventory.invsq, Coord.z); s.draw(sg); c = c.add(Inventory.sqsz.x, 0); } if (qmod != null) { g.image(qmodl.tex(), new Coord(0, qmy + 4)); c = new Coord(xoff, qmy); int mx = -1; int pw = 0; int vl = 1; for (Indir<Resource> qm : qmod) { try { Tex t = qm.get().layer(Resource.imgc).tex(); g.image(t, c); c = c.add(t.sz().x + 1, 0); if (c.x > mx) mx = c.x; try { Glob.CAttr attr = ui.gui.chrwdg.findattr(qm.get().basename()); if (attr != null) { pw++; vl *= attr.comp; Tex txt = attr.comptex(); g.image(txt, c); c = c.add(txt.sz().x + 8, 0); } } catch (Exception ignored) { } } catch (Loading l) { } } if (pw > 0) { g.image( Text.renderstroked( String.format("Cap: %.0f", Math.floor(Math.pow(vl, 1.0f / pw))), Color.WHITE, Color.BLACK, new Text.Foundry(Text.fraktur, 14).aa(true)) .tex(), new Coord(mx + 30, qmy)); } } c = new Coord(xoff, outy); for (Spec s : outputs) { GOut sg = g.reclip(c, Inventory.invsq.sz()); sg.image(Inventory.invsq, Coord.z); s.draw(sg); c = c.add(Inventory.sqsz.x, 0); } super.draw(g); }
public Object tooltip(Coord mc, Widget prev) { Resource tres = null; Coord c; if (qmod != null) { c = new Coord(xoff, qmy); try { for (Indir<Resource> qm : qmod) { Tex t = qm.get().layer(Resource.imgc).tex(); Coord sz = t.sz(); try { Glob.CAttr attr = ui.gui.chrwdg.findattr(qm.get().basename()); if (attr != null) { sz = sz.add(attr.comptex().sz().x + 8, 0); } } catch (Exception ignored) { } if (mc.isect(c, sz)) return (qm.get().layer(Resource.tooltip).t); c = c.add(sz.x + 1, 0); } } catch (Loading l) { } } find: { c = new Coord(xoff, 0); for (Spec s : inputs) { if (mc.isect(c, Inventory.invsq.sz())) { tres = s.res.get(); break find; } c = c.add(31, 0); } c = new Coord(xoff, outy); for (Spec s : outputs) { if (mc.isect(c, Inventory.invsq.sz())) { tres = s.res.get(); break find; } c = c.add(31, 0); } } Resource.Tooltip tt; if ((tres == null) || ((tt = tres.layer(Resource.tooltip)) == null)) return (null); if (lasttip != tres) { lasttip = tres; stip = ltip = null; } long now = System.currentTimeMillis(); boolean sh = true; if (prev != this) hoverstart = now; else if (now - hoverstart > 1000) sh = false; if (sh) { if (stip == null) stip = Text.render(tt.t); return (stip); } else { if (ltip == null) { String t = tt.t; Resource.Pagina p = tres.layer(Resource.pagina); if (p != null) t += "\n\n" + tres.layer(Resource.pagina).text; ltip = RichText.render(t, 300); } return (ltip); } }