Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package it.polimi.se2019.model.optionalEffectWeapon;
- import it.polimi.se2019.controller.OptionalEffectWeaponManager;
- import it.polimi.se2019.controller.TurnManager;
- import it.polimi.se2019.controller.WeaponManagerStatus;
- import it.polimi.se2019.model.*;
- import it.polimi.se2019.view.VirtualView;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- public class LockRifle extends OptionalEffectWeapon {
- private Player targetPlayer;
- private Player secondPossibleTarget;
- private Player currentPlayer;
- private boolean optionalEffect;
- private ArrayList<Player> playerICanSee;
- private List<Player> damagedPlayers;
- public LockRifle() {
- 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);
- playerICanSee=currentPlayer.playerICanSee(Game.getInstance().getGamePlank());
- damagedPlayers=new ArrayList<>();
- }
- @Override
- public void useWeapon() {
- shoot(targetPlayer,currentPlayer,2);
- mark(targetPlayer,currentPlayer,1);
- damagedPlayers.add(targetPlayer);
- if(optionalEffect){
- mark(secondPossibleTarget,currentPlayer,1);
- damagedPlayers.add(secondPossibleTarget);
- }
- this.setLoadedWeapon(false);
- }
- @Override
- public void handle(VirtualView virtualView, TurnManager turnManager) {
- new OptionalEffectWeaponManager(this,virtualView,turnManager);
- }
- @Override
- public WeaponManagerStatus startingStatus(Player currentPlayer) {
- this.currentPlayer=currentPlayer;
- return WeaponManagerStatus.TARGET;
- }
- @Override
- public WeaponManagerStatus setSquare(Position position) {
- throw new UnsupportedOperationException("invalid operation\n");
- }
- @Override
- public WeaponManagerStatus setTarget(Player player) {
- if(!currentPlayer.canISeeYou(targetPlayer,playerICanSee)){
- return WeaponManagerStatus.TARGET;
- }
- if(targetPlayer==null) {
- targetPlayer = player;
- if(currentPlayer.canPay(getOptionalCost())) {
- return WeaponManagerStatus.OPTIONALEFFECTCHOICE; //choice of payment method
- }
- useWeapon();
- return WeaponManagerStatus.FINISHED;
- }
- if(optionalEffect){
- if(secondPossibleTarget==null){
- if(player!=targetPlayer) {
- secondPossibleTarget=player;
- useWeapon();
- return WeaponManagerStatus.FINISHED;
- }
- return WeaponManagerStatus.TARGET;
- }
- }
- return WeaponManagerStatus.UNEXPECTED;
- }
- @Override
- public WeaponManagerStatus setFurtherOptional(boolean choice) {
- throw new UnsupportedOperationException("invalid operation\n");
- }
- @Override
- public WeaponManagerStatus setOptional(boolean choice) {
- if(choice){
- return WeaponManagerStatus.REDCUBE;
- }
- useWeapon();
- return WeaponManagerStatus.FINISHED;
- }
- @Override
- public WeaponManagerStatus payOptional() {
- optionalEffect=true;
- return WeaponManagerStatus.TARGET;
- }
- @Override
- public List<Player> resetWeapon() {
- optionalEffect=false;
- targetPlayer=null;
- secondPossibleTarget=null;
- currentPlayer=null;
- ArrayList<Player> temp=new ArrayList<>(damagedPlayers);
- damagedPlayers=null;
- return temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment