Example #1
0
  private void update() {
    if (party.memb != om) {
      Collection<Member> old = new HashSet<Member>(avs.keySet());
      for (final Member m : (om = party.memb).values()) {
        if (m.gobid == ign) continue;
        Avaview w = avs.get(m);
        if (w == null) {
          w =
              new Avaview(Coord.z, this, m.gobid, new Coord(27, 27)) {
                private Tex tooltip = null;

                public Object tooltip(Coord c, boolean again) {
                  Gob gob = m.getgob();
                  if (gob == null) return (tooltip);
                  KinInfo ki = gob.getattr(KinInfo.class);
                  if (ki == null) return (null);
                  return (tooltip = ki.rendered());
                }
              };
          avs.put(m, w);
        } else {
          old.remove(m);
        }
      }
      for (Member m : old) {
        ui.destroy(avs.get(m));
        avs.remove(m);
      }
      List<Map.Entry<Member, Avaview>> wl =
          new ArrayList<Map.Entry<Member, Avaview>>(avs.entrySet());
      Collections.sort(
          wl,
          new Comparator<Map.Entry<Member, Avaview>>() {
            public int compare(Entry<Member, Avaview> a, Entry<Member, Avaview> b) {
              return (a.getKey().gobid - b.getKey().gobid);
            }
          });
      int i = 0;
      for (Map.Entry<Member, Avaview> e : wl) {
        e.getValue().c = new Coord((i % 2) * 43, (i / 2) * 43 + 24);
        i++;
      }
    }
    for (Map.Entry<Member, Avaview> e : avs.entrySet()) {
      e.getValue().color = e.getKey().col;
    }
    if ((avs.size() > 0) && (leave == null)) {
      leave = new Button(Coord.z, 84, this, "Leave party");
    }
    if ((avs.size() == 0) && (leave != null)) {
      ui.destroy(leave);
      leave = null;
    }
    sz.y = MainFrame.getScreenSize().y - c.y;
  }