Пример #1
0
    public Selector(int _keyid) {
      keyid = _keyid;

      AbilityData aData = AbilityData.get(player);
      Category c = aData.getCategory();

      for (Skill s : aData.getControllableSkillList()) {
        int cid = s.getControlID();
        if (!editor.hasMapping(cid)) {
          available.add(s);
        }
      }

      List<SelectionProvider> providers = new ArrayList();
      providers.add(
          new SelectionProvider(
              -1, Resources.getTexture("guis/preset_settings/cancel"), local("skill_remove")));
      for (Skill s : available)
        providers.add(new SelectionProvider(s.getControlID(), s.getHintIcon(), s.getDisplayName()));

      height = MARGIN * 2 + SIZE + STEP * (ldiv(providers.size(), MAX_PER_ROW) - 1);
      width =
          available.size() < MAX_PER_ROW
              ? MARGIN * 2 + SIZE + STEP * (providers.size() - 1)
              : MARGIN * 2 + SIZE + STEP * (MAX_PER_ROW - 1);

      transform.setSize(width, height);

      // Build the window and the widget
      regEventHandler(
          new FrameEventHandler() {

            @Override
            public void handleEvent(Widget w, FrameEvent event) {
              CRL_WHITE.bind();
              ACRenderingHelper.drawGlow(0, 0, width, height, 1, CRL_WHITE);

              CRL_BACK.bind();
              HudUtils.colorRect(0, 0, width, height);

              String str;
              Widget hovering = foreground.getHoveringWidget();
              if (hovering != null && hovering.getName().contains("_sel")) {
                SelHandler sh = hovering.getComponent("_sel");
                str = sh.selection.hint;
              } else {
                str = local("skill_select");
              }

              double len = Font.font.strLen(str, 9);
              CRL_BACK.bind();
              HudUtils.colorRect(0, -13.5, len + 6, 11.5);
              ACRenderingHelper.drawGlow(0, -13.5, len + 6, 11.5, 1, CRL_GLOW);

              Font.font.draw(str, 3, -12, 9, 0xbbbbbb);

              GL11.glColor4d(1, 1, 1, 1);
            }
          });

      // Build all the skills that can be set
      for (int i = 0; i < providers.size(); ++i) {
        int row = i / MAX_PER_ROW, col = i % MAX_PER_ROW;
        SelectionProvider selection = providers.get(i);
        Widget single = new Widget();
        single.transform.setPos(MARGIN + col * STEP, MARGIN + row * STEP);
        single.transform.setSize(SIZE, SIZE);

        DrawTexture tex = new DrawTexture().setTex(selection.texture);
        single.addComponent(tex);
        single.addComponent(new Tint());
        single.addComponent(new SelHandler(selection));
        addWidget("_sel" + i, single);
      }
    }