1. Добавлены: метод получения данных из объекта и метод получения объекта из данных (без гусениц)
This commit is contained in:
parent
37f392d98e
commit
e0cb8ba7b4
@ -41,4 +41,15 @@ public class DrawingObjectArmoredCar implements IDrawingObject{
|
||||
public HashMap<String, Float> GetCurrentPosition() {
|
||||
return armoredCar.GetCurrentPosition();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String GetInfo() {
|
||||
if (armoredCar != null)
|
||||
return ExtensionArmoredClass.GetDataForSave(armoredCar);
|
||||
return null;
|
||||
}
|
||||
|
||||
public static IDrawingObject Create(String data) {
|
||||
return new DrawingObjectArmoredCar(ExtensionArmoredClass.CreateDrawingArmoredCar(data));
|
||||
}
|
||||
}
|
||||
|
56
src/main/java/ExtensionArmoredClass.java
Normal file
56
src/main/java/ExtensionArmoredClass.java
Normal file
@ -0,0 +1,56 @@
|
||||
import java.awt.*;
|
||||
|
||||
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)
|
||||
{
|
||||
return new DrawingTank(Integer.parseInt(strs[0]),
|
||||
Integer.parseInt(strs[1]), Color.decode(strs[2]),
|
||||
Color.decode(strs[3]), Boolean.parseBoolean((strs[4])),
|
||||
Boolean.parseBoolean(strs[5]));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// public static IDrawingCaterpillar CreateIDrawingCaterpillar(String info) {
|
||||
// String[] strs = info.split(_separatorForObject);
|
||||
// switch (strs[0]) {
|
||||
// case "": {
|
||||
// break;
|
||||
// }
|
||||
// case "": {
|
||||
// break;
|
||||
// }
|
||||
// case "": {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
public static String GetDataForSave(DrawingArmoredCar drawingArmoredCar)
|
||||
{
|
||||
var armoredCar = drawingArmoredCar.armoredCar;
|
||||
var str = String.format("%d%s%d%s%d", armoredCar.getSpeed(), _separatorForObject,
|
||||
(int)armoredCar.getWeight(), _separatorForObject, armoredCar.getBodyColor().getRGB());
|
||||
if (!(armoredCar instanceof EntityTank tank))
|
||||
{
|
||||
return str;
|
||||
}
|
||||
return String.format("%s%s%d%s%s%s%s", str, _separatorForObject,
|
||||
tank.getDopColor().getRGB(), _separatorForObject, tank.isTowerWeapon(), _separatorForObject, tank.isAMachineGun());
|
||||
}
|
||||
|
||||
public static String GetDataForSave(IDrawingCaterpillar drawingCaterpillar) {
|
||||
return String.format("%s%s%d%s%d", drawingCaterpillar.getClass().getName(), _separatorForObject,
|
||||
drawingCaterpillar.getColor().getRGB(), _separatorForObject, drawingCaterpillar.getNumRinks().val());
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -11,4 +11,6 @@ public interface IDrawingObject {
|
||||
void DrawingObject(Graphics2D g);
|
||||
|
||||
HashMap<String, Float> GetCurrentPosition();
|
||||
|
||||
String GetInfo();
|
||||
}
|
||||
|
@ -143,4 +143,24 @@ public class MapWithSetArmoredCarsGeneric<T extends IDrawingObject, U extends Ab
|
||||
public SetArmoredCarsGeneric<T> get_setCars() {
|
||||
return _setCars;
|
||||
}
|
||||
|
||||
public String GetData(char separatorType, char separatorData)
|
||||
{
|
||||
String data = String.format("%s%s", _map.getClass().getName(), separatorType);
|
||||
for (var armoredCar : _setCars.GetArmoredCars())
|
||||
{
|
||||
data += String.format("%s%s", armoredCar.GetInfo(), separatorData);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
public void LoadData(String[] records)
|
||||
{
|
||||
for(var rec : records)
|
||||
{
|
||||
_setCars.Insert((T)DrawingObjectArmoredCar.Create(rec));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -8,6 +10,9 @@ public class MapsCollection {
|
||||
private int _pictureWidth;
|
||||
private int _pictureHeight;
|
||||
|
||||
private final char separatorDict = '#';
|
||||
private final char separatorData = ';';
|
||||
|
||||
public MapsCollection(int pictureWidth, int pictureHeight)
|
||||
{
|
||||
_mapStorages = new HashMap<>();
|
||||
@ -43,4 +48,59 @@ public class MapsCollection {
|
||||
return _mapStorages.get(ind1).get_setCars().Get(pos);
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean SaveData(String filename)
|
||||
{
|
||||
File f = new File(filename);
|
||||
if (f.exists())
|
||||
{
|
||||
f.delete();
|
||||
}
|
||||
try (BufferedWriter writter = new BufferedWriter(new FileWriter(filename))) {
|
||||
writter.write("MapsCollection");
|
||||
writter.newLine();
|
||||
for (var key : _mapStorages.keySet())
|
||||
{
|
||||
writter.write(String.format("%s%s%s", key, separatorDict, _mapStorages.get(key).GetData(separatorDict, separatorData)));
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean LoadData(String filename) {
|
||||
File f = new File(filename);
|
||||
if (!f.exists()) {
|
||||
return false;
|
||||
}
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
|
||||
if (!reader.readLine().contains("MapsCollection"))
|
||||
return false;
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
var elem = line.split(String.valueOf(separatorDict));
|
||||
AbstractMap map = null;
|
||||
switch (elem[1]) {
|
||||
case "SimpleMap":
|
||||
map = new SimpleMap();
|
||||
break;
|
||||
case "MyMapLabirinth":
|
||||
map = new MyMapLabyrinth();
|
||||
break;
|
||||
case "MyMapWooden":
|
||||
map = new MyMapWooden();
|
||||
break;
|
||||
}
|
||||
_mapStorages.put(elem[0], new MapWithSetArmoredCarsGeneric<>(_pictureWidth, _pictureHeight, map));
|
||||
_mapStorages.get(elem[0]).LoadData(elem[2].split(String.valueOf(separatorData)));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user