package games.fighter.davidalan.controller.levels; import java.util.Map; import games.fighter.davidalan.util.CollisionDetector; import util.input.*; import vooga.fighter.controller.Controller; import vooga.fighter.controller.gameinformation.GameInfo; import vooga.fighter.controller.interfaces.ControllerDelegate; import vooga.fighter.model.ModelConstants; import vooga.fighter.model.objects.AttackObject; import vooga.fighter.model.objects.CharacterObject; import vooga.fighter.model.objects.EnvironmentObject; import vooga.fighter.model.objects.GameObject; import vooga.fighter.view.Canvas; import vooga.fighter.view.FourPlayerMatchGameLayout; import vooga.fighter.controller.levels.OneVOneController; @InputClassTarget public class StreetFighterOneVOneController extends OneVOneController{ private CollisionDetector myDetector; public StreetFighterOneVOneController(){ super(); } public StreetFighterOneVOneController(String name, Canvas frame, ControllerDelegate manager, GameInfo gameinfo, String filepath) { super(name, frame, manager, gameinfo, filepath); myDetector= new CollisionDetector(); } /** * Return concrete controller */ @Override public Controller getController(String name, Canvas frame, ControllerDelegate manager, GameInfo gameinfo, String filepath) { Controller controller = new StreetFighterOneVOneController(name, frame, manager, gameinfo, filepath); return controller; } /** * Details movement inputs * @param alObj */ @InputMethodTarget(name = "player1_jump") public void playerOneJumpInput (AlertObject alObj) { CharacterObject character=getInputObjects().get(0); for (GameObject object: getMode().getMyObjects()){ if (object instanceof EnvironmentObject){ if (myDetector.hitTop(character.getCurrentState().getCurrentRectangle(), object.getCurrentState().getCurrentRectangle())){ character.jump(); } } } } @InputMethodTarget(name = "player2_jump") public void playerTwoJumpInput (AlertObject alObj) { CharacterObject character=getInputObjects().get(1); for (GameObject object: getMode().getMyObjects()){ if (object instanceof EnvironmentObject){ if (myDetector.hitTop(character.getCurrentState().getCurrentRectangle(), object.getCurrentState().getCurrentRectangle())){ character.jump(); } } } } @InputMethodTarget(name = "player1_weakPunch") public void playerOneWeakPunchInput(AlertObject alObj) { AttackObject newAttack = getInputObjects().get(0).attack("weakPunch"); getMode().addObject(newAttack); } @InputMethodTarget(name = "player1_medPunch") public void playerOneMedPunchInput(AlertObject alObj) { AttackObject newAttack = getInputObjects().get(0).attack("medPunch"); getMode().addObject(newAttack); } @InputMethodTarget(name = "player1_weakKick") public void playerOneWeakKickInput(AlertObject alObj) { AttackObject newAttack = getInputObjects().get(0).attack("weakKick"); getMode().addObject(newAttack); } @InputMethodTarget(name = "player1_medKick") public void playerOneMedKickInput(AlertObject alObj) { AttackObject newAttack = getInputObjects().get(0).attack("medKick"); getMode().addObject(newAttack); } @InputMethodTarget(name = "player1_hadouken") public void playerOneHadoukenInput(AlertObject alObj) { AttackObject newAttack = getInputObjects().get(0).attack("hadouken"); getMode().addObject(newAttack); } @InputMethodTarget(name = "player2_attack") public void playerTwoAttacknput(AlertObject alObj) { AttackObject newAttack = getInputObjects().get(1).attack("weakPunch"); getMode().addObject(newAttack); } @InputMethodTarget(name = "player1_left") public void playerOneLeftInput (AlertObject alObj) { CharacterObject character= getInputObjects().get(0); changeAttackDirections(character, 180); character.move(180); } @InputMethodTarget(name = "player1_right") public void playerOneRightInput(AlertObject alObj) { CharacterObject character= getInputObjects().get(0); changeAttackDirections(character, 0); character.move(0); } @InputMethodTarget(name = "player2_left") public void playerTwoLeftInput (AlertObject alObj) { CharacterObject character= getInputObjects().get(1); changeAttackDirections(character, 180); character.move(180); } @InputMethodTarget(name = "player2_right") public void playerTwoRightInput (AlertObject alObj) { CharacterObject character= getInputObjects().get(1); changeAttackDirections(character, 0); character.move(0); } public void changeAttackDirections(CharacterObject character, int direction){ for (Map.Entry<String,AttackObject> entry: character.getAttackMapping().entrySet()){ entry.getValue().addProperty(ModelConstants.ATTACK_PROPERTY_DIRECTION, direction); } } }