Changeset 8edd04e in lost-haven for gamegui/Menu.java


Ignore:
Timestamp:
Jun 7, 2020, 3:04:32 PM (5 years ago)
Author:
Dmitry Portnoy <dmitry.portnoy@…>
Branches:
master
Children:
a49176d
Parents:
155577b
Message:

Make the decompiled game code compile successfully

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gamegui/Menu.java

    r155577b r8edd04e  
    11package gamegui;
    22
    3 import java.awt.*;
    4 import java.awt.event.*;
    5 import java.util.*;
     3import java.awt.Color;
     4import java.awt.Font;
     5import java.awt.FontMetrics;
     6import java.awt.Graphics;
     7import java.awt.event.MouseEvent;
     8import java.util.ArrayList;
    69
    710public class Menu extends Member {
    8         private ArrayList<String> items;
    9         private int selectedIndex;
    10         private String label;
    11         private Font font;
    12         private boolean open;   //determines if the menu is pulled down
    13         private FontMetrics metrics;
    14        
    15         public Menu(String newName, int newX, int newY, int newWidth, int newHeight, String newLabel, Font newFont) {
    16                 super(newName, newX, newY, newWidth, newHeight);
    17                
    18                 items = new ArrayList<String>();
    19                 selectedIndex = -1;
    20                 label = newLabel;
    21                 font = newFont;
    22                 open = false;
    23         }
    24        
    25         public boolean handleEvent(MouseEvent e) {
    26                 if(getX()+metrics.stringWidth(label)+4 <= e.getX() && e.getX() <= getX()+getWidth() && getY()+getHeight() <= e.getY() && e.getY() <= getY()+getHeight()+15*items.size() && open) {
    27                         selectedIndex = (e.getY()-getY()-getHeight())/15;
    28                         open = false;
    29                         return true;
    30                 }
    31                
    32                 if(getX()+getWidth()-getHeight() <= e.getX() && e.getX() <= getX()+getWidth() && getY() <= e.getY() && e.getY() <= getY()+getHeight()) {
    33                         open = !open;
    34                         return true;
    35                 }
    36        
    37                 return false;
    38         }
    39        
    40         public void clear() {
    41                 if(selectedIndex != -1)
    42                         selectedIndex = 0;
    43         }
    44        
    45         public void draw(Graphics g)
    46         {
    47                 metrics = g.getFontMetrics(font);
    48                
    49                 g.setColor(Color.black);
    50         g.fillRect(getX(), getY(), getWidth(), getHeight());
    51        
    52         g.setColor(Color.red);
    53                 g.drawRect(getX(), getY(), getWidth(), getHeight());
    54                
    55                 g.drawLine(getX()+metrics.stringWidth(label)+4, getY(), getX()+metrics.stringWidth(label)+4, getY()+getHeight());
    56                 g.drawLine(getX()+getWidth()-getHeight(), getY(), getX()+getWidth()-getHeight(), getY()+getHeight());
    57        
    58                 g.drawLine(getX()+getWidth()-getHeight()*17/20, getY()+getHeight()*3/20, getX()+getWidth()-getHeight()*3/20, getY()+getHeight()*3/20);
    59                 g.drawLine(getX()+getWidth()-getHeight()*17/20, getY()+getHeight()*3/20, getX()+getWidth()-getHeight()/2, getY()+getHeight()*17/20);
    60                 g.drawLine(getX()+getWidth()-getHeight()/2, getY()+getHeight()*17/20, getX()+getWidth()-getHeight()*3/20, getY()+getHeight()*3/20);
    61                
    62                 g.setColor(Color.green);
    63                 g.setFont(font);
    64                 g.drawString(label, getX()+2, getY()+(getHeight()+metrics.getHeight())/2-2);
    65                 g.drawString(items.get(selectedIndex), getX()+metrics.stringWidth(label)+8, getY()+(getHeight()+metrics.getHeight())/2-2);
    66                
    67                 if(open) {
    68                         g.setColor(Color.black);
    69                 g.fillRect(getX()+metrics.stringWidth(label)+4, getY()+getHeight(), getWidth()-metrics.stringWidth(label)-4, items.size()*15);
    70                
    71                 g.setColor(Color.red);
    72                         g.drawRect(getX()+metrics.stringWidth(label)+4, getY()+getHeight(), getWidth()-metrics.stringWidth(label)-4, items.size()*15);
    73                
    74                 if(selectedIndex != -1) {
    75                                 g.setColor(Color.blue);
    76                         g.fillRect(getX()+metrics.stringWidth(label)+5, getY()+getHeight()+1+15*selectedIndex, getWidth()-metrics.stringWidth(label)-5, 14);
    77                         }
    78                        
    79                 g.setColor(Color.green);
    80                         for(int x=0; x<items.size(); x++)
    81                                 g.drawString(items.get(x), getX()+metrics.stringWidth(label)+8, getY()+(getHeight()+metrics.getHeight())/2+15*(x+1));
    82                 }
    83         }
    84        
    85         public void add(String newString) {
    86                 selectedIndex = 0;
    87                 items.add(newString);
    88         }
    89        
    90         public String getSelected() {
    91                 return items.get(selectedIndex);
    92         }
     11
     12  private ArrayList<String> items;
     13  private int selectedIndex;
     14  private String label;
     15  private Font font;
     16  private boolean open;
     17  private FontMetrics metrics;
     18
     19  public Menu(String newName, int newX, int newY, int newWidth, int newHeight, String newLabel, Font newFont) {
     20    super(newName, newX, newY, newWidth, newHeight);
     21    this.items = new ArrayList<String>();
     22    this.selectedIndex = -1;
     23    this.label = newLabel;
     24    this.font = newFont;
     25    this.open = false;
     26  }
     27
     28  public boolean handleEvent(MouseEvent e) {
     29    if (getX() + this.metrics.stringWidth(this.label) + 4 <= e.getX() && e.getX() <= getX() + getWidth() && getY() + getHeight() <= e.getY() && e.getY() <= getY() + getHeight() + 15 * this.items.size() && this.open) {
     30      this.selectedIndex = (e.getY() - getY() - getHeight()) / 15;
     31      this.open = false;
     32      return true;
     33    }
     34    if (getX() + getWidth() - getHeight() <= e.getX() && e.getX() <= getX() + getWidth() && getY() <= e.getY() && e.getY() <= getY() + getHeight()) {
     35      this.open = !this.open;
     36      return true;
     37    }
     38    return false;
     39  }
     40
     41  public void clear() {
     42    if (this.selectedIndex != -1)
     43      this.selectedIndex = 0;
     44  }
     45
     46  public void draw(Graphics g) {
     47    this.metrics = g.getFontMetrics(this.font);
     48    g.setColor(Color.black);
     49    g.fillRect(getX(), getY(), getWidth(), getHeight());
     50    g.setColor(Color.red);
     51    g.drawRect(getX(), getY(), getWidth(), getHeight());
     52    g.drawLine(getX() + this.metrics.stringWidth(this.label) + 4, getY(), getX() + this.metrics.stringWidth(this.label) + 4, getY() + getHeight());
     53    g.drawLine(getX() + getWidth() - getHeight(), getY(), getX() + getWidth() - getHeight(), getY() + getHeight());
     54    g.drawLine(getX() + getWidth() - getHeight() * 17 / 20, getY() + getHeight() * 3 / 20, getX() + getWidth() - getHeight() * 3 / 20, getY() + getHeight() * 3 / 20);
     55    g.drawLine(getX() + getWidth() - getHeight() * 17 / 20, getY() + getHeight() * 3 / 20, getX() + getWidth() - getHeight() / 2, getY() + getHeight() * 17 / 20);
     56    g.drawLine(getX() + getWidth() - getHeight() / 2, getY() + getHeight() * 17 / 20, getX() + getWidth() - getHeight() * 3 / 20, getY() + getHeight() * 3 / 20);
     57    g.setColor(Color.green);
     58    g.setFont(this.font);
     59    g.drawString(this.label, getX() + 2, getY() + (getHeight() + this.metrics.getHeight()) / 2 - 2);
     60    g.drawString(this.items.get(this.selectedIndex), getX() + this.metrics.stringWidth(this.label) + 8, getY() + (getHeight() + this.metrics.getHeight()) / 2 - 2);
     61    if (this.open) {
     62      g.setColor(Color.black);
     63      g.fillRect(getX() + this.metrics.stringWidth(this.label) + 4, getY() + getHeight(), getWidth() - this.metrics.stringWidth(this.label) - 4, this.items.size() * 15);
     64      g.setColor(Color.red);
     65      g.drawRect(getX() + this.metrics.stringWidth(this.label) + 4, getY() + getHeight(), getWidth() - this.metrics.stringWidth(this.label) - 4, this.items.size() * 15);
     66      if (this.selectedIndex != -1) {
     67        g.setColor(Color.blue);
     68        g.fillRect(getX() + this.metrics.stringWidth(this.label) + 5, getY() + getHeight() + 1 + 15 * this.selectedIndex, getWidth() - this.metrics.stringWidth(this.label) - 5, 14);
     69      }
     70      g.setColor(Color.green);
     71      for (int x = 0; x < this.items.size(); x++)
     72        g.drawString(this.items.get(x), getX() + this.metrics.stringWidth(this.label) + 8, getY() + (getHeight() + this.metrics.getHeight()) / 2 + 15 * (x + 1));
     73    }
     74  }
     75
     76  public void add(String newString) {
     77    this.selectedIndex = 0;
     78    this.items.add(newString);
     79  }
     80
     81  public String getSelected() {
     82    return this.items.get(this.selectedIndex);
     83  }
    9384}
Note: See TracChangeset for help on using the changeset viewer.