Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.94 KB | None | 0 0
  1. package viceCity.models.neighbourhood;
  2.  
  3. import viceCity.models.guns.Gun;
  4. import viceCity.models.players.Player;
  5. import viceCity.repositories.interfaces.Repository;
  6.  
  7. import java.util.Collection;
  8. import java.util.Iterator;
  9.  
  10. public class GangNeighbourhood implements Neighbourhood {
  11.  
  12.     @Override
  13.     public void action(Player mainPlayer, Collection<Player> civilPlayers) {
  14.  
  15.         if (!mainPlayerShooting(mainPlayer, civilPlayers)) {
  16.         } else {
  17.             civilPlayersShooting(mainPlayer, civilPlayers);
  18.         }
  19.  
  20.     }
  21.  
  22.     private void civilPlayersShooting(Player mainPlayer, Collection<Player> civilPlayers) {
  23.  
  24.         Iterator<Player> civilPlayersIterator = civilPlayers.iterator();
  25.  
  26.         Player civilPlayer;
  27.  
  28.         if (civilPlayersIterator.hasNext()) {
  29.             civilPlayer = civilPlayersIterator.next();
  30.         } else {
  31.             return;
  32.         }
  33.  
  34.         civilPlayer = getLivePlayer(civilPlayersIterator, civilPlayer);
  35.  
  36.  
  37.         Repository<Gun> gunRepository;
  38.  
  39.         Gun gun = null;
  40.  
  41.         Iterator<Gun> guns = null;
  42.  
  43.         while (true) {
  44.  
  45.             if (civilPlayer != null) {
  46.                 gunRepository = civilPlayer.getGunRepository();
  47.             } else {
  48.                 return;
  49.             }
  50.  
  51.             if (gunRepository != null) {
  52.                 guns = gunRepository.getModels().iterator();
  53.             } else {
  54.                 break;
  55.             }
  56.             if (guns.hasNext()) {
  57.                 gun = guns.next();
  58.                 break;
  59.             } else {
  60.                 if (civilPlayersIterator.hasNext()){
  61.                     civilPlayer = civilPlayersIterator.next();
  62.                 }else {
  63.                     return;
  64.                 }
  65.             }
  66.         }
  67.  
  68.         while (true) {
  69.  
  70.             if (!mainPlayer.isAlive()) {
  71.                 return;
  72.             }
  73.             assert gun != null;
  74.             mainPlayer.takeLifePoints(gun.fire());
  75.  
  76.  
  77.             if (!gun.canFire()) {
  78.                 if (guns.hasNext()) {
  79.                     gun = guns.next();
  80.                 } else {
  81.                     if (civilPlayersIterator.hasNext()){
  82.  
  83.                         civilPlayer = civilPlayersIterator.next();
  84.                         gunRepository = civilPlayer.getGunRepository();
  85.                         guns = gunRepository.getModels().iterator();
  86.  
  87.                         if (gunRepository.getModels().isEmpty()){
  88.  
  89.                             while (gunRepository.getModels().isEmpty()){
  90.                                 if (!civilPlayersIterator.hasNext()){
  91.                                  return;
  92.                                 }
  93.                                 civilPlayer = civilPlayersIterator.next();
  94.                                 gunRepository = civilPlayer.getGunRepository();
  95.                                 guns = gunRepository.getModels().iterator();
  96.                             }
  97.                         }
  98.  
  99.                         while (guns.hasNext()){
  100.                             gun = guns.next();
  101.                             if (gun.canFire()){
  102.                                 break;
  103.                             }
  104.                         }
  105.  
  106.                     }
  107.                 }
  108.             }
  109.  
  110.         }
  111.     }
  112.  
  113.     private Player getLivePlayer(Iterator<Player> civilPlayersIterator, Player civilPlayer) {
  114.  
  115.         while (!civilPlayer.isAlive()) {
  116.  
  117.             if (civilPlayersIterator.hasNext()) {
  118.                 civilPlayer = civilPlayersIterator.next();
  119.             } else {
  120.                 break;
  121.             }
  122.  
  123.         }
  124.         return civilPlayer;
  125.     }
  126.  
  127.     private boolean mainPlayerShooting(Player mainPlayer, Collection<Player> civilPlayers) {
  128.  
  129.         boolean playerIsNotMoreGun = false;
  130.  
  131.         Iterator<Player> civilPlayerIterator = civilPlayers.iterator();
  132.         Player player;
  133.  
  134.         if (civilPlayerIterator.hasNext()) {
  135.             player = civilPlayerIterator.next();
  136.         } else {
  137.             return false;
  138.         }
  139.  
  140.         Iterator<Gun> mainPlayerGunIterator = mainPlayer.getGunRepository().getModels().iterator();
  141.         Gun mainPlayerGun;
  142.  
  143.         if (mainPlayerGunIterator.hasNext()) {
  144.             mainPlayerGun = mainPlayerGunIterator.next();
  145.         } else {
  146.             return true;
  147.         }
  148.  
  149.         while (player.isAlive()) {
  150.             player.takeLifePoints(mainPlayerGun.fire());
  151.             if (!player.isAlive()) {
  152.                 if (civilPlayerIterator.hasNext()) {
  153.                     player = civilPlayerIterator.next();
  154.                 } else {
  155.                     return false;
  156.                 }
  157.             }
  158.             if (!mainPlayerGun.canFire()) {
  159.                 if (mainPlayerGunIterator.hasNext()) {
  160.                     mainPlayerGun = mainPlayerGunIterator.next();
  161.                 } else {
  162.                     playerIsNotMoreGun = true;
  163.                     break;
  164.                 }
  165.             }
  166.         }
  167.         return playerIsNotMoreGun;
  168.     }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement