From acfc49fe984e1fafc697af4ef52ef66934abdb8d Mon Sep 17 00:00:00 2001 From: Saba H Date: Mon, 24 Jun 2019 23:11:14 +0430 Subject: [PATCH] cell effect --- PausedGames/NumberOfMap | 5 + pics/Hero/{ => other}/2.png | Bin src/model/battle/GraveYard.java | 2 +- src/model/battle/Match.java | 4 +- src/model/battle/Player.java | 1 + src/model/card/Card.java | 4 + src/model/card/Change.java | 57 +++++---- src/model/card/Spell.java | 4 +- src/model/land/Square.java | 10 ++ src/view/Graphic/BattleHeaderGraphic.java | 46 +++---- src/view/Graphic/BattleScene.java | 149 ++++++++++++---------- 11 files changed, 162 insertions(+), 120 deletions(-) rename pics/Hero/{ => other}/2.png (100%) diff --git a/PausedGames/NumberOfMap b/PausedGames/NumberOfMap index fa7b73e..2e83ab0 100644 --- a/PausedGames/NumberOfMap +++ b/PausedGames/NumberOfMap @@ -13,3 +13,8 @@ 12 13 14 +15 +16 +17 +18 +19 diff --git a/pics/Hero/2.png b/pics/Hero/other/2.png similarity index 100% rename from pics/Hero/2.png rename to pics/Hero/other/2.png diff --git a/src/model/battle/GraveYard.java b/src/model/battle/GraveYard.java index 97606d6..6441701 100644 --- a/src/model/battle/GraveYard.java +++ b/src/model/battle/GraveYard.java @@ -55,7 +55,7 @@ public void addCardToGraveYard(Card card, Square position) { position.addToFlags(flag); flag.setOwnerCard(null); BattleScene.getSingleInstance().addNodeToBoard(card.getPosition().getXCoordinate(), - card.getPosition().getYCoordinate(), flag.getImageView()); + card.getPosition().getYCoordinate(), flag.getImageView(), false); flag.getImageView().setOpacity(1); break; } diff --git a/src/model/battle/Match.java b/src/model/battle/Match.java index 3635fc6..153f242 100644 --- a/src/model/battle/Match.java +++ b/src/model/battle/Match.java @@ -165,7 +165,7 @@ private void setFlagsRandomly(int mode) { squares[randomX][randomY].addToFlags(flag); ImageView flagView = GeneralGraphicMethods.createImage("pics/battle_categorized/flag.gif", 10, 10); flag.setImageView(flagView); - BattleScene.getSingleInstance().addNodeToBoard(randomX, randomY, flagView); + BattleScene.getSingleInstance().addNodeToBoard(randomX, randomY, flagView, false); } } @@ -190,7 +190,7 @@ private void setCollectiblesRandomly() { squares[randomX][randomY].setObject(collectible); ImageView collectibleImage = GeneralGraphicMethods.createImage( "pics/collectibles/" + collectible.getName() + ".png", 20, 20); - BattleScene.getSingleInstance().addNodeToBoard(randomX, randomY, collectibleImage); + BattleScene.getSingleInstance().addNodeToBoard(randomX, randomY, collectibleImage, false); collectible.setImageView(collectibleImage); } diff --git a/src/model/battle/Player.java b/src/model/battle/Player.java index a3e94b7..302d041 100644 --- a/src/model/battle/Player.java +++ b/src/model/battle/Player.java @@ -95,6 +95,7 @@ public boolean putCardOnLand(Card playerCard, Coordinate coordinate, LandOfGame for (Buff buff : square.getBuffs()) { addBuffToPlayer(buff); } + square.clearBuffs(); //flags: if (square.getFlags().size() > 0) { diff --git a/src/model/card/Card.java b/src/model/card/Card.java index aab6725..70cb34b 100644 --- a/src/model/card/Card.java +++ b/src/model/card/Card.java @@ -141,16 +141,20 @@ public boolean move(Coordinate newCoordination) { } } + /* ArrayList buffsOfSquare = newPosition.getBuffs(); for (Buff buff : buffsOfSquare) { buff.affect(this); } + square.clearBuffs(); + */ if (this instanceof Minion) { Square square = landOfGame.passSquareInThisCoordinate(newCoordination); for (Buff buff : square.getBuffs()) { addBuff(buff); } + square.clearBuffs(); } if (newPosition.getFlags().size() > 0) { diff --git a/src/model/card/Change.java b/src/model/card/Change.java index 497cab9..0e17136 100644 --- a/src/model/card/Change.java +++ b/src/model/card/Change.java @@ -1,7 +1,9 @@ package model.card; +import javafx.scene.image.ImageView; import model.battle.Player; import model.land.Square; +import view.Graphic.BattleScene; import java.util.ArrayList; import java.util.HashMap; @@ -31,8 +33,9 @@ public void affect(Player player, ArrayList targets) { if (targetType.equals("square")) { for (Square square : targets) { for (String buffName : buffs.keySet()) { - for(int number: buffs.get(buffName)) + for (int number : buffs.get(buffName)) { square.addBuffToSquare(getBuff(buffName, number)); + } } } } @@ -43,7 +46,7 @@ public void affect(Player player, ArrayList targets) { } } - if(targetType.equals("player")){ + if (targetType.equals("player")) { for (String buffName : buffs.keySet()) { for (int number : buffs.get(buffName)) player.addBuffToPlayer(getBuff(buffName, number)); @@ -51,6 +54,31 @@ public void affect(Player player, ArrayList targets) { } } + private Buff getBuff(String buffName, int forHowManyTurn) { + Buff buff = Buff.getNewBuffByName(buffName, forHowManyTurn); + if (buff != null) { + if (buffName.equals("Power")) { + if (apOrHpForPower.equals("ap")) + buff.setApChange(changeInApOrHpForPower); + else + buff.setHpChange(changeInApOrHpForPower); + } + if (buffName.equals("Weakness")) { + if (apOrHpForWeakness.equals("ap")) + buff.setApChange(changeInApOrHpForWeakness); + else + buff.setHpChange(changeInApOrHpForWeakness); + } + if (buffName.equals("Mana")) { + buff.setManaChange(changeInManaForMana); + } + if (buffName.equals("DecreaserHp")) { + buff.setHpChange(changeInHpForDecreaserHp); + } + } + return buff; + } + private void makeChangeInTargetCard(Player player, Card targetCard) {//change e hamle konnande ro roye opponent seda mikonm if (!opponentCanMove) targetCard.setCanMove(false, turnOfCanNotMoveForOpponent); @@ -86,31 +114,6 @@ private void makeChangeInTargetCard(Player player, Card targetCard) {//change e } } - private Buff getBuff(String buffName, int forHowManyTurn) { - Buff buff = Buff.getNewBuffByName(buffName, forHowManyTurn); - if (buff != null) { - if (buffName.equals("Power")) { - if (apOrHpForPower.equals("ap")) - buff.setApChange(changeInApOrHpForPower); - else - buff.setHpChange(changeInApOrHpForPower); - } - if (buffName.equals("Weakness")) { - if (apOrHpForWeakness.equals("ap")) - buff.setApChange(changeInApOrHpForWeakness); - else - buff.setHpChange(changeInApOrHpForWeakness); - } - if( buffName.equals("Mana")){ - buff.setManaChange(changeInManaForMana); - } - if(buffName.equals("DecreaserHp")){ - buff.setHpChange(changeInHpForDecreaserHp); - } - } - return buff; - } - public String getTargetType() { return targetType; } diff --git a/src/model/card/Spell.java b/src/model/card/Spell.java index 1947e2e..314eb99 100644 --- a/src/model/card/Spell.java +++ b/src/model/card/Spell.java @@ -5,11 +5,13 @@ import java.util.ArrayList; public class Spell extends Card { +/* private int playerNameByNumber;//{player1 or 2} private int numberOfAttack; private int turn; private ArrayList buffs; private ArrayList turnOfBuffs; + private int apChanges; private int turnForApChanges; private int hpChanges; @@ -71,5 +73,5 @@ public int getTurn() { return turn; } - +*/ } diff --git a/src/model/land/Square.java b/src/model/land/Square.java index 494d413..9b3999d 100644 --- a/src/model/land/Square.java +++ b/src/model/land/Square.java @@ -1,13 +1,16 @@ package model.land; +import javafx.scene.image.ImageView; import model.card.Buff; import model.card.Hero; import model.card.Minion; import model.item.Collectible; import model.item.Flag; import model.requirment.Coordinate; +import view.Graphic.BattleScene; import java.util.ArrayList; +import java.util.HashMap; public class Square { private int scaleForEachSquare; @@ -15,13 +18,20 @@ public class Square { private Object object; private ArrayList flags = new ArrayList<>(); private ArrayList buffs = new ArrayList<>(); + private ImageView cellEffectImageView = null; public Square(Coordinate coordinate) { this.coordinate = coordinate; } + public void clearBuffs(){ + buffs = null; + BattleScene.getSingleInstance().removeNodeFromBoard(cellEffectImageView); + } public void addBuffToSquare(Buff buff) { buffs.add(buff); + if(cellEffectImageView == null) + cellEffectImageView = BattleScene.getSingleInstance().addCellEffect(getXCoordinate(), getYCoordinate()); } public Minion squareHasMinionAndPassIt() { diff --git a/src/view/Graphic/BattleHeaderGraphic.java b/src/view/Graphic/BattleHeaderGraphic.java index 70fb570..48b4bb4 100644 --- a/src/view/Graphic/BattleHeaderGraphic.java +++ b/src/view/Graphic/BattleHeaderGraphic.java @@ -1,24 +1,17 @@ package view.Graphic; -import javafx.event.EventHandler; -import javafx.scene.CacheHint; import javafx.scene.Group; -import javafx.scene.effect.ColorAdjust; import javafx.scene.effect.Glow; import javafx.scene.image.ImageView; -import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; -import javafx.scene.paint.ImagePattern; import javafx.scene.shape.Circle; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; -import javafx.scene.transform.Rotate; import model.battle.Player; import view.enums.StateType; - import java.io.File; import java.util.Random; @@ -146,7 +139,7 @@ private void chooseHeroSpecialPowerPath(int ind) { specialPowersPath[ind] = file.listFiles()[index].getPath(); } - private void addHeroSpecialPower(double x, double y, Group group, int ind, int turnNotUsedSpecialPower, int coolDown) { + private void addHeroSpecialPower(double x, double y, Group group, int ind, int turnNotUsedSpecialPower, int coolDown, boolean itsTurn) { ImageView imageView = SpriteMaker.getInstance().makeSpritePic(specialPowersPath[ind], x, y, group, 19, 3, 2500, 34.5, 34.5); @@ -155,25 +148,27 @@ private void addHeroSpecialPower(double x, double y, Group group, int ind, int t imageView.setFitHeight(35); Circle circle = new Circle(x + imageView.getFitWidth() / 2, - y+ imageView.getFitHeight() / 2, imageView.getFitWidth() + 5); + y + imageView.getFitHeight() / 2, imageView.getFitWidth() + 5); circle.setStroke(Color.rgb(0, 204, 255)); circle.setStrokeWidth(0); - circle.setFill(Color.gray(1,0.01)); + circle.setFill(Color.gray(1, 0.01)); group.getChildren().add(circle); GeneralGraphicMethods.setOnMouseEntered(circle, StageLauncher.getScene(StateType.BATTLE), true); GeneralGraphicMethods.setOnMouseEntered(imageView, StageLauncher.getScene(StateType.BATTLE), true); - circle.setOnMouseClicked(event -> { - if (!battleScene.isHeroSpecialPowerClicked()) { - battleScene.setHeroSpecialPowerClicked(true); - circle.setStrokeWidth(5); - } - else { - battleScene.setHeroSpecialPowerClicked(false); - circle.setStrokeWidth(0); - } - - }); + if (itsTurn) { + circle.setOnMouseClicked(event -> { + if (!battleScene.isHeroSpecialPowerClicked()) { + battleScene.setHeroSpecialPowerClicked(true); + + circle.setStrokeWidth(5); + } else { + battleScene.setHeroSpecialPowerClicked(false); + circle.setStrokeWidth(0); + } + + }); + } addCoolDown(x, y + 50, group, turnNotUsedSpecialPower, coolDown); } @@ -207,18 +202,19 @@ private void makeLeftHeader(Player player) { leftHeader.getChildren().clear(); GeneralGraphicMethods.addTextWithShadow(leftHeader, 248, 78, player.getUserName(), "Arial", 27); addMana(245, 100, player.getMana(), leftHeader); - addHeroSpecialPower(110, 195, leftHeader, 0, player.getHero().getTurnNotUsedSpecialPower(), player.getHero().getCoolDown()); + addHeroSpecialPower(110, 195, leftHeader, 0, player.getHero().getTurnNotUsedSpecialPower(), player.getHero().getCoolDown(), true); addPortraitBorder(120, 25, leftHeader, true, player.getAvatarPath(), true); - // addPortraitBorder(1165, 25, rightHeader, false, COMPUTER_PROFILE, false); + // addPortraitBorder(1165, 25, rightHeader, false, COMPUTER_PROFILE, false); } private void makeRightHeader(Player player) { rightHeader.getChildren().clear(); GeneralGraphicMethods.addTextWithShadow(leftHeader, 1010, 78, player.getUserName(), "Arial", 27); addMana(911, 100, player.getMana(), rightHeader); - addHeroSpecialPower(1275, 195, rightHeader, 1, player.getHero().getTurnNotUsedSpecialPower(), player.getHero().getCoolDown()); + addHeroSpecialPower(1275, 195, rightHeader, 1, player.getHero().getTurnNotUsedSpecialPower(), player.getHero().getCoolDown(), false + ); addPortraitBorder(1165, 25, rightHeader, true, player.getAvatarPath(), false); - // addPortraitBorder(120, 25, leftHeader, false, COMPUTER_PROFILE, true); + // addPortraitBorder(120, 25, leftHeader, false, COMPUTER_PROFILE, true); } public void makeHeaderEachTurn(int numberOfPlayer, Player player) { diff --git a/src/view/Graphic/BattleScene.java b/src/view/Graphic/BattleScene.java index 16ebe22..3da190f 100644 --- a/src/view/Graphic/BattleScene.java +++ b/src/view/Graphic/BattleScene.java @@ -69,9 +69,12 @@ public static BattleScene getSingleInstance() { return singleInstance; } - public void addNodeToBoard(int x, int y, Node node) { + public void addNodeToBoard(int x, int y, Node node, Boolean samePlace) { Pair position = getCellPosition(x, y); - node.relocate(position.getKey(), position.getValue() - 10); + if (samePlace) + node.relocate(position.getKey(), position.getValue()); + else + node.relocate(position.getKey(), position.getValue() - 10); if (node instanceof ImageView) { ((ImageView) node).setFitWidth(mapProperties.cellWidth); ((ImageView) node).setFitHeight(mapProperties.cellHeight); @@ -79,6 +82,7 @@ public void addNodeToBoard(int x, int y, Node node) { board.getChildren().add(node); } + public Pair getCellPosition(int row, int column) { return new Pair<>(gameGrid[row][column].getLayoutX(), gameGrid[row][column].getLayoutY()); } @@ -219,8 +223,8 @@ private ImageView attack(int row, int column, Card card, ImageView image, } int finalWait = wait; new AnimationTimer() { - private long lastTime = 0; boolean once = true; + private long lastTime = 0; @Override public void handle(long now) { @@ -395,67 +399,6 @@ public void test() { */ } - public void setGame(Game game) { - this.game = game; - } - - void setOnMousePressedPosition(Card card) { - backToDefault(); - this.onMousePressedPosition = card.getPosition(); - } - - void backToDefault() { - selectedCard = null; - removeColorFromRectangles(); - glow.setLevel(0); - } - - private void removeColorFromRectangles() { - for (Rectangle rectangle : coloredRectangles) - rectangle.setFill(Color.BLACK); - coloredRectangles = new ArrayList<>(); - } - - public HashMap getCardsHashMap() { - return cardsHashMap; - } - - public Match getMatch() { - return match; - } - - public void setMatch(Match match) { - this.match = match; - } - - int getNumberOfMap() { - return numberOfMap; - } - - public BattleHeaderGraphic getBattleHeader() { - return battleHeader; - } - - public BattleFooterGraphic getBattleFooter() { - return battleFooter; - } - - Scene getBattleScene() { - return battleScene; - } - - void setBattleScene(int numberOfMap) { - root.getChildren().clear(); - this.numberOfMap = numberOfMap; - setMapProperties(); - setMapBackground(); - playMusic("resource/music/battle_music/" + - numberOfMap + ".m4a", true, battleScene); - addGrid(); - battleHeader = new BattleHeaderGraphic(this, root); - battleFooter = new BattleFooterGraphic(this, root, game.getPlayers()[0], battleScene); - } - private void setMapProperties() { String path = "pics/maps_categorized/map" + numberOfMap + "/property.json"; YaGson yaGson = new YaGson(); @@ -666,6 +609,84 @@ private void moveBackgrounds(ImageView imageView, boolean horizontal, boolean ve }); } + public ImageView addCellEffect(int x, int y) { + ImageView imageView = GeneralGraphicMethods.createImage( + "pics/battle/1.png", 20, 20); + BattleScene.getSingleInstance().addNodeToBoard(x, y, imageView, true); + return imageView; + + } +/* + public void addCellEffect2(int x, int y) { + ImageView collectibleImage = GeneralGraphicMethods.createImage( + "pics/battle/stunned@2x.png", mapProperties.cellWidth, mapProperties.cellHeight); + BattleScene.getSingleInstance().addNodeToBoard(x, y, collectibleImage, true); + + } + */ + + public void setGame(Game game) { + this.game = game; + } + + void setOnMousePressedPosition(Card card) { + backToDefault(); + this.onMousePressedPosition = card.getPosition(); + } + + void backToDefault() { + selectedCard = null; + removeColorFromRectangles(); + glow.setLevel(0); + } + + private void removeColorFromRectangles() { + for (Rectangle rectangle : coloredRectangles) + rectangle.setFill(Color.BLACK); + coloredRectangles = new ArrayList<>(); + } + + public HashMap getCardsHashMap() { + return cardsHashMap; + } + + public Match getMatch() { + return match; + } + + public void setMatch(Match match) { + this.match = match; + } + + int getNumberOfMap() { + return numberOfMap; + } + + public BattleHeaderGraphic getBattleHeader() { + return battleHeader; + } + + public BattleFooterGraphic getBattleFooter() { + return battleFooter; + } + + Scene getBattleScene() { + return battleScene; + } + + void setBattleScene(int numberOfMap) { + root.getChildren().clear(); + this.numberOfMap = numberOfMap; + setMapProperties(); + setMapBackground(); + playMusic("resource/music/battle_music/" + + numberOfMap + ".m4a", true, battleScene); + addGrid(); + battleHeader = new BattleHeaderGraphic(this, root); + battleFooter = new BattleFooterGraphic(this, root, game.getPlayers()[0], battleScene); + + } + boolean isHeroSpecialPowerClicked() { return heroSpecialPowerClicked; }