diff --git a/build.gradle b/build.gradle index 8a465fee..e505393e 100644 --- a/build.gradle +++ b/build.gradle @@ -61,3 +61,27 @@ project(":core") { } } + +project(":test") { + apply plugin: "java-library" + + sourceSets.test.java.srcDirs = ["src/"] + + + dependencies { + compile project(":desktop") + compile project(":core") + + api "com.badlogicgames.gdx:gdx:$gdxVersion" + api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" + + testCompile 'junit:junit:4.+' + testCompile "com.badlogicgames.gdx:gdx-backend-headless:$gdxVersion" + testCompile "com.badlogicgames.gdx:gdx:$gdxVersion" + testCompile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop" + testCompile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion" + testCompile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop" + + testImplementation "org.mockito:mockito-core:3.+" + } +} diff --git a/core/assets/sfx_and_music/explode.mp3 b/core/assets/sfx_and_music/explode.mp3 new file mode 100644 index 00000000..6bb444b0 Binary files /dev/null and b/core/assets/sfx_and_music/explode.mp3 differ diff --git a/core/src/com/mygdx/pirategame/HealthBar.java b/core/src/main/java/com/mygdx/pirategame/HealthBar.java similarity index 94% rename from core/src/com/mygdx/pirategame/HealthBar.java rename to core/src/main/java/com/mygdx/pirategame/HealthBar.java index 594b2984..488b4a94 100644 --- a/core/src/com/mygdx/pirategame/HealthBar.java +++ b/core/src/main/java/com/mygdx/pirategame/HealthBar.java @@ -1,10 +1,10 @@ -package com.mygdx.pirategame; +package main.java.com.mygdx.pirategame; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.graphics.g2d.Sprite; -import com.mygdx.pirategame.gameobjects.enemy.Enemy; +import main.java.com.mygdx.pirategame.gameobjects.enemy.Enemy; /** * Health Bar diff --git a/core/src/com/mygdx/pirategame/Hud.java b/core/src/main/java/com/mygdx/pirategame/Hud.java similarity index 98% rename from core/src/com/mygdx/pirategame/Hud.java rename to core/src/main/java/com/mygdx/pirategame/Hud.java index 3d398efa..48ca804c 100644 --- a/core/src/com/mygdx/pirategame/Hud.java +++ b/core/src/main/java/com/mygdx/pirategame/Hud.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame; +package main.java.com.mygdx.pirategame; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; @@ -9,7 +9,7 @@ import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.viewport.ScreenViewport; import com.badlogic.gdx.utils.viewport.Viewport; -import com.mygdx.pirategame.screen.SkillTreeScreen; +import main.java.com.mygdx.pirategame.screen.SkillTreeScreen; /** * Hud diff --git a/core/src/com/mygdx/pirategame/PirateGame.java b/core/src/main/java/com/mygdx/pirategame/PirateGame.java similarity index 98% rename from core/src/com/mygdx/pirategame/PirateGame.java rename to core/src/main/java/com/mygdx/pirategame/PirateGame.java index 3ef32dff..77d3f4bb 100644 --- a/core/src/com/mygdx/pirategame/PirateGame.java +++ b/core/src/main/java/com/mygdx/pirategame/PirateGame.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame; +package main.java.com.mygdx.pirategame; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; @@ -6,7 +6,7 @@ import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Vector2; -import com.mygdx.pirategame.screen.*; +import main.java.com.mygdx.pirategame.screen.*; /** diff --git a/core/src/com/mygdx/pirategame/audioControls.java b/core/src/main/java/com/mygdx/pirategame/audioControls.java similarity index 98% rename from core/src/com/mygdx/pirategame/audioControls.java rename to core/src/main/java/com/mygdx/pirategame/audioControls.java index d4f334be..8b382441 100644 --- a/core/src/com/mygdx/pirategame/audioControls.java +++ b/core/src/main/java/com/mygdx/pirategame/audioControls.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame; +package main.java.com.mygdx.pirategame; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; diff --git a/core/src/com/mygdx/pirategame/gameobjects/CannonFire.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/CannonFire.java similarity index 96% rename from core/src/com/mygdx/pirategame/gameobjects/CannonFire.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/CannonFire.java index 17f02276..227834cc 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/CannonFire.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/CannonFire.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.gameobjects; +package main.java.com.mygdx.pirategame.gameobjects; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Sound; @@ -7,8 +7,8 @@ import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.*; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Cannon Fire diff --git a/core/src/com/mygdx/pirategame/gameobjects/CollegeFire.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/CollegeFire.java similarity index 95% rename from core/src/com/mygdx/pirategame/gameobjects/CollegeFire.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/CollegeFire.java index b8ace463..00a2df6d 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/CollegeFire.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/CollegeFire.java @@ -1,11 +1,11 @@ -package com.mygdx.pirategame.gameobjects; +package main.java.com.mygdx.pirategame.gameobjects; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.physics.box2d.*; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; import java.util.Random; diff --git a/core/src/com/mygdx/pirategame/gameobjects/Player.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/Player.java similarity index 84% rename from core/src/com/mygdx/pirategame/gameobjects/Player.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/Player.java index 86f61612..87cc9b4a 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/Player.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/Player.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.gameobjects; +package main.java.com.mygdx.pirategame.gameobjects; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Sound; @@ -8,8 +8,8 @@ import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.physics.box2d.*; import com.badlogic.gdx.utils.Array; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Creates the class of the player. Everything that involves actions coming from the player boat @@ -21,7 +21,7 @@ public class Player extends Sprite { private Texture ship; public World world; public Body b2body; - private Sound breakSound; + private Sound breakSound, cannonballHitSound; private Array cannonBalls; /** @@ -41,8 +41,11 @@ public Player(GameScreen screen) { setRegion(ship); setOrigin(32 / PirateGame.PPM,55 / PirateGame.PPM); - // Sound effect for damage + // Sound effect for terrain collision breakSound = Gdx.audio.newSound(Gdx.files.internal("sfx_and_music/wood-bump.mp3")); + // Sound effect for cannonball hit + cannonballHitSound = Gdx.audio.newSound(Gdx.files.internal("sfx_and_music/ship-hit.wav")); + // Sets cannonball array cannonBalls = new Array(); @@ -72,12 +75,22 @@ public void update(float dt) { * Plays the break sound when a boat takes damage */ public void playBreakSound() { - // Plays damage sound effect + // Plays terrain collision sound effect if (screen.game.getPreferences().isEffectsEnabled()) { breakSound.play(screen.game.getPreferences().getEffectsVolume()); } } + /** + * Plays the explosion sound when a boat is hit by a cannonball + */ + public void playCannonballHitSound() { + // Plays cannonball hit sound effect + if (screen.game.getPreferences().isEffectsEnabled()) { + cannonballHitSound.play(screen.game.getPreferences().getEffectsVolume()); + } + } + /** * Defines all the parts of the player's physical model. Sets it up for collisons */ diff --git a/core/src/com/mygdx/pirategame/gameobjects/enemy/College.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/College.java similarity index 89% rename from core/src/com/mygdx/pirategame/gameobjects/enemy/College.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/College.java index 0cf72479..06da7e38 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/enemy/College.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/College.java @@ -1,15 +1,16 @@ -package com.mygdx.pirategame.gameobjects.enemy; +package main.java.com.mygdx.pirategame.gameobjects.enemy; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.physics.box2d.*; import com.badlogic.gdx.utils.Array; -import com.mygdx.pirategame.world.AvailableSpawn; -import com.mygdx.pirategame.gameobjects.CollegeFire; -import com.mygdx.pirategame.Hud; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.gameobjects.CollegeFire; +import main.java.com.mygdx.pirategame.world.AvailableSpawn; +import main.java.com.mygdx.pirategame.screen.GameScreen; import java.util.ArrayList; import java.util.Random; @@ -31,6 +32,7 @@ public class College extends Enemy { private Array cannonBalls; private AvailableSpawn noSpawn; public ArrayList fleet = new ArrayList<>(); + private Sound cannonballHitSound; /** * @@ -71,6 +73,9 @@ public College(GameScreen screen, String college, float x, float y, String flag, } fleet.add(new EnemyShip(screen, ranX, ranY, ship, college)); } + + // explosion sound effect + cannonballHitSound = Gdx.audio.newSound(Gdx.files.internal("sfx_and_music/explode.mp3")); } /** @@ -181,6 +186,11 @@ public void onContact() { Gdx.app.log("enemy", "collision"); health -= damage; bar.changeHealth(damage); + + // Plays explosion sound effect + if (screen.game.getPreferences().isEffectsEnabled()) { + cannonballHitSound.play(screen.game.getPreferences().getEffectsVolume()); + } } /** diff --git a/core/src/com/mygdx/pirategame/gameobjects/enemy/Enemy.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/Enemy.java similarity index 89% rename from core/src/com/mygdx/pirategame/gameobjects/enemy/Enemy.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/Enemy.java index d6626d68..446d34cf 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/enemy/Enemy.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/Enemy.java @@ -1,10 +1,10 @@ -package com.mygdx.pirategame.gameobjects.enemy; +package main.java.com.mygdx.pirategame.gameobjects.enemy; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.World; -import com.mygdx.pirategame.screen.GameScreen; -import com.mygdx.pirategame.HealthBar; +import main.java.com.mygdx.pirategame.HealthBar; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Enemy diff --git a/core/src/com/mygdx/pirategame/gameobjects/enemy/EnemyShip.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/EnemyShip.java similarity index 95% rename from core/src/com/mygdx/pirategame/gameobjects/enemy/EnemyShip.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/EnemyShip.java index 5cf51b2a..319e7047 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/enemy/EnemyShip.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/enemy/EnemyShip.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.gameobjects.enemy; +package main.java.com.mygdx.pirategame.gameobjects.enemy; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Sound; @@ -7,10 +7,9 @@ import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.CircleShape; import com.badlogic.gdx.physics.box2d.FixtureDef; -import com.mygdx.pirategame.gameobjects.enemy.Enemy; -import com.mygdx.pirategame.screen.GameScreen; -import com.mygdx.pirategame.Hud; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Enemy Ship diff --git a/core/src/com/mygdx/pirategame/gameobjects/entity/Coin.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/entity/Coin.java similarity index 94% rename from core/src/com/mygdx/pirategame/gameobjects/entity/Coin.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/entity/Coin.java index cfff4d47..8420f07c 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/entity/Coin.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/entity/Coin.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.gameobjects.entity; +package main.java.com.mygdx.pirategame.gameobjects.entity; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Sound; @@ -7,9 +7,9 @@ import com.badlogic.gdx.physics.box2d.BodyDef; import com.badlogic.gdx.physics.box2d.CircleShape; import com.badlogic.gdx.physics.box2d.FixtureDef; -import com.mygdx.pirategame.Hud; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Coin diff --git a/core/src/com/mygdx/pirategame/gameobjects/entity/Entity.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/entity/Entity.java similarity index 88% rename from core/src/com/mygdx/pirategame/gameobjects/entity/Entity.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/entity/Entity.java index bf7fe1b7..1ef44f32 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/entity/Entity.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/entity/Entity.java @@ -1,9 +1,9 @@ -package com.mygdx.pirategame.gameobjects.entity; +package main.java.com.mygdx.pirategame.gameobjects.entity; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.physics.box2d.Body; import com.badlogic.gdx.physics.box2d.World; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Entity diff --git a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls.java similarity index 81% rename from core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls.java index 490341b1..6e548b8e 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls.java @@ -1,9 +1,8 @@ -package com.mygdx.pirategame.gameobjects.tileobject; +package main.java.com.mygdx.pirategame.gameobjects.tileobject; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.Rectangle; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * College Walls (Alcuin) diff --git a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls2.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls2.java similarity index 81% rename from core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls2.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls2.java index fc24e7b7..e5959b86 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls2.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls2.java @@ -1,9 +1,8 @@ -package com.mygdx.pirategame.gameobjects.tileobject; +package main.java.com.mygdx.pirategame.gameobjects.tileobject; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.Rectangle; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * College Walls (Goodricke) diff --git a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls3.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls3.java similarity index 81% rename from core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls3.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls3.java index f8e7fed3..f4361657 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls3.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls3.java @@ -1,9 +1,8 @@ -package com.mygdx.pirategame.gameobjects.tileobject; +package main.java.com.mygdx.pirategame.gameobjects.tileobject; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.Rectangle; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * College Walls (Constantine) diff --git a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls4.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls4.java similarity index 81% rename from core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls4.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls4.java index 855427d6..fea0d9c0 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls4.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/CollegeWalls4.java @@ -1,9 +1,8 @@ -package com.mygdx.pirategame.gameobjects.tileobject; +package main.java.com.mygdx.pirategame.gameobjects.tileobject; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.Rectangle; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * College Walls (Anne Lister) diff --git a/core/src/com/mygdx/pirategame/gameobjects/tileobject/InteractiveTileObject.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/InteractiveTileObject.java similarity index 90% rename from core/src/com/mygdx/pirategame/gameobjects/tileobject/InteractiveTileObject.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/InteractiveTileObject.java index edd92bd9..05b0e4a7 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/tileobject/InteractiveTileObject.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/InteractiveTileObject.java @@ -1,10 +1,10 @@ -package com.mygdx.pirategame.gameobjects.tileobject; +package main.java.com.mygdx.pirategame.gameobjects.tileobject; import com.badlogic.gdx.maps.tiled.TiledMapTile; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.physics.box2d.*; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Interactive Tile Object diff --git a/core/src/com/mygdx/pirategame/gameobjects/tileobject/Islands.java b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/Islands.java similarity index 78% rename from core/src/com/mygdx/pirategame/gameobjects/tileobject/Islands.java rename to core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/Islands.java index 75bbc5e1..e8e14a60 100644 --- a/core/src/com/mygdx/pirategame/gameobjects/tileobject/Islands.java +++ b/core/src/main/java/com/mygdx/pirategame/gameobjects/tileobject/Islands.java @@ -1,10 +1,9 @@ -package com.mygdx.pirategame.gameobjects.tileobject; +package main.java.com.mygdx.pirategame.gameobjects.tileobject; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.math.Rectangle; -import com.mygdx.pirategame.Hud; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * Sets up the class for all the Islands. Deals with what happens on collision and its properties diff --git a/core/src/com/mygdx/pirategame/screen/DeathScreen.java b/core/src/main/java/com/mygdx/pirategame/screen/DeathScreen.java similarity index 97% rename from core/src/com/mygdx/pirategame/screen/DeathScreen.java rename to core/src/main/java/com/mygdx/pirategame/screen/DeathScreen.java index 11126e3a..19434642 100644 --- a/core/src/com/mygdx/pirategame/screen/DeathScreen.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/DeathScreen.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; @@ -13,7 +13,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.viewport.ScreenViewport; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.PirateGame; /** * Death Screen diff --git a/core/src/com/mygdx/pirategame/screen/GameScreen.java b/core/src/main/java/com/mygdx/pirategame/screen/GameScreen.java similarity index 96% rename from core/src/com/mygdx/pirategame/screen/GameScreen.java rename to core/src/main/java/com/mygdx/pirategame/screen/GameScreen.java index 0c4e021f..9ab2fd16 100644 --- a/core/src/com/mygdx/pirategame/screen/GameScreen.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/GameScreen.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; @@ -9,25 +9,29 @@ import com.badlogic.gdx.maps.tiled.TmxMapLoader; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.physics.box2d.*; +import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; +import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import com.badlogic.gdx.utils.viewport.*; -import com.mygdx.pirategame.*; -import com.mygdx.pirategame.gameobjects.Player; -import com.mygdx.pirategame.gameobjects.entity.Coin; -import com.mygdx.pirategame.gameobjects.enemy.College; -import com.mygdx.pirategame.gameobjects.enemy.EnemyShip; -import com.mygdx.pirategame.world.AvailableSpawn; -import com.mygdx.pirategame.world.WorldContactListener; -import com.mygdx.pirategame.world.WorldCreator; -import java.util.Random; +import com.badlogic.gdx.utils.viewport.FitViewport; +import com.badlogic.gdx.utils.viewport.ScreenViewport; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.gameobjects.Player; +import main.java.com.mygdx.pirategame.gameobjects.enemy.College; +import main.java.com.mygdx.pirategame.gameobjects.enemy.EnemyShip; +import main.java.com.mygdx.pirategame.gameobjects.entity.Coin; +import main.java.com.mygdx.pirategame.world.AvailableSpawn; +import main.java.com.mygdx.pirategame.world.WorldContactListener; +import main.java.com.mygdx.pirategame.world.WorldCreator; + import java.util.ArrayList; import java.util.HashMap; +import java.util.Random; /** diff --git a/core/src/com/mygdx/pirategame/screen/HelpScreen.java b/core/src/main/java/com/mygdx/pirategame/screen/HelpScreen.java similarity index 97% rename from core/src/com/mygdx/pirategame/screen/HelpScreen.java rename to core/src/main/java/com/mygdx/pirategame/screen/HelpScreen.java index 10f847be..1d44631b 100644 --- a/core/src/com/mygdx/pirategame/screen/HelpScreen.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/HelpScreen.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; @@ -13,7 +13,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.viewport.ScreenViewport; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.PirateGame; /** * Screen with instructions for the user diff --git a/core/src/com/mygdx/pirategame/screen/MainMenu.java b/core/src/main/java/com/mygdx/pirategame/screen/MainMenu.java similarity index 96% rename from core/src/com/mygdx/pirategame/screen/MainMenu.java rename to core/src/main/java/com/mygdx/pirategame/screen/MainMenu.java index f33f51c4..7251969e 100644 --- a/core/src/com/mygdx/pirategame/screen/MainMenu.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/MainMenu.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; @@ -10,8 +10,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.utils.viewport.ScreenViewport; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.screen.OptionsScreen; +import main.java.com.mygdx.pirategame.PirateGame; /** * Main menu is the first screen the player sees. Allows them to navigate where they want to go to diff --git a/core/src/com/mygdx/pirategame/screen/OptionsScreen.java b/core/src/main/java/com/mygdx/pirategame/screen/OptionsScreen.java similarity index 97% rename from core/src/com/mygdx/pirategame/screen/OptionsScreen.java rename to core/src/main/java/com/mygdx/pirategame/screen/OptionsScreen.java index 5aee0f96..8e67ac51 100644 --- a/core/src/com/mygdx/pirategame/screen/OptionsScreen.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/OptionsScreen.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; @@ -10,7 +10,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.*; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.viewport.ScreenViewport; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.PirateGame; /** * Provides a UI for the user to interact with the audioControls interface @@ -19,7 +19,7 @@ */ public class OptionsScreen implements Screen { - private final com.mygdx.pirategame.PirateGame PirateGame; + private final main.java.com.mygdx.pirategame.PirateGame PirateGame; private final Screen parent; private final Stage stage; diff --git a/core/src/com/mygdx/pirategame/screen/SkillTreeScreen.java b/core/src/main/java/com/mygdx/pirategame/screen/SkillTreeScreen.java similarity index 97% rename from core/src/com/mygdx/pirategame/screen/SkillTreeScreen.java rename to core/src/main/java/com/mygdx/pirategame/screen/SkillTreeScreen.java index 3b144f2a..dac7326d 100644 --- a/core/src/com/mygdx/pirategame/screen/SkillTreeScreen.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/SkillTreeScreen.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; @@ -11,8 +11,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.utils.viewport.ScreenViewport; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import com.mygdx.pirategame.Hud; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; import java.util.ArrayList; import java.util.List; diff --git a/core/src/com/mygdx/pirategame/screen/VictoryScreen.java b/core/src/main/java/com/mygdx/pirategame/screen/VictoryScreen.java similarity index 97% rename from core/src/com/mygdx/pirategame/screen/VictoryScreen.java rename to core/src/main/java/com/mygdx/pirategame/screen/VictoryScreen.java index f91c5a1c..8fcb4014 100644 --- a/core/src/com/mygdx/pirategame/screen/VictoryScreen.java +++ b/core/src/main/java/com/mygdx/pirategame/screen/VictoryScreen.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.screen; +package main.java.com.mygdx.pirategame.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; @@ -13,7 +13,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.viewport.ScreenViewport; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.PirateGame; /** * The type for the victory screen diff --git a/core/src/com/mygdx/pirategame/world/AvailableSpawn.java b/core/src/main/java/com/mygdx/pirategame/world/AvailableSpawn.java similarity index 98% rename from core/src/com/mygdx/pirategame/world/AvailableSpawn.java rename to core/src/main/java/com/mygdx/pirategame/world/AvailableSpawn.java index 434d4eb9..de109a2c 100644 --- a/core/src/com/mygdx/pirategame/world/AvailableSpawn.java +++ b/core/src/main/java/com/mygdx/pirategame/world/AvailableSpawn.java @@ -1,4 +1,4 @@ -package com.mygdx.pirategame.world; +package main.java.com.mygdx.pirategame.world; import java.util.ArrayList; import java.util.HashMap; diff --git a/core/src/com/mygdx/pirategame/world/WorldContactListener.java b/core/src/main/java/com/mygdx/pirategame/world/WorldContactListener.java similarity index 87% rename from core/src/com/mygdx/pirategame/world/WorldContactListener.java rename to core/src/main/java/com/mygdx/pirategame/world/WorldContactListener.java index da3b1ea4..8b35940c 100644 --- a/core/src/com/mygdx/pirategame/world/WorldContactListener.java +++ b/core/src/main/java/com/mygdx/pirategame/world/WorldContactListener.java @@ -1,15 +1,15 @@ -package com.mygdx.pirategame.world; +package main.java.com.mygdx.pirategame.world; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.physics.box2d.*; -import com.mygdx.pirategame.Hud; -import com.mygdx.pirategame.PirateGame; -import com.mygdx.pirategame.gameobjects.CannonFire; -import com.mygdx.pirategame.gameobjects.CollegeFire; -import com.mygdx.pirategame.gameobjects.Player; -import com.mygdx.pirategame.gameobjects.enemy.Enemy; -import com.mygdx.pirategame.gameobjects.entity.Entity; -import com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; +import main.java.com.mygdx.pirategame.Hud; +import main.java.com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.gameobjects.CannonFire; +import main.java.com.mygdx.pirategame.gameobjects.CollegeFire; +import main.java.com.mygdx.pirategame.gameobjects.Player; +import main.java.com.mygdx.pirategame.gameobjects.enemy.Enemy; +import main.java.com.mygdx.pirategame.gameobjects.entity.Entity; +import main.java.com.mygdx.pirategame.gameobjects.tileobject.InteractiveTileObject; /** * Tells the game what to do when certain entities come into contact with each other @@ -25,7 +25,7 @@ public class WorldContactListener implements ContactListener { */ @Override public void beginContact(Contact contact) { - // Finds contact + // Finds contact, fixA and fixB are the two entities causing collision Fixture fixA = contact.getFixtureA(); Fixture fixB = contact.getFixtureB(); @@ -86,6 +86,7 @@ public void beginContact(Contact contact) { ((CannonFire) fixA.getUserData()).setToDestroy(); } break; + // Player collision with college cannonball case PirateGame.COLLEGEFIRE_BIT | PirateGame.PLAYER_BIT: if(fixA.getFilterData().categoryBits == PirateGame.COLLEGEFIRE_BIT) { Hud.changeHealth(-15); @@ -94,6 +95,8 @@ public void beginContact(Contact contact) { else { Hud.changeHealth(-15); ((CollegeFire) fixB.getUserData()).setToDestroy(); + ((Player) fixA.getUserData()).playCannonballHitSound(); + } break; } diff --git a/core/src/com/mygdx/pirategame/world/WorldCreator.java b/core/src/main/java/com/mygdx/pirategame/world/WorldCreator.java similarity index 91% rename from core/src/com/mygdx/pirategame/world/WorldCreator.java rename to core/src/main/java/com/mygdx/pirategame/world/WorldCreator.java index dc2ebb7a..d2c959c8 100644 --- a/core/src/com/mygdx/pirategame/world/WorldCreator.java +++ b/core/src/main/java/com/mygdx/pirategame/world/WorldCreator.java @@ -1,11 +1,11 @@ -package com.mygdx.pirategame.world; +package main.java.com.mygdx.pirategame.world; import com.badlogic.gdx.maps.MapObject; import com.badlogic.gdx.maps.objects.RectangleMapObject; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.math.Rectangle; -import com.mygdx.pirategame.gameobjects.tileobject.*; -import com.mygdx.pirategame.screen.GameScreen; +import main.java.com.mygdx.pirategame.gameobjects.tileobject.*; +import main.java.com.mygdx.pirategame.screen.GameScreen; /** * This is the class where all boundaries and collisions are created for the map. @@ -36,7 +36,7 @@ public WorldCreator(GameScreen screen) { Rectangle rect = ((RectangleMapObject) object).getRectangle(); new CollegeWalls2(screen, rect); - } + } for(MapObject object : map.getLayers().get(7).getObjects().getByType(RectangleMapObject.class)) { Rectangle rect = ((RectangleMapObject) object).getRectangle(); diff --git a/core/src/test/java/com/mygdx/pirategame/PirateGameTest.java b/core/src/test/java/com/mygdx/pirategame/PirateGameTest.java new file mode 100644 index 00000000..e9c4780d --- /dev/null +++ b/core/src/test/java/com/mygdx/pirategame/PirateGameTest.java @@ -0,0 +1,97 @@ +package com.mygdx.pirategame; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.backends.headless.HeadlessApplication; +import com.badlogic.gdx.backends.headless.HeadlessApplicationConfiguration; +import org.junit.runner.notification.RunNotifier; +import org.junit.runners.BlockJUnit4ClassRunner; +import org.junit.runners.model.FrameworkMethod; +import org.junit.runners.model.InitializationError; + +import java.util.HashMap; +import java.util.Map; + +public class PirateGameTest extends Block4JunitClassRunner implements ApplicationListener { + + private final Map test_instance = new HashMap(); + + /** + * @param klass refers to the class of the test being tested if @RunWith is used + * + * @throws InitializationError if the file isn't able to run + */ + public PirateGameTest(Class klass) throws InitializationError { + super(klass); + + /* + * this refers to the test + * conf defines how many updates per second (60 by default) + * and the maximum number of threads for requests + */ + HeadlessApplicationConfiguration conf = new HeadlessApplicationConfiguration(); + new HeadlessApplication(this, conf); + } + + @Override + public void create() { + + } + + @Override + public void resize(int width, int height) { + + } + + @Override + public void render() { + /** + * Runs the function runChild for each test + * val.getKey() represents the specific test + * val.getValue() represents whether the specific test has passed or not + */ + for (Map.Entry val : test_instance.entrySet()) { + super.runChild(val.getKey(), val.getValue()); + } + // Clears the HashMap + test_instance.clear(); + } + + @Override + public void pause() { + + } + + @Override + public void resume() { + + } + + @Override + public void dispose() { + + } + + /** + * @param method refers to the test + * @param notifier refers to whether it passes the tests or not + */ + @Override + protected void runChild(FrameworkMethod method, RunNotifier notifier) { + + /* + * the synchronized function prevents thread interference + * Adds every instance being tested to the HashMap + */ + synchronized(test_instance){ + test_instance.put(method, notifier); + } + + //wait until that test is invoked and continues only if the execution was successful + try { + Thread.sleep(100); + } catch(InterruptedException e) { + e.printStackTrace(); + } + + } +} diff --git a/desktop/src/com/mygdx/pirategame/desktop/DesktopLauncher.java b/desktop/src/com/mygdx/pirategame/desktop/DesktopLauncher.java index cae6ecf0..99218796 100644 --- a/desktop/src/com/mygdx/pirategame/desktop/DesktopLauncher.java +++ b/desktop/src/com/mygdx/pirategame/desktop/DesktopLauncher.java @@ -2,7 +2,7 @@ import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; -import com.mygdx.pirategame.PirateGame; +import main.java.com.mygdx.pirategame.PirateGame; public class DesktopLauncher { public static void main (String[] arg) { diff --git a/settings.gradle b/settings.gradle index 74fc6522..a51bf4af 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include 'desktop', 'core' \ No newline at end of file +include 'desktop', 'core', 'test' \ No newline at end of file