package com.kartoflane.superluminal2.ftl;
import org.eclipse.swt.graphics.Point;
import com.kartoflane.superluminal2.components.enums.Directions;
import com.kartoflane.superluminal2.components.interfaces.Alias;
import com.kartoflane.superluminal2.components.interfaces.Indexable;
import com.kartoflane.superluminal2.components.interfaces.Movable;
import com.kartoflane.superluminal2.core.Database;
import com.kartoflane.superluminal2.core.Manager;
import com.kartoflane.superluminal2.mvc.controllers.ShipController;
import com.kartoflane.superluminal2.ui.ShipContainer;
public class MountObject extends GameObject implements Alias, Movable, Indexable, Comparable<MountObject> {
private int locX = 0;
private int locY = 0;
private int id = -2;
private boolean mirrored = false;
private boolean rotated = false;
private GibObject gib = Database.DEFAULT_GIB_OBJ;
private Directions direction = Directions.UP;
private WeaponObject weapon = null;
private String alias = null;
public MountObject() {
setDeletable(true);
setWeapon(Database.DEFAULT_WEAPON_OBJ);
}
public void update() {
ShipController shipC = Manager.getCurrentShip().getShipController();
ShipObject ship = shipC.getGameObject();
locX = model.getX() - shipC.getX() - ship.getXOffset() * ShipContainer.CELL_SIZE - ship.getHullOffset().x;
locY = model.getY() - shipC.getY() - ship.getYOffset() * ShipContainer.CELL_SIZE - ship.getHullOffset().y;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setWeapon(WeaponObject weapon) {
this.weapon = weapon;
}
public WeaponObject getWeapon() {
return weapon;
}
@Override
public boolean setLocation(int x, int y) {
locX = x;
locY = y;
return true;
}
@Override
public boolean translate(int dx, int dy) {
locX += dx;
locY += dy;
return true;
}
@Override
public Point getLocation() {
return new Point(locX, locY);
}
@Override
public int getX() {
return locX;
}
@Override
public int getY() {
return locY;
}
@Override
public String getAlias() {
return alias;
}
@Override
public void setAlias(String alias) {
this.alias = alias;
}
public void setMirrored(boolean mirrored) {
this.mirrored = mirrored;
}
public boolean isMirrored() {
return mirrored;
}
public void setRotated(boolean rotated) {
this.rotated = rotated;
}
public boolean isRotated() {
return rotated;
}
public void setGib(GibObject gib) {
this.gib = gib;
}
public GibObject getGib() {
return gib;
}
public void setDirection(Directions direction) {
this.direction = direction;
}
public Directions getDirection() {
return direction;
}
@Override
public int compareTo(MountObject o) {
return id - o.id;
}
}