public void checkCollisions() {

    Rectangle r3 = link.getBounds();

    for (int j = 0; j < enemies.size(); j++) {
      Enemy en = (Enemy) enemies.get(j);
      Rectangle r2 = en.getBounds();

      if (r3.intersects(r2)) {
        link.setVisible(false);
        en.setVisible(false);
        ingame = false;
        gamewin = false;
      } // end if
    } // end for loop

    ArrayList as = link.getArrows();

    for (int i = 0; i < as.size(); i++) {
      Arrow aa = (Arrow) as.get(i);

      Rectangle r1 = aa.getBounds();

      for (int j = 0; j < enemies.size(); j++) {
        Enemy a = (Enemy) enemies.get(j);
        Rectangle r2 = a.getBounds();

        if (r1.intersects(r2)) {
          aa.setVisible(false);
          a.setVisible(false);
        } // end of if
      } // end inner for loop
    } // end outer for loop
  } // end checkCollisions
Beispiel #2
0
 public void move() {
   double r = point.distance(arrow.getEnd());
   g.setColor(Color.WHITE);
   draw();
   arrow.draw();
   point.translate(arrow.getNext().getX() / 10, arrow.getNext().getY() / 10);
   g.setColor(Color.BLACK);
   draw();
   g.setColor(Color.BLUE);
   arrow.draw();
 }
Beispiel #3
0
  /** draw the arrows between items */
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (_glist != null && _glist.size() > 1) {
      Graphics2D g2 = (Graphics2D) g;
      Arrow leftArrow = new Arrow();
      leftArrow.setColor(Color.BLACK);

      Arrow rightArrow = new Arrow();
      rightArrow.setColor(Color.RED);

      Iterator<GNode> iter = _glist.iterator();

      while (iter.hasNext()) {
        GNode nCur = iter.next();
        if (nCur.left != null) {
          leftArrow.setLine(nCur.getStart(), nCur.left.getEnd());
          leftArrow.draw(g2);
        }
        if (nCur.right != null) {
          rightArrow.setLine(nCur.getStart(), nCur.right.getEnd());
          rightArrow.draw(g2);
        }
      }
    }
  }
Beispiel #4
0
  protected final NoteBox createNoteBox(
      StringBounder stringBounder,
      Arrow arrow,
      Component noteComp,
      NotePosition notePosition,
      Url url) {
    final LivingParticipantBox p = arrow.getParticipantAt(stringBounder, notePosition);
    final NoteBox noteBox = new NoteBox(arrow.getStartingY(), noteComp, p, null, notePosition, url);

    if (arrow instanceof MessageSelfArrow && notePosition == NotePosition.RIGHT) {
      noteBox.pushToRight(arrow.getPreferredWidth(stringBounder));
    }

    return noteBox;
  }
Beispiel #5
0
  private void bes(Graph graph) {
    TetradLogger.getInstance().log("info", "** BACKWARD EQUIVALENCE SEARCH");

    initializeArrowsBackward(graph);

    while (!sortedArrows.isEmpty()) {
      Arrow arrow = sortedArrows.first();
      sortedArrows.remove(arrow);

      Node x = arrow.getX();
      Node y = arrow.getY();

      clearArrow(x, y);

      if (!validDelete(arrow.getHOrT(), arrow.getNaYX(), graph)) {
        continue;
      }

      List<Node> h = arrow.getHOrT();
      double bump = arrow.getBump();

      delete(x, y, h, graph, bump);
      score += bump;
      rebuildPattern(graph);

      storeGraph(graph);

      initializeArrowsBackward(
          graph); // Rebuilds Arrows from scratch each time. Fast enough for backwards.
    }
  }
Beispiel #6
0
  @EventHandler(priority = EventPriority.HIGH)
  public void removeItemFromFrame(EntityDamageByEntityEvent event) {
    Entity victim = event.getEntity();

    if (!victim.getType().equals(EntityType.ITEM_FRAME)) {
      return;
    }
    Player p;
    Entity attacker = event.getDamager();
    // System.out.println("Attacker: "+attacker.getType().toString());
    if (attacker.getType().toString().equals("PLAYER")) {
      p = (Player) attacker;

      OwnedLand land = OwnedLand.getApplicableLand(victim.getLocation());
      if (land == null) {
        return;
      }
      if (!land.hasPermTo(p, this)) {
        p.sendMessage(
            ChatColor.RED
                + getPlugin().getMessageConfig().getString("event.build.itemFrameRemoveWithMelee"));
        event.setCancelled(true);
      }

    } else if (attacker.getType().toString().equals("ARROW")) {
      Arrow a = (Arrow) attacker;
      if (a.getShooter() instanceof Player) {
        p = (Player) a.getShooter();
      } else {
        return;
      }

      OwnedLand land = OwnedLand.getApplicableLand(victim.getLocation());
      if (land == null) {
        return;
      }
      if (!land.hasPermTo(p, this)) {
        p.sendMessage(
            ChatColor.RED
                + getPlugin().getMessageConfig().getString("event.build.itemFrameRemoveWithArrow"));
        event.setCancelled(true);
      }
    }
  }
Beispiel #7
0
  /**
   * Paint the arrow in the panel, using the current style.
   *
   * @param g the graphic context.
   */
  public void paintComponent(Graphics g) {
    g.setColor(isSelected ? list.getSelectionBackground() : list.getBackground());

    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(isSelected ? list.getSelectionForeground() : list.getForeground());

    g.drawLine(getWidth() / 3, getHeight() / 2, 2 * getWidth() / 3, getHeight() / 2);
    Arrow arrowDummy = new Arrow();

    arrowDummy.drawArrowPixels(
        new Graphics2DSwing(g),
        getWidth() / 3,
        getHeight() / 2,
        2 * getWidth() / 3,
        getHeight() / 2,
        10,
        4,
        arrow.style);
  }
  Frontier prepareMessage(ConstraintSet constraintSet, InGroupablesStack inGroupablesStack) {
    final Arrow graphic = createArrow();
    final double arrowYStartLevel = graphic.getArrowYStartLevel(getStringBounder());
    final double arrowYEndLevel = graphic.getArrowYEndLevel(getStringBounder());

    for (LifeEvent lifeEvent : getMessage().getLiveEvents()) {
      beforeMessage(lifeEvent, arrowYStartLevel);
    }

    final double length = graphic.getArrowOnlyWidth(getStringBounder());
    incFreeY(graphic.getPreferredHeight(getStringBounder()));
    double marginActivateAndDeactive = 0;
    if (getMessage().isActivateAndDeactive()) {
      marginActivateAndDeactive = 30;
      incFreeY(marginActivateAndDeactive);
    }
    getDrawingSet().addEvent(getMessage(), graphic);

    final LivingParticipantBox livingParticipantBox = getLivingParticipantBox();
    if (messageArrow.getType().isRightBorder()) {
      constraintSet
          .getConstraint(livingParticipantBox.getParticipantBox(), constraintSet.getLastborder())
          .ensureValue(length);
    } else {
      constraintSet
          .getConstraint(constraintSet.getFirstBorder(), livingParticipantBox.getParticipantBox())
          .ensureValue(length);
    }

    for (LifeEvent lifeEvent : getMessage().getLiveEvents()) {
      afterMessage(getStringBounder(), lifeEvent, arrowYEndLevel + marginActivateAndDeactive);
    }

    assert graphic instanceof InGroupable;
    if (graphic instanceof InGroupable) {
      inGroupablesStack.addElement((InGroupable) graphic);
      inGroupablesStack.addElement(livingParticipantBox);
    }

    return getFreeY();
  }
    @EventHandler
    public void onProjectileHit(ProjectileHitEvent projectile) {
      Heroes.debug.startTask("HeroesSkillListener");

      if (!(projectile.getEntity() instanceof Arrow)) {
        Heroes.debug.stopTask("HeroesSkillListener");
        return;
      }

      Arrow arrow = (Arrow) projectile.getEntity();

      if (!(arrow.getShooter() instanceof Player)) {
        Heroes.debug.stopTask("HeroesSkillListener");
        return;
      }

      Player player = (Player) arrow.getShooter();
      Hero hero = SkillExplodingArrow.this.plugin.getCharacterManager().getHero(player);
      if (!hero.hasEffect("ExplodingArrowBuff")) {
        Heroes.debug.stopTask("HeroesSkillListener");
        return;
      }

      int radius =
          (int)
              Math.pow(
                  SkillConfigManager.getUseSetting(hero, this.skill, "radius", 5, false), 2.0D);

      float damage = SkillConfigManager.getUseSetting(hero, this.skill, "DAMAGE", 5, false);
      float blockdamage = damage;
      int block_dmg = SkillConfigManager.getUseSetting(hero, this.skill, "block-dmg", 0, false);

      if (block_dmg == 0) {
        blockdamage = 0.0F;

        for (Entity t_entity : player.getWorld().getEntities()) {
          if ((t_entity instanceof Player)) {
            Player heroes = (Player) t_entity;
            if ((heroes.equals(player))
                || (heroes.getLocation().distanceSquared(arrow.getLocation()) > radius)) continue;
            damageEntity(
                heroes, player, (int) damage, EntityDamageEvent.DamageCause.ENTITY_EXPLOSION);
          } else if ((t_entity instanceof Creature)) {
            Creature mob = (Creature) t_entity;
            if (t_entity.getLocation().distanceSquared(arrow.getLocation()) <= radius) {
              damageEntity(
                  mob, player, (int) damage, EntityDamageEvent.DamageCause.ENTITY_EXPLOSION);
            }
          }
        }
      }

      arrow.getWorld().createExplosion(arrow.getLocation(), blockdamage);

      Heroes.debug.stopTask("HeroesSkillListener");
    }
Beispiel #10
0
  @EventHandler(priority = EventPriority.HIGH)
  public void destroyArmorStand(EntityDamageByEntityEvent event) {
    Entity victim = event.getEntity();
    // System.out.println("Victim: "+victim);
    if (!victim.getType().equals(EntityType.ARMOR_STAND)) {
      return;
    }

    OwnedLand land = OwnedLand.getApplicableLand(victim.getLocation());
    if (land == null) {
      return;
    }

    if (event.getDamager().getType().equals(EntityType.PLAYER)) {
      Player attacker = (Player) event.getDamager();
      // System.out.println(attacker.getName());
      if (!land.hasPermTo(attacker, this)) {
        attacker.sendMessage(
            ChatColor.RED
                + getPlugin().getMessageConfig().getString("event.build.breakArmorStandWithMelee"));
        event.setCancelled(true);
      }
    }
    if (event.getDamager().getType().equals(EntityType.ARROW)) {
      Arrow projectile = (Arrow) event.getDamager();
      if (projectile.getShooter() instanceof Player) {
        Player attacker = (Player) projectile.getShooter();
        if (!land.hasPermTo(attacker, this)) {
          attacker.sendMessage(
              ChatColor.RED
                  + getPlugin()
                      .getMessageConfig()
                      .getString("event.build.breakArmorStandWithArrow"));
          event.setCancelled(true);
        }
      }
    }
    // System.out.println(event.getDamager().getType());

  }
 public Image getImage(Arrow a) {
   if (a.getDirection() == GAUCHE) {
     return liste.get(a.getActualFrame() - 1);
   } else if (a.getDirection() == DROITE) {
     return liste.get(a.getActualFrame() + frames - 1);
   } else if (a.getDirection() == HAUT) {
     return liste.get(a.getActualFrame() + 2 * frames - 1);
   } else {
     return liste.get(a.getActualFrame() + 3 * frames - 1);
   }
 }
Beispiel #12
0
  public void actionPerformed(ActionEvent e) {

    if (enemies.isEmpty()) {
      newWave = true;

      waveNum++;
      incEnemies += 2;

      if (waveNum == 14) {
        ingame = false;
        gamewin = true;
      } // end if
      else initEnemies();
    } // end if

    ArrayList as = link.getArrows();

    for (int i = 0; i < as.size(); i++) {
      Arrow a = (Arrow) as.get(i);
      if (a.isVisible()) {
        a.move();
      } else {
        as.remove(i);
      }
    } // end for

    for (int i = 0; i < enemies.size(); i++) {
      Enemy en = (Enemy) enemies.get(i);
      if (en.isVisible()) {
        en.move();
      } else {
        enemies.remove(i);
      }
    } // end for

    link.move();
    checkCollisions();
    repaint();
  } // end actionPerformed
Beispiel #13
0
  private void updateArrows() {

    switch (TouchPadInput.getCurrent().swipeDirection) {
      case Up:
        aroowUp.animateArrowOn();
        break;
      case Backward:
        aroowLeft.animateArrowOn();
        break;
      case Down:
        aroowDown.animateArrowOn();
        break;
      case Forward:
        aroowRight.animateArrowOn();
        break;
      case Ignore:
        break;

      default:
        break;
    }
  }
Beispiel #14
0
  public void paintComponent(Graphics g) {
    clearScreen(g);
    drawGrid(g);
    drawElements(g);

    if (drawBondLine == true) {
      Bond.drawDrag(g, Color.MAGENTA, elist.getSelected(), currentX, currentY);
    }

    if (drawArrowLine == true) {
      Arrow.drawDrag(g, Color.BLUE, elist.getSelected(), currentX, currentY);
    }

    drawConnections(g);
  }
Beispiel #15
0
  /**
   * Forward equivalence search.
   *
   * @param graph The graph in the state prior to the forward equivalence search.
   */
  private void fes(Graph graph, List<Node> nodes) {
    TetradLogger.getInstance().log("info", "** FORWARD EQUIVALENCE SEARCH");

    lookupArrows = new HashMap<OrderedPair, Set<Arrow>>();

    initializeArrowsForward(nodes);

    while (!sortedArrows.isEmpty()) {
      Arrow arrow = sortedArrows.first();
      sortedArrows.remove(arrow);

      Node x = arrow.getX();
      Node y = arrow.getY();

      clearArrow(x, y);

      if (graph.isAdjacentTo(x, y)) {
        continue;
      }

      if (!validInsert(x, y, arrow.getHOrT(), arrow.getNaYX(), graph)) {
        continue;
      }

      List<Node> t = arrow.getHOrT();
      double bump = arrow.getBump();

      Set<Edge> edges = graph.getEdges();

      insert(x, y, t, graph, bump);
      score += bump;
      rebuildPattern(graph);

      // Try to avoid duplicating scoring calls. First clear out all of the edges that need to be
      // changed,
      // then change them, checking to see if they're already been changed. I know, roundabout, but
      // there's
      // a performance boost.
      for (Edge edge : graph.getEdges()) {
        if (!edges.contains(edge)) {
          reevaluateForward(graph, nodes, edge.getNode1(), edge.getNode2());
        }
      }

      storeGraph(graph);
    }
  }
Beispiel #16
0
  private void mouseDown(MouseEvent e) {
    if (game == null) return;
    if (game.getGameState() != GameState.IN_PROGRESS) return;
    if (e.button == 1) {
      // check for drag event
      if (beginDrag(e)) {
        redraw();
        return;
      }

      // update arrow on left mouse click
      int x = e.x;
      int y = e.y;
      boolean del = true;
      for (Iterator i = squareLocations.iterator(); i.hasNext(); ) {
        Square s = (Square) i.next();
        Rectangle r = s.r;
        if (r.contains(x, y)) {
          int n = s.x;
          int m = s.y;
          del = false;
          if (arrow == null || n != arrow.x || m != arrow.y) {
            arrow = new Arrow(n, m, Orientation.HORIZONTAL);
          } else {
            arrow.flip();
          }
          redraw();
        }
      }
      if (del) {
        getLocalTileRack().shuffle();
      }
      resetInput(del);
      redraw();
    } else {
      // stop drag
      doDrop(e);

      // clear typed characters on right mouse click
      resetInput(true);
      redraw();
    }
  }
Beispiel #17
0
 // Sorting is by bump, high to low.
 public int compareTo(Object o) {
   Arrow arrow = (Arrow) o;
   return Double.compare(arrow.getBump(), getBump());
 }
Beispiel #18
0
 public void setForce(Point dir) {
   arrow.setEnd(dir);
   force.setLocation(dir);
 }
  protected IPrimitive<?> createExpandCollapseButton() {
    final boolean isExpanded = presenter.isExpanded();
    final double w = getGrid().getIconSize();
    final double h = getGrid().getIconSize() / 1.5;
    final Rectangle rectangle =
        new Rectangle(w, h).setFillAlpha(0.01).setStrokeWidth(0).setStrokeAlpha(0);
    final Arrow expandArrow =
        new Arrow(
                new Point2D(0, h / 2),
                new Point2D(w, h / 2),
                h / 2,
                h,
                45,
                90,
                ArrowType.AT_END_TAPERED)
            .setFillColor(getArrowOutColor())
            .setFillAlpha(0.5)
            .setVisible(!isExpanded);
    final Arrow collapseArrow =
        new Arrow(
                new Point2D(w, h / 2),
                new Point2D(0, h / 2),
                h / 2,
                h,
                45,
                90,
                ArrowType.AT_END_TAPERED)
            .setFillColor(getArrowOutColor())
            .setFillAlpha(0.5)
            .setVisible(isExpanded);
    handlerRegistrationManager.register(
        rectangle.addNodeMouseClickHandler(
            nodeMouseClickEvent -> {
              if (presenter.isExpanded()) {
                expandArrow.setVisible(true);
                collapseArrow.setVisible(false);
                presenter.collapse();

              } else {
                expandArrow.setVisible(false);
                collapseArrow.setVisible(true);
                presenter.expand();
              }
            }));
    handlerRegistrationManager.register(
        rectangle.addNodeMouseEnterHandler(
            nodeMouseEnterEvent -> {
              stopHoverTimeoutPalette();
              if (presenter.isExpanded()) {
                animate(collapseArrow, getArrowHoverColor(), 1, 1);

              } else {
                animate(expandArrow, getArrowHoverColor(), 1, 1);
              }
            }));
    handlerRegistrationManager.register(
        rectangle.addNodeMouseExitHandler(
            nodeMouseExitEvent -> {
              startHoverTimeoutPalette();
              if (presenter.isExpanded()) {
                animate(collapseArrow, getArrowOutColor(), 0.5, 0.5);

              } else {
                animate(expandArrow, getArrowOutColor(), 0.5, 0.5);
              }
            }));
    return new Group().add(expandArrow).add(collapseArrow).add(rectangle.moveToTop());
  }
Beispiel #20
0
  public void paint(Graphics g) {
    super.paint(g);

    if (ingame) {

      Graphics2D g2d = (Graphics2D) g;

      if (link.isVisible()) {
        g2d.drawImage(link.getImage(), link.getX(), link.getY(), this);
      } // end inner if

      ArrayList as = link.getArrows();

      for (int i = 0; i < as.size(); i++) {
        Arrow a = (Arrow) as.get(i);
        g.setColor(new Color(96, 64, 32));
        g.fillRect(a.getX(), a.getY(), a.width, a.height);

        g.setColor(Color.GRAY);
        int[] xPoints = {a.getX() + a.width, a.getX() + a.width + 10, a.getX() + a.width};
        int[] yPoints = {a.getY() + a.height + 2, a.getY() + (a.height / 2), a.getY() - 2};
        g.fillPolygon(xPoints, yPoints, 3);
      } // end for

      for (int i = 0; i < enemies.size(); i++) {
        Enemy en = (Enemy) enemies.get(i);
        if (en.isVisible()) {
          g2d.drawImage(en.getImage(), en.getX(), en.getY(), this);
        } // end inner if
      } // end for

      g2d.setColor(Color.WHITE);
      g2d.drawString("Enemies left: " + enemies.size(), 5, 15);

      if (waveNum < 13) {
        g2d.setColor(Color.WHITE);
        g2d.drawString("Wave: " + waveNum, 5, 30);
      } else {
        g2d.setColor(Color.WHITE);
        g2d.drawString("Final Wave!", 5, 30);
      }

    } else if (gamewin) {
      String msg = "You Win!";
      Font small = new Font("Helvetica", Font.BOLD, 14);
      FontMetrics metr = this.getFontMetrics(small);

      g.setColor(Color.white);
      g.setFont(small);
      g.drawString(msg, (600 - metr.stringWidth(msg)) / 2, 600 / 2);
    } else {
      String msg = "Game Over";
      Font small = new Font("Helvetica", Font.BOLD, 14);
      FontMetrics metr = this.getFontMetrics(small);

      g.setColor(Color.white);
      g.setFont(small);
      g.drawString(msg, (600 - metr.stringWidth(msg)) / 2, 600 / 2);
    } // end outter if

    Toolkit.getDefaultToolkit().sync();
    g.dispose();
  } // end paint
Beispiel #21
0
 private void keyPressed(KeyEvent e) {
   if (game == null) return;
   if (game.getGameState() != GameState.IN_PROGRESS) return;
   char c = Character.toLowerCase(e.character);
   if (c >= 'a' && c <= 'z') {
     // type letters on the board
     if (arrow != null) {
       IBoard board = game.getBoard();
       if (arrow.x >= board.getWidth()) return;
       if (arrow.y >= board.getHeight()) return;
       Tile boardTile = game.getBoard().getTile(arrow.y, arrow.x);
       if (!boardTile.equals(Tile.NONE)) {
         if (c == boardTile.getLetter()) {
           arrow.advance();
           redraw();
         }
         return;
       }
       Tile tile = new Tile(c);
       boolean wild = false;
       if (!tileRack.contains(tile)) {
         tile = new Tile('?');
         if (!tileRack.contains(tile)) {
           return;
         }
         wild = true;
       }
       tileRack.remove(tile);
       tile = new Tile(c, wild);
       placedTiles.put(new Point(arrow.x, arrow.y), tile);
       arrow.advance();
     }
     updateMoveString();
     redraw();
   } else if (c == SWT.DEL || c == SWT.BS) {
     // backspace a typed character on the board
     if (placedTiles.size() > 0) {
       arrow.backup();
       Point point = new Point(arrow.x, arrow.y);
       Tile tile = placedTiles.get(point);
       if (tile != null) {
         if (tile.isWild()) tile = new Tile('?');
         tileRack.add(tile);
         placedTiles.remove(point);
       } else {
         arrow.advance();
       }
       updateMoveString();
       redraw();
     }
   } else if (c == '1') {
     // toggle coordinates
     showCoordinates = !showCoordinates;
     redraw();
   } else if (e.keyCode == SWT.ESC) {
     // clear typed characters
     resetInput(true);
     redraw();
   } else if (e.keyCode == SWT.CR || e.keyCode == SWT.KEYPAD_CR) {
     // submit move on enter key
     done.run();
   } else if (c == ' ') {
     getLocalTileRack().shuffle();
     resetInput(true);
     redraw();
   }
 }