String[] choices = new String[mfs.size()];
for (int loop = 0; loop < choices.length; loop++) {
choices[loop] = Minefield.getDisplayableName(mfs
.elementAt(loop).getType());
}
SingleChoiceDialog choiceDialog = new SingleChoiceDialog(
clientgui.frame,
Messages
.getString("MovementDisplay.ChooseMinefieldDialog.title"), //$NON-NLS-1$
Messages
.getString("MovementDisplay.ChooseMinefieldDialog.message"),
choices);
choiceDialog.setVisible(true);
Minefield mf = null;
if (choiceDialog.getAnswer() == true) {
mf = mfs.elementAt(choiceDialog.getChoice());
}
if ((null != mf)
&& clientgui
.doYesNoDialog(
Messages
.getString("MovementDisplay.ClearMinefieldDialog.title"), //$NON-NLS-1$
Messages
.getString(
"MovementDisplay.ClearMinefieldDialog.message", new Object[] {//$NON-NLS-1$
new Integer(clear),
new Integer(boom) }))) {
cmd.addStep(MovePath.STEP_CLEAR_MINEFIELD, mf);
moveTo(cmd);
}
} else if (ev.getActionCommand().equals(MOVE_CHARGE)) {
if (gear != MovementDisplay.GEAR_LAND) {
clearAllMoves();
}
gear = MovementDisplay.GEAR_CHARGE;
} else if (ev.getActionCommand().equals(MOVE_DFA)) {
if (gear != MovementDisplay.GEAR_JUMP) {
clearAllMoves();
}
gear = MovementDisplay.GEAR_DFA;
if (!cmd.isJumping()) {
cmd.addStep(MovePath.STEP_START_JUMP);
}
} else if (ev.getActionCommand().equals(MOVE_RAM)) {
if (gear != MovementDisplay.GEAR_LAND) {
clearAllMoves();
}
gear = MovementDisplay.GEAR_RAM;
} else if (ev.getActionCommand().equals(MOVE_GET_UP)) {
// if the unit has a hull down step
// then don't clear the moves
if (!cmd.contains(MovePath.STEP_HULL_DOWN)) {
clearAllMoves();
}
if (client.game.getOptions().booleanOption("tacops_careful_stand")
&& (ce.getWalkMP() > 2)) {
megamek.client.ui.swing.ConfirmDialog response = clientgui
.doYesNoBotherDialog(
Messages
.getString("MovementDisplay.CarefulStand.title"),//$NON-NLS-1$
Messages
.getString("MovementDisplay.CarefulStand.message"));
response.setVisible(true);
response.setVisible(true);
if (response.getAnswer()) {
ce.setCarefulStand(true);
if (cmd.getFinalProne() || cmd.getFinalHullDown()) {
cmd.addStep(MovePath.STEP_CAREFUL_STAND);
}
} else {
if (cmd.getFinalProne() || cmd.getFinalHullDown()) {
cmd.addStep(MovePath.STEP_GET_UP);
}
}
} else {
butDone.setText(Messages.getString("MovementDisplay.Move")); //$NON-NLS-1$
if (cmd.getFinalProne() || cmd.getFinalHullDown()) {
cmd.addStep(MovePath.STEP_GET_UP);
}
}
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_GO_PRONE)) {
gear = MovementDisplay.GEAR_LAND;
if (!cmd.getFinalProne()) {
cmd.addStep(MovePath.STEP_GO_PRONE);
}
clientgui.bv.drawMovementData(ce(), cmd);
butDone.setText(Messages.getString("MovementDisplay.Move")); //$NON-NLS-1$
} else if (ev.getActionCommand().equals(MOVE_HULL_DOWN)) {
gear = MovementDisplay.GEAR_LAND;
if (!cmd.getFinalHullDown()) {
cmd.addStep(MovePath.STEP_HULL_DOWN);
}
clientgui.bv.drawMovementData(ce(), cmd);
butDone.setText(Messages.getString("MovementDisplay.Move")); //$NON-NLS-1$
} else if (ev.getActionCommand().equals(MOVE_FLEE)
&& clientgui
.doYesNoDialog(
Messages
.getString("MovementDisplay.EscapeDialog.title"), Messages.getString("MovementDisplay.EscapeDialog.message"))) { //$NON-NLS-1$ //$NON-NLS-2$
clearAllMoves();
cmd.addStep(MovePath.STEP_FLEE);
moveTo(cmd);
} else if (ev.getActionCommand().equals(MOVE_EJECT)) {
if (ce instanceof Tank) {
if (clientgui
.doYesNoDialog(
Messages
.getString("MovementDisplay.AbandonDialog.title"), Messages.getString("MovementDisplay.AbandonDialog.message"))) { //$NON-NLS-1$ //$NON-NLS-2$
clearAllMoves();
cmd.addStep(MovePath.STEP_EJECT);
moveTo(cmd);
}
} else if (clientgui
.doYesNoDialog(
Messages
.getString("MovementDisplay.AbandonDialog1.title"), Messages.getString("MovementDisplay.AbandonDialog1.message"))) { //$NON-NLS-1$ //$NON-NLS-2$
clearAllMoves();
cmd.addStep(MovePath.STEP_EJECT);
moveTo(cmd);
}
} else if (ev.getActionCommand().equals(MOVE_LOAD)) {
// Find the other friendly unit in our hex, add it
// to our local list of loaded units, and then stop.
Entity other = null;
Enumeration<Entity> entities = client.game.getEntities(ce
.getPosition());
while (entities.hasMoreElements()) {
other = entities.nextElement();
if (ce.getOwner().equals(other.getOwner()) && !ce.equals(other)) {
loadedUnits.addElement(other);
break;
}
other = null;
}
if (other != null) {
cmd.addStep(MovePath.STEP_LOAD);
clientgui.bv.drawMovementData(ce(), cmd);
gear = MovementDisplay.GEAR_LAND;
} // else - didn't find a unit to load
} else if (ev.getActionCommand().equals(MOVE_UNLOAD)) {
// Ask the user if we're carrying multiple units.
Entity other = getUnloadedUnit();
if (other != null) {
cmd.addStep(MovePath.STEP_UNLOAD, other);
clientgui.bv.drawMovementData(ce(), cmd);
} // else - Player canceled the unload.
} else if (ev.getActionCommand().equals(MOVE_RAISE_ELEVATION)) {
cmd.addStep(MovePath.STEP_UP);
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_LOWER_ELEVATION)) {
if ((ce instanceof Aero)
&& (null != cmd.getLastStep())
&& (cmd.getLastStep().getNDown() == 1)
&& (cmd.getLastStep().getVelocity() < 12)
&& !(((Aero) ce).isSpheroid() || client.game
.getPlanetaryConditions().isVacuum())) {
cmd.addStep(MovePath.STEP_ACC, true);
}
cmd.addStep(MovePath.STEP_DOWN);
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_CLIMB_MODE)) {
MoveStep ms = cmd.getLastStep();
if ((ms != null)
&& ((ms.getType() == MovePath.STEP_CLIMB_MODE_ON) || (ms
.getType() == MovePath.STEP_CLIMB_MODE_OFF))) {
cmd.removeLastStep();
} else if (cmd.getFinalClimbMode()) {
cmd.addStep(MovePath.STEP_CLIMB_MODE_OFF);
} else {
cmd.addStep(MovePath.STEP_CLIMB_MODE_ON);
}
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_LAY_MINE)) {
int i = chooseMineToLay();
if (i != -1) {
Mounted m = ce().getEquipment(i);
if (m.getMineType() == Mounted.MINE_VIBRABOMB) {
VibrabombSettingDialog vsd = new VibrabombSettingDialog(
clientgui.frame);
vsd.setVisible(true);
m.setVibraSetting(vsd.getSetting());
}
cmd.addStep(MovePath.STEP_LAY_MINE, i);
clientgui.bv.drawMovementData(ce, cmd);
}
} else if (ev.getActionCommand().equals(MOVE_DIG_IN)) {
cmd.addStep(MovePath.STEP_DIG_IN);
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_FORTIFY)) {
cmd.addStep(MovePath.STEP_FORTIFY);
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_SHAKE_OFF)) {
cmd.addStep(MovePath.STEP_SHAKE_OFF_SWARMERS);
clientgui.bv.drawMovementData(ce(), cmd);
} else if (ev.getActionCommand().equals(MOVE_RECKLESS)) {
cmd.setCareful(false);
} else if (ev.getActionCommand().equals(MOVE_ACCN)) {
cmd.addStep(MovePath.STEP_ACCN);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_DECN)) {
cmd.addStep(MovePath.STEP_DECN);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_ACC)) {
cmd.addStep(MovePath.STEP_ACC);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_DEC)) {
cmd.addStep(MovePath.STEP_DEC);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_EVADE)) {
cmd.addStep(MovePath.STEP_EVADE);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_EVADE_AERO)) {
cmd.addStep(MovePath.STEP_EVADE);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_ROLL)) {
cmd.addStep(MovePath.STEP_ROLL);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_HOVER)) {
cmd.addStep(MovePath.STEP_HOVER);
clientgui.bv.drawMovementData(ce, cmd);
} else if (ev.getActionCommand().equals(MOVE_MANEUVER)) {
ManeuverChoiceDialog choiceDialog = new ManeuverChoiceDialog(
clientgui.frame, Messages
.getString("MovementDisplay.ManeuverDialog.title"), //$NON-NLS-1$
"huh?");
Aero a = (Aero) ce;
MoveStep last = cmd.getLastStep();
int vel = a.getCurrentVelocity();
int elev = a.getElevation();
Coords pos = a.getPosition();
int distance = 0;
if (null != last) {
vel = last.getVelocityLeft();
elev = last.getElevation();
pos = last.getPosition();
distance = last.getDistance();
}
int ceil = client.game.getBoard().getHex(pos).ceiling();
choiceDialog.checkPerformability(vel, elev, ceil, a.isVSTOL(),
distance);
choiceDialog.setVisible(true);
int manType = choiceDialog.getChoice();
if ((manType > ManeuverType.MAN_NONE) && addManeuver(manType)) {
clientgui.bv.drawMovementData(ce, cmd);
}
} else if (ev.getActionCommand().equals(MOVE_LAUNCH)) {
TreeMap<Integer, Vector<Integer>> launched = getLaunchedUnits();