package com.kartoflane.superluminal2.ftl; import org.eclipse.swt.graphics.Point; import com.kartoflane.superluminal2.components.interfaces.Indexable; import com.kartoflane.superluminal2.core.Manager; import com.kartoflane.superluminal2.mvc.controllers.ShipController; import com.kartoflane.superluminal2.ui.ShipContainer; public class GibObject extends ImageObject implements Indexable, Comparable<GibObject> { private int id = -1; private int directionMin = 0; private int directionMax = 0; private double velocityMin = 0; private double velocityMax = 0; private double angularMin = 0; private double angularMax = 0; private int offsetX = 0; private int offsetY = 0; /** * Creates a new default gib object. */ public GibObject() { setDeletable(true); } public void update() { if (model == null) throw new IllegalArgumentException("Model must not be null."); ShipController shipC = Manager.getCurrentShip().getShipController(); ShipObject ship = shipC.getGameObject(); Point hullOffset = ship.getHullOffset(); offsetX = model.getX() - shipC.getX() - hullOffset.x - (ship.getXOffset() * ShipContainer.CELL_SIZE) - model.getW() / 2; offsetY = model.getY() - shipC.getY() - hullOffset.y - (ship.getYOffset() * ShipContainer.CELL_SIZE) - model.getH() / 2; } public void setId(int id) { this.id = id; } public int getId() { return id; } /** * The gib's offset from the hull's top left corner.<br> * Use this to determine gib's position during exporting, as well * as when resetting positions after animating. */ public void setOffset(int x, int y) { offsetX = x; offsetY = y; } /** @return gib's offset from the hull's top left corner */ public Point getOffset() { return new Point(offsetX, offsetY); } public int getOffsetX() { return offsetX; } public int getOffsetY() { return offsetY; } public void setDirectionMin(int min) { directionMin = min; } public int getDirectionMin() { return directionMin; } public void setDirectionMax(int max) { directionMax = max; } public int getDirectionMax() { return directionMax; } public void setVelocityMin(double min) { velocityMin = min; } public double getVelocityMin() { return velocityMin; } public void setVelocityMax(double max) { velocityMax = max; } public double getVelocityMax() { return velocityMax; } public void setAngularMin(double min) { angularMin = min; } public double getAngularMin() { return angularMin; } public void setAngularMax(double max) { angularMax = max; } public double getAngularMax() { return angularMax; } @Override public int compareTo(GibObject o) { return id - o.id; } @Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("Gib "); buf.append(id); String alias = getAlias(); if (alias != null) { buf.append("("); buf.append(alias); buf.append(")"); } return buf.toString(); } }