Package ch.fusun.baron.basic.client.ui

Source Code of ch.fusun.baron.basic.client.ui.MoveUnitTileAction

package ch.fusun.baron.basic.client.ui;

import ch.fusun.baron.basic.command.MoveUnitCommand;
import ch.fusun.baron.client.rmi.ClientService;
import ch.fusun.baron.core.injection.Inject;
import ch.fusun.baron.core.service.UserService;
import ch.fusun.baron.map.Tile;
import ch.fusun.baron.map.api.GameMapService;
import ch.fusun.baron.player.Dynasty;
import ch.fusun.baron.player.api.PlayerService;
import ch.fusun.baron.unit.Unit;
import ch.fusun.baron.unit.service.UnitService;

/**
* Move a unit (abstract impl)
*/
public abstract class MoveUnitTileAction extends AbstractTileAction {

  @Inject
  private UnitService unitService;
  @Inject
  private UserService userService;
  @Inject
  private PlayerService playerService;
  @Inject
  private GameMapService mapService;
  @Inject
  private ClientService clientService;

  @Override
  public Class<?> getReactionClass() {
    return Unit.class;
  }

  @Override
  public void execute(Object object) {
    if (object instanceof Unit) {
      Unit unit = (Unit) object;
      Tile location = unitService.getLocation(unit);
      Dynasty dynasty = playerService.getDynasty(userService.getUser());
      int width = mapService.getWidth();
      int height = mapService.getHeight();
      clientService.execute(new MoveUnitCommand(dynasty, unit, new Tile(
          (location.getX() + getHorizontalDiff() + width) % width,
          (location.getY() + getVerticalDiff() + height) % height)));
    }
  }

  /**
   * @return the vertical translation
   */
  protected abstract int getVerticalDiff();

  /**
   * @return the horizontal translation
   */
  protected abstract int getHorizontalDiff();

}
TOP

Related Classes of ch.fusun.baron.basic.client.ui.MoveUnitTileAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.