示例#1
0
  @Override
  public void mousePressed(MouseEvent e) {
    if (Game.currentGame.placedStruct || Game.currentGame.activeStruct != null) return;

    e.translatePoint(-x, -y);
    if (e.getButton() == MouseEvent.BUTTON1) // LMB
    {
      if (selectedEntity != null
          && selectedEntity instanceof Struct
          && ((Struct) selectedEntity).guiPoint != null
          && ((Struct) selectedEntity).components.size() > 0) return;

      selectedEntity = null;
      for (Entity entity : entities) entity.setClicked(false);
      for (Entity entity : entities) {
        if (entity.mousePressed(e)) {
          selectedEntity = entity;
          break;
        }
      }
    } else if (e.getButton() == MouseEvent.BUTTON3
        && selectedEntity != null
        && selectedEntity instanceof Villager) {
      Entity target = null;
      for (Entity entity : entities) {
        if (entity.mousePressed(e)) {
          target = entity;
          break;
        }
      }

      setVillagerTarget((Villager) selectedEntity, e.getX(), e.getY(), target);
    } else if (e.getButton() == MouseEvent.BUTTON3) // after Drag
    {
      Entity target = null;
      for (Entity entity : entities) {
        if (entity.isClicked() && entity instanceof Villager) continue;

        if (entity.mousePressed(e)) {
          target = entity;
          break;
        }
      }

      for (Entity entity : entities) {
        if (entity.isClicked() && entity instanceof Villager) {
          setVillagerTarget((Villager) entity, e.getX(), e.getY(), target);
        }
      }
    }

    e.translatePoint(x, y);
  }