package com.kartoflane.superluminal2.mvc.controllers.props;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import com.kartoflane.superluminal2.components.enums.Shapes;
import com.kartoflane.superluminal2.core.Manager;
import com.kartoflane.superluminal2.mvc.controllers.AbstractController;
import com.kartoflane.superluminal2.ui.ShipContainer;
import com.kartoflane.superluminal2.ui.sidebar.data.DataComposite;
import com.kartoflane.superluminal2.ui.sidebar.data.PropDataComposite;
public class OffsetPropController extends PropController {
public OffsetPropController(AbstractController parent, String id) {
super(parent, id);
setInheritVisibility(true);
setBounded(true);
setSelectable(true);
setBorderColor(0, 0, 0);
setImage(null);
setBorderThickness(3);
setAlpha(255);
setShape(Shapes.POLYGON);
setSize(3 * ShipContainer.CELL_SIZE / 2, 3 * ShipContainer.CELL_SIZE / 2);
}
@Override
public boolean setLocation(int x, int y) {
boolean result = super.setLocation(x, y);
polygon.setLocation(getX(), getY());
return result;
}
@Override
public boolean translate(int dx, int dy) {
boolean result = super.translate(dx, dy);
polygon.setLocation(getX(), getY());
return result;
}
/**
* @param rad
* angle in radians, 0 = north
*/
@Override
public void setRotation(float rad) {
polygon.rotate(rad);
}
/**
* @param rad
* angle in radians, 0 = north
*/
@Override
public void rotate(float rad) {
polygon.rotate(rad);
}
@Override
public Point getPresentedLocation() {
return new Point(getX() / getPresentedFactor(), getY() / getPresentedFactor());
}
@Override
public boolean contains(int x, int y) {
return polygon.contains(x, y);
}
@Override
public void select() {
super.select();
setBounded(true);
}
@Override
public void deselect() {
super.deselect();
setBounded(false);
ShipContainer container = Manager.getCurrentShip();
container.updateBoundingArea();
container.updateChildBoundingAreas();
}
@Override
public DataComposite getDataComposite(Composite parent) {
return new PropDataComposite(parent, this);
}
}