146 lines
5.7 KiB
Java
146 lines
5.7 KiB
Java
package DrawingShip;
|
|
import DiffetentsDrawingDecks.DrawingDecksType2;
|
|
import DiffetentsDrawingDecks.DrawingDecksType3;
|
|
import DiffetentsDrawingDecks.IDifferentDecks;
|
|
import Entities.EntityShip;
|
|
|
|
import DiffetentsDrawingDecks.DrawingDecksType1;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
|
|
public class DrawingShip extends JPanel {
|
|
public Entities.EntityShip EntityShip;
|
|
public IDifferentDecks drawingDecks;
|
|
private Integer picture_width;
|
|
private Integer picture_height;
|
|
public Integer _StartPosX;
|
|
public Integer _StartPosY;
|
|
private int drawingShipWidth = 150;
|
|
protected int drawingShipHeight = 50;
|
|
public Integer GetPosX() {return _StartPosX;}
|
|
public Integer GetPosY() {return _StartPosY;}
|
|
public Integer GetWidth() {return drawingShipWidth;}
|
|
public Integer GetHeight() {return drawingShipHeight;}
|
|
protected DrawingShip() {
|
|
picture_width = null;
|
|
picture_height = null;
|
|
_StartPosX = null;
|
|
_StartPosY = null;
|
|
}
|
|
protected void SetAmountandTypeDecks() {
|
|
int numberOfDecks = (int)(Math.random() * 4 + 0);
|
|
switch ((int)(Math.random() * 3 + 1)) {
|
|
case 1:
|
|
drawingDecks = new DrawingDecksType1();
|
|
break;
|
|
case 2:
|
|
drawingDecks = new DrawingDecksType2();
|
|
break;
|
|
case 3:
|
|
drawingDecks = new DrawingDecksType3();
|
|
break;
|
|
default:
|
|
numberOfDecks = 0;
|
|
break;
|
|
}
|
|
drawingDecks.setNumberOfDecks(numberOfDecks);
|
|
}
|
|
public DrawingShip(int speed, double weight, Color bodycolor) {
|
|
super();
|
|
EntityShip = new EntityShip(speed, weight, bodycolor);
|
|
SetAmountandTypeDecks();
|
|
}
|
|
public boolean SetPictureSize(int width, int height) {
|
|
if (width < drawingShipWidth || height < drawingShipHeight) return false;
|
|
picture_width = width;
|
|
picture_height = height;
|
|
if (_StartPosX != null || _StartPosY != null) {
|
|
if (_StartPosX + drawingShipWidth > picture_width)
|
|
{
|
|
_StartPosX = _StartPosX - (_StartPosX + drawingShipWidth - picture_width);
|
|
}
|
|
else if (_StartPosX < 0) _StartPosX = 0;
|
|
if (_StartPosY + drawingShipHeight > picture_height)
|
|
{
|
|
_StartPosY = _StartPosY - (_StartPosY + drawingShipHeight - picture_height);
|
|
}
|
|
else if (_StartPosY < 0) _StartPosY = 0;
|
|
}
|
|
return true;
|
|
}
|
|
public void SetPosition(int x, int y) {
|
|
if (!(picture_width != null && picture_height != null)) return;
|
|
if (x + drawingShipWidth > picture_width)
|
|
{
|
|
_StartPosX = x - (x + drawingShipWidth - picture_width);
|
|
}
|
|
else if (x < 0) _StartPosX = 0;
|
|
else _StartPosX = x;
|
|
if (y + drawingShipHeight > picture_height)
|
|
{
|
|
_StartPosY = y - (y + drawingShipHeight - picture_height);
|
|
}
|
|
else if (y < 0) _StartPosY = 0;
|
|
else _StartPosY = y;
|
|
}
|
|
public boolean MoveTransport(DirectionType direction) {
|
|
if (EntityShip == null || _StartPosX == null || _StartPosY == null) return false;
|
|
switch (direction) {
|
|
case DirectionType.Left:
|
|
if (_StartPosX - EntityShip.Step > 0) {
|
|
_StartPosX -= (int)EntityShip.Step;
|
|
}
|
|
return true;
|
|
case DirectionType.Up:
|
|
if (_StartPosY - EntityShip.Step > 0)
|
|
{
|
|
_StartPosY -= (int)EntityShip.Step;
|
|
}
|
|
return true;
|
|
case DirectionType.Right:
|
|
if (_StartPosX + drawingShipWidth + (int)EntityShip.Step < picture_width - EntityShip.Step)
|
|
{
|
|
_StartPosX += (int)EntityShip.Step;
|
|
}
|
|
return true;
|
|
case DirectionType.Down:
|
|
if (_StartPosY + drawingShipHeight + (int)EntityShip.Step < picture_height - EntityShip.Step)
|
|
{
|
|
_StartPosY += (int)EntityShip.Step;
|
|
}
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
public void DrawTransport(Graphics2D g) {
|
|
if (EntityShip == null || _StartPosX == null || _StartPosY == null) return;
|
|
int y = _StartPosY;
|
|
g.setColor(EntityShip.getBodyColor());
|
|
if (drawingDecks.getNumberOfDecks() != null) {
|
|
switch (drawingDecks.getNumberOfDecks()) {
|
|
case OneDeck:
|
|
drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor());
|
|
y += 15;
|
|
break;
|
|
case TwoDecks:
|
|
drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor());
|
|
drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityShip.getBodyColor());
|
|
y += 30;
|
|
break;
|
|
case ThreeDecks:
|
|
drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor());
|
|
drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityShip.getBodyColor());
|
|
drawingDecks.DrawDecks(g, _StartPosX + 30, y + 30, 100, 15, EntityShip.getBodyColor());
|
|
y += 45;
|
|
break;
|
|
}
|
|
}
|
|
int[] arrayX = {_StartPosX, _StartPosX+150, _StartPosX+150, _StartPosX+120, _StartPosX+120, _StartPosX+30, _StartPosX+30, _StartPosX};
|
|
int[] arrayY = {y, y, y, y + 50, y + 50, y + 50, y + 50, y};
|
|
Polygon poly = new Polygon(arrayX, arrayY, 8);
|
|
g.fillPolygon(poly);
|
|
drawingShipHeight = y + 50 - _StartPosY;
|
|
}
|
|
} |