Compare commits
5 Commits
FifthLabWo
...
SixthLabWo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1e3c316731 | ||
|
|
760c2721aa | ||
|
|
4e206defed | ||
|
|
5063d4d157 | ||
|
|
54dacb11cf |
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
@@ -42,4 +42,15 @@ private DrawingArmoredVehicle _machine = null;
|
||||
{
|
||||
return _machine;
|
||||
}
|
||||
public static IDrawingObject Create(String data){
|
||||
return new DrawingObject(ExtentionMachine.CreateDrawingMachine(data));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String GetInfo() {
|
||||
if (_machine != null){
|
||||
return ExtentionMachine.GetDataForSave(_machine);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
75
ArmoredVehicle/src/ExtentionMachine.java
Normal file
75
ArmoredVehicle/src/ExtentionMachine.java
Normal file
@@ -0,0 +1,75 @@
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
/*
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Alena
|
||||
*/
|
||||
public class ExtentionMachine {
|
||||
private static final char _separatorForObject = ':';
|
||||
public static DrawingArmoredVehicle CreateDrawingMachine(String info)
|
||||
{
|
||||
String[] strs = info.split(String.valueOf(_separatorForObject));
|
||||
Color color;
|
||||
if (strs.length == 5)
|
||||
{
|
||||
var temp = new DrawingArmoredVehicle(Integer.parseInt(strs[0]),
|
||||
Float.parseFloat(strs[1]), new Color(Integer.parseInt(strs[2])));
|
||||
color = new Color(Integer.parseInt(strs[2]));
|
||||
temp.Count = Integer.parseInt(strs[4]);
|
||||
|
||||
switch (strs[3])
|
||||
{
|
||||
case "DrawingRollers":
|
||||
temp.roller = new Roller(color);
|
||||
break;
|
||||
case "DrawingLinePatternRoller":
|
||||
temp.roller = new DrawingFirstRoller(color);
|
||||
break;
|
||||
case "DrawingPiePatternRoller":
|
||||
temp.roller = new DrawingSecondRoller(color);
|
||||
break;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
if (strs.length == 8)
|
||||
{
|
||||
color = new Color(Integer.parseInt(strs[2]));
|
||||
var temp = new DrawingTank(Integer.parseInt(strs[0]),
|
||||
Float.parseFloat(strs[1]), new Color(Integer.parseInt(strs[2])),
|
||||
new Color(Integer.parseInt(strs[5])), Boolean.parseBoolean(strs[6]),
|
||||
Boolean.parseBoolean(strs[7]));
|
||||
temp.Count = Integer.parseInt(strs[4]);
|
||||
switch (strs[3])
|
||||
{
|
||||
case "DrawingRollers":
|
||||
temp.roller = new Roller(color);
|
||||
break;
|
||||
case "DrawingLinePatternRoller":
|
||||
temp.roller = new DrawingFirstRoller(color);
|
||||
break;
|
||||
case "DrawingPiePatternRoller":
|
||||
temp.roller = new DrawingSecondRoller(color);
|
||||
break;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
public static String GetDataForSave(DrawingArmoredVehicle drawingMachine)
|
||||
{
|
||||
var machine = drawingMachine.ArmoredVehicle;
|
||||
var str = ""+machine.Speed + _separatorForObject + machine.Weight + _separatorForObject + machine.BodyColor.getRGB() + _separatorForObject + drawingMachine.roller + _separatorForObject + drawingMachine.Count;
|
||||
if (machine instanceof TankEntity tank)
|
||||
{
|
||||
return str + _separatorForObject + tank.DopColor.getRGB() + _separatorForObject + tank.MachineGun + _separatorForObject + tank.Tower;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ public class FormArmoredVehicleConfig extends javax.swing.JFrame {
|
||||
/**
|
||||
* Creates new form FormArmoredVehicleConfig
|
||||
*/
|
||||
public void AddEvent(Consumer<DrawingArmoredVehicle> ev) { EventAddMachine = ev; }
|
||||
public FormArmoredVehicleConfig() {
|
||||
initComponents();
|
||||
MouseAdapter drag = new MouseAdapter() {
|
||||
@@ -71,7 +72,7 @@ public class FormArmoredVehicleConfig extends javax.swing.JFrame {
|
||||
|
||||
buttonCancel.addActionListener(e -> dispose());
|
||||
}
|
||||
public void AddEvent(Consumer<DrawingArmoredVehicle> ev) { EventAddMachine = ev; }
|
||||
|
||||
public DrawingArmoredVehicle getSelectedCar() {
|
||||
return _machine;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.9" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||
<NonVisualComponents>
|
||||
<Menu class="javax.swing.JMenuBar" name="MenuBar">
|
||||
<SubComponents>
|
||||
<Menu class="javax.swing.JMenu" name="jMenuSave">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Сохранить карту"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jMenuSaveMouseClicked"/>
|
||||
</Events>
|
||||
</Menu>
|
||||
<Menu class="javax.swing.JMenu" name="jMenuLoad">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Загрузить карту"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jMenuLoadMouseClicked"/>
|
||||
</Events>
|
||||
</Menu>
|
||||
<Menu class="javax.swing.JMenu" name="jMenuSaveObj">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Сохранить объект"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jMenuSaveObjMouseClicked"/>
|
||||
</Events>
|
||||
</Menu>
|
||||
<Menu class="javax.swing.JMenu" name="jMenuLoadObj">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" value="Загрузить объект"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jMenuLoadObjMouseClicked"/>
|
||||
</Events>
|
||||
</Menu>
|
||||
</SubComponents>
|
||||
</Menu>
|
||||
</NonVisualComponents>
|
||||
<Properties>
|
||||
<Property name="defaultCloseOperation" type="int" value="3"/>
|
||||
</Properties>
|
||||
<SyntheticProperties>
|
||||
<SyntheticProperty name="menuBar" type="java.lang.String" value="MenuBar"/>
|
||||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
|
||||
</SyntheticProperties>
|
||||
|
||||
@@ -7,11 +7,13 @@ import java.awt.Graphics;
|
||||
import java.awt.Image;
|
||||
import java.awt.event.WindowAdapter;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Queue;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import javax.swing.filechooser.FileNameExtensionFilter;
|
||||
|
||||
|
||||
public class FormMapWithSetMachine extends javax.swing.JFrame {
|
||||
@@ -33,8 +35,7 @@ private Image img;
|
||||
for (String elem : _mapsDict.keySet()) {
|
||||
MapComboBox.addItem(elem);
|
||||
}
|
||||
_mapCollection = new MapsCollection(PicturePanel.getWidth(), PicturePanel.getHeight());
|
||||
|
||||
_mapCollection = new MapsCollection(PicturePanel.getWidth(), PicturePanel.getHeight());
|
||||
}
|
||||
|
||||
|
||||
@@ -61,6 +62,11 @@ private Image img;
|
||||
jScrollPane2 = new javax.swing.JScrollPane();
|
||||
MapList = new javax.swing.JList<>();
|
||||
DeletedFormOpen = new javax.swing.JButton();
|
||||
MenuBar = new javax.swing.JMenuBar();
|
||||
jMenuSave = new javax.swing.JMenu();
|
||||
jMenuLoad = new javax.swing.JMenu();
|
||||
jMenuSaveObj = new javax.swing.JMenu();
|
||||
jMenuLoadObj = new javax.swing.JMenu();
|
||||
|
||||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||
|
||||
@@ -259,6 +265,40 @@ private Image img;
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
);
|
||||
|
||||
jMenuSave.setText("Сохранить карту");
|
||||
jMenuSave.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||
jMenuSaveMouseClicked(evt);
|
||||
}
|
||||
});
|
||||
MenuBar.add(jMenuSave);
|
||||
|
||||
jMenuLoad.setText("Загрузить карту");
|
||||
jMenuLoad.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||
jMenuLoadMouseClicked(evt);
|
||||
}
|
||||
});
|
||||
MenuBar.add(jMenuLoad);
|
||||
|
||||
jMenuSaveObj.setText("Сохранить объект");
|
||||
jMenuSaveObj.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||
jMenuSaveObjMouseClicked(evt);
|
||||
}
|
||||
});
|
||||
MenuBar.add(jMenuSaveObj);
|
||||
|
||||
jMenuLoadObj.setText("Загрузить объект");
|
||||
jMenuLoadObj.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||
jMenuLoadObjMouseClicked(evt);
|
||||
}
|
||||
});
|
||||
MenuBar.add(jMenuLoadObj);
|
||||
|
||||
setJMenuBar(MenuBar);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
@@ -474,6 +514,88 @@ private void ReloadMaps() {
|
||||
}
|
||||
|
||||
}//GEN-LAST:event_DeletedFormOpenMouseClicked
|
||||
|
||||
private void jMenuSaveMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenuSaveMouseClicked
|
||||
JFileChooser fs = new JFileChooser();
|
||||
fs.setAcceptAllFileFilterUsed(false);
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt file", "txt");
|
||||
fs.addChoosableFileFilter(filter);
|
||||
fs.setDialogTitle("Сохранение карты");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapCollection.SaveMap(selectedFile.getPath(), MapList.getSelectedValue().toString()))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Сохранение карты прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}//GEN-LAST:event_jMenuSaveMouseClicked
|
||||
|
||||
private void jMenuLoadMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenuLoadMouseClicked
|
||||
JFileChooser fs = new JFileChooser();
|
||||
fs.setAcceptAllFileFilterUsed(false);
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt file", "txt");
|
||||
fs.addChoosableFileFilter(filter);
|
||||
fs.setDialogTitle("Сохранение карты");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapCollection.LoadMap(selectedFile.getPath()))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
ReloadMaps();
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}//GEN-LAST:event_jMenuLoadMouseClicked
|
||||
|
||||
private void jMenuLoadObjMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenuLoadObjMouseClicked
|
||||
JFileChooser fs = new JFileChooser();
|
||||
fs.setAcceptAllFileFilterUsed(false);
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt file", "txt");
|
||||
fs.addChoosableFileFilter(filter);
|
||||
fs.setDialogTitle("Загрузка");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapCollection.LoadData(selectedFile.getPath()))
|
||||
{
|
||||
ReloadMaps();
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не удалось загрузить", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}//GEN-LAST:event_jMenuLoadObjMouseClicked
|
||||
|
||||
private void jMenuSaveObjMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenuSaveObjMouseClicked
|
||||
JFileChooser fs = new JFileChooser();
|
||||
fs.setAcceptAllFileFilterUsed(false);
|
||||
FileNameExtensionFilter filter = new FileNameExtensionFilter(".txt file", "txt");
|
||||
fs.addChoosableFileFilter(filter);
|
||||
fs.setDialogTitle("Сохранение");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapCollection.SaveData(selectedFile.getPath()+".txt"))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}//GEN-LAST:event_jMenuSaveObjMouseClicked
|
||||
public void Move(String name)
|
||||
{
|
||||
switch (name)
|
||||
@@ -538,12 +660,17 @@ private void ReloadMaps() {
|
||||
private javax.swing.JComboBox<String> MapComboBox;
|
||||
private javax.swing.JList<String> MapList;
|
||||
private java.awt.TextField MapNameTextField;
|
||||
private javax.swing.JMenuBar MenuBar;
|
||||
private javax.swing.JPanel PicturePanel;
|
||||
private java.awt.Button RightButton;
|
||||
private java.awt.Button StoreButton;
|
||||
private java.awt.TextField TextBoxPosition;
|
||||
private java.awt.Button UpButton;
|
||||
private javax.swing.JLabel jLabel1;
|
||||
private javax.swing.JMenu jMenuLoad;
|
||||
private javax.swing.JMenu jMenuLoadObj;
|
||||
private javax.swing.JMenu jMenuSave;
|
||||
private javax.swing.JMenu jMenuSaveObj;
|
||||
private javax.swing.JScrollPane jScrollPane2;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
|
||||
@@ -30,4 +30,8 @@ public interface IDrawingObject {
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
HashMap<String, Float> GetCurrentPosition();
|
||||
//Получение информации по объекту
|
||||
String GetInfo();
|
||||
|
||||
public DrawingArmoredVehicle GetMachine();
|
||||
}
|
||||
|
||||
@@ -24,7 +24,9 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
|
||||
_pictureHeight = picHeight;
|
||||
_map = map;
|
||||
}
|
||||
|
||||
public void Clear() {
|
||||
_setCars.Clear();
|
||||
}
|
||||
public int add(T car)
|
||||
{
|
||||
return _setCars.Insert(car);
|
||||
@@ -118,4 +120,33 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
|
||||
}
|
||||
}
|
||||
}
|
||||
// Получение данных в виде строки
|
||||
public String GetData(char separatorType, char separatorData)
|
||||
{
|
||||
String data = _map.getClass().getName()+separatorType;
|
||||
data = data.substring(4);
|
||||
for (var machine : _setCars)
|
||||
{
|
||||
data += machine.GetInfo()+separatorData;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
public String GetDataMap(char separatorType, char separatorData)
|
||||
{
|
||||
String data = _map.getClass().getName()+separatorType;
|
||||
data = data.substring(4) + '\n';
|
||||
for (var machine : _setCars)
|
||||
{
|
||||
data += machine.GetInfo()+separatorData+'\n';
|
||||
}
|
||||
return data;
|
||||
}
|
||||
// Загрузка списка из массива строк
|
||||
public void LoadData(String[] records)
|
||||
{
|
||||
for (var rec : records)
|
||||
{
|
||||
_setCars.Insert((T)DrawingObject.Create(rec));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -9,7 +15,7 @@ public class MapsCollection {
|
||||
/// <summary>
|
||||
/// Словарь (хранилище) с картами
|
||||
/// </summary>
|
||||
Map <String, MapWithSetMachineGeneric<DrawingObject, AbstractMap>> _mapStorages;
|
||||
Map <String, MapWithSetMachineGeneric<IDrawingObject, AbstractMap>> _mapStorages;
|
||||
/// <summary>
|
||||
/// Возвращение списка названий карт
|
||||
/// </summary>
|
||||
@@ -22,6 +28,10 @@ public class MapsCollection {
|
||||
/// Высота окна отрисовки
|
||||
/// </summary>
|
||||
private int _pictureHeight;
|
||||
/// Разделитель для записи информации по элементу словаря в файл
|
||||
private final char separatorDict = '|';
|
||||
/// Разделитель для записей коллекции данных в файл
|
||||
private final char separatorData = ';';
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
@@ -29,7 +39,7 @@ public class MapsCollection {
|
||||
/// <param name="pictureHeight"></param>
|
||||
public MapsCollection(int pictureWidth, int pictureHeight)
|
||||
{
|
||||
_mapStorages = new HashMap<String, MapWithSetMachineGeneric<DrawingObject, AbstractMap>>();
|
||||
_mapStorages = new HashMap<String, MapWithSetMachineGeneric<IDrawingObject, AbstractMap>>();
|
||||
Keys = new ArrayList<String>(_mapStorages.keySet());
|
||||
_pictureWidth = pictureWidth;
|
||||
_pictureHeight = pictureHeight;
|
||||
@@ -59,7 +69,7 @@ public class MapsCollection {
|
||||
}
|
||||
else
|
||||
{
|
||||
var NewElem = new MapWithSetMachineGeneric<DrawingObject, AbstractMap>(
|
||||
var NewElem = new MapWithSetMachineGeneric<IDrawingObject, AbstractMap>(
|
||||
_pictureWidth, _pictureHeight, map);
|
||||
_mapStorages.put(name, NewElem);
|
||||
}
|
||||
@@ -85,7 +95,7 @@ public class MapsCollection {
|
||||
/// </summary>
|
||||
/// <param name="ind"></param>
|
||||
/// <returns></returns>
|
||||
public MapWithSetMachineGeneric<DrawingObject, AbstractMap> Get(String ind)
|
||||
public MapWithSetMachineGeneric<IDrawingObject, AbstractMap> Get(String ind)
|
||||
{
|
||||
if(_mapStorages.keySet().contains(ind))
|
||||
{
|
||||
@@ -94,12 +104,132 @@ public class MapsCollection {
|
||||
return null;
|
||||
|
||||
}
|
||||
public DrawingObject Get(String name, int ind) {
|
||||
public IDrawingObject Get(String name, int ind) {
|
||||
if (_mapStorages.containsKey(name))
|
||||
{
|
||||
return _mapStorages.get(name).GetMachineInList(ind);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// Сохранение информации по тракторам в хранилище в файл
|
||||
public boolean SaveData(String filename) {
|
||||
File file = new File(filename);
|
||||
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
try (BufferedWriter br = new BufferedWriter(new FileWriter(filename)))
|
||||
{
|
||||
br.write("MapsCollection\n");
|
||||
for (var storage : _mapStorages.entrySet()) {
|
||||
br.write(storage.getKey() + separatorDict + storage.getValue().GetData(separatorDict, separatorData) + "\n");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/// Загрузка информации по тракторам в депо из файла
|
||||
public boolean LoadData(String filename)
|
||||
{
|
||||
if (!(new File(filename).exists()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(filename)))
|
||||
{
|
||||
String str = "";
|
||||
if ((str = br.readLine()) == null || !str.contains("MapsCollection"))
|
||||
{
|
||||
//если нет такой записи, то это не те данные
|
||||
return false;
|
||||
}
|
||||
//очищаем записи
|
||||
_mapStorages.clear();
|
||||
while ((str = br.readLine()) != null)
|
||||
{
|
||||
var elem = str.split(String.format("\\%c",separatorDict));
|
||||
AbstractMap map = null;
|
||||
switch (elem[1])
|
||||
{
|
||||
case "SimpleMap":
|
||||
map = new SimpleMap();
|
||||
break;
|
||||
case "VerticalMap":
|
||||
map = new VerticalMap();
|
||||
break;
|
||||
case "HorizontalMap":
|
||||
map = new HorizontalMap();
|
||||
break;
|
||||
}
|
||||
_mapStorages.put(elem[0], new MapWithSetMachineGeneric<IDrawingObject, AbstractMap>(_pictureWidth, _pictureHeight, map));
|
||||
_mapStorages.get(elem[0]).LoadData(elem[2].split(separatorData + "\n?"));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean SaveMap(String filename, String index) {
|
||||
File file = new File(filename);
|
||||
if (file.exists()) {
|
||||
file.delete();
|
||||
}
|
||||
var elem = _mapStorages.get(index);
|
||||
if (elem==null)
|
||||
return false;
|
||||
try (BufferedWriter br = new BufferedWriter(new FileWriter(filename)))
|
||||
{
|
||||
br.write("MapsCollection\n");
|
||||
br.write(index + separatorDict);
|
||||
br.write(elem.GetDataMap(separatorDict, separatorData));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public boolean LoadMap(String filename) {
|
||||
if (!(new File(filename).exists()))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(filename)))
|
||||
{
|
||||
String str = "";
|
||||
if ((str = br.readLine()) == null || !str.contains("MapsCollection"))
|
||||
{
|
||||
//если нет такой записи, то это не те данные
|
||||
return false;
|
||||
}
|
||||
if ((str = br.readLine()) != null)
|
||||
{
|
||||
var elem = str.split(String.format("\\%c",separatorDict));
|
||||
AbstractMap map = null;
|
||||
switch (elem[1])
|
||||
{
|
||||
case "SimpleMap":
|
||||
map = new SimpleMap();
|
||||
break;
|
||||
case "VerticalMap":
|
||||
map = new VerticalMap();
|
||||
break;
|
||||
case "HorizontalMap":
|
||||
map = new HorizontalMap();
|
||||
break;
|
||||
}
|
||||
if(_mapStorages.containsKey(elem[0])){
|
||||
_mapStorages.get(elem[0]).Clear();
|
||||
}
|
||||
else _mapStorages.put(elem[0], new MapWithSetMachineGeneric<IDrawingObject, AbstractMap>(_pictureWidth, _pictureHeight, map));
|
||||
|
||||
while((str = br.readLine()) != null) {
|
||||
_mapStorages.get(elem[0]).LoadData(str.split(separatorData + "\n?"));
|
||||
}
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,11 @@ public class SetArmoredCarsGeneric<T> implements Iterable<T>{
|
||||
public int getCount() {
|
||||
return _places.isEmpty() ? 0 : _places.size();
|
||||
}
|
||||
|
||||
|
||||
public void Clear() {
|
||||
_places.clear();
|
||||
}
|
||||
|
||||
public int Insert(T armoredCar)
|
||||
{
|
||||
if(_places.size()+1 <= _MaxCount) return Insert(armoredCar, 0);
|
||||
|
||||
Reference in New Issue
Block a user