diff options
author | Nao Pross <naopross@thearcway.org> | 2018-11-19 10:27:15 +0100 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2018-11-19 10:27:15 +0100 |
commit | 7a7007571699eb57bc96cef4cd053a5bd50468b3 (patch) | |
tree | 14b879b399417a59a340c6fda9daf4719a3dbebf /src/Battle.java | |
parent | Add Actor.SkillSet, remove useless members in various strucutres (diff) | |
download | Subconscious-java-7a7007571699eb57bc96cef4cd053a5bd50468b3.tar.gz Subconscious-java-7a7007571699eb57bc96cef4cd053a5bd50468b3.zip |
Update Scene class (and some derivates) to be abstract
Diffstat (limited to 'src/Battle.java')
-rw-r--r-- | src/Battle.java | 324 |
1 files changed, 0 insertions, 324 deletions
diff --git a/src/Battle.java b/src/Battle.java deleted file mode 100644 index cde2734..0000000 --- a/src/Battle.java +++ /dev/null @@ -1,324 +0,0 @@ -import java.util.ArrayList; -import java.util.Collections; - -import java.awt.Canvas; -import java.awt.Graphics2D; -import java.awt.Dimension; -import java.awt.BorderLayout; -import java.awt.GridLayout; - -import java.awt.event.KeyEvent; -import java.awt.event.MouseEvent; -import java.awt.event.MouseWheelEvent; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import java.awt.image.BufferStrategy; - -import java.awt.geom.Point2D; -import java.awt.geom.NoninvertibleTransformException; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.JButton; - -// TODO: rename to BattleScene -public class Battle extends MapScene { - - private enum Mode { - NONE, ATTACK, MOVE - }; - - // TODO: make sub observe this object to remove this reference - private Sub main; - // TODO: refractor, make Points() - private int previousX = -1; - private int previousY = -1; - // TODO: what the fuck is the difference between these two? - private Actor selectedActor; - private Actor lastActor; - - private Mode mode; - - private boolean actorClicked = false; - - // TODO: these are the coordinates of the mouse => refractor names - private int realX = 0; - private int realY = 0; - - public Battle(JFrame frame, Sub sub) { - super(frame, sub); - this.main = sub; - - MapLoader mapLoader = new MapLoader("../testmap.json"); - this.map = mapLoader.getMap(); - - this.selectedActor = this.map.getNextActor(); - - this.setLayout(new BorderLayout()); - - // TODO: make a method buildUi() ? - JPanel bottomPanel = new JPanel(); - bottomPanel.setLayout(new GridLayout(1,4)); - - JButton moveButton = new JButton("Move"); - moveButton.setActionCommand("move"); - JButton attackButton = new JButton("Attack"); - attackButton.setActionCommand("attack"); - JButton nextButton = new JButton("Next"); - nextButton.setActionCommand("next"); - JButton passButton = new JButton("Pass"); - passButton.setActionCommand("pass"); - - moveButton.addActionListener(this); - attackButton.addActionListener(this); - nextButton.addActionListener(this); - passButton.addActionListener(this); - - bottomPanel.add(moveButton); - bottomPanel.add(attackButton); - bottomPanel.add(nextButton); - bottomPanel.add(passButton); - - this.add(bottomPanel, BorderLayout.PAGE_END); - this.add(this.canvas, BorderLayout.CENTER); - } - - @Override - protected void absoluteRender(Graphics2D g) { - //draw cursor - //g.setColor(Palette.BLUE); - //g.fillOval(this.realX-10*this.guiSize, this.realY-10*this.guiSize, 20*this.guiSize, 20*this.guiSize); - //g.setColor(Palette.ORANGE); - //g.drawOval(this.realX-10*this.guiSize, this.realY-10*this.guiSize, 20*this.guiSize, 20*this.guiSize); - - //draw panels - g.setColor(Palette.WHITE_T); - g.fillRect(this.WIDTH-100*this.guiSize, this.HEIGHT-100*this.guiSize, - 100*this.guiSize, 100*this.guiSize); - g.fillRect(0, this.HEIGHT-100*this.guiSize, 150*this.guiSize, 100*this.guiSize); - - g.setColor(Palette.BLACK); - g.setFont(g.getFont().deriveFont(12.0F*this.guiSize)); - Tile tile = null; - try{ - tile = this.map.getTile(this.previousX, this.previousY); - switch (tile.getType()) { - case CLEAR: - break; - case GRASS: - g.drawString("Grass", this.WIDTH-90*this.guiSize, this.HEIGHT-80*this.guiSize); - break; - case WATER: - g.drawString("Water", this.WIDTH-90*this.guiSize, this.HEIGHT-80*this.guiSize); - break; - case MOUNTAIN: - g.drawString("Mountain", this.WIDTH-90*this.guiSize, this.HEIGHT-80*this.guiSize); - break; - } - - g.setFont(g.getFont().deriveFont(8.0F*this.guiSize)); - if (this.actorClicked && this.lastActor != null) { - g.setColor(Palette.WHITE_T); - g.fillRect(0, 0, 100*this.guiSize, 150*this.guiSize); - g.fillRect(this.WIDTH-100*this.guiSize, 0, 100*this.guiSize, 100*this.guiSize); - - g.setColor(Palette.BLACK); - g.drawString(this.lastActor.getName(), 5*this.guiSize, 15*this.guiSize); - - g.drawString("HP", 5*this.guiSize, 30*this.guiSize); - g.setColor(Palette.RED); - g.fillRect(20*this.guiSize, 22*this.guiSize, 70*this.guiSize, 10*this.guiSize); - g.setColor(Palette.DARKGREEN); - g.fillRect(20*this.guiSize, 22*this.guiSize, 70*this.guiSize*this.lastActor.getHP()/10, 10*this.guiSize); - - g.setColor(Palette.BLACK); - g.drawString("Agility: " + Integer.toString(this.lastActor.getSkills().agility), - 5*this.guiSize, 45*this.guiSize); - } else if (this.actorClicked) { - g.setColor(Palette.WHITE_T); - g.fillRect(0, 0, 100*this.guiSize, 150*this.guiSize); - g.fillRect(this.WIDTH-100*this.guiSize, 0, 100*this.guiSize, 100*this.guiSize); - - g.setColor(Palette.BLACK); - g.drawString("None left", 5*this.guiSize, 15*this.guiSize); - } - } catch (ArrayIndexOutOfBoundsException ex) { - } catch (NullPointerException ext) { - System.out.println("map non existent"); - ext.printStackTrace(); - } - } - - @Override - protected void update(int deltaTime) { - ArrayList<Actor> actorsToRemove = new ArrayList<>(); - int enemyCounter = 0; - - for (Actor actor : this.map.getActors()) { - if (!actor.isAlive()) { - actorsToRemove.add(actor); - } - if (actor.isEnemy()) { - enemyCounter++; - } - } - - for (Actor actor : actorsToRemove) { - this.map.removeActor(actor); - } - - if (selectedActor != null) { - this.map.setCursor(selectedActor.getX(), selectedActor.getY()); - } else { - this.map.setCursor(-1, -1); - } - - if (enemyCounter == 0) { - //win - this.main.backToMenu(); - } - } - - private void aiPlay() { - // TODO: write AI code - // give back control back to the player - this.map.resetActors(); - this.selectedActor = this.map.getNextActor(); - this.lastActor = this.selectedActor; - this.actorClicked = true; - } - - @Override - public void mouseClicked(MouseEvent e) { - - int tileSize = this.maxSize/10; - Point2D p = new Point2D.Double(e.getX(), e.getY()); - - try { - p = this.tx.inverseTransform(p, null); - } catch (NoninvertibleTransformException ex) {} - - try { - // find actor under cursor - int x = (int) (p.getX()/tileSize); - int y = (int) (p.getY()/tileSize); - Tile tile = this.map.getTile(x, y); - Actor actor = null; - - for (Actor i : this.map.getActors()) { - if (x == i.getX() && y == i.getY()) { - actor = i; - break; - } - } - - if (actor != null) { - this.actorClicked = true; - this.lastActor = actor; - } else { - this.actorClicked = false; - } - - if (this.mode == Mode.MOVE) { - if (tile.isSelected()) { - this.selectedActor.move(x, y); - this.mode = Mode.NONE; - this.map.clearSelected(); - if (this.selectedActor.getActionsLeft() <= 0) { - this.selectedActor = this.map.getNextActor(); - this.lastActor = this.selectedActor; - this.actorClicked = true; - } - } - } else if (this.mode == Mode.ATTACK) { - if (actor != null) { - this.selectedActor.hit(actor, this.map); - if (this.selectedActor.getActionsLeft() <= 0) { - this.selectedActor = this.map.getNextActor(); - this.lastActor = this.selectedActor; - this.actorClicked = true; - } - } - this.mode = Mode.NONE; - this.map.clearSelected(); - } - } catch (ArrayIndexOutOfBoundsException ex) { - System.out.println("no tile clicked"); - } catch (NullPointerException ext) { - //ext.printStackTrace(); - System.out.println("map non existent"); - } - } - - @Override - public void mouseMoved(MouseEvent e) { - this.realX = e.getX(); - this.realY = e.getY(); - int tileSize = this.maxSize/10; - Point2D p = new Point2D.Double(e.getX(), e.getY()); - try { - p = this.tx.inverseTransform(p, null); - } catch (NoninvertibleTransformException ex) {} - int x = (int) (p.getX()/tileSize); - int y = (int) (p.getY()/tileSize); - try { - Tile tile = this.map.getTile(x, y); - if (x != this.previousX || y != this.previousY) { - if (this.mode == Mode.MOVE) { - this.map.clearSelected(); - ArrayList<Tile> path = this.map.getPath(this.selectedActor, x, y); - Collections.reverse(path); - for (int i=0; i<this.selectedActor.getSkills().agility; i++) { - path.get(i).setSelected(true); - if (i == path.size()-1) { - break; - } - } - } - this.previousX = x; - this.previousY = y; - } - } catch (ArrayIndexOutOfBoundsException ex) { - System.out.println("no tile clicked"); - } catch (NullPointerException ext) { - System.out.println("map non existent"); - } - } - - @Override - public void actionPerformed(ActionEvent e) { - // TODO: rename Ui elements to ex. btn-move, btn-pass, ... - if ("move".equals(e.getActionCommand()) && this.selectedActor != null) { - this.map.clearSelected(); - this.mode = Mode.MOVE; - this.lastActor = this.selectedActor; - this.actorClicked = true; - } else if ("pass".equals(e.getActionCommand())) { - this.map.clearSelected(); - this.aiPlay(); - } else if ("attack".equals(e.getActionCommand()) && this.selectedActor != null) { - this.map.clearSelected(); - int range = this.selectedActor.getWeapon().getRange(); - int x = this.selectedActor.getX(); - int y = this.selectedActor.getY(); - for (int r=-range; r <= range; r++) { - for (int c=-range; c <= range; c++) { - if (x+r >=0 && - x+r < this.map.getSize() && - y+c >= 0 && - y+c < this.map.getSize()) { - this.map.getTile(x+r, y+c).setSelected(true); - } - } - } - this.mode = Mode.ATTACK; - } else if ("next".equals(e.getActionCommand())) { - this.map.clearSelected(); - this.selectedActor = this.map.getNextActor(); - this.lastActor = this.selectedActor; - this.actorClicked = true; - } - - } -} |