alr3ady_tak3n

lockrifle

Jun 18th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.70 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 LockRifle extends OptionalEffectWeapon {
  14.  
  15.     private Player targetPlayer;
  16.     private Player secondPossibleTarget;
  17.     private Player currentPlayer;
  18.     private boolean optionalEffect;
  19.     private ArrayList<Player> playerICanSee;
  20.     private List<Player> damagedPlayers;
  21.  
  22.     public LockRifle() {
  23.         super("LOCKRIFLE", (new ArrayList<Cube>(Arrays.asList(new Cube(Color.BLUE)))), (new ArrayList<Cube>(Arrays.asList(new Cube(Color.BLUE), new Cube(Color.BLUE)))), true, (new ArrayList<Cube>(Arrays.asList(new Cube(Color.RED)))), null);
  24.         playerICanSee=currentPlayer.playerICanSee(Game.getInstance().getGamePlank());
  25.         damagedPlayers=new ArrayList<>();
  26.     }
  27.  
  28.     @Override
  29.     public void useWeapon() {
  30.         shoot(targetPlayer,currentPlayer,2);
  31.         mark(targetPlayer,currentPlayer,1);
  32.         damagedPlayers.add(targetPlayer);
  33.  
  34.         if(optionalEffect){
  35.             mark(secondPossibleTarget,currentPlayer,1);
  36.             damagedPlayers.add(secondPossibleTarget);
  37.         }
  38.  
  39.         this.setLoadedWeapon(false);
  40.     }
  41.  
  42.     @Override
  43.     public void handle(VirtualView virtualView, TurnManager turnManager) {
  44.         new OptionalEffectWeaponManager(this,virtualView,turnManager);
  45.     }
  46.  
  47.     @Override
  48.     public WeaponManagerStatus startingStatus(Player currentPlayer) {
  49.         this.currentPlayer=currentPlayer;
  50.         return WeaponManagerStatus.TARGET;
  51.     }
  52.  
  53.     @Override
  54.     public WeaponManagerStatus setSquare(Position position) {
  55.         throw new UnsupportedOperationException("invalid operation\n");
  56.     }
  57.  
  58.     @Override
  59.     public WeaponManagerStatus setTarget(Player player) {
  60.  
  61.         if(!currentPlayer.canISeeYou(targetPlayer,playerICanSee)){
  62.             return WeaponManagerStatus.TARGET;
  63.         }
  64.  
  65.         if(targetPlayer==null) {
  66.             targetPlayer = player;
  67.             if(currentPlayer.canPay(getOptionalCost())) {
  68.                 return WeaponManagerStatus.OPTIONALEFFECTCHOICE; //choice of payment method
  69.             }
  70.             useWeapon();
  71.             return WeaponManagerStatus.FINISHED;
  72.         }
  73.  
  74.         if(optionalEffect){
  75.             if(secondPossibleTarget==null){
  76.                 if(player!=targetPlayer) {
  77.                     secondPossibleTarget=player;
  78.                     useWeapon();
  79.                     return WeaponManagerStatus.FINISHED;
  80.                 }
  81.                 return WeaponManagerStatus.TARGET;
  82.             }
  83.         }
  84.  
  85.         return WeaponManagerStatus.UNEXPECTED;
  86.     }
  87.  
  88.     @Override
  89.     public WeaponManagerStatus setFurtherOptional(boolean choice) {
  90.  
  91.         throw new UnsupportedOperationException("invalid operation\n");
  92.     }
  93.  
  94.     @Override
  95.     public WeaponManagerStatus setOptional(boolean choice) {
  96.  
  97.         if(choice){
  98.             return WeaponManagerStatus.REDCUBE;
  99.         }
  100.         useWeapon();
  101.         return WeaponManagerStatus.FINISHED;
  102.  
  103.     }
  104.  
  105.     @Override
  106.     public WeaponManagerStatus payOptional() {
  107.         optionalEffect=true;
  108.         return WeaponManagerStatus.TARGET;
  109.     }
  110.  
  111.     @Override
  112.     public List<Player> resetWeapon() {
  113.         optionalEffect=false;
  114.         targetPlayer=null;
  115.         secondPossibleTarget=null;
  116.         currentPlayer=null;
  117.         ArrayList<Player> temp=new ArrayList<>(damagedPlayers);
  118.         damagedPlayers=null;
  119.         return temp;
  120.     }
Advertisement
Add Comment
Please, Sign In to add comment