diff --git a/src/main/java/DrawingCaterpillar.java b/src/main/java/DrawingCaterpillar.java index eb1d1b4..2785b4e 100644 --- a/src/main/java/DrawingCaterpillar.java +++ b/src/main/java/DrawingCaterpillar.java @@ -38,4 +38,14 @@ public class DrawingCaterpillar implements IDrawingCaterpillar { public void setColor(Color color) { this.color = color; } + + @Override + public Color getColor() { + return color; + } + + @Override + public NumRinks getNumRinks() { + return numRinks; + } } diff --git a/src/main/java/DrawingCrossCaterpillar.java b/src/main/java/DrawingCrossCaterpillar.java index 7b4fdee..3796747 100644 --- a/src/main/java/DrawingCrossCaterpillar.java +++ b/src/main/java/DrawingCrossCaterpillar.java @@ -44,4 +44,14 @@ public class DrawingCrossCaterpillar implements IDrawingCaterpillar{ public void setColor(Color color) { this.color = color; } + + @Override + public Color getColor() { + return color; + } + + @Override + public NumRinks getNumRinks() { + return numRinks; + } } diff --git a/src/main/java/DrawingDoubleCaterpillar.java b/src/main/java/DrawingDoubleCaterpillar.java index 5913b9b..e6c8a78 100644 --- a/src/main/java/DrawingDoubleCaterpillar.java +++ b/src/main/java/DrawingDoubleCaterpillar.java @@ -41,4 +41,14 @@ public class DrawingDoubleCaterpillar implements IDrawingCaterpillar{ public void setColor(Color color) { this.color = color; } + + @Override + public Color getColor() { + return color; + } + + @Override + public NumRinks getNumRinks() { + return numRinks; + } } diff --git a/src/main/java/ExtensionArmoredClass.java b/src/main/java/ExtensionArmoredClass.java index 5918a96..2ab9b32 100644 --- a/src/main/java/ExtensionArmoredClass.java +++ b/src/main/java/ExtensionArmoredClass.java @@ -1,15 +1,18 @@ import java.awt.*; +import java.util.Arrays; public class ExtensionArmoredClass { private static final String _separatorForObject = ":"; public static DrawingArmoredCar CreateDrawingArmoredCar(String info) { String[] strs = info.split(_separatorForObject); - if (strs.length == 3) - { - return new DrawingArmoredCar(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]), Color.decode(strs[2])); - } if (strs.length == 6) + { + var armoredCar = new DrawingArmoredCar(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]), Color.decode(strs[2])); + armoredCar.drawingCaterpillar = CreateIDrawingCaterpillar(String.join(_separatorForObject, Arrays.copyOfRange(strs, 3, strs.length))); + return armoredCar; + } + if (strs.length == 9) { return new DrawingTank(Integer.parseInt(strs[0]), Integer.parseInt(strs[1]), Color.decode(strs[2]), @@ -19,20 +22,25 @@ public class ExtensionArmoredClass { return null; } -// public static IDrawingCaterpillar CreateIDrawingCaterpillar(String info) { -// String[] strs = info.split(_separatorForObject); -// switch (strs[0]) { -// case "": { -// break; -// } -// case "": { -// break; -// } -// case "": { -// break; -// } -// } -// } + public static IDrawingCaterpillar CreateIDrawingCaterpillar(String info) { + String[] strs = info.split(_separatorForObject); + IDrawingCaterpillar caterpillar = null; + switch (strs[0]) { + case "DrawingCaterpillar" -> { + caterpillar = new DrawingCaterpillar(Color.decode(strs[1])); + caterpillar.setNumRinks(Integer.parseInt(strs[2])); + } + case "DrawingCrossCaterpillar" -> { + caterpillar = new DrawingCrossCaterpillar(Color.decode(strs[1])); + caterpillar.setNumRinks(Integer.parseInt(strs[2])); + } + case "DrawingDoubleCaterpillar" -> { + caterpillar = new DrawingDoubleCaterpillar((Color.decode(strs[1]))); + caterpillar.setNumRinks(Integer.parseInt(strs[2])); + } + } + return caterpillar; + } public static String GetDataForSave(DrawingArmoredCar drawingArmoredCar) { @@ -41,10 +49,11 @@ public class ExtensionArmoredClass { (int)armoredCar.getWeight(), _separatorForObject, armoredCar.getBodyColor().getRGB()); if (!(armoredCar instanceof EntityTank tank)) { - return str; + return String.format("%s%s%s", str, _separatorForObject, GetDataForSave(drawingArmoredCar.drawingCaterpillar)); } - return String.format("%s%s%d%s%s%s%s", str, _separatorForObject, - tank.getDopColor().getRGB(), _separatorForObject, tank.isTowerWeapon(), _separatorForObject, tank.isAMachineGun()); + return String.format("%s%s%d%s%s%s%s%s%s", str, _separatorForObject, + tank.getDopColor().getRGB(), _separatorForObject, tank.isTowerWeapon(), _separatorForObject, + tank.isAMachineGun(), _separatorForObject, GetDataForSave(drawingArmoredCar.drawingCaterpillar)); } public static String GetDataForSave(IDrawingCaterpillar drawingCaterpillar) { diff --git a/src/main/java/IDrawingCaterpillar.java b/src/main/java/IDrawingCaterpillar.java index b52ed5e..6a35aec 100644 --- a/src/main/java/IDrawingCaterpillar.java +++ b/src/main/java/IDrawingCaterpillar.java @@ -7,4 +7,8 @@ public interface IDrawingCaterpillar { void setColor(Color color); + Color getColor(); + + NumRinks getNumRinks(); + }