7oxBPW(`Rm;B*SUq5{%4(A
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 {
controller.playSound("press", 0);
diff --git a/src/Gui/Controller/Leaderboard.java b/src/Gui/Controller/Leaderboard.java
index 259ca72..63ace74 100644
--- a/src/Gui/Controller/Leaderboard.java
+++ b/src/Gui/Controller/Leaderboard.java
@@ -11,6 +11,8 @@
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.ImageView;
+import javafx.scene.text.Font;
+import javafx.scene.text.Text;
import java.io.IOException;
import java.net.URL;
@@ -18,6 +20,9 @@
public class Leaderboard implements Initializable {
+ public Text text2;
+ public Text text1;
+ public Text text3;
@FXML private TableView leaderboardClassic;
@FXML private TableView leaderboardArcade;
@FXML private TableColumn usernameClassic;
@@ -29,6 +34,10 @@ public class Leaderboard implements Initializable {
@Override
public void initialize(URL location, ResourceBundle resources) {
+ text1.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 50));
+ text2.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 50));
+ text3.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 50));
+
controller.gameMode = new Strategy(new ClassicMode());
controller.gameMode.sort();
for (int i=0;i controller.toggleSound(soundToggle));
diff --git a/src/Gui/Controller/Profiles.java b/src/Gui/Controller/Profiles.java
index 997e2a7..5c37882 100644
--- a/src/Gui/Controller/Profiles.java
+++ b/src/Gui/Controller/Profiles.java
@@ -8,6 +8,8 @@
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ComboBox;
+import javafx.scene.text.Font;
+import javafx.scene.text.Text;
import org.jdom2.JDOMException;
import javax.sound.sampled.Clip;
@@ -17,7 +19,11 @@
import java.util.ResourceBundle;
public class Profiles implements Initializable {
-@FXML private ComboBox usernameCombobox;
+ public Text text1;
+ public Text text2;
+ public Text comboBoxText;
+ @FXML
+ private ComboBox usernameCombobox;
@FXML private JFXTextField usernameTextField;
@FXML private JFXButton logIn;
@FXML private JFXButton signUp;
@@ -27,6 +33,13 @@ public class Profiles implements Initializable {
public void initialize(URL location, ResourceBundle resources) {
+
+ logIn.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 18));
+ signUp.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 18));
+ usernameTextField.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 18));
+ comboBoxText.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 18));
+ text1.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 34));
+ text2.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 34));
try {
controller.loadPlayers();
} catch (JDOMException | IOException e) {
From 8348fd24452bffa1b05fd21819f8936710df6611 Mon Sep 17 00:00:00 2001
From: Mostafa Talaat
Date: Wed, 29 May 2019 01:09:36 +0200
Subject: [PATCH 11/27] FXML: cleanup
Signed-off-by: Mostafa Talaat
---
src/Gui/FxmlFiles/Arcade.fxml | 75 ++++++-------
src/Gui/FxmlFiles/Classic.fxml | 75 ++++++-------
src/Gui/FxmlFiles/Credits.fxml | 41 +++----
src/Gui/FxmlFiles/Help.fxml | 171 ++++++++++++++---------------
src/Gui/FxmlFiles/Leaderboard.fxml | 102 ++++++++---------
src/Gui/FxmlFiles/MainMenu.fxml | 156 +++++++++++++-------------
src/Gui/FxmlFiles/Options.fxml | 164 +++++++++++++--------------
src/Gui/FxmlFiles/Profiles.fxml | 101 +++++++++--------
8 files changed, 427 insertions(+), 458 deletions(-)
diff --git a/src/Gui/FxmlFiles/Arcade.fxml b/src/Gui/FxmlFiles/Arcade.fxml
index b8f6c39..30afd54 100644
--- a/src/Gui/FxmlFiles/Arcade.fxml
+++ b/src/Gui/FxmlFiles/Arcade.fxml
@@ -5,44 +5,39 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Gui/FxmlFiles/Classic.fxml b/src/Gui/FxmlFiles/Classic.fxml
index d56af7b..cbfa49f 100644
--- a/src/Gui/FxmlFiles/Classic.fxml
+++ b/src/Gui/FxmlFiles/Classic.fxml
@@ -5,44 +5,39 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Gui/FxmlFiles/Credits.fxml b/src/Gui/FxmlFiles/Credits.fxml
index b155585..da20244 100644
--- a/src/Gui/FxmlFiles/Credits.fxml
+++ b/src/Gui/FxmlFiles/Credits.fxml
@@ -6,29 +6,22 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
diff --git a/src/Gui/FxmlFiles/Help.fxml b/src/Gui/FxmlFiles/Help.fxml
index 985db85..f918cbe 100644
--- a/src/Gui/FxmlFiles/Help.fxml
+++ b/src/Gui/FxmlFiles/Help.fxml
@@ -4,92 +4,89 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
diff --git a/src/Gui/FxmlFiles/Leaderboard.fxml b/src/Gui/FxmlFiles/Leaderboard.fxml
index 74305c9..c6521a1 100644
--- a/src/Gui/FxmlFiles/Leaderboard.fxml
+++ b/src/Gui/FxmlFiles/Leaderboard.fxml
@@ -6,54 +6,58 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
diff --git a/src/Gui/FxmlFiles/MainMenu.fxml b/src/Gui/FxmlFiles/MainMenu.fxml
index f0bb7b4..c23a10c 100644
--- a/src/Gui/FxmlFiles/MainMenu.fxml
+++ b/src/Gui/FxmlFiles/MainMenu.fxml
@@ -6,85 +6,81 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Gui/FxmlFiles/Options.fxml b/src/Gui/FxmlFiles/Options.fxml
index 5d0061c..9014fa3 100644
--- a/src/Gui/FxmlFiles/Options.fxml
+++ b/src/Gui/FxmlFiles/Options.fxml
@@ -7,91 +7,83 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Gui/FxmlFiles/Profiles.fxml b/src/Gui/FxmlFiles/Profiles.fxml
index 31d585b..6f40273 100644
--- a/src/Gui/FxmlFiles/Profiles.fxml
+++ b/src/Gui/FxmlFiles/Profiles.fxml
@@ -11,57 +11,54 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 0fd274d858ad69036d4dae82c1c57874222dadf0 Mon Sep 17 00:00:00 2001
From: Mostafa Talaat
Date: Wed, 29 May 2019 02:33:13 +0200
Subject: [PATCH 12/27] FXML: optimizations
Signed-off-by: Mostafa Talaat
---
src/Gui/Controller/MainMenu.java | 10 ++--
src/Gui/Controller/Options.java | 4 +-
src/Gui/FxmlFiles/Arcade.fxml | 6 +-
src/Gui/FxmlFiles/Classic.fxml | 6 +-
src/Gui/FxmlFiles/Credits.fxml | 13 ++---
src/Gui/FxmlFiles/Help.fxml | 15 +++--
src/Gui/FxmlFiles/Leaderboard.fxml | 21 +++----
src/Gui/FxmlFiles/MainMenu.fxml | 24 ++++----
src/Gui/FxmlFiles/Options.fxml | 94 +++++++++++++++---------------
src/Gui/FxmlFiles/Profiles.fxml | 16 ++---
10 files changed, 100 insertions(+), 109 deletions(-)
diff --git a/src/Gui/Controller/MainMenu.java b/src/Gui/Controller/MainMenu.java
index f0ccf4f..cfebb18 100644
--- a/src/Gui/Controller/MainMenu.java
+++ b/src/Gui/Controller/MainMenu.java
@@ -60,11 +60,11 @@ public class MainMenu implements Initializable {
@Override
public void initialize(URL url, ResourceBundle rb) {
- loadClassic.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 14));
- loadArcade.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 14));
- load.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 14));
- leaderboard.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 14));
- options.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 14));
+ loadClassic.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
+ loadArcade.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
+ load.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
+ leaderboard.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
+ options.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
RotateTransition transition = new RotateTransition(Duration.seconds(4), classic_img);
transition.setAutoReverse(true);
transition.setByAngle(360);
diff --git a/src/Gui/Controller/Options.java b/src/Gui/Controller/Options.java
index 25a0d70..3f2bf55 100644
--- a/src/Gui/Controller/Options.java
+++ b/src/Gui/Controller/Options.java
@@ -36,8 +36,8 @@ public class Options implements Initializable {
@Override
public void initialize(URL location, ResourceBundle resources) {
- help.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 20));
- credits.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 20));
+ help.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
+ credits.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 16));
text1.setFont(Font.loadFont(this.getClass().getResourceAsStream("/fonts/GangOfThree.ttf"), 29));
soundToggle.setSelected(controller.settings.getSounds().isMusic());
FXToggle.setSelected(controller.settings.getSounds().isFx());
diff --git a/src/Gui/FxmlFiles/Arcade.fxml b/src/Gui/FxmlFiles/Arcade.fxml
index 30afd54..404021c 100644
--- a/src/Gui/FxmlFiles/Arcade.fxml
+++ b/src/Gui/FxmlFiles/Arcade.fxml
@@ -6,11 +6,11 @@
-
@@ -36,7 +36,7 @@
preserveRatio="true">
-
diff --git a/src/Gui/FxmlFiles/Classic.fxml b/src/Gui/FxmlFiles/Classic.fxml
index cbfa49f..d4fe372 100644
--- a/src/Gui/FxmlFiles/Classic.fxml
+++ b/src/Gui/FxmlFiles/Classic.fxml
@@ -6,11 +6,11 @@
-
@@ -36,7 +36,7 @@
preserveRatio="true">
-
diff --git a/src/Gui/FxmlFiles/Credits.fxml b/src/Gui/FxmlFiles/Credits.fxml
index da20244..c539d85 100644
--- a/src/Gui/FxmlFiles/Credits.fxml
+++ b/src/Gui/FxmlFiles/Credits.fxml
@@ -1,13 +1,12 @@
-
-
+
@@ -15,12 +14,12 @@
-
-
+
-
+
diff --git a/src/Gui/FxmlFiles/Help.fxml b/src/Gui/FxmlFiles/Help.fxml
index f918cbe..552d400 100644
--- a/src/Gui/FxmlFiles/Help.fxml
+++ b/src/Gui/FxmlFiles/Help.fxml
@@ -5,8 +5,7 @@
@@ -14,8 +13,8 @@
-
-
+
@@ -77,15 +76,15 @@
-
+
-
+
diff --git a/src/Gui/FxmlFiles/Leaderboard.fxml b/src/Gui/FxmlFiles/Leaderboard.fxml
index c6521a1..61bbb1f 100644
--- a/src/Gui/FxmlFiles/Leaderboard.fxml
+++ b/src/Gui/FxmlFiles/Leaderboard.fxml
@@ -7,8 +7,7 @@
@@ -17,7 +16,7 @@
-
@@ -30,14 +29,12 @@
-
+
-
+
@@ -45,18 +42,16 @@
text="score"/>
-
+
-
+
-
+
diff --git a/src/Gui/FxmlFiles/MainMenu.fxml b/src/Gui/FxmlFiles/MainMenu.fxml
index c23a10c..8cb626a 100644
--- a/src/Gui/FxmlFiles/MainMenu.fxml
+++ b/src/Gui/FxmlFiles/MainMenu.fxml
@@ -7,8 +7,8 @@
+ minWidth="-Infinity" prefHeight="720.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8.0.172-ea"
+ fx:controller="Gui.Controller.MainMenu">
@@ -50,34 +50,32 @@
pickOnBounds="true" preserveRatio="true" style="-fx-rotate: 70;" visible="false">
-
+
-
-
+
-
+
-
+
diff --git a/src/Gui/FxmlFiles/Options.fxml b/src/Gui/FxmlFiles/Options.fxml
index 9014fa3..2f7e5dd 100644
--- a/src/Gui/FxmlFiles/Options.fxml
+++ b/src/Gui/FxmlFiles/Options.fxml
@@ -11,78 +11,78 @@
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/Gui/FxmlFiles/Profiles.fxml b/src/Gui/FxmlFiles/Profiles.fxml
index 6f40273..4acd0c0 100644
--- a/src/Gui/FxmlFiles/Profiles.fxml
+++ b/src/Gui/FxmlFiles/Profiles.fxml
@@ -18,37 +18,37 @@
-
-
-
-
+
-
-
-
-
+
From 6fc3071c1d9a36a74e318f67cdc1947177e51605 Mon Sep 17 00:00:00 2001
From: Mostafa Talaat
Date: Wed, 29 May 2019 02:46:32 +0200
Subject: [PATCH 13/27] Sounds: fixed a bug
Signed-off-by: Mostafa Talaat
---
src/Interfaces/Command/PlaySound.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Interfaces/Command/PlaySound.java b/src/Interfaces/Command/PlaySound.java
index 89dacde..64d58ea 100644
--- a/src/Interfaces/Command/PlaySound.java
+++ b/src/Interfaces/Command/PlaySound.java
@@ -84,7 +84,7 @@ public Clip play(String type, int duration) {
Clip clip = null;
try {
clip = AudioSystem.getClip();
- clip.open(AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("/" + filename)));
+ clip.open(AudioSystem.getAudioInputStream(this.getClass().getResource("/" + filename)));
clip.loop(duration);
if (type.equals("main theme")) {
From e5771da31b2826b550d09ef8a2c1638c6bdbafef Mon Sep 17 00:00:00 2001
From: Mostafa Talaat
Date: Wed, 29 May 2019 02:55:19 +0200
Subject: [PATCH 14/27] MainMenu: fixed the annoying swipe on icons problem
Signed-off-by: Mostafa Talaat
---
src/Gui/Controller/MainMenu.java | 8 +++-----
src/Gui/FxmlFiles/MainMenu.fxml | 8 ++++----
2 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/Gui/Controller/MainMenu.java b/src/Gui/Controller/MainMenu.java
index cfebb18..08fd6bd 100644
--- a/src/Gui/Controller/MainMenu.java
+++ b/src/Gui/Controller/MainMenu.java
@@ -108,9 +108,7 @@ public void initialize(URL url, ResourceBundle rb) {
transition10.setByX(-5);
-
-
- classic_img.setOnMouseExited((event) -> {
+ classic_img.setOnMouseDragged((event) -> {
if(!selected) {
selected = true;
classic_img.setVisible(false);
@@ -137,7 +135,7 @@ public void initialize(URL url, ResourceBundle rb) {
}
});
- arcade_img.setOnMouseExited((event) -> {
+ arcade_img.setOnMouseDragged((event) -> {
if(!selected) {
selected = true;
arcade_img.setVisible(false);
@@ -163,7 +161,7 @@ public void initialize(URL url, ResourceBundle rb) {
}
});
- exit_img.setOnMouseExited((event) -> {
+ exit_img.setOnMouseDragged((event) -> {
controller.settings.getSounds().getMainTheme().stop();
controller.playSound("exit", 0);
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
diff --git a/src/Gui/FxmlFiles/MainMenu.fxml b/src/Gui/FxmlFiles/MainMenu.fxml
index 8cb626a..3aaf8fd 100644
--- a/src/Gui/FxmlFiles/MainMenu.fxml
+++ b/src/Gui/FxmlFiles/MainMenu.fxml
@@ -17,21 +17,21 @@
pickOnBounds="true" preserveRatio="true" style="-fx-rotate: 50;" visible="false">
-
-
-
@@ -56,7 +56,7 @@
-
From cb403d523e96be2a5acd7ed7fe745cb8e388fec1 Mon Sep 17 00:00:00 2001
From: Mostafa Talaat
Date: Wed, 29 May 2019 17:52:48 +0200
Subject: [PATCH 15/27] Major refractor for most resources and fixed some
warnings/typos
Signed-off-by: Mostafa Talaat
---
.idea/Fruit Ninja Game.iml | 1 +
.../Gui/FxmlFiles/Classic.fxml | 85 ++++++++--------
.../Fruit Ninja Game/TodoAndNotes/todos | 18 +---
res/{-10_Bomb.png => -10Bomb.png} | Bin
...{-10_Bomb_Sliced.png => -10BombSliced.png} | Bin
res/{Arcade.png => ArcadeMode.png} | Bin
res/{back.png => BackButton.png} | Bin
res/{wallpaper1.jpg => Background1.jpg} | Bin
res/{wallpaper2.jpg => Background2.jpg} | Bin
res/{wallpaper3.png => Background3.png} | Bin
res/{wallpaper4.png => Background4.png} | Bin
res/{wallpaper5.png => Background5.png} | Bin
res/{wallpaper6.png => Background6.png} | Bin
res/{wallpaper7.png => Background7.png} | Bin
res/{wallpaper8.png => Background8.png} | Bin
res/{Banana-bottom.png => BananaBottom.png} | Bin
res/{SlicedBanana.png => BananaSliced.png} | Bin
res/{Banana-top.png => BananaTop.png} | Bin
res/{Classic.png => ClassicMode.png} | Bin
res/{dot_PNG40.png => Cursor1.png} | Bin
res/{Freeze_Banana.png => FreezeBanana.png} | Bin
...reezeBanana.png => FreezeBananaSliced.png} | Bin
res/Fruit-Ninja-304.png | Bin 171197 -> 0 bytes
res/{Green_Apple.png => GreenApple.png} | Bin
...cedGreenApple.png => GreenAppleSliced.png} | Bin
res/{load.png => LoadButton.png} | Bin
res/{Magic_Bean.png => MagicBean.png} | Bin
...ced_Magic_Bean.png => MagicBeanSliced.png} | Bin
...inWallpaper.jpg => MainMenuBackground.jpg} | Bin
res/{SlicedOrange.png => OrangeSliced.png} | Bin
res/{pause.png => PauseButton.png} | Bin
res/{reset.png => ResetButton.png} | Bin
res/{resume.png => ResumeButton.png} | Bin
res/{save.png => SaveButton.png} | Bin
...{halfWatermelon.png => WatermelonHalf.png} | Bin
...edWatermelon .png => WatermelonSliced.png} | Bin
res/newBackground.jpg | Bin 96281 -> 0 bytes
sounds/{Bomb-explode.wav => BombExplode.wav} | Bin
sounds/{Throw-bomb.wav => BombThrow.wav} | Bin
sounds/{Next-screen-button.wav => Button.wav} | Bin
sounds/{extra-life.wav => ExtraLife.wav} | Bin
...nus-Banana-Freeze.wav => FreezeBanana.wav} | Bin
sounds/{pome-slice-1.wav => FruitSlice.wav} | Bin
sounds/{Throw-fruit.wav => FruitThrow.wav} | Bin
sounds/{Game-over.wav => GameOver.wav} | Bin
sounds/{Game-start.wav => GameStart.wav} | Bin
sounds/{gank.wav => LoseLife.wav} | Bin
sounds/{menu-bomb.wav => MainMenuExit.wav} | Bin
sounds/{main-theme.wav => MainTheme.wav} | Bin
...ip-new-wallpaper.wav => NewBackground.wav} | Bin
.../{New-best-score.wav => NewHighScore.wav} | Bin
sounds/{Unpause.wav => Resume.wav} | Bin
sounds/{time-up.wav => TimesUp.wav} | Bin
...esManegement.java => FilesManagement.java} | 25 +++--
src/Gui/Controller/Arcade.java | 14 ++-
src/Gui/Controller/Classic.java | 8 +-
src/Gui/Controller/Controller.java | 42 ++++----
src/Gui/Controller/Credits.java | 2 +-
src/Gui/Controller/Help.java | 2 +-
src/Gui/Controller/Leaderboard.java | 2 +-
src/Gui/Controller/MainMenu.java | 45 ++++-----
src/Gui/Controller/Options.java | 2 +-
src/Gui/Controller/Profiles.java | 6 +-
src/Gui/FxmlFiles/Arcade.fxml | 10 +-
src/Gui/FxmlFiles/Classic.fxml | 10 +-
src/Gui/FxmlFiles/Credits.fxml | 4 +-
src/Gui/FxmlFiles/Help.fxml | 94 +++++++++---------
src/Gui/FxmlFiles/Leaderboard.fxml | 11 +-
src/Gui/FxmlFiles/MainMenu.fxml | 26 ++---
src/Gui/FxmlFiles/Options.fxml | 20 ++--
src/Gui/FxmlFiles/Profiles.fxml | 2 +-
src/Gui/Main.java | 4 -
src/Gui/SceneChanger.java | 4 +-
src/Interfaces/Command/PlaySound.java | 32 +++---
src/Interfaces/Command/ToggleMusic.java | 2 +-
src/Interfaces/Factory/ArcadeMode.java | 4 +-
src/Interfaces/Factory/ClassicMode.java | 4 +-
src/Interfaces/GameObject.java | 27 +----
src/Interfaces/Memento/CareTaker.java | 4 +-
src/Interfaces/Memento/Files.java | 20 ++--
src/Interfaces/Memento/Memento.java | 2 +-
src/Interfaces/Memento/Originator.java | 2 +-
src/Interfaces/Strategy/Strategy.java | 2 +-
src/Observer/Subject.java | 3 +-
src/Settings/Backgrounds.java | 22 ++--
src/Settings/Settings.java | 6 +-
src/Throwables/Bombs/DangerousBomb.java | 6 +-
src/Throwables/Bombs/FatalBomb.java | 2 +-
src/Throwables/Fruits/Apple.java | 4 +-
src/Throwables/Fruits/Banana.java | 2 +-
src/Throwables/Fruits/Fruit.java | 2 +-
src/Throwables/Fruits/Melon.java | 2 +-
src/Throwables/Fruits/Orange.java | 2 +-
.../Fruits/SpecialFruits/FreezeBanana.java | 6 +-
.../Fruits/SpecialFruits/MagicBeans.java | 6 +-
src/Throwables/Throwable.java | 27 +----
src/UsersDB/Player.java | 2 +-
src/UsersDB/UsersDB.java | 4 +-
98 files changed, 279 insertions(+), 353 deletions(-)
rename res/{-10_Bomb.png => -10Bomb.png} (100%)
rename res/{-10_Bomb_Sliced.png => -10BombSliced.png} (100%)
rename res/{Arcade.png => ArcadeMode.png} (100%)
rename res/{back.png => BackButton.png} (100%)
rename res/{wallpaper1.jpg => Background1.jpg} (100%)
rename res/{wallpaper2.jpg => Background2.jpg} (100%)
rename res/{wallpaper3.png => Background3.png} (100%)
rename res/{wallpaper4.png => Background4.png} (100%)
rename res/{wallpaper5.png => Background5.png} (100%)
rename res/{wallpaper6.png => Background6.png} (100%)
rename res/{wallpaper7.png => Background7.png} (100%)
rename res/{wallpaper8.png => Background8.png} (100%)
rename res/{Banana-bottom.png => BananaBottom.png} (100%)
rename res/{SlicedBanana.png => BananaSliced.png} (100%)
rename res/{Banana-top.png => BananaTop.png} (100%)
rename res/{Classic.png => ClassicMode.png} (100%)
rename res/{dot_PNG40.png => Cursor1.png} (100%)
rename res/{Freeze_Banana.png => FreezeBanana.png} (100%)
rename res/{SlicedFreezeBanana.png => FreezeBananaSliced.png} (100%)
delete mode 100644 res/Fruit-Ninja-304.png
rename res/{Green_Apple.png => GreenApple.png} (100%)
rename res/{SlicedGreenApple.png => GreenAppleSliced.png} (100%)
rename res/{load.png => LoadButton.png} (100%)
rename res/{Magic_Bean.png => MagicBean.png} (100%)
rename res/{Sliced_Magic_Bean.png => MagicBeanSliced.png} (100%)
rename res/{mainWallpaper.jpg => MainMenuBackground.jpg} (100%)
rename res/{SlicedOrange.png => OrangeSliced.png} (100%)
rename res/{pause.png => PauseButton.png} (100%)
rename res/{reset.png => ResetButton.png} (100%)
rename res/{resume.png => ResumeButton.png} (100%)
rename res/{save.png => SaveButton.png} (100%)
rename res/{halfWatermelon.png => WatermelonHalf.png} (100%)
rename res/{SlicedWatermelon .png => WatermelonSliced.png} (100%)
delete mode 100644 res/newBackground.jpg
rename sounds/{Bomb-explode.wav => BombExplode.wav} (100%)
rename sounds/{Throw-bomb.wav => BombThrow.wav} (100%)
rename sounds/{Next-screen-button.wav => Button.wav} (100%)
rename sounds/{extra-life.wav => ExtraLife.wav} (100%)
rename sounds/{Bonus-Banana-Freeze.wav => FreezeBanana.wav} (100%)
rename sounds/{pome-slice-1.wav => FruitSlice.wav} (100%)
rename sounds/{Throw-fruit.wav => FruitThrow.wav} (100%)
rename sounds/{Game-over.wav => GameOver.wav} (100%)
rename sounds/{Game-start.wav => GameStart.wav} (100%)
rename sounds/{gank.wav => LoseLife.wav} (100%)
rename sounds/{menu-bomb.wav => MainMenuExit.wav} (100%)
rename sounds/{main-theme.wav => MainTheme.wav} (100%)
rename sounds/{equip-new-wallpaper.wav => NewBackground.wav} (100%)
rename sounds/{New-best-score.wav => NewHighScore.wav} (100%)
rename sounds/{Unpause.wav => Resume.wav} (100%)
rename sounds/{time-up.wav => TimesUp.wav} (100%)
rename src/FilesManegement/{FilesManegement.java => FilesManagement.java} (93%)
diff --git a/.idea/Fruit Ninja Game.iml b/.idea/Fruit Ninja Game.iml
index 9da720f..648a8d5 100644
--- a/.idea/Fruit Ninja Game.iml
+++ b/.idea/Fruit Ninja Game.iml
@@ -5,6 +5,7 @@
+
diff --git a/out/production/Fruit Ninja Game/Gui/FxmlFiles/Classic.fxml b/out/production/Fruit Ninja Game/Gui/FxmlFiles/Classic.fxml
index bf0844c..cd53a2d 100644
--- a/out/production/Fruit Ninja Game/Gui/FxmlFiles/Classic.fxml
+++ b/out/production/Fruit Ninja Game/Gui/FxmlFiles/Classic.fxml
@@ -1,50 +1,43 @@
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/out/production/Fruit Ninja Game/TodoAndNotes/todos b/out/production/Fruit Ninja Game/TodoAndNotes/todos
index d38c0bd..10d7cd4 100644
--- a/out/production/Fruit Ninja Game/TodoAndNotes/todos
+++ b/out/production/Fruit Ninja Game/TodoAndNotes/todos
@@ -1,14 +1,4 @@
-boso b2a ya shbb here's what we are gonna do:
-in a nutshell i'll tell you how this game works
-there is a time iterator called animations that's like a while loop that refreshes every said time (1 sec for example)
-1-this iterator will call the getRandomThrowables and put them in the arrayList
-2- once they are in the array list then they will be drawn on the canvas and we will deal with the gui part insha'llah
-3- once the object leaves the screen it should be removed from the array list by searching in the list for objects with offscreen bool true and removing them
-
-Mosta & Islam: ive uploaded the interfaces start working on the controller and throwables
-
-swidan: finish the object's interface by completing the rendering methods and finish the canvas
-
-seif: download scene builder jFeniox lib and start working on the main menu ( preferably use animations and imageView) be crative fash5
-
-zaghloul: download scene builder jFeniox lib and start working on the sett ( preferably use animations and imageView) be crative fash5
\ No newline at end of file
+change command to a better impl
+create a settings file for each user
+add fx button
+add fx control
\ No newline at end of file
diff --git a/res/-10_Bomb.png b/res/-10Bomb.png
similarity index 100%
rename from res/-10_Bomb.png
rename to res/-10Bomb.png
diff --git a/res/-10_Bomb_Sliced.png b/res/-10BombSliced.png
similarity index 100%
rename from res/-10_Bomb_Sliced.png
rename to res/-10BombSliced.png
diff --git a/res/Arcade.png b/res/ArcadeMode.png
similarity index 100%
rename from res/Arcade.png
rename to res/ArcadeMode.png
diff --git a/res/back.png b/res/BackButton.png
similarity index 100%
rename from res/back.png
rename to res/BackButton.png
diff --git a/res/wallpaper1.jpg b/res/Background1.jpg
similarity index 100%
rename from res/wallpaper1.jpg
rename to res/Background1.jpg
diff --git a/res/wallpaper2.jpg b/res/Background2.jpg
similarity index 100%
rename from res/wallpaper2.jpg
rename to res/Background2.jpg
diff --git a/res/wallpaper3.png b/res/Background3.png
similarity index 100%
rename from res/wallpaper3.png
rename to res/Background3.png
diff --git a/res/wallpaper4.png b/res/Background4.png
similarity index 100%
rename from res/wallpaper4.png
rename to res/Background4.png
diff --git a/res/wallpaper5.png b/res/Background5.png
similarity index 100%
rename from res/wallpaper5.png
rename to res/Background5.png
diff --git a/res/wallpaper6.png b/res/Background6.png
similarity index 100%
rename from res/wallpaper6.png
rename to res/Background6.png
diff --git a/res/wallpaper7.png b/res/Background7.png
similarity index 100%
rename from res/wallpaper7.png
rename to res/Background7.png
diff --git a/res/wallpaper8.png b/res/Background8.png
similarity index 100%
rename from res/wallpaper8.png
rename to res/Background8.png
diff --git a/res/Banana-bottom.png b/res/BananaBottom.png
similarity index 100%
rename from res/Banana-bottom.png
rename to res/BananaBottom.png
diff --git a/res/SlicedBanana.png b/res/BananaSliced.png
similarity index 100%
rename from res/SlicedBanana.png
rename to res/BananaSliced.png
diff --git a/res/Banana-top.png b/res/BananaTop.png
similarity index 100%
rename from res/Banana-top.png
rename to res/BananaTop.png
diff --git a/res/Classic.png b/res/ClassicMode.png
similarity index 100%
rename from res/Classic.png
rename to res/ClassicMode.png
diff --git a/res/dot_PNG40.png b/res/Cursor1.png
similarity index 100%
rename from res/dot_PNG40.png
rename to res/Cursor1.png
diff --git a/res/Freeze_Banana.png b/res/FreezeBanana.png
similarity index 100%
rename from res/Freeze_Banana.png
rename to res/FreezeBanana.png
diff --git a/res/SlicedFreezeBanana.png b/res/FreezeBananaSliced.png
similarity index 100%
rename from res/SlicedFreezeBanana.png
rename to res/FreezeBananaSliced.png
diff --git a/res/Fruit-Ninja-304.png b/res/Fruit-Ninja-304.png
deleted file mode 100644
index ec8b27b4d6a1b9be25ea163fbaee09618758e1a9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 171197
zcmV)XK&`)tP)#^!+SFJL^MXQT;(JG=`
zweTfB(E^vw(*l>w(ZZHIp~WqKQmcw^(%Rx(wf0yStux+5>xy^R%EO&Cv(Ex8*=>Oq
zwsel>GykWW-~7k5pe2uM$;;+w>7I+VG`?nYou^q{L<<~pU8EUZDA)O#*=vE8;k#U`
zk8;;0Q-ibvg<;ysnmBDwTA-Hcy@dNL&+FPNyBMi_^yW*{S|+n#JEmtBLZ~4wNNnM;i3n;re9l
zSd&3}zr~=PXftW2I;`6HE}M3_J5`(R%h0a&+O_Ha47EJnpRQf$OV`fzrD~UZE!rEU#^>(yok^XxG=3YBx7k
zX*an|^k91(Rjc%HTdnr#B=;XL)9$V>)oxE#XkTov*Y1y1XgAiDY1h|RY8QtJw9BiD
zw2P|?wX*}++Nqv&?Q~C?cB-3Yx1FU;JJn^?&agb!o2H%ZN!8Bqc%0_8k9llPccpQ^
z3`$DA)??Q$^x3t`JT{kkoX&HbyhlFcRHsF~_f)$@`>56QNGDoTv?Gm1?YZJaZDVGX
z_Ck4rcDU83ebk(yeW;|+rz&C{(ctF?QZYqSfiOSCh?W!m{Q7236R<=VHqo3uagYt_Dcrb)ZP-}CWcwsx{V
zOZ%WBO?$u1svYmJX~$R|ZZT_zno_hk8d9|4C_gPT)K_cL1!xCrP1-TO_I{IDJJy(@
z9Thbgw0G+b+LoMHtWV&lQAf8`45q-`uo?329qy_b+~#S~+&`K;
zh?-HD(>yKJ*GVf0U9J^`E_9*AD@9|&4H7XeG2MCihwB4+6ms0?>PbDRs>VpgCdegz0I
zRE9dk0ZmY%?Wvd%h49=hIJ{Pcp)nQ2TOx-sWAq-Qv;Fdxfn*5`7@eFEdU_~z4Lq|QwhuF
zLeJN7_!)KlT>}PxyjdOt!V7PfMdM&~0uI*eaI7vCyYnKD=H~`Wpc_g;J@8z9EDks5
zai~5SM;i4Y!0Uq-xV5DgH@W@pwt76=UXKUc
z>Zp2ry0s4XHdW&8h6>!?RE{rqHRI-*Qd}Ir5$D5MDSpl#7dNi*a^kER^rz!=uN`Ol>^L`&feWkBC?1yqo7zq&
z@;x?wUK&2?u;N6!86WYuo@lr7IGgc)s|iP&^w?1tkKwd%?97Y8sg6v1)MCN$79Bon
zGk~DO$88o|@3vs7!-z|5dJtZ!ywIw{rDh#2bHAys6kP4GP-a|Vd3{wTt`Fzo%1|Dr
zh6-@D*Nk87uYz`>8~^&C3;+7C75_ZigulL91MN-f^%~$n75?^K3;y|01O9oU6+3wi
zRq12UYD-3kU61}83s&Z(VvyQUXvgh|Dt!NR6MnX}3HK)IadET?XGf}VZlsLIxCGaE
ze5XeXaDFHsr&bo=!~SfX=*z?hJbp)8Q*op-6Gy2-?df>0C6(LlsEPAOc1Qp!ll*Y7
z&WfWgDLB?-2H}Mx4JKZ%M!Z|A!+1s{dd#7yiQzRC><$79S%L0K1Q-Y|Wcsa8Ww!rv
z
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