コード例 #1
0
ファイル: MenuGrid.java プロジェクト: Sefaria/Sefaria-Android
 @Override
 public void onClick(View v) {
   v.setVisibility(View.GONE);
   for (MenuButton mb : overflowButtonList) {
     mb.setVisibility(View.VISIBLE);
   }
 }
コード例 #2
0
ファイル: MenuGrid.java プロジェクト: Sefaria/Sefaria-Android
  /**
   * @param mainNode
   * @param subNodes
   * @param limitGridSize
   * @param isFirst - true if this is the first section
   */
  public void addSubsection(
      MenuNode mainNode, List<BilingualNode> subNodes, boolean limitGridSize, boolean isFirst) {
    if (subNodes.size() == 0) return;

    if (mainNode != null) {
      Log.d("MenuGrid", "" + isFirst);
      MenuSubtitle ms = new MenuSubtitle(context, mainNode, menuState.getLang(), isFirst);
      menuElementList.add(ms);
      gridRoot.addView(ms);
    }

    int currNodeIndex = 0;

    for (int i = 0;
        i <= Math.ceil(subNodes.size() / numColumns) && currNodeIndex < subNodes.size();
        i++) {
      LinearLayout ll = addRow();
      for (int j = 0; j < numColumns && currNodeIndex < subNodes.size(); j++) {
        MenuButton mb = addElement((MenuNode) subNodes.get(currNodeIndex), mainNode, ll, j);
        if (currNodeIndex >= HOME_MENU_OVERFLOW_NUM - 1 && limitGridSize) {
          mb.setVisibility(View.GONE);
          overflowButtonList.add(mb);
        }
        currNodeIndex++;
      }
      // add 'more' button in the row which was overflowed
      if (Math.floor(HOME_MENU_OVERFLOW_NUM / numColumns) == i + 1 && limitGridSize)
        addMoreButton(ll);
    }
  }
コード例 #3
0
  @Override
  protected void layout() {

    height = 32;

    shield.size(width, shield.height);

    avatar.x = PixelScene.align(camera(), shield.x + 15 - avatar.width / 2);
    avatar.y = PixelScene.align(camera(), shield.y + 16 - avatar.height / 2);

    compass.x = avatar.x + avatar.width / 2 - compass.origin.x;
    compass.y = avatar.y + avatar.height / 2 - compass.origin.y;

    hp.x = 30;
    hp.y = 3;

    depth.x = width - 24 - depth.width() - 18;
    depth.y = 6;

    keys.y = 6;

    danger.setPos(width - danger.width(), 18);

    buffs.setPos(31, 9);

    btnMenu.setPos(width - btnMenu.width(), 1);
  }
コード例 #4
0
ファイル: MenuGrid.java プロジェクト: Sefaria/Sefaria-Android
  // adds the 'Other' button for home page
  private MenuButton addMoreButton(LinearLayout ll) {
    MenuNode moreNode = new MenuNode("More", "עוד", null);
    moreMenuButton = new MenuButton(context, moreNode, null, menuState.getLang());
    moreMenuButton.setIsMore(true);
    moreMenuButton.setOnClickListener(moreButtonClick);
    ll.addView(moreMenuButton);

    menuElementList.add(moreMenuButton);

    return moreMenuButton;
  }
コード例 #5
0
ファイル: MenuGrid.java プロジェクト: Sefaria/Sefaria-Android
  private MenuButton addElement(
      MenuNode menuNode, MenuNode sectionNode, LinearLayout ll, int childIndex) {

    ll.removeViewAt(childIndex);
    MenuButton mb = new MenuButton(context, menuNode, sectionNode, menuState.getLang());
    mb.setOnClickListener(menuButtonClick);
    mb.setOnLongClickListener(menuButtonLongClick);
    ll.addView(mb, childIndex);
    menuElementList.add(mb);

    return mb;
  }
コード例 #6
0
ファイル: MenuGrid.java プロジェクト: Sefaria/Sefaria-Android
  private boolean menuClick(View v, boolean longClick) {
    boolean goToTOC = longClick;
    longClick = false;
    MenuButton mb = (MenuButton) v;
    MenuState newMenuState = menuState.goForward(mb.getNode(), mb.getSectionNode());
    Intent intent;
    if (mb.isBook()) {
      Book book = null;
      try {
        if (!Settings.getUseAPI()
            && !Database.hasOfflineDB()) { // There's no DB //TODO make it work with API
          Settings.setUseAPI(true);
        }
        book = new Book(newMenuState.getCurrNode().getTitle(Util.Lang.EN));
        if (goToTOC) {
          intent = TOCActivity.getStartTOCActivityIntent(context, book, null);
          /// intent = new Intent(context, TOCActivity.class);
          // intent.putExtra("currBook", book);
          // intent.putExtra("lang", newMenuState.getLang());
          context.startActivity(intent);
          return true;
        } else {
          SuperTextActivity.startNewTextActivityIntent(context, book, longClick);
        }
      } catch (Book.BookNotFoundException e) {
        Toast.makeText(context, MyApp.getRString(R.string.sorry_book_not_found), Toast.LENGTH_SHORT)
            .show();
      }

    } else {
      intent = new Intent(context, MenuActivity.class);
      Bundle options = null;
      if (longClick) {
        intent = MyApp.startNewTab(intent);
        options =
            ActivityOptionsCompat.makeCustomAnimation(
                    context, R.animator.activity_zoom_in, R.animator.activity_zoom_out)
                .toBundle();
      }
      intent.putExtra("menuState", newMenuState);
      intent.putExtra("hasSectionBack", mb.getSectionNode() != null);
      intent.putExtra("hasTabBack", hasTabs);

      if (longClick) {
        ActivityCompat.startActivityForResult((Activity) context, intent, 0, options);
      } else {
        ((Activity) context).startActivityForResult(intent, 0);
      }
    }

    return false;
  }
コード例 #7
0
  public MainStageController(Controller controller) {
    this.controller = controller;
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MainStage.fxml"));
    fxmlLoader.setController(this);
    try {
      root = fxmlLoader.load();
    } catch (IOException e) {
      e.printStackTrace();
    }

    currentUserMenuButton.setText(controller.getCurrentUser().getName());
    collectAccountTable();
    accountsTable
        .getSelectionModel()
        .selectedItemProperty()
        .addListener(
            new ChangeListener<Account>() {
              @Override
              public void changed(
                  ObservableValue<? extends Account> observable,
                  Account oldValue,
                  Account newValue) {
                controller.setCurrentAccount(accountsTable.getSelectionModel().getSelectedItem());
                showRecords(controller.getCurrentAccount());
                showBalanceLabel();
              }
            });

    showRecords(controller.getCurrentAccount());
    showBalanceLabel();
  }
コード例 #8
0
 private void drawEnemyMessage(Graphics2D g2d) {
   Font messageFont = new Font("Arial", Font.BOLD, 15);
   g2d.setFont(messageFont);
   if (enemyMoveChosen) {
     String text = "";
     if (drawMoveApplication) {
       text = effectMessage;
     } else {
       text =
           enemy.getName()
               + " uses "
               + lastEnemyMove.getName()
               + " on "
               + MainCharacter.characterName
               + "!";
     }
     ArrayList<String> lines = new ArrayList<>();
     int width = (int) (messageFont.getStringBounds(text, g2d.getFontRenderContext()).getWidth());
     if (width > cardButton.getWidth() * 2 + 40) {
       String[] split = text.split("\\s+");
       int tempWidth = 0;
       int maxWidth = 0;
       String line = "";
       for (int i = 0; i < split.length; i++) {
         tempWidth +=
             (int)
                 (messageFont
                     .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                     .getWidth());
         if (tempWidth > cardButton.getWidth() * 2 + 40) {
           tempWidth =
               (int)
                   (messageFont
                       .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                       .getWidth());
           lines.add(line);
           line = split[i] + " ";
         } else {
           line = line + split[i] + " ";
         }
         if (tempWidth > maxWidth) {
           maxWidth = tempWidth;
         }
       }
       lines.add(line);
     } else {
       lines.add(text);
     }
     for (int i = 0; i < lines.size(); i++) {
       g2d.drawString(lines.get(i), cardButton.getX(), cardButton.getY() + 15 + 30 * i);
     }
   } else {
     g2d.drawString("The Enemy is deciding", cardButton.getX(), cardButton.getY() + 15);
     g2d.drawString("their move...", cardButton.getX(), cardButton.getY() + 15 + 30);
   }
 }
コード例 #9
0
 private void drawActionBox(Graphics2D g2d) {
   // Draw the MainCharacter and enemy images
   // Draw the buttons
   cardButton.draw(g2d);
   itemButton.draw(g2d);
   drawButton.draw(g2d);
   runButton.draw(g2d);
   if (turnState == 0) {
     actionScroller.draw(g2d);
   } else if (turnState == 1) {
     cardScroller.draw(g2d);
   } else if (turnState == 2) {
     itemMenu.draw(g2d);
   } else if (turnState == 3) {
     deckScroller.draw(g2d);
   }
 }
コード例 #10
0
  @Override
  protected void onRelease() {
    super.onRelease();

    // Toggle value
    _value = !_value;
    _text01 = _value ? _onText : _offText;
    onValueChange();
  }
コード例 #11
0
ファイル: MyDialog.java プロジェクト: MisterGorgeous/BMP-2
  public MyDialog() {
    super();
    // "\u041e\u0448\u0438\u0431\u043a\u0430\u002e", true);
    setSize(200, 100);
    setLocation(350, 260);
    setBackground(new Color(0.77254903f, 0.015686275f, 0.12941177f, 1f));
    setVisible(false); // <html><body text="red"><h3><i> </i></h3></body>
    label = new JTextPane();
    label.setSize(196, 70);
    label.setLocation(2, 2);
    label.setBackground(new Color(0.77254903f, 0.015686275f, 0.12941177f, 1f));
    label.setFont(new Font("Serif", Font.PLAIN, 16));
    text = new String("");

    MenuButton continuer =
        new MenuButton(
            "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c", 2, 75, 96, 20, 7f);
    continuer.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            setVisible(false);
          }
        });

    MenuButton more =
        new MenuButton(
            "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435", 102, 75, 96, 20, 7f);
    more.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            label.setText(text);
          }
        });
    setLayout(null);
    add(label);
    add(continuer);
    add(more);
  }
コード例 #12
0
ファイル: ButtonBar.java プロジェクト: vanwang/MyExpenses
 public MenuButton addButton(int text, int drawable, int id) {
   LayoutInflater inflater = LayoutInflater.from(getContext());
   MenuButton b = (MenuButton) inflater.inflate(R.layout.button, this, false);
   b.setBackgroundResourceKeepPadding(buttonBackgroundNormalId);
   b.setText(text);
   b.setId(id);
   if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
     b.setCompoundDrawablesWithIntrinsicBounds(drawable, 0, 0, 0);
   } else {
     b.setCompoundDrawablesWithIntrinsicBounds(0, drawable, 0, 0);
   }
   addView(b);
   b.setOnClickListener((MyExpenses) getContext());
   b.setOnLongClickListener((MyExpenses) getContext());
   return b;
 }
コード例 #13
0
ファイル: MenuGrid.java プロジェクト: Sefaria/Sefaria-Android
 public void closeMoreClick() {
   if (moreMenuButton != null) moreMenuButton.setVisibility(View.VISIBLE);
   for (MenuButton mb : overflowButtonList) {
     mb.setVisibility(View.GONE);
   }
 }
コード例 #14
0
 @Override
 public void draw(SpriteBatch spriteBatch) {
   setColor(_value ? Color.ORANGE : Color.WHITE);
   super.draw(spriteBatch);
 }
コード例 #15
0
 private void drawLossMessage(Graphics2D g2d) {
   Font messageFont = new Font("Arial", Font.BOLD, 30);
   g2d.setFont(messageFont);
   g2d.drawString("You have died...", cardButton.getX(), cardButton.getY() + 30);
 }
コード例 #16
0
  // Initialization of the Battle State
  public BattleState(Framework framework, BattleEnemy enemy) {
    windowWidth = framework.getWidth();
    windowHeight = framework.getHeight();
    this.enemy = enemy;
    turn = 0;
    turnState = 0;
    Font buttonFont = new Font("Arial", Font.BOLD, 15);
    int xButtonSpacing = 40;
    int yButtonSpacing = 35;
    cardButton =
        new MenuButton(
            "Cast Card",
            xButtonSpacing,
            3 * windowHeight / 4 + yButtonSpacing,
            buttonFont,
            (Graphics2D) framework.getGraphics(),
            5,
            5);
    itemButton =
        new MenuButton(
            "Use Item",
            xButtonSpacing,
            cardButton.getY() + cardButton.getHeight() + yButtonSpacing,
            buttonFont,
            (Graphics2D) framework.getGraphics(),
            5,
            5);
    drawButton =
        new MenuButton(
            "Draw Card",
            cardButton.getX() + cardButton.getWidth() + xButtonSpacing,
            cardButton.getY(),
            buttonFont,
            (Graphics2D) framework.getGraphics(),
            5,
            5);
    runButton =
        new MenuButton(
            "Run",
            cardButton.getX() + cardButton.getWidth() + xButtonSpacing,
            cardButton.getY() + cardButton.getHeight() + yButtonSpacing,
            buttonFont,
            (Graphics2D) framework.getGraphics(),
            5,
            5);
    buttonWidth = drawButton.getWidth();
    int buttonHeight = drawButton.getHeight();
    cardButton.setWidth(buttonWidth);
    itemButton.setWidth(buttonWidth);
    runButton.setWidth(buttonWidth);
    drawButton.setPosition(
        cardButton.getX() + cardButton.getWidth() + xButtonSpacing, drawButton.getY());
    runButton.setPosition(
        cardButton.getX() + cardButton.getWidth() + xButtonSpacing, runButton.getY());
    int scrollerBuffer = 5;
    BufferedImage scrollerImage = null;
    // Load the Scroller Image
    try {
      scrollerImage =
          ImageIO.read(this.getClass().getResource("/resources/images/pointerFinger.png"));
    } catch (IOException ex) {
      Logger.getLogger(Framework.class.getName()).log(Level.SEVERE, null, ex);
    }
    actionScroller =
        new MenuScroller2D(
            scrollerImage,
            cardButton.getX() - scrollerBuffer,
            cardButton.getY(),
            buttonWidth + xButtonSpacing,
            buttonHeight + yButtonSpacing,
            2,
            2,
            4,
            1,
            1);
    actionScroller.setWidth(cardButton.getHeight());
    actionScroller.setHeight(cardButton.getHeight());
    actionScroller.setPosition(
        cardButton.getX() - actionScroller.getWidth() - scrollerBuffer, cardButton.getY());
    enemyImage = enemy.getBattleImage();
    mainCharacterImage = StartGameState.character.getBattleImage();
    SoundManager.add(
        "BattleMusic",
        new Sound(this.getClass().getResource("/resources/sounds/Woodland_Fantasy_0.wav"), 0));
    hand = new IndexedLinkedHashMap<>();
    deckCount = 0;
    if (MainCharacter.maxHand <= MainCharacter.deck.size()) {
      for (int i = 0; i < MainCharacter.maxHand; i++) {
        hand.put(i, MainCharacter.deck.get(i));
        deckCount++;
      }
    } else {
      for (int i = 0; i < MainCharacter.deck.size(); i++) {
        hand.put(i, MainCharacter.deck.get(i));
        deckCount++;
      }
    }
    try {
      cardBack =
          ImageIO.read(
              this.getClass()
                  .getResource("/resources/images/Cards/40X56 Card Frames Revised/Card_Back.png"));
    } catch (IOException ex) {
      Logger.getLogger(Framework.class.getName()).log(Level.SEVERE, null, ex);
    }
    int x = drawButton.getX() + drawButton.getWidth() + 40;
    cardWidth = 3 * windowWidth / 4 - 2 * 15 - cardBack.getWidth() - x;
    int cardSpacing = cardWidth / hand.size();
    cardScroller =
        new MenuScroller2D(
            scrollerImage,
            drawButton.getX() + drawButton.getWidth() + 10,
            drawButton.getY() + hand.getIndexed(0).getHeight() / 2 - 10,
            cardSpacing,
            0,
            deckCount,
            1,
            deckCount,
            1,
            1);
    cardScroller.setWidth(actionScroller.getWidth());
    cardScroller.setHeight(actionScroller.getHeight());
    deckScroller =
        new MenuScroller2D(
            scrollerImage,
            3 * windowWidth / 4 - 15 - cardBack.getWidth() - 10 - actionScroller.getWidth(),
            drawButton.getY() + hand.getIndexed(0).getHeight() / 2 - 10,
            0,
            0,
            1,
            1,
            1,
            1,
            1);

    deckScroller.setWidth(actionScroller.getWidth());
    deckScroller.setHeight(actionScroller.getHeight());
    shouldWait = false;
    drawNoMana = false;
    drawNoCards = false;
    drawItemUsed = false;
    drawParalyzed = false;
    enemyMoveChosen = false;
    itemMenu = new ItemsMenu(framework);
  }
コード例 #17
0
 @Override
 public void draw(Graphics2D g2d) {
   // After updating we will draw all the objects to the screen
   g2d.setColor(Color.WHITE);
   g2d.fillRect(0, 0, windowWidth, windowHeight);
   g2d.setColor(Color.BLACK);
   Font font = new Font("Arial", Font.BOLD, 30);
   g2d.setFont(font);
   int textWidth =
       (int)
           (font.getStringBounds("You Are Now In Battle State", g2d.getFontRenderContext())
               .getWidth());
   g2d.drawString(
       "You Are Now In Battle State", windowWidth / 2 - textWidth / 2, windowHeight / 2);
   // Draw the battle images of the enemy and MainCharacter
   g2d.drawImage(
       mainCharacterImage,
       60,
       3 * windowHeight / 4 - 2 * 60,
       mainCharacterImage.getWidth() * 2,
       mainCharacterImage.getHeight() * 2,
       null);
   g2d.drawImage(
       enemyImage,
       windowWidth - 60 - enemyImage.getWidth(),
       60,
       enemyImage.getWidth(),
       enemyImage.getHeight(),
       null);
   // Draw an action box at the bottom where we decide our actions on each turn
   g2d.setColor(Color.CYAN);
   g2d.fillRect(0, 3 * windowHeight / 4, windowWidth, windowHeight / 4 + 2);
   // Draw the hp and mp bars of the MainCharacter and the Enemy
   g2d.setColor(Color.BLACK);
   g2d.drawRect(0, 3 * windowHeight / 4, windowWidth, windowHeight / 4 + 2);
   Font hpFont = new Font("Arial", Font.BOLD, 15);
   g2d.setFont(hpFont);
   String text =
       "Health: "
           + String.valueOf(StartGameState.character.health)
           + "/"
           + String.valueOf(StartGameState.character.maxHealth);
   textWidth = (int) (hpFont.getStringBounds(text, g2d.getFontRenderContext()).getWidth());
   g2d.drawString(
       text, 60 + mainCharacterImage.getWidth() * 2 + 45, 3 * windowHeight / 4 - 30 - 15 - 20);
   text =
       "Mana:  "
           + String.valueOf(StartGameState.character.mana)
           + "/"
           + String.valueOf(StartGameState.character.maxMana);
   g2d.drawString(text, 60 + mainCharacterImage.getWidth() * 2 + 45, 3 * windowHeight / 4 - 30);
   text = MainCharacter.characterName;
   g2d.drawString(
       text,
       60 + mainCharacterImage.getWidth() * 2 + 45,
       3 * windowHeight / 4 - 30 - 2 * 15 - 2 * 20);
   g2d.setColor(Color.GRAY);
   g2d.fillRoundRect(
       60 + mainCharacterImage.getWidth() * 2 + 45 + textWidth + 20,
       3 * windowHeight / 4 - 45 - 15 - 20,
       100,
       15,
       3,
       3);
   g2d.fillRoundRect(
       60 + mainCharacterImage.getWidth() * 2 + 45 + textWidth + 20,
       3 * windowHeight / 4 - 45,
       100,
       15,
       3,
       3);
   g2d.setColor(Color.GREEN);
   g2d.fillRoundRect(
       60 + mainCharacterImage.getWidth() * 2 + 45 + textWidth + 20,
       3 * windowHeight / 4 - 45 - 15 - 20,
       (int)
           (((float) StartGameState.character.health / (float) StartGameState.character.maxHealth)
               * 100),
       15,
       3,
       3);
   g2d.setColor(Color.BLUE);
   g2d.fillRoundRect(
       60 + mainCharacterImage.getWidth() * 2 + 45 + textWidth + 20,
       3 * windowHeight / 4 - 45,
       (int)
           (((float) StartGameState.character.mana / (float) StartGameState.character.maxMana)
               * 100),
       15,
       3,
       3);
   g2d.setColor(Color.BLACK);
   g2d.drawRoundRect(
       60 + mainCharacterImage.getWidth() * 2 + 45 + textWidth + 20,
       3 * windowHeight / 4 - 45 - 15 - 20,
       100,
       15,
       3,
       3);
   g2d.drawRoundRect(
       60 + mainCharacterImage.getWidth() * 2 + 45 + textWidth + 20,
       3 * windowHeight / 4 - 45,
       100,
       15,
       3,
       3);
   // Enemy health and mana bars
   text = "Health: " + String.valueOf(enemy.health) + "/" + String.valueOf(enemy.maxHealth);
   textWidth = (int) (hpFont.getStringBounds(text, g2d.getFontRenderContext()).getWidth());
   g2d.drawString(
       text, windowWidth - 60 - enemyImage.getWidth() - 45 - 100 - 20 - textWidth, 60 + 15);
   text = "Mana:  " + String.valueOf(enemy.mana) + "/" + String.valueOf(enemy.maxMana);
   g2d.drawString(
       text,
       windowWidth - 60 - enemyImage.getWidth() - 45 - 100 - 20 - textWidth,
       60 + 2 * 15 + 20);
   text = enemy.getName();
   g2d.drawString(
       text, windowWidth - 60 - enemyImage.getWidth() - 45 - 100 - 20 - textWidth, 60 - 20);
   g2d.setColor(Color.GRAY);
   g2d.fillRoundRect(windowWidth - 60 - enemyImage.getWidth() - 45 - 100, 60, 100, 15, 3, 3);
   g2d.fillRoundRect(
       windowWidth - 60 - enemyImage.getWidth() - 45 - 100, 60 + 15 + 20, 100, 15, 3, 3);
   g2d.setColor(Color.GREEN);
   g2d.fillRoundRect(
       windowWidth - 60 - enemyImage.getWidth() - 45 - 100,
       60,
       (int) (((float) enemy.health / (float) enemy.maxHealth) * 100),
       15,
       3,
       3);
   g2d.setColor(Color.BLUE);
   g2d.fillRoundRect(
       windowWidth - 60 - enemyImage.getWidth() - 45 - 100,
       60 + 15 + 20,
       (int) (((float) enemy.mana / (float) enemy.maxMana) * 100),
       15,
       3,
       3);
   g2d.setColor(Color.BLACK);
   g2d.drawRoundRect(windowWidth - 60 - enemyImage.getWidth() - 45 - 100, 60, 100, 15, 3, 3);
   g2d.drawRoundRect(
       windowWidth - 60 - enemyImage.getWidth() - 45 - 100, 60 + 15 + 20, 100, 15, 3, 3);
   // Draw the player's hand and the current card
   int x = drawButton.getX() + drawButton.getWidth() + 40;
   int y = drawButton.getY() + 10;
   int i = 0;
   if (deckCount < MainCharacter.deck.size()) {
     g2d.drawImage(cardBack, 3 * windowWidth / 4 - 15 - cardBack.getWidth(), y, null);
   }
   if (hand.size() > 0) {
     int cardSpacing = cardWidth / hand.size();
     for (Card card : hand.values()) {
       if (i != cardScroller.getCountX() - 1) {
         card.draw(g2d, x + i * (cardSpacing), y, 0, 0);
       }
       i++;
     }
     Card current = hand.getIndexed(cardScroller.getCountX() - 1);
     current.draw(g2d, x + (cardScroller.getCountX() - 1) * (cardSpacing), y - 20, 0, 0);
     // If it is MainCharacter turn then we draw the actions in the action box
     g2d.setFont(new Font("Arial", Font.BOLD, 20));
     g2d.setColor(Color.BLACK);
     int explanationWidth = windowWidth / 4 - 25;
     g2d.drawString(current.getName(), 3 * windowWidth / 4 + 15, cardButton.getY());
     Font explanationFont = new Font("Arial", Font.BOLD, 10);
     g2d.setFont(explanationFont);
     ArrayList<String> lines = new ArrayList<>();
     // Determines width and height of only the text
     String dialog = current.getExplanation();
     int width =
         (int) (explanationFont.getStringBounds(dialog, g2d.getFontRenderContext()).getWidth());
     if (width > explanationWidth) {
       String[] split = dialog.split("\\s+");
       int tempWidth = 0;
       int maxWidth = 0;
       String line = "";
       for (i = 0; i < split.length; i++) {
         tempWidth +=
             (int)
                 (explanationFont
                     .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                     .getWidth());
         if (tempWidth > explanationWidth) {
           tempWidth =
               (int)
                   (explanationFont
                       .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                       .getWidth());
           lines.add(line);
           line = split[i] + " ";
         } else {
           line = line + split[i] + " ";
         }
         if (tempWidth > maxWidth) {
           maxWidth = tempWidth;
         }
       }
       lines.add(line);
     } else {
       lines.add(dialog);
     }
     for (i = 0; i < lines.size(); i++) {
       g2d.drawString(
           lines.get(i), 3 * windowWidth / 4 + 15, cardButton.getY() + (i + 1) * (10 + 4));
     }
     g2d.setFont(hpFont);
     String[] effects = current.getEffectStrings();
     for (i = 0; i < effects.length; i++) {
       g2d.drawString(
           effects[i],
           3 * windowWidth / 4 + 15,
           cardButton.getY() + (lines.size()) * (10 + 4) + (i + 1) * (5 + 15));
     }
     g2d.drawString(
         "Mana Cost: " + String.valueOf(current.getManaCost()),
         3 * windowWidth / 4 + 15,
         cardButton.getY() + (lines.size()) * (10 + 4) + (i + 1) * (15 + 5));
   }
   if (drawNoMana) {
     g2d.setFont(new Font("Arial", Font.BOLD, 15));
     g2d.drawString("You don't have", cardButton.getX(), cardButton.getY() + 15);
     g2d.drawString("enough mana!", cardButton.getX(), cardButton.getY() + 2 * 15 + 10);
   } else if (drawNoCards) {
     g2d.setFont(new Font("Arial", Font.BOLD, 15));
     g2d.drawString("You are out of", cardButton.getX(), cardButton.getY() + 15);
     g2d.drawString("cards to draw!", cardButton.getX(), cardButton.getY() + 2 * 15 + 10);
   } else if (drawItemUsed) {
     g2d.setFont(new Font("Arial", Font.BOLD, 15));
     g2d.drawString("You have used", cardButton.getX(), cardButton.getY() + 15);
     g2d.drawString(
         itemMenu.getLastItem().name + "!", cardButton.getX(), cardButton.getY() + 2 * 15 + 10);
   } else if (turn == 0 && drawParalyzed) {
     g2d.setFont(new Font("Arial", Font.BOLD, 15));
     g2d.drawString("You cannot move,", cardButton.getX(), cardButton.getY() + 15);
     g2d.drawString("you're paralyzed!", cardButton.getX(), cardButton.getY() + 2 * 15 + 10);
   } else if (turn == 1 && drawParalyzed) {
     Font messageFont = new Font("Arial", Font.BOLD, 15);
     g2d.setFont(messageFont);
     text = enemy.getName() + " cannot move, they're paralyzed!";
     ArrayList<String> lines = new ArrayList<>();
     int width = (int) (messageFont.getStringBounds(text, g2d.getFontRenderContext()).getWidth());
     if (width > cardButton.getWidth() * 2 + 40) {
       String[] split = text.split("\\s+");
       int tempWidth = 0;
       int maxWidth = 0;
       String line = "";
       for (i = 0; i < split.length; i++) {
         tempWidth +=
             (int)
                 (messageFont
                     .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                     .getWidth());
         if (tempWidth > cardButton.getWidth() * 2 + 40) {
           tempWidth =
               (int)
                   (messageFont
                       .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                       .getWidth());
           lines.add(line);
           line = split[i] + " ";
         } else {
           line = line + split[i] + " ";
         }
         if (tempWidth > maxWidth) {
           maxWidth = tempWidth;
         }
       }
       lines.add(line);
     } else {
       lines.add(text);
     }
     for (i = 0; i < lines.size(); i++) {
       g2d.drawString(lines.get(i), cardButton.getX(), cardButton.getY() + 15 + 30 * i);
     }
   } else if (turn == 0 && turnState == 4) {
     g2d.setFont(new Font("Arial", Font.BOLD, 15));
     g2d.drawString("You try to", cardButton.getX(), cardButton.getY() + 15);
     g2d.drawString("run away...", cardButton.getX(), cardButton.getY() + 2 * 15 + 10);
   } else if (turn == 0 && turnState == 5) {
     Font messageFont = new Font("Arial", Font.BOLD, 15);
     g2d.setFont(messageFont);
     if (drawMoveApplication) {
       text = effectMessage;
     } else {
       text = "You have used " + playedCard.getName() + " on " + enemy.getName() + "!";
     }
     ArrayList<String> lines = new ArrayList<>();
     int width = (int) (messageFont.getStringBounds(text, g2d.getFontRenderContext()).getWidth());
     if (width > cardButton.getWidth() * 2 + 40) {
       String[] split = text.split("\\s+");
       int tempWidth = 0;
       int maxWidth = 0;
       String line = "";
       for (i = 0; i < split.length; i++) {
         tempWidth +=
             (int)
                 (messageFont
                     .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                     .getWidth());
         if (tempWidth > cardButton.getWidth() * 2 + 40) {
           tempWidth =
               (int)
                   (messageFont
                       .getStringBounds(split[i] + "_", g2d.getFontRenderContext())
                       .getWidth());
           lines.add(line);
           line = split[i] + " ";
         } else {
           line = line + split[i] + " ";
         }
         if (tempWidth > maxWidth) {
           maxWidth = tempWidth;
         }
       }
       lines.add(line);
     } else {
       lines.add(text);
     }
     for (i = 0; i < lines.size(); i++) {
       g2d.drawString(lines.get(i), cardButton.getX(), cardButton.getY() + 15 + 30 * i);
     }
   } else if (turn == 0) {
     drawActionBox(g2d);
   } else if (turn == 1) {
     drawEnemyMessage(g2d);
   } else if (turn == 2) {
     drawVictoryMessage(g2d);
   } else if (turn == 3) {
     drawLossMessage(g2d);
   }
 }
コード例 #18
0
 private void drawVictoryMessage(Graphics2D g2d) {
   Font messageFont = new Font("Arial", Font.BOLD, 30);
   g2d.setFont(messageFont);
   g2d.drawString("VICTORY!!!", cardButton.getX(), cardButton.getY() + 30);
 }