Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package viceCity.models.neighbourhood;
- import viceCity.models.guns.Gun;
- import viceCity.models.players.Player;
- import viceCity.repositories.interfaces.Repository;
- import java.util.Collection;
- import java.util.Iterator;
- public class GangNeighbourhood implements Neighbourhood {
- @Override
- public void action(Player mainPlayer, Collection<Player> civilPlayers) {
- if (!mainPlayerShooting(mainPlayer, civilPlayers)) {
- } else {
- civilPlayersShooting(mainPlayer, civilPlayers);
- }
- }
- private void civilPlayersShooting(Player mainPlayer, Collection<Player> civilPlayers) {
- Iterator<Player> civilPlayersIterator = civilPlayers.iterator();
- Player civilPlayer;
- if (civilPlayersIterator.hasNext()) {
- civilPlayer = civilPlayersIterator.next();
- } else {
- return;
- }
- civilPlayer = getLivePlayer(civilPlayersIterator, civilPlayer);
- Repository<Gun> gunRepository;
- Gun gun = null;
- Iterator<Gun> guns = null;
- while (true) {
- if (civilPlayer != null) {
- gunRepository = civilPlayer.getGunRepository();
- } else {
- return;
- }
- if (gunRepository != null) {
- guns = gunRepository.getModels().iterator();
- } else {
- break;
- }
- if (guns.hasNext()) {
- gun = guns.next();
- break;
- } else {
- if (civilPlayersIterator.hasNext()){
- civilPlayer = civilPlayersIterator.next();
- }else {
- return;
- }
- }
- }
- while (true) {
- if (!mainPlayer.isAlive()) {
- return;
- }
- assert gun != null;
- mainPlayer.takeLifePoints(gun.fire());
- if (!gun.canFire()) {
- if (guns.hasNext()) {
- gun = guns.next();
- } else {
- if (civilPlayersIterator.hasNext()){
- civilPlayer = civilPlayersIterator.next();
- gunRepository = civilPlayer.getGunRepository();
- guns = gunRepository.getModels().iterator();
- if (gunRepository.getModels().isEmpty()){
- while (gunRepository.getModels().isEmpty()){
- if (!civilPlayersIterator.hasNext()){
- return;
- }
- civilPlayer = civilPlayersIterator.next();
- gunRepository = civilPlayer.getGunRepository();
- guns = gunRepository.getModels().iterator();
- }
- }
- while (guns.hasNext()){
- gun = guns.next();
- if (gun.canFire()){
- break;
- }
- }
- }
- }
- }
- }
- }
- private Player getLivePlayer(Iterator<Player> civilPlayersIterator, Player civilPlayer) {
- while (!civilPlayer.isAlive()) {
- if (civilPlayersIterator.hasNext()) {
- civilPlayer = civilPlayersIterator.next();
- } else {
- break;
- }
- }
- return civilPlayer;
- }
- private boolean mainPlayerShooting(Player mainPlayer, Collection<Player> civilPlayers) {
- boolean playerIsNotMoreGun = false;
- Iterator<Player> civilPlayerIterator = civilPlayers.iterator();
- Player player;
- if (civilPlayerIterator.hasNext()) {
- player = civilPlayerIterator.next();
- } else {
- return false;
- }
- Iterator<Gun> mainPlayerGunIterator = mainPlayer.getGunRepository().getModels().iterator();
- Gun mainPlayerGun;
- if (mainPlayerGunIterator.hasNext()) {
- mainPlayerGun = mainPlayerGunIterator.next();
- } else {
- return true;
- }
- while (player.isAlive()) {
- player.takeLifePoints(mainPlayerGun.fire());
- if (!player.isAlive()) {
- if (civilPlayerIterator.hasNext()) {
- player = civilPlayerIterator.next();
- } else {
- return false;
- }
- }
- if (!mainPlayerGun.canFire()) {
- if (mainPlayerGunIterator.hasNext()) {
- mainPlayerGun = mainPlayerGunIterator.next();
- } else {
- playerIsNotMoreGun = true;
- break;
- }
- }
- }
- return playerIsNotMoreGun;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement