package games.fighter.JerryJackExample.controller.levels; import games.fighter.JerryJackExample.AdvancedGameInfo; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import util.input.AlertObject; import util.input.InputClassTarget; import util.input.InputMethodTarget; import vooga.fighter.controller.Controller; import vooga.fighter.controller.GameManager; import vooga.fighter.controller.gameinformation.GameInfo; import vooga.fighter.controller.interfaces.ControllerDelegate; import vooga.fighter.controller.interfaces.ModeCondition; import vooga.fighter.controller.levels.OneVOneController; import vooga.fighter.forces.Force; import vooga.fighter.model.mode.LevelMode; import vooga.fighter.model.mode.Mode; import vooga.fighter.model.objects.AttackObject; import vooga.fighter.model.objects.EnvironmentObject; import vooga.fighter.model.objects.GameObject; import vooga.fighter.util.CollisionDetector; import vooga.fighter.view.Canvas; @InputClassTarget public class Stock extends OneVOne { private static final String STOCK_PATHWAY = "config.stock"; private static final String SCORESCREEN = "ScoreScreen"; private static final int DEFAULT_HEALTH = 100; private String myStockPathway; private List<Integer> myCharacterLives; /** * Initial constructor */ public Stock() { super(); } /** * Concrete constructor * @param name name of controller * @param frame frame * @param manager ControllerManager * @param gameinfo GameInfo * @param filepath FilePath */ public Stock(String name, Canvas frame, ControllerDelegate manager, GameInfo gameinfo, String filepath) { super(name, frame, manager, gameinfo, filepath); myCharacterLives = new ArrayList<Integer>(); for(int i = 0; i< getGameInfo().getNumCharacters(); i ++){ myCharacterLives.add(getAdvancedGameInfo().getMaxLives()); } } /** * Return concrete controller */ @Override public Controller getController(String name, Canvas frame, ControllerDelegate manager, GameInfo gameinfo, String filepath) { Controller controller = new Stock(name, frame, manager, gameinfo, filepath); return controller; } /** * Removes listener */ @Override public void removeListener(){ super.removeListener(); getInput().removeListener(this); } @Override public void checkConditions(){ if(winCondition.checkCondition(getMode())) getManager().notifyEndCondition(SCORESCREEN); } /** * Anonymous Class that is fed into the winConditions via setupConditions */ ModeCondition winCondition = new ModeCondition() { public boolean checkCondition(Mode mode) { LevelMode levelmode = (LevelMode) mode; boolean change = false; for (int i = 0; i < levelmode.getCharacterObjects().size(); i++) { if(myCharacterLives.get(i) == 0){ change = true; tallyWinners(levelmode, i); break; } subtractLife(levelmode, i); } return change; } }; public AdvancedGameInfo getAdvancedGameInfo(){ return (AdvancedGameInfo) super.getGameInfo(); } private void subtractLife(LevelMode mode, int index){ if(!mode.getCharacterObjects().get(index).getHealth().hasHealthRemaining()){ myCharacterLives.set(index,myCharacterLives.get(index) -1); mode.getCharacterObjects().get(index).getHealth().setHealth(DEFAULT_HEALTH); } } }