Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions src/main/java/models/Board.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,15 @@ public void addMinion(Minion minion){
tauntList.add(minion);
}
}
setChanged();
notifyObservers(this);
update();
}

public void removeMinion(Minion minion){
minions.remove(minion);
if(minion.getMinionMechanics().isTaunt()){
tauntList.remove(minion);
}
setChanged();
notifyObservers(this);
update();
}

public List<Minion> getAttackableMinions(){
Expand All @@ -53,4 +51,9 @@ public List<Minion> getTauntList() {
return tauntList;
}

public void update(){
setChanged();
notifyObservers(this);
}

}
15 changes: 13 additions & 2 deletions src/main/java/models/Game.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import models.card.Card;
import models.card.CardManager;

import java.util.Observable;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class Game {
public class Game extends Observable {

private static final int MANA_MAX = 10;

Expand Down Expand Up @@ -64,15 +65,18 @@ public void startTurn(Player player){
player.setManaPool(player.getManaPool() + 1);
}
player.setManaRemaining(player.getManaPool());
setChanged();
notifyObservers(this);
timer.schedule(new TimerTask() {
@Override
public void run() {
endTurn(player);
}
}, 2*60*1000);
}, 2*60*1000); // 2 Minutes
}

public void endTurn(Player player){
timer.cancel();
if(player.equals(player1)){
startTurn(player2);
} else {
Expand Down Expand Up @@ -104,4 +108,11 @@ public Player getOpponent(Player player){
return player1;
}
}

public Player getCardOwner(Card card){
if(player1.getBoard().getMinions().contains(card)){
return player1;
}
return player2;
}
}
4 changes: 4 additions & 0 deletions src/main/java/models/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ public int getManaPool() {

public void setManaPool(int manaPool) {
this.manaPool = manaPool;
setChanged();
notifyObservers(this);
}

public int getManaRemaining() {
Expand All @@ -78,6 +80,8 @@ public int getManaRemaining() {

public void setManaRemaining(int manaRemaining) {
this.manaRemaining = manaRemaining;
setChanged();
notifyObservers(this);
}

public Hero getHero() {
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/models/card/Minion.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package models.card;

import models.Game;
import models.IFighter;
import models.Player;
import org.json.simple.JSONObject;
Expand Down Expand Up @@ -44,7 +45,6 @@ public void destroy(Player owner){
minionMechanics.deathRattle(owner);
}
owner.getBoard().removeMinion(this);
die();
update();
}

Expand All @@ -60,11 +60,11 @@ public void newTurn(){

@Override
public void attack(IFighter target) {
if(!hasAttacked) {
//if(!hasAttacked) {
target.takeDamage(attack);
takeDamage(target.getAttack());
hasAttacked = true;
}
//}
update();
}

Expand All @@ -88,7 +88,7 @@ public int getAttack() {

@Override
public void die() {

destroy(Game.getInstance().getCardOwner(this));
}

public MinionMechanics getMinionMechanics() {
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/models/card/effect/Abilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,10 @@ public static void dealDamageToOpponent(Player owner, JSONObject effect){
*/
public static void summonMinions(Player owner, JSONObject effect){
CardManager cardManager = new CardManager();
owner.getBoard().addMinion(new Minion(cardManager.getJSONFromId((String) effect.get("minionId"))));
int amount = ((Long)effect.get("amount")).intValue();
for (int i = 0; i < amount; i++){
owner.getBoard().addMinion(new Minion(cardManager.getJSONFromId(((Long) effect.get("minionId")).toString())));
}
}

/**
Expand Down
28 changes: 24 additions & 4 deletions src/main/java/views/GameView.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@
import models.Game;
import models.Player;
import views.layouts.BoardLayout;
import views.layouts.CardBoardLayout;
import views.layouts.CardLayout;
import views.layouts.PlayerLayout;

import javax.swing.*;
import java.awt.*;
import java.util.Observable;
import java.util.Observer;

public class GameView extends JFrame {
public class GameView extends JFrame implements Observer {

private JFrame window;
private JPanel gameView;
Expand All @@ -22,6 +25,7 @@ public class GameView extends JFrame {
private BoardLayout boardPlayer2;

private CardLayout selectedCard;
private CardBoardLayout selectedCardBoard;

private static GameView gameViewObject;

Expand All @@ -38,11 +42,11 @@ private GameView(){

public void init(Player player1, Player player2) {
Game.getInstance().startGame(player1, player2);

Game.getInstance().addObserver(this);
playerLayout1 = new PlayerLayout(player1);
playerLayout2 = new PlayerLayout(player2);
boardPlayer1 = new BoardLayout(player1.getBoard());
boardPlayer2 = new BoardLayout(player2.getBoard());
boardPlayer1 = new BoardLayout(player1, player1.getBoard());
boardPlayer2 = new BoardLayout(player2, player2.getBoard());

board = new JPanel();
board.setLayout(new BoxLayout(board, BoxLayout.PAGE_AXIS));
Expand Down Expand Up @@ -74,6 +78,14 @@ public void setSelectedCard(CardLayout selectedCard) {
this.selectedCard = selectedCard;
}

public CardBoardLayout getSelectedCardBoard() {
return selectedCardBoard;
}

public void setSelectedCardBoard(CardBoardLayout selectedCardBoard) {
this.selectedCardBoard = selectedCardBoard;
}

public PlayerLayout getPlayerLayout1() {
return playerLayout1;
}
Expand All @@ -89,4 +101,12 @@ public BoardLayout getBoardPlayer1() {
public BoardLayout getBoardPlayer2() {
return boardPlayer2;
}

@Override
public void update(Observable observable, Object o) {
selectedCard = null;
selectedCardBoard = null;
repaint();
revalidate();
}
}
18 changes: 10 additions & 8 deletions src/main/java/views/layouts/BoardLayout.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import models.Board;
import models.Game;
import models.Player;
import models.card.*;
import views.GameView;

Expand All @@ -14,14 +15,19 @@

public class BoardLayout extends JPanel implements Observer, MouseListener {

public BoardLayout(Board board) {
private Player player;
private Board board;

public BoardLayout(Player player, Board board) {
this.board = board;
this.player = player;
board.addObserver(this);
setBorder(BorderFactory.createLineBorder(Color.GRAY, 2));
setBackground(new Color(207, 204, 141));
setLayout(new FlowLayout(FlowLayout.CENTER));

for(Card card: board.getMinions()) {
CardLayout cardLayout = new CardLayout(card);
CardBoardLayout cardLayout = new CardBoardLayout(player, card);
add(cardLayout);
}
addMouseListener(this);
Expand All @@ -32,7 +38,7 @@ public void update(Observable observable, Object o) {
Board board = (Board) o;
removeAll();
for (Card card: board.getMinions()) {
add(new CardLayout(card));
add(new CardBoardLayout(player, card));
}
repaint();
revalidate();
Expand All @@ -43,11 +49,7 @@ public void mouseClicked(MouseEvent mouseEvent) {
CardLayout cardLayout = GameView.getInstance().getSelectedCard();
if(cardLayout != null){
Game.getInstance().getCurrentPlayer().playCard(cardLayout.getCard());
}

if (mouseEvent.getSource() instanceof CardLayout){
cardLayout = (CardLayout) mouseEvent.getSource();
cardLayout.setWaitingForTarget(!cardLayout.isWaitingForTarget());
GameView.getInstance().setSelectedCard(null);
}
}

Expand Down
32 changes: 32 additions & 0 deletions src/main/java/views/layouts/CardBoardLayout.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package views.layouts;

import models.Player;
import models.card.Card;
import models.card.Minion;
import views.GameView;

import java.awt.event.MouseEvent;

public class CardBoardLayout extends CardLayout {

private Player player;

public CardBoardLayout(Player player, Card card) {
super(player, card);
this.player = player;
}

@Override
public void mouseClicked(MouseEvent e) {
CardBoardLayout selected = GameView.getInstance().getSelectedCardBoard();
if(selected == null){
GameView.getInstance().setSelectedCardBoard(this);
} else if(this.getCard() != selected.getCard()) {
Minion selectedMinion = (Minion) selected.getCard();
Minion targetMinion = (Minion) this.getCard();
selectedMinion.attack(targetMinion);
GameView.getInstance().setSelectedCardBoard(null);
player.getBoard().update();
}
}
}
Loading