Skip to content

Commit 7522653

Browse files
decrease javafx ram usage
1 parent 1679ad9 commit 7522653

File tree

4 files changed

+101
-17
lines changed

4 files changed

+101
-17
lines changed

src/main/java/it/polimi/ingsw/gui/GameController.java

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public class GameController extends GuiView implements Initializable {
9595
private Label shelfID3 = new Label();
9696

9797
//images
98+
ArrayList<Title> titles = new ArrayList<>();
9899
@FXML
99100
public ImageView logo = new ImageView();
100101
@FXML
@@ -251,7 +252,16 @@ private void setBorderRadius (ImageView image, int size){
251252
/**********************************************************************
252253
* GAME *
253254
**********************************************************************/
254-
255+
public Image createImage(int sketch, CardColor color, ArrayList<Title> titles){
256+
Title tmp = new Title(color , sketch);
257+
if(titles.contains(tmp)){
258+
for (Title title: titles)if(title.equals(tmp))return title.getImage();
259+
}
260+
String file = CardImage.getImgName(sketch,color);
261+
Image image = new Image(this.getClass().getClassLoader().getResourceAsStream(file), 60, 60, false, false);
262+
titles.add(new Title(image, color, sketch));
263+
return image;
264+
}
255265
public void notifyNewActivePlayer() {
256266
String currentPlayer = player.getActivePlayer();
257267
if(!Objects.equals(currentPlayer, player.getPlayerID())){
@@ -284,29 +294,37 @@ public void setMainBoard(){
284294

285295

286296
//TO FIX BOARD DIMENSION
287-
String file = CardImage.getImgName(0,BLUE);
288-
ImageView card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 50, 50, false, false));
297+
ImageView card = new ImageView(createImage(0, BLUE, titles));
298+
card.setFitHeight(50);
299+
card.setFitWidth(50);
289300
card.setVisible(false);
290301
GridPane.setConstraints(card,0,0);
291302
mainBoardGrid.getChildren().add(card);
292-
card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 50, 50, false, false));
303+
card = new ImageView(createImage(0, BLUE, titles));
304+
card.setFitHeight(50);
305+
card.setFitWidth(50);
293306
card.setVisible(false);
294307
GridPane.setConstraints(card,0,8);
295308
mainBoardGrid.getChildren().add(card);
296-
card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 50, 50, false, false));
309+
card = new ImageView(createImage(0, BLUE, titles));
310+
card.setFitHeight(50);
311+
card.setFitWidth(50);
297312
card.setVisible(false);
298313
GridPane.setConstraints(card,8,8);
299314
mainBoardGrid.getChildren().add(card);
300-
card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 50, 50, false, false));
315+
card = new ImageView(createImage(0, BLUE, titles));
316+
card.setFitHeight(50);
317+
card.setFitWidth(50);
301318
card.setVisible(false);
302319
GridPane.setConstraints(card,8,0);
303320
mainBoardGrid.getChildren().add(card);
304321

305322
Card[][] mainBoard = player.getMainBoard().getBoard();
306323
for(int x=0;x<player.getMainBoard().getColumns();x++){
307324
for (int y=0;y<player.getMainBoard().getRows(); y++){
308-
file = CardImage.getImgName(mainBoard[x][y].getSketch(), mainBoard[x][y].getColor());
309-
card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 50, 50, false, false));
325+
card = new ImageView(createImage(mainBoard[x][y].getSketch(), mainBoard[x][y].getColor(), titles));
326+
card.setFitHeight(50);
327+
card.setFitWidth(50);
310328
if(mainBoard[x][y].getColor().equals(EMPTY))card.setVisible(false);
311329
card.setId("tile");
312330
GridPane.setConstraints(card,x,player.getMainBoard().getColumns()-y-1);
@@ -345,8 +363,9 @@ public void setMyPlayerBoardGrid(){
345363

346364
for(int x=0;x<playerBoard.getColumns();x++){
347365
for (int y=0;y<playerBoard.getRows(); y++){
348-
String file = CardImage.getImgName(cards[x][y].getSketch(), cards[x][y].getColor());
349-
ImageView card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 42, 42, false, false));
366+
ImageView card = new ImageView(createImage(cards[x][y].getSketch(), cards[x][y].getColor(), titles));
367+
card.setFitHeight(42);
368+
card.setFitWidth(42);
350369
if(cards[x][y].getColor().equals(EMPTY))card.setVisible(false);
351370
GridPane.setConstraints(card, x, player.getMainBoard().getColumns()-y);
352371
myPlayerBoardGrid.getChildren().add(card);
@@ -386,8 +405,9 @@ private void updatePlayerBoard(String playerID, int column, Card[] c, GridPane g
386405
y = y -c.length +1;
387406

388407
for(Card card: c){
389-
String file = CardImage.getImgName(card.getSketch(), card.getColor());
390-
ImageView cardImg = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), size, size, false, false));
408+
ImageView cardImg = new ImageView(createImage(card.getSketch(), card.getColor(), titles));
409+
cardImg.setFitHeight(size);
410+
cardImg.setFitWidth(size);
391411
GridPane.setConstraints(cardImg, column, player.getMainBoard().getColumns()-y);
392412
gridPane.getChildren().add(cardImg);
393413
y++;
@@ -416,8 +436,9 @@ public void setOtherPlayerBoard(){
416436

417437
for (int x = 0; x < playerBoard.getColumns(); x++) {
418438
for (int y = 0; y < playerBoard.getRows(); y++) {
419-
String file = CardImage.getImgName(cards[x][y].getSketch(), cards[x][y].getColor());
420-
ImageView card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 17, 17, false, false));
439+
ImageView card = new ImageView(createImage(cards[x][y].getSketch(),cards[x][y].getColor(), titles));
440+
card.setFitHeight(17);
441+
card.setFitWidth(17);
421442
if(cards[x][y].getColor().equals(EMPTY))card.setVisible(false);
422443
GridPane.setConstraints(card, x, player.getMainBoard().getColumns() - y);
423444
gridPane.getChildren().add(card);
@@ -511,9 +532,9 @@ private void MoveMode(){
511532
private void insertTails(int x, int y, int pose){
512533

513534
Card[][] mainBoard = player.getMainBoard().getBoard();
514-
515-
String file = CardImage.getImgName(mainBoard[x][y].getSketch(), mainBoard[x][y].getColor());
516-
ImageView card = new ImageView(new Image(this.getClass().getClassLoader().getResourceAsStream(file), 60, 60, false, false));
535+
ImageView card = new ImageView(createImage(mainBoard[x][y].getSketch(), mainBoard[x][y].getColor(), titles));
536+
card.setFitHeight(60);
537+
card.setFitWidth(60);
517538
card.setId("takenCard");
518539
card.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
519540
@Override

src/main/java/it/polimi/ingsw/gui/supportClass/CardImage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package it.polimi.ingsw.gui.supportClass;
22

33
import it.polimi.ingsw.shared.Cards.CardColor;
4+
import javafx.scene.image.Image;
5+
6+
import java.util.ArrayList;
47

58
public class CardImage {
69
private static final String[] blue = {"Cornici1.1.png", "Cornici1.2.png", "Cornici1.3.png"};
@@ -20,4 +23,6 @@ public static String getImgName(int sketch, CardColor color){
2023
default -> lightBlue[sketch];
2124
};
2225
}
26+
27+
2328
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package it.polimi.ingsw.gui.supportClass;
2+
3+
import it.polimi.ingsw.shared.Cards.CardColor;
4+
import javafx.scene.image.Image;
5+
6+
public class Title {
7+
Image image;
8+
CardColor color;
9+
int sketch;
10+
public Title(CardColor color, int sketch){
11+
this.color = color;
12+
this.sketch = sketch;
13+
}
14+
15+
public Title(Image image, CardColor color, int sketch){
16+
this.image = image;
17+
this.color = color;
18+
this.sketch = sketch;
19+
}
20+
21+
public CardColor getColor() {
22+
return color;
23+
}
24+
25+
public Image getImage() {
26+
return image;
27+
}
28+
29+
public int getSketch() {
30+
return sketch;
31+
}
32+
33+
@Override
34+
public boolean equals(Object obj){
35+
if (obj == null)
36+
return false;
37+
if (getClass() != obj.getClass())
38+
return false;
39+
Title other = (Title) obj;
40+
return this.getColor()== other.getColor() && this.getSketch()== other.getSketch();
41+
}
42+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package it.polimi.ingsw.gui.supportClass;
2+
3+
import it.polimi.ingsw.shared.Cards.CardColor;
4+
import junit.framework.TestCase;
5+
6+
import java.util.ArrayList;
7+
8+
public class TitleTest extends TestCase {
9+
public void test(){
10+
ArrayList<Title> titles = new ArrayList<>();
11+
titles.add(new Title(CardColor.BLUE, 0));
12+
assertTrue(titles.contains(new Title(CardColor.BLUE, 0)));
13+
assertFalse(titles.contains(new Title(CardColor.BLUE, 2)));
14+
assertFalse(titles.contains(new Title(CardColor.GREEN, 0)));
15+
}
16+
}

0 commit comments

Comments
 (0)