/** * Run an update on the model. * * @param input Input variables to the model. * @param timeElapsed Time in seconds since last update. */ public void update(final ModelInput input, final float timeElapsed) { player.update(input, timeElapsed); for (AbstractBullet bullet : bulletManager.getBullets()) { bullet.doMovement(timeElapsed); } for (AbstractEnemy enemy : enemyManager.getEnemies()) { enemy.update(timeElapsed); } for (WeaponPickup pickup : pickupManager.getPickups()) { pickup.doMovement(timeElapsed); } enemySpawner.update(timeElapsed); checkCollisions(); spawnPickups(); enemyManager.clearDeadEnemies(); bulletManager.clearBulletsOffScreen(); pickupManager.clearPickupsOffScreen(); }
private void checkCollisions() { final List<IBullet> playerBullets = bulletManager.getBulletsFrom(PlayerID.PLAYER1); final List<IBullet> enemyBullets = bulletManager.getBulletsFrom(PlayerID.ENEMY); // Check player bullets against enemies for (IBullet b : playerBullets) { for (IEnemy e : enemyManager.getEnemies()) { if (b.collidesWith(e.getShip())) { e.getShip().receiveDamage(b.getDamage()); pcs.firePropertyChange(Constants.EVENT_ENEMY_DAMAGED, null, e.getShip()); b.markForRemoval(); } } } // Check enemy bullets against player if (!player.isInvincible()) { for (IBullet b : enemyBullets) { if (b.collidesWith(player.getShip())) { player.getShip().receiveDamage(b.getDamage()); pcs.firePropertyChange(Constants.EVENT_ENTITY_INVINCIBLE, null, player); b.markForRemoval(); break; } } } // Check Items against player for (int i = 0; i < pickupManager.getPickups().size(); i++) { WeaponPickup wp = pickupManager.getPickups().get(i); if (wp.collidesWith(player.getShip())) { player.giveWeapon(WeaponFactory.getNewWeapon(wp.getObjectName())); pickupManager.removePickup(i); i--; } } }