Advertisement
alr3ady_tak3n

arma

Jun 24th, 2019
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.78 KB | None | 0 0
  1. package it.polimi.se2019.model.optionalEffectWeapon;
  2.  
  3. import it.polimi.se2019.controller.OptionalEffectWeaponManager;
  4. import it.polimi.se2019.controller.TurnManager;
  5. import it.polimi.se2019.controller.WeaponManagerStatus;
  6. import it.polimi.se2019.model.*;
  7. import it.polimi.se2019.view.VirtualView;
  8.  
  9. import java.util.ArrayList;
  10. import java.util.Arrays;
  11. import java.util.List;
  12.  
  13. public class GrenadeLauncher extends OptionalEffectWeapon {
  14.  
  15.     private Player targetPlayer;
  16.     private Player currentPlayer;
  17.     private ArrayList<Player> multipleTargets;
  18.     private ArrayList<Player> playerICanSee;
  19.     private Square firstTargetSquare;
  20.     private Square optionalTargetSquare;
  21.     private boolean optionalEffect;
  22.     private boolean beforeMovement;
  23.     private List<Player> damagedPlayers;
  24.  
  25.  
  26.  
  27.     public GrenadeLauncher(String weaponName, ArrayList<Cube> costToBuy, ArrayList<Cube> costToReload, boolean loadedWeapon, ArrayList<Cube> optionalCost, ArrayList<Cube> furtherOptionalCost) {
  28.         super("GRENADELAUNCHER", null, (new ArrayList<Cube>(Arrays.asList(new Cube(GameColor.RED)))), true, (new ArrayList<Cube>(Arrays.asList(new Cube(GameColor.RED)))), null);
  29.         this.damagedPlayers=new ArrayList<>();
  30.         this.multipleTargets=new ArrayList<>();
  31.  
  32.     }
  33.  
  34.     @Override
  35.     public void useWeapon() {
  36.         shoot(targetPlayer,currentPlayer,1); //then I can move one step
  37.         move(targetPlayer, Game.getInstance().getGamePlank().getPosition(firstTargetSquare));
  38.         damagedPlayers.add(targetPlayer);
  39.         if(optionalEffect){
  40.             for(int i=0;i<multipleTargets.size();i++){
  41.                 shoot(multipleTargets.get(i),currentPlayer,1);
  42.             }
  43.             damagedPlayers.addAll(multipleTargets);
  44.         }
  45.  
  46.         this.setLoadedWeapon(false);
  47.  
  48.     }
  49.  
  50.     @Override
  51.     public WeaponManagerStatus setSquare(Position position) {
  52.  
  53.         Square temp;
  54.         List<Square> exactlyOneMoveAway=Game.getInstance().getGamePlank().exactlyOneMoveAway(Game.getInstance().getGamePlank().getSquare(targetPlayer.getPosition()));
  55.         if(!optionalEffect){
  56.             if(firstTargetSquare==null){
  57.                 temp=Game.getInstance().getGamePlank().getSquare(position);
  58.                 if(exactlyOneMoveAway.contains(temp)) {
  59.                     firstTargetSquare = temp;
  60.                     if(!beforeMovement) {
  61.                         useWeapon();
  62.                         return WeaponManagerStatus.FINISHED;
  63.                     }
  64.  
  65.                     return WeaponManagerStatus.OPTIONALEFFECTCHOICE;
  66.                 }
  67.                 else{
  68.                     return WeaponManagerStatus.SQUARE;
  69.                 }
  70.             }
  71.         }
  72.  
  73.         if(optionalTargetSquare==null){
  74.             temp=Game.getInstance().getGamePlank().getSquare(position);
  75.             if(currentPlayer.squareICanSee().contains(temp)){
  76.                 optionalTargetSquare=temp;
  77.                 multipleTargets.addAll(optionalTargetSquare.getPlayerInSquare());
  78.                 if(beforeMovement){
  79.                     optionalEffect=false;
  80.                     beforeMovement=false;
  81.                     return WeaponManagerStatus.SQUARE;
  82.                 }
  83.             useWeapon();
  84.                 return WeaponManagerStatus.FINISHED;
  85.  
  86.             }
  87.  
  88.             else return WeaponManagerStatus.SQUARE;
  89.  
  90.         }
  91.  
  92.         return WeaponManagerStatus.UNEXPECTED;
  93.     }
  94.  
  95.  
  96.     @Override
  97.     public WeaponManagerStatus setTarget(Player player) {
  98.         playerICanSee=currentPlayer.playerICanSee(Game.getInstance().getGamePlank());
  99.         if(targetPlayer==null){
  100.             targetPlayer=player; // mainTarget set
  101.             if(!currentPlayer.canISeeYou(targetPlayer,playerICanSee)){
  102.                 return WeaponManagerStatus.TARGET; // mainTarget
  103.             }
  104.  
  105.             if (currentPlayer.canPay(getOptionalCost())) {
  106.                 if(firstTargetSquare==null){
  107.                     beforeMovement=true;
  108.                 }
  109.  
  110.                 return WeaponManagerStatus.OPTIONALEFFECTCHOICE; // optional effect before Movement
  111.             }
  112.  
  113.  
  114.             else return WeaponManagerStatus.SQUARE; //firstTargetSquare and optionalEffectChoice
  115.  
  116.         }
  117.  
  118.         return WeaponManagerStatus.UNEXPECTED;
  119.  
  120.  
  121.     }
  122.  
  123.  
  124.     @Override
  125.     public WeaponManagerStatus setEndOfStep() {
  126.         return null;
  127.     }
  128.  
  129.     @Override
  130.     public WeaponManagerStatus setFurtherOptional(boolean choice) {
  131.         return null;
  132.     }
  133.  
  134.     @Override
  135.     public WeaponManagerStatus payOptional() {
  136.         optionalEffect=true;
  137.         return WeaponManagerStatus.SQUARE;
  138.     }
  139.  
  140.  
  141.     @Override
  142.     public WeaponManagerStatus setOptional(boolean choice) {
  143.         if(choice){
  144.             return WeaponManagerStatus.REDCUBE;
  145.         }
  146.         if(beforeMovement){
  147.         return WeaponManagerStatus.SQUARE;
  148.         }
  149.         useWeapon();
  150.         return WeaponManagerStatus.FINISHED;
  151.     }
  152.  
  153.  
  154.     @Override
  155.     public WeaponManagerStatus setOptionalFirst(boolean choice) {
  156.         return null;
  157.     }
  158.  
  159.     @Override
  160.     public void handle(VirtualView virtualView, TurnManager turnManager) {
  161.         new OptionalEffectWeaponManager(this, virtualView, turnManager);
  162.     }
  163.  
  164.     @Override
  165.     public WeaponManagerStatus startingStatus(Player currentPlayer) {
  166.         this.currentPlayer=currentPlayer;
  167.         return WeaponManagerStatus.TARGET;
  168.     }
  169.  
  170.     @Override
  171.     public List<Player> resetWeapon() {
  172.         targetPlayer=null;
  173.         currentPlayer=null;
  174.         playerICanSee=null;
  175.         firstTargetSquare=null;
  176.         optionalTargetSquare=null;
  177.         multipleTargets=null;
  178.         optionalEffect=false;
  179.         beforeMovement=false;
  180.         List<Player> temp=new ArrayList<>(damagedPlayers);
  181.         damagedPlayers=null;
  182.         return temp;
  183.  
  184.     }
  185.  
  186.  
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement