Skip to content

Commit

Permalink
add temporary spawn fireball functions in forest game area and jsdocs
Browse files Browse the repository at this point in the history
  • Loading branch information
freshc0w committed Sep 9, 2023
1 parent 7587864 commit fc06185
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 8 deletions.
52 changes: 52 additions & 0 deletions source/core/src/main/com/csse3200/game/areas/ForestGameArea.java
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,9 @@ public void create() {

// Types of projectile
spawnEffectProjectile(new Vector2(0, 10), PhysicsLayer.HUMANS, towardsMobs, new Vector2(2f, 2f), ProjectileEffects.BURN, true);
spawnPierceFireBall(new Vector2(2, 3), PhysicsLayer.NPC, towardsMobs, new Vector2(2f, 2f));
spawnRicochetFireball(new Vector2(2, 4), PhysicsLayer.NPC, towardsMobs, new Vector2(2f, 2f));
spawnSplitFireWorksFireBall(new Vector2(2, 5), PhysicsLayer.NPC, towardsMobs, new Vector2(2f, 2f), 12);
// spawnProjectileTest(new Vector2(0, 8), PhysicsLayer.NPC, towardsMobs, new Vector2(2f, 2f));

spawnXenoGrunts();
Expand Down Expand Up @@ -421,6 +424,55 @@ private void spawnEffectProjectile(Vector2 position, short targetLayer, int dire
spawnEntity(Projectile);
}

/**
* Spawns a pierce fireball.
* Pierce fireball can go through targetlayers without disappearing but damage
* will still be applied.
*
* @param position The position of the Entity that's shooting the projectile.
* @param targetLayer The enemy layer of the "shooter".
* @param direction The direction the projectile should head towards.
* @param speed The speed of the projectiles.
*/
private void spawnPierceFireBall(Vector2 position, short targetLayer, int direction, Vector2 speed) {
Entity projectile = ProjectileFactory.createPierceFireBall(targetLayer, new Vector2(direction, position.y), speed);
projectile.setPosition(position);
spawnEntity(projectile);
}

/**
* Spawns a ricochet fireball
* Ricochet fireballs bounce off targets with a specified maximum count of 3
* Possible extensions: Make the bounce count flexible with a param.
*
* @param position The position of the Entity that's shooting the projectile.
* @param targetLayer The enemy layer of the "shooter".
* @param direction The direction the projectile should head towards.
* @param speed The speed of the projectiles.
*/
private void spawnRicochetFireball(Vector2 position, short targetLayer, int direction, Vector2 speed) {
// Bounce count set to 0.
Entity projectile = ProjectileFactory.createRicochetFireball(targetLayer, new Vector2(direction, position.y), speed, 0);
projectile.setPosition(position);
spawnEntity(projectile);
}

/**
* Spawns a split firework fireball.
* Splits into mini projectiles that spreads out after collision.
*
* @param position The position of the Entity that's shooting the projectile.
* @param targetLayer The enemy layer of the "shooter".
* @param direction The direction the projectile should head towards.
* @param speed The speed of the projectiles.
* @param amount The amount of projectiles appearing after collision.
*/
private void spawnSplitFireWorksFireBall(Vector2 position, short targetLayer, int direction, Vector2 speed, int amount) {
Entity projectile = ProjectileFactory.createSplitFireWorksFireball(targetLayer, new Vector2(direction, position.y), speed, amount);
projectile.setPosition(position);
spawnEntity(projectile);
}

private void spawnWeaponTower() {
GridPoint2 minPos = new GridPoint2(0, 0);
GridPoint2 maxPos = terrain.getMapBounds(0).sub(2, 2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void create() {
private void onCollisionEnd(Fixture me, Fixture other) {
if (hitBoxComponent.getFixture() != me
|| !PhysicsLayer.contains(targetLayer, other.getFilterData().categoryBits)
|| bounceCount >= 2) // BounceCount base case
|| bounceCount >= 3) // BounceCount base case of 3
return;

Entity projectile = ((BodyUserData) me.getBody().getUserData()).entity;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,11 @@ public void updateTowerState() {
} else {
owner.getEntity().getEvents().trigger(FIRING);
// this might be changed to an event which gets triggered everytime the tower enters the firing state
// Entity newProjectile = ProjectileFactory.createFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f));
// newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.75), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(newProjectile);
Entity newProjectile = ProjectileFactory.createFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f));
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.75), (float) (owner.getEntity().getPosition().y + 0.4));
ServiceLocator.getEntityService().register(newProjectile);

// * TEMPRORARYYYYYYYY
// * TEMPRORARYYYYYYYY PLS DON'T DELETE THIS
// PIERCE FIREBALL
// Entity pierceFireball = ProjectileFactory.createPierceFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f));
// pierceFireball.setPosition((float) (owner.getEntity().getPosition().x + 0), (float) (owner.getEntity().getPosition().y + 0.4));
Expand All @@ -129,10 +129,10 @@ public void updateTowerState() {
// ServiceLocator.getEntityService().register(ricochetProjectile);

// SPLIT FIREWORKS FIREBALLL
Entity splitFireWorksProjectile = ProjectileFactory.createSplitFireWorksFireball(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f), 16);
// Entity splitFireWorksProjectile = ProjectileFactory.createSplitFireWorksFireball(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f), 16);

splitFireWorksProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.75), (float) (owner.getEntity().getPosition().y + 0.4));
ServiceLocator.getEntityService().register(splitFireWorksProjectile);
// splitFireWorksProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.75), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(splitFireWorksProjectile);
}
}
case STOW -> {
Expand Down

0 comments on commit fc06185

Please sign in to comment.