diff --git a/.classpath b/.classpath
index a96787a..653dfd7 100644
--- a/.classpath
+++ b/.classpath
@@ -1,13 +1,57 @@
-
-
+
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
index e9ea9a6..4dc29f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,5 @@ local.properties
.loadpath
.metadata
workspace.xml
-settings.json
\ No newline at end of file
+settings.json
+target/
diff --git a/.project b/.project
index 9e5a886..f8b3eba 100644
--- a/.project
+++ b/.project
@@ -10,8 +10,14 @@
+
+ org.eclipse.m2e.core.maven2Builder
+
+
+
+ org.eclipse.m2e.core.maven2Nature
org.eclipse.jdt.core.javanature
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index 99f26c0..2b76340 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,2 @@
eclipse.preferences.version=1
-encoding/=UTF-8
+encoding//src/main/java=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 0c68a61..fa50df0 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -3,5 +3,10 @@ org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
diff --git a/README.md b/README.md
index b2b77a8..c470c4c 100644
--- a/README.md
+++ b/README.md
@@ -73,3 +73,25 @@ texto e também a velocidade máxima que o rover pode alcançar.
A velocidade mínima permitida é de 3m/s. Clique em Pilotar e ele comecará a se
mover para o alvo, desviando dos obstáculos à frente.
+
+### Desenvolvimento do MechPeste com Maven
+
+Agora o MechPeste tem como base o gerenciador de dependências Maven. Para poder instalar a biblioteca
+do KRPC no entanto, como não está disponível no repositório público do Maven, é necessário fazer o download
+e instalar a biblioteca KRPC em sua versão 0.5.2 com o seguinte comando:
+
+``` bash
+mvn install:install-file \
+ -Dfile=\krpc-java-0.5.2.jar \
+ -DgroupId=io.github.krpc \
+ -DartifactId=krpc-java \
+ -Dversion=0.5.2 \
+ -Dpackaging=jar \
+```
+Substitua `` pela pasta onde está o arquivo do KRPC. Isso instalará essa biblioteca
+no seu repositório local.
+
+Agora você poderá usar comandos do Maven para instalar e construir a aplicação:
+```bash
+mvn clean install package
+```
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..2807bf2
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,89 @@
+
+ 4.0.0
+
+ com.pesterenan
+ MechPeste
+ 0.7.0
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+ UTF-8
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.1.0
+
+
+
+ com.pesterenan.MechPeste
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.3.0
+
+
+
+ com.pesterenan.MechPeste
+
+
+
+ jar-with-dependencies
+
+ MechPeste-${project.version}
+ false
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
+ 1.8
+ 1.8
+
+
+
+
+ org.apache.maven
+ maven-model
+ 3.3.9
+
+
+ io.github.krpc
+ krpc-java
+ 0.5.2
+
+
+ org.javatuples
+ javatuples
+ 1.2
+
+
+ com.google.protobuf
+ protobuf-java
+ 3.22.1
+
+
+
+
diff --git a/src/com/pesterenan/resources/javatuples-1.2.jar b/src/com/pesterenan/resources/javatuples-1.2.jar
deleted file mode 100644
index 8944308..0000000
Binary files a/src/com/pesterenan/resources/javatuples-1.2.jar and /dev/null differ
diff --git a/src/com/pesterenan/resources/protobuf-java-3.22.1.jar b/src/com/pesterenan/resources/protobuf-java-3.22.1.jar
deleted file mode 100644
index 7685cda..0000000
Binary files a/src/com/pesterenan/resources/protobuf-java-3.22.1.jar and /dev/null differ
diff --git a/src/com/pesterenan/utils/Navigation.java b/src/com/pesterenan/utils/Navigation.java
deleted file mode 100644
index 70cc9d8..0000000
--- a/src/com/pesterenan/utils/Navigation.java
+++ /dev/null
@@ -1,141 +0,0 @@
-package com.pesterenan.utils;
-
-import krpc.client.RPCException;
-import krpc.client.Stream;
-import krpc.client.StreamException;
-import org.javatuples.Triplet;
-
-import static com.pesterenan.MechPeste.getConnection;
-import static com.pesterenan.MechPeste.getSpaceCenter;
-import static krpc.client.services.SpaceCenter.*;
-
-public class Navigation {
-
- public static final Triplet RADIAL = new Triplet<>(1.0, 0.0, 0.0);
- public static final Triplet ANTI_RADIAL = new Triplet<>(-1.0, 0.0, 0.0);
- public static final Triplet PROGRADE = new Triplet<>(0.0, 1.0, 0.0);
- public static final Triplet RETROGRADE = new Triplet<>(0.0, -1.0, 0.0);
- public static final Triplet NORMAL = new Triplet<>(0.0, 0.0, 1.0);
- public static final Triplet ANTI_NORMAL = new Triplet<>(0.0, 0.0, -1.0);
- // private Drawing drawing;
- private Vessel currentVessel;
- private Flight flightParameters;
- private Stream horizontalSpeed;
- private ReferenceFrame orbitalReference;
-
- public Navigation(Vessel currentVessel) {
- this.currentVessel = currentVessel;
- initializeParameters();
- }
-
- private void initializeParameters() {
- try {
-// drawing = Drawing.newInstance(getConexao());
- orbitalReference = currentVessel.getOrbit().getBody().getReferenceFrame();
- flightParameters = currentVessel.flight(orbitalReference);
- horizontalSpeed = getConnection().addStream(flightParameters, "getHorizontalSpeed");
- } catch (RPCException | StreamException ignored) {
- }
- }
-
- public void aimAtManeuver(Node maneuver) throws RPCException {
- aimAtDirection(getSpaceCenter().transformDirection(PROGRADE, maneuver.getReferenceFrame(), orbitalReference));
- }
-
- public void aimForLanding() throws RPCException, StreamException {
- Vector currentPosition = new Vector(currentVessel.position(orbitalReference));
- Vector retrograde = new Vector(
- getSpaceCenter().transformPosition(RETROGRADE, currentVessel.getSurfaceVelocityReferenceFrame(),
- orbitalReference
- )).subtract(currentPosition);
- Vector radial = new Vector(getSpaceCenter().transformDirection(RADIAL,
- currentVessel.getSurfaceReferenceFrame(),
- orbitalReference
- ));
- double angleLimit = Utilities.remap(0, 10, 0, 0.9, horizontalSpeed.get(), true);
- Vector landingVector = Utilities.linearInterpolation(radial, retrograde, angleLimit);
- aimAtDirection(landingVector.toTriplet());
- }
-
-// public void aimAtTarget() throws RPCException, StreamException, InterruptedException {
-// Vector currentPosition = new Vector(naveAtual.position(pontoRefSuperficie));
-// Vector targetPosition = new Vector(centroEspacial.getTargetVessel().position(pontoRefSuperficie));
-// targetPosition.x = 0.0;
-// double distanceToTarget = Vector.distance(currentPosition, targetPosition);
-//
-// Vector toTargetDirection = Vector.targetDirection(currentPosition, targetPosition);
-// Vector oppositeDirection = Vector.targetOppositeDirection(currentPosition, targetPosition);
-// Vector progradeDirection = Vector.targetDirection(currentPosition, new Vector(
-// centroEspacial.transformPosition(PROGRADE, naveAtual.getSurfaceVelocityReferenceFrame(),
-// pontoRefSuperficie
-// )));
-// Vector retrogradeDirection = Vector.targetDirection(currentPosition, new Vector(
-// centroEspacial.transformPosition(RETROGRADE, naveAtual.getSurfaceVelocityReferenceFrame(),
-// pontoRefSuperficie
-// )));
-// progradeDirection.x = 0.0;
-// retrogradeDirection.x = 0.0;
-// drawing.addDirection(toTargetDirection.toTriplet(), pontoRefSuperficie, 10, true);
-// drawing.addDirection(oppositeDirection.toTriplet(), pontoRefSuperficie, 5, true);
-// double pointingToTargetThreshold = Utilities.remap(0, 200, 0, 1, distanceToTarget, true);
-// double speedThreshold = Utilities.remap(0, 20, 0, 1, horizontalSpeed.get(), true);
-//
-// Vector currentDirection =
-// Utilities.linearInterpolation(oppositeDirection, toTargetDirection, pointingToTargetThreshold);
-// double angleCurrentDirection =
-// new Vector(currentDirection.z, currentDirection.y, currentDirection.x).heading();
-// double angleProgradeDirection =
-// new Vector(progradeDirection.z, progradeDirection.y, progradeDirection.x).heading();
-// double deltaAngle = angleProgradeDirection - angleCurrentDirection;
-// System.out.println(deltaAngle);
-// if (deltaAngle > 3) {
-// currentDirection.sum(progradeDirection).normalize();
-// } else if (deltaAngle < -3) {
-// currentDirection.subtract(progradeDirection).normalize();
-// }
-// drawing.addDirection(currentDirection.toTriplet(), pontoRefSuperficie, 25, true);
-//
-//
-// Vector currentDirectionOnOrbitalRef = new Vector(
-// centroEspacial.transformDirection(currentDirection.toTriplet(), pontoRefSuperficie,
-// pontoRefOrbital));
-// Vector radial = new Vector(centroEspacial.transformDirection(RADIAL, pontoRefSuperficie,
-// pontoRefOrbital));
-// Vector speedVector = Utilities.linearInterpolation(retrogradeDirection, progradeDirection, speedThreshold);
-// Vector speedVectorOnOrbitalRef = new Vector(
-// centroEspacial.transformDirection(speedVector.toTriplet(), pontoRefSuperficie,
-// pontoRefOrbital));
-// Vector pointingVector =
-// Utilities.linearInterpolation(currentDirectionOnOrbitalRef, radial.sum(speedVectorOnOrbitalRef),
-// speedThreshold
-// );
-// Thread.sleep(50);
-// drawing.clear(false);
-// aimAtDirection(pointingVector.toTriplet());
-// }
-
- public void aimAtPrograde() throws RPCException {
- aimAtDirection(getSpaceCenter().transformDirection(PROGRADE, currentVessel.getSurfaceVelocityReferenceFrame(),
- orbitalReference
- ));
- }
-
- public void aimAtRadialOut() throws RPCException {
- aimAtDirection(getSpaceCenter().transformDirection(RADIAL, currentVessel.getSurfaceReferenceFrame(),
- orbitalReference
- ));
- }
-
- public void aimAtRetrograde() throws RPCException {
- aimAtDirection(getSpaceCenter().transformDirection(RETROGRADE,
- currentVessel.getSurfaceVelocityReferenceFrame(),
- orbitalReference
- ));
- }
-
- public void aimAtDirection(Triplet currentDirection) throws RPCException {
- currentVessel.getAutoPilot().setReferenceFrame(orbitalReference);
- currentVessel.getAutoPilot().setTargetDirection(currentDirection);
- }
-
-}
diff --git a/src/com/pesterenan/views/InstallKrpcDialog.java b/src/com/pesterenan/views/InstallKrpcDialog.java
deleted file mode 100644
index 2a905fa..0000000
--- a/src/com/pesterenan/views/InstallKrpcDialog.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package com.pesterenan.views;
-
-import com.pesterenan.resources.Bundle;
-import com.pesterenan.updater.KrpcInstaller;
-
-import javax.swing.*;
-import javax.swing.GroupLayout.Alignment;
-import javax.swing.LayoutStyle.ComponentPlacement;
-import javax.swing.border.BevelBorder;
-import javax.swing.border.TitledBorder;
-
-public class InstallKrpcDialog extends JDialog {
- private static final long serialVersionUID = 1L;
- private JLabel lblInstallerInfo;
- private final JSeparator separator = new JSeparator();
- private final JPanel pnlKspFolderPath = new JPanel();
- private final JTextField txfPath = new JTextField();
- private JButton btnBrowsePath;
- private JButton btnDownloadInstall;
- private JButton btnCancel;
- private JPanel pnlStatus;
- private static JLabel lblStatus;
-
- public InstallKrpcDialog() {
- try {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- initComponents();
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- private void initComponents() {
- setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
- setResizable(false);
- setBounds(MainGui.centerDialogOnScreen());
- setAlwaysOnTop(true);
- setModalityType(ModalityType.APPLICATION_MODAL);
- setTitle(Bundle.getString("installer_dialog_title")); //$NON-NLS-1$
-
- lblInstallerInfo = new JLabel(Bundle.getString("installer_dialog_txt_info")); //$NON-NLS-1$
-
- pnlKspFolderPath.setBorder(
- new TitledBorder(null, Bundle.getString("installer_dialog_pnl_path"), TitledBorder.LEADING,//$NON
- // -NLS-1$
- TitledBorder.TOP, null, null
- ));
-
- btnDownloadInstall = new JButton(Bundle.getString("installer_dialog_btn_download")); //$NON
- // -NLS-1$
- btnDownloadInstall.addActionListener((e) -> KrpcInstaller.downloadAndInstallKrpc());
- btnDownloadInstall.setEnabled(false);
-
- btnCancel = new JButton(Bundle.getString("installer_dialog_btn_cancel")); //$NON-NLS-1$
- btnCancel.addActionListener((e) -> this.dispose());
-
- pnlStatus = new JPanel();
- pnlStatus.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
-
- GroupLayout groupLayout = new GroupLayout(getContentPane());
- groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
- .addGroup(groupLayout.createSequentialGroup()
- .addContainerGap()
- .addGroup(groupLayout.createParallelGroup(
- Alignment.LEADING)
- .addComponent(
- pnlKspFolderPath,
- GroupLayout.DEFAULT_SIZE,
- 414,
- Short.MAX_VALUE
- )
- .addComponent(
- lblInstallerInfo,
- Alignment.TRAILING,
- GroupLayout.DEFAULT_SIZE,
- 414,
- Short.MAX_VALUE
- )
- .addComponent(separator,
- Alignment.TRAILING,
- GroupLayout.DEFAULT_SIZE,
- 414,
- Short.MAX_VALUE
- )
- .addGroup(
- groupLayout.createSequentialGroup()
- .addComponent(
- btnDownloadInstall)
- .addPreferredGap(
- ComponentPlacement.RELATED,
- 184,
- Short.MAX_VALUE
- )
- .addComponent(
- btnCancel)))
- .addGap(10))
- .addComponent(pnlStatus, Alignment.LEADING, GroupLayout.DEFAULT_SIZE,
- 434, Short.MAX_VALUE
- ));
- groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING)
- .addGroup(groupLayout.createSequentialGroup()
- .addContainerGap()
- .addComponent(lblInstallerInfo,
- GroupLayout.PREFERRED_SIZE, 60,
- GroupLayout.PREFERRED_SIZE
- )
- .addGap(2)
- .addComponent(separator,
- GroupLayout.PREFERRED_SIZE, 2,
- GroupLayout.PREFERRED_SIZE
- )
- .addPreferredGap(ComponentPlacement.UNRELATED)
- .addComponent(pnlKspFolderPath,
- GroupLayout.PREFERRED_SIZE, 51,
- GroupLayout.PREFERRED_SIZE
- )
- .addPreferredGap(ComponentPlacement.UNRELATED)
- .addGroup(groupLayout.createParallelGroup(
- Alignment.BASELINE)
- .addComponent(
- btnDownloadInstall)
- .addComponent(btnCancel))
- .addPreferredGap(ComponentPlacement.RELATED, 60,
- Short.MAX_VALUE
- )
- .addComponent(pnlStatus,
- GroupLayout.PREFERRED_SIZE, 25,
- GroupLayout.PREFERRED_SIZE
- )));
-
- lblStatus = new JLabel();
- GroupLayout glPnlStatus = new GroupLayout(pnlStatus);
- glPnlStatus.setHorizontalGroup(glPnlStatus.createParallelGroup(Alignment.LEADING)
- .addGroup(glPnlStatus.createSequentialGroup()
- .addContainerGap()
- .addComponent(lblStatus)
- .addContainerGap(389, Short.MAX_VALUE)));
- glPnlStatus.setVerticalGroup(glPnlStatus.createParallelGroup(Alignment.TRAILING)
- .addGroup(glPnlStatus.createSequentialGroup()
- .addGap(2)
- .addComponent(lblStatus, GroupLayout.DEFAULT_SIZE,
- GroupLayout.DEFAULT_SIZE,
- Short.MAX_VALUE
- )
- .addGap(0)));
- pnlStatus.setLayout(glPnlStatus);
-
- txfPath.setEditable(false);
- txfPath.setColumns(10);
-
- btnBrowsePath = new JButton(Bundle.getString("installer_dialog_btn_browse")); //$NON-NLS-1$
- btnBrowsePath.addActionListener(e -> {
- chooseKSPFolder();
- txfPath.setText(KrpcInstaller.getKspFolder());
- });
- GroupLayout glPnlKspFolderPath = new GroupLayout(pnlKspFolderPath);
- glPnlKspFolderPath.setHorizontalGroup(glPnlKspFolderPath.createParallelGroup(Alignment.LEADING)
- .addGroup(Alignment.TRAILING,
- glPnlKspFolderPath.createSequentialGroup()
- .addContainerGap()
- .addComponent(txfPath,
- GroupLayout.DEFAULT_SIZE,
- 273,
- Short.MAX_VALUE
- )
- .addPreferredGap(
- ComponentPlacement.RELATED)
- .addComponent(btnBrowsePath,
- GroupLayout.PREFERRED_SIZE,
- 103,
- GroupLayout.PREFERRED_SIZE
- )
- .addContainerGap()
- ));
- glPnlKspFolderPath.setVerticalGroup(glPnlKspFolderPath.createParallelGroup(Alignment.LEADING)
- .addGroup(glPnlKspFolderPath.createSequentialGroup()
- .addGroup(
- glPnlKspFolderPath.createParallelGroup(
- Alignment.BASELINE)
- .addComponent(
- txfPath,
- GroupLayout.PREFERRED_SIZE,
- 23,
- GroupLayout.PREFERRED_SIZE
- )
- .addComponent(
- btnBrowsePath))
- .addContainerGap(24,
- Short.MAX_VALUE
- )));
- pnlKspFolderPath.setLayout(glPnlKspFolderPath);
- getContentPane().setLayout(groupLayout);
-
- setVisible(true);
- }
-
- public void chooseKSPFolder() {
- JFileChooser kspDir = new JFileChooser();
- kspDir.setDialogTitle("Escolha a pasta do KSP na Steam");
- kspDir.setMultiSelectionEnabled(false);
- kspDir.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- int response = kspDir.showOpenDialog(this);
- if (response == JFileChooser.APPROVE_OPTION) {
- KrpcInstaller.setKspFolder(kspDir.getSelectedFile().getPath());
- btnDownloadInstall.setEnabled(true);
- setStatus("Pasta escolhida, pronto para instalar.");
- } else {
- KrpcInstaller.setKspFolder(null);
- btnDownloadInstall.setEnabled(false);
- setStatus("");
- }
- }
-
- public static void setStatus(String status) {
- lblStatus.setText(status);
- }
-}
diff --git a/src/com/pesterenan/views/UIMethods.java b/src/com/pesterenan/views/UIMethods.java
deleted file mode 100644
index 3a34ae7..0000000
--- a/src/com/pesterenan/views/UIMethods.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pesterenan.views;
-
-public interface UIMethods {
-
- public void initComponents();
-
- public void setupComponents();
-
- public void layoutComponents();
-}
\ No newline at end of file
diff --git a/src/com/pesterenan/Main.java b/src/main/java/com/pesterenan/Main.java
similarity index 100%
rename from src/com/pesterenan/Main.java
rename to src/main/java/com/pesterenan/Main.java
diff --git a/src/com/pesterenan/MechPeste.java b/src/main/java/com/pesterenan/MechPeste.java
similarity index 100%
rename from src/com/pesterenan/MechPeste.java
rename to src/main/java/com/pesterenan/MechPeste.java
diff --git a/src/com/pesterenan/controllers/Controller.java b/src/main/java/com/pesterenan/controllers/Controller.java
similarity index 100%
rename from src/com/pesterenan/controllers/Controller.java
rename to src/main/java/com/pesterenan/controllers/Controller.java
diff --git a/src/com/pesterenan/controllers/DockingController.java b/src/main/java/com/pesterenan/controllers/DockingController.java
similarity index 100%
rename from src/com/pesterenan/controllers/DockingController.java
rename to src/main/java/com/pesterenan/controllers/DockingController.java
diff --git a/src/com/pesterenan/controllers/LandingController.java b/src/main/java/com/pesterenan/controllers/LandingController.java
similarity index 100%
rename from src/com/pesterenan/controllers/LandingController.java
rename to src/main/java/com/pesterenan/controllers/LandingController.java
diff --git a/src/com/pesterenan/controllers/LiftoffController.java b/src/main/java/com/pesterenan/controllers/LiftoffController.java
similarity index 100%
rename from src/com/pesterenan/controllers/LiftoffController.java
rename to src/main/java/com/pesterenan/controllers/LiftoffController.java
diff --git a/src/com/pesterenan/controllers/ManeuverController.java b/src/main/java/com/pesterenan/controllers/ManeuverController.java
similarity index 99%
rename from src/com/pesterenan/controllers/ManeuverController.java
rename to src/main/java/com/pesterenan/controllers/ManeuverController.java
index ba85958..10f4f96 100644
--- a/src/com/pesterenan/controllers/ManeuverController.java
+++ b/src/main/java/com/pesterenan/controllers/ManeuverController.java
@@ -209,13 +209,11 @@ private void alignPlanesWithTargetVessel() {
RunManeuverJPanel.positionManeuverAt(closestIsAN ? "ascending" : "descending");
double currentInclination = Math
.toDegrees(currentManeuver.getOrbit().relativeInclination(targetVesselOrbit));
-
ctrlManeuver.setTimeSample(25);
while (currentInclination > 0.05) {
currentInclination = Math
.toDegrees(currentManeuver.getOrbit().relativeInclination(targetVesselOrbit));
double ctrlOutput = ctrlManeuver.calculate(currentInclination * 100, 0);
-
currentManeuver.setNormal(currentManeuver.getNormal() + (closestIsAN ? ctrlOutput : -ctrlOutput));
Thread.sleep(25);
}
@@ -228,7 +226,6 @@ private void rendezvousWithTargetVessel() {
try {
boolean hasManeuverNodes = getNaveAtual().getControl().getNodes().size() > 0;
List currentManeuvers = getNaveAtual().getControl().getNodes();
-
Node lastManeuverNode;
double lastManeuverNodeUT = 60;
if (hasManeuverNodes) {
@@ -331,7 +328,10 @@ private void rendezvousWithTargetVessel() {
// }
// lastManeuverNode.setUT(lastManeuverNode.getUT() -
// lastManeuverNode.getOrbit().getPeriod() / 2);
- } catch (Exception err) {}
+ } catch (
+
+ Exception err) {
+ }
}
private double compareOrbitParameter(Orbit maneuverOrbit, Orbit targetOrbit, Compare parameter) {
@@ -476,7 +476,6 @@ public void executeBurn(Node noDeManobra, double duracaoDaQueima) {
throttle(ctrlManeuver.calculate((noDeManobra.getDeltaV() - Math.floor(burnDvLeft)) /
noDeManobra.getDeltaV() * limitValue, limitValue));
Thread.sleep(25);
-
}
throttle(0.0f);
if (fineAdjustment) {
diff --git a/src/com/pesterenan/controllers/RoverController.java b/src/main/java/com/pesterenan/controllers/RoverController.java
similarity index 100%
rename from src/com/pesterenan/controllers/RoverController.java
rename to src/main/java/com/pesterenan/controllers/RoverController.java
diff --git a/src/com/pesterenan/model/ActiveVessel.java b/src/main/java/com/pesterenan/model/ActiveVessel.java
similarity index 100%
rename from src/com/pesterenan/model/ActiveVessel.java
rename to src/main/java/com/pesterenan/model/ActiveVessel.java
diff --git a/src/com/pesterenan/resources/Bundle.java b/src/main/java/com/pesterenan/resources/Bundle.java
similarity index 73%
rename from src/com/pesterenan/resources/Bundle.java
rename to src/main/java/com/pesterenan/resources/Bundle.java
index 5866198..3523229 100644
--- a/src/com/pesterenan/resources/Bundle.java
+++ b/src/main/java/com/pesterenan/resources/Bundle.java
@@ -1,12 +1,12 @@
package com.pesterenan.resources;
+import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
public class Bundle {
- public static final String BUNDLE_NAME = Bundle.class.getPackage().getName() + ".MechPesteBundle"; //$NON-NLS-1$
-
- public static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
+ public static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("MechPesteBundle",
+ Locale.getDefault());
private Bundle() {
}
diff --git a/src/com/pesterenan/updater/KrpcInstaller.java b/src/main/java/com/pesterenan/updater/KrpcInstaller.java
similarity index 99%
rename from src/com/pesterenan/updater/KrpcInstaller.java
rename to src/main/java/com/pesterenan/updater/KrpcInstaller.java
index f328692..76e835f 100644
--- a/src/com/pesterenan/updater/KrpcInstaller.java
+++ b/src/main/java/com/pesterenan/updater/KrpcInstaller.java
@@ -90,4 +90,4 @@ public static void unzipKrpc() {
}
}
-}
\ No newline at end of file
+}
diff --git a/src/com/pesterenan/utils/Attributes.java b/src/main/java/com/pesterenan/utils/Attributes.java
similarity index 100%
rename from src/com/pesterenan/utils/Attributes.java
rename to src/main/java/com/pesterenan/utils/Attributes.java
diff --git a/src/com/pesterenan/utils/ControlePID.java b/src/main/java/com/pesterenan/utils/ControlePID.java
similarity index 100%
rename from src/com/pesterenan/utils/ControlePID.java
rename to src/main/java/com/pesterenan/utils/ControlePID.java
diff --git a/src/com/pesterenan/utils/Modulos.java b/src/main/java/com/pesterenan/utils/Modulos.java
similarity index 100%
rename from src/com/pesterenan/utils/Modulos.java
rename to src/main/java/com/pesterenan/utils/Modulos.java
diff --git a/src/main/java/com/pesterenan/utils/Navigation.java b/src/main/java/com/pesterenan/utils/Navigation.java
new file mode 100644
index 0000000..389b33e
--- /dev/null
+++ b/src/main/java/com/pesterenan/utils/Navigation.java
@@ -0,0 +1,158 @@
+package com.pesterenan.utils;
+
+import krpc.client.RPCException;
+import krpc.client.Stream;
+import krpc.client.StreamException;
+import org.javatuples.Triplet;
+
+import static com.pesterenan.MechPeste.getConnection;
+import static com.pesterenan.MechPeste.getSpaceCenter;
+import static krpc.client.services.SpaceCenter.*;
+
+public class Navigation {
+
+ public static final Triplet RADIAL = new Triplet<>(1.0, 0.0, 0.0);
+ public static final Triplet ANTI_RADIAL = new Triplet<>(-1.0, 0.0, 0.0);
+ public static final Triplet PROGRADE = new Triplet<>(0.0, 1.0, 0.0);
+ public static final Triplet RETROGRADE = new Triplet<>(0.0, -1.0, 0.0);
+ public static final Triplet NORMAL = new Triplet<>(0.0, 0.0, 1.0);
+ public static final Triplet ANTI_NORMAL = new Triplet<>(0.0, 0.0, -1.0);
+ // private Drawing drawing;
+ private Vessel currentVessel;
+ private Flight flightParameters;
+ private Stream horizontalSpeed;
+ private ReferenceFrame orbitalReference;
+
+ public Navigation(Vessel currentVessel) {
+ this.currentVessel = currentVessel;
+ initializeParameters();
+ }
+
+ private void initializeParameters() {
+ try {
+ // drawing = Drawing.newInstance(getConexao());
+ orbitalReference = currentVessel.getOrbit().getBody().getReferenceFrame();
+ flightParameters = currentVessel.flight(orbitalReference);
+ horizontalSpeed = getConnection().addStream(flightParameters, "getHorizontalSpeed");
+ } catch (RPCException | StreamException ignored) {
+ }
+ }
+
+ public void aimAtManeuver(Node maneuver) throws RPCException {
+ aimAtDirection(getSpaceCenter().transformDirection(PROGRADE, maneuver.getReferenceFrame(), orbitalReference));
+ }
+
+ public void aimForLanding() throws RPCException, StreamException {
+ Vector currentPosition = new Vector(currentVessel.position(orbitalReference));
+ Vector retrograde = new Vector(
+ getSpaceCenter().transformPosition(RETROGRADE, currentVessel.getSurfaceVelocityReferenceFrame(),
+ orbitalReference))
+ .subtract(currentPosition);
+ Vector radial = new Vector(getSpaceCenter().transformDirection(RADIAL,
+ currentVessel.getSurfaceReferenceFrame(),
+ orbitalReference));
+ double angleLimit = Utilities.remap(0, 10, 0, 0.9, horizontalSpeed.get(), true);
+ Vector landingVector = Utilities.linearInterpolation(radial, retrograde, angleLimit);
+ aimAtDirection(landingVector.toTriplet());
+ }
+
+ // public void aimAtTarget() throws RPCException, StreamException,
+ // InterruptedException {
+ // Vector currentPosition = new Vector(naveAtual.position(pontoRefSuperficie));
+ // Vector targetPosition = new
+ // Vector(centroEspacial.getTargetVessel().position(pontoRefSuperficie));
+ // targetPosition.x = 0.0;
+ // double distanceToTarget = Vector.distance(currentPosition, targetPosition);
+ //
+ // Vector toTargetDirection = Vector.targetDirection(currentPosition,
+ // targetPosition);
+ // Vector oppositeDirection = Vector.targetOppositeDirection(currentPosition,
+ // targetPosition);
+ // Vector progradeDirection = Vector.targetDirection(currentPosition, new
+ // Vector(
+ // centroEspacial.transformPosition(PROGRADE,
+ // naveAtual.getSurfaceVelocityReferenceFrame(),
+ // pontoRefSuperficie
+ // )));
+ // Vector retrogradeDirection = Vector.targetDirection(currentPosition, new
+ // Vector(
+ // centroEspacial.transformPosition(RETROGRADE,
+ // naveAtual.getSurfaceVelocityReferenceFrame(),
+ // pontoRefSuperficie
+ // )));
+ // progradeDirection.x = 0.0;
+ // retrogradeDirection.x = 0.0;
+ // drawing.addDirection(toTargetDirection.toTriplet(), pontoRefSuperficie, 10,
+ // true);
+ // drawing.addDirection(oppositeDirection.toTriplet(), pontoRefSuperficie, 5,
+ // true);
+ // double pointingToTargetThreshold = Utilities.remap(0, 200, 0, 1,
+ // distanceToTarget, true);
+ // double speedThreshold = Utilities.remap(0, 20, 0, 1, horizontalSpeed.get(),
+ // true);
+ //
+ // Vector currentDirection =
+ // Utilities.linearInterpolation(oppositeDirection, toTargetDirection,
+ // pointingToTargetThreshold);
+ // double angleCurrentDirection =
+ // new Vector(currentDirection.z, currentDirection.y,
+ // currentDirection.x).heading();
+ // double angleProgradeDirection =
+ // new Vector(progradeDirection.z, progradeDirection.y,
+ // progradeDirection.x).heading();
+ // double deltaAngle = angleProgradeDirection - angleCurrentDirection;
+ // System.out.println(deltaAngle);
+ // if (deltaAngle > 3) {
+ // currentDirection.sum(progradeDirection).normalize();
+ // } else if (deltaAngle < -3) {
+ // currentDirection.subtract(progradeDirection).normalize();
+ // }
+ // drawing.addDirection(currentDirection.toTriplet(), pontoRefSuperficie, 25,
+ // true);
+ //
+ //
+ // Vector currentDirectionOnOrbitalRef = new Vector(
+ // centroEspacial.transformDirection(currentDirection.toTriplet(),
+ // pontoRefSuperficie,
+ // pontoRefOrbital));
+ // Vector radial = new Vector(centroEspacial.transformDirection(RADIAL,
+ // pontoRefSuperficie,
+ // pontoRefOrbital));
+ // Vector speedVector = Utilities.linearInterpolation(retrogradeDirection,
+ // progradeDirection, speedThreshold);
+ // Vector speedVectorOnOrbitalRef = new Vector(
+ // centroEspacial.transformDirection(speedVector.toTriplet(),
+ // pontoRefSuperficie,
+ // pontoRefOrbital));
+ // Vector pointingVector =
+ // Utilities.linearInterpolation(currentDirectionOnOrbitalRef,
+ // radial.sum(speedVectorOnOrbitalRef),
+ // speedThreshold
+ // );
+ // Thread.sleep(50);
+ // drawing.clear(false);
+ // aimAtDirection(pointingVector.toTriplet());
+ // }
+
+ public void aimAtPrograde() throws RPCException {
+ aimAtDirection(getSpaceCenter().transformDirection(PROGRADE, currentVessel.getSurfaceVelocityReferenceFrame(),
+ orbitalReference));
+ }
+
+ public void aimAtRadialOut() throws RPCException {
+ aimAtDirection(getSpaceCenter().transformDirection(RADIAL, currentVessel.getSurfaceReferenceFrame(),
+ orbitalReference));
+ }
+
+ public void aimAtRetrograde() throws RPCException {
+ aimAtDirection(getSpaceCenter().transformDirection(RETROGRADE,
+ currentVessel.getSurfaceVelocityReferenceFrame(),
+ orbitalReference));
+ }
+
+ public void aimAtDirection(Triplet currentDirection) throws RPCException {
+ currentVessel.getAutoPilot().setReferenceFrame(orbitalReference);
+ currentVessel.getAutoPilot().setTargetDirection(currentDirection);
+ }
+
+}
diff --git a/src/com/pesterenan/utils/PathFinding.java b/src/main/java/com/pesterenan/utils/PathFinding.java
similarity index 74%
rename from src/com/pesterenan/utils/PathFinding.java
rename to src/main/java/com/pesterenan/utils/PathFinding.java
index 56d2fcd..f5848e0 100644
--- a/src/com/pesterenan/utils/PathFinding.java
+++ b/src/main/java/com/pesterenan/utils/PathFinding.java
@@ -44,8 +44,8 @@ private void initializeParameters() {
public void addWaypointsOnSameBody(String waypointName) throws RPCException {
this.waypointName = waypointName;
- this.waypointsToReach =
- waypointManager.getWaypoints().stream().filter(this::hasSameName).collect(Collectors.toList());
+ this.waypointsToReach = waypointManager.getWaypoints().stream().filter(this::hasSameName)
+ .collect(Collectors.toList());
}
private boolean hasSameName(Waypoint waypoint) {
@@ -63,26 +63,25 @@ public Vector findNearestWaypoint() throws RPCException, IOException, Interrupte
double w2Distance = 0;
try {
w1Distance = Vector.distance(new Vector(getNaveAtual().position(orbitalReferenceFrame)),
- waypointPosOnSurface(w1)
- );
+ waypointPosOnSurface(w1));
w2Distance = Vector.distance(new Vector(getNaveAtual().position(orbitalReferenceFrame)),
- waypointPosOnSurface(w2)
- );
+ waypointPosOnSurface(w2));
} catch (RPCException e) {
}
return w1Distance > w2Distance ? 1 : -1;
}).collect(Collectors.toList());
waypointsToReach.forEach(System.out::println);
Waypoint currentWaypoint = waypointsToReach.get(0);
-// for (Waypoint waypoint : waypointsToReach) {
-// double waypointDistance = Vector.distance(new Vector(getNaveAtual().position(orbitalReferenceFrame)),
-// waypointPosOnSurface(waypoint)
-// );
-// if (currentDistance > waypointDistance) {
-// currentDistance = waypointDistance;
-// currentWaypoint = waypoint;
-// }
-// }
+ // for (Waypoint waypoint : waypointsToReach) {
+ // double waypointDistance = Vector.distance(new
+ // Vector(getNaveAtual().position(orbitalReferenceFrame)),
+ // waypointPosOnSurface(waypoint)
+ // );
+ // if (currentDistance > waypointDistance) {
+ // currentDistance = waypointDistance;
+ // currentWaypoint = waypoint;
+ // }
+ // }
return waypointPosOnSurface(currentWaypoint);
}
@@ -125,7 +124,8 @@ public void removeWaypointFromList() throws RPCException {
}
/**
- * Builds the path to the targetPosition, on the Celestial Body Reference ( Orbital Ref )
+ * Builds the path to the targetPosition, on the Celestial Body Reference (
+ * Orbital Ref )
*
* @param targetPosition the target pos to build the path to
* @throws IOException
@@ -133,10 +133,11 @@ public void removeWaypointFromList() throws RPCException {
* @throws InterruptedException
*/
public void buildPathToTarget(Vector targetPosition) throws IOException, RPCException, InterruptedException {
- // Get current rover Position on Orbital Ref, transform to Surf Ref and add 20 centimeters on height:
+ // Get current rover Position on Orbital Ref, transform to Surf Ref and add 20
+ // centimeters on height:
Vector roverHeight = new Vector(0.2, 0.0, 0.0);
- Vector currentRoverPos =
- transformSurfToOrb(new Vector(getNaveAtual().position(surfaceReferenceFrame)).sum(roverHeight));
+ Vector currentRoverPos = transformSurfToOrb(
+ new Vector(getNaveAtual().position(surfaceReferenceFrame)).sum(roverHeight));
// Calculate distance from rover to target on Orbital Ref:
double distanceToTarget = Vector.distance(currentRoverPos, targetPosition);
// Add rover pos as first point, on Orbital Ref
@@ -148,14 +149,12 @@ public void buildPathToTarget(Vector targetPosition) throws IOException, RPCExce
throw new InterruptedException();
}
Vector currentPoint = pathToTarget.get(index);
- Vector targetDirection =
- transformOrbToSurf(targetPosition).subtract(transformOrbToSurf(currentPoint)).normalize();
- Vector nextPoint =
- transformSurfToOrb(calculateNextPoint(transformOrbToSurf(currentPoint), targetDirection));
+ Vector targetDirection = transformOrbToSurf(targetPosition).subtract(transformOrbToSurf(currentPoint))
+ .normalize();
+ Vector nextPoint = transformSurfToOrb(calculateNextPoint(transformOrbToSurf(currentPoint), targetDirection));
pathToTarget.add(nextPoint);
index++;
- double distanceBetweenPoints =
- Vector.distance(transformOrbToSurf(currentPoint), transformOrbToSurf(nextPoint));
+ double distanceBetweenPoints = Vector.distance(transformOrbToSurf(currentPoint), transformOrbToSurf(nextPoint));
distanceToTarget -= distanceBetweenPoints;
}
pathToTarget.add(getPosOnSurface(targetPosition));
@@ -163,12 +162,11 @@ public void buildPathToTarget(Vector targetPosition) throws IOException, RPCExce
}
private void drawPathToTarget(List path) throws RPCException {
- Deque> drawablePath =
- path.stream().map(Vector::toTriplet).collect(Collectors.toCollection(ArrayDeque::new));
+ Deque> drawablePath = path.stream().map(Vector::toTriplet)
+ .collect(Collectors.toCollection(ArrayDeque::new));
drawablePath.offerFirst(new Triplet<>(0.0, 0.0, 0.0));
drawablePath.offerLast(new Triplet<>(0.0, 0.0, 0.0));
- polygonPath =
- drawing.addPolygon(drawablePath.stream().collect(Collectors.toList()), orbitalReferenceFrame, true);
+ polygonPath = drawing.addPolygon(drawablePath.stream().collect(Collectors.toList()), orbitalReferenceFrame, true);
polygonPath.setThickness(0.5f);
polygonPath.setColor(new Triplet<>(1.0, 0.5, 0.0));
}
@@ -184,25 +182,22 @@ private Vector calculateNextPoint(Vector currentPoint, Vector targetDirection) t
// PONTO REF SUPERFICIE: X = CIMA, Y = NORTE, Z = LESTE;
double stepDistance = 100.0;
// Calculate the next point position on surface:
- Vector nextPoint =
- getPosOnSurface(transformSurfToOrb(currentPoint.sum(targetDirection.multiply(stepDistance))));
+ Vector nextPoint = getPosOnSurface(transformSurfToOrb(currentPoint.sum(targetDirection.multiply(stepDistance))));
return transformOrbToSurf(nextPoint).sum(new Vector(0.2, 0.0, 0.0));
}
public double raycastDistance(Vector currentPoint, Vector targetDirection, SpaceCenter.ReferenceFrame reference,
- double searchDistance) throws RPCException {
+ double searchDistance) throws RPCException {
return Math.min(
getSpaceCenter().raycastDistance(currentPoint.toTriplet(), targetDirection.toTriplet(), reference),
- searchDistance
- );
+ searchDistance);
}
private Vector getPosOnSurface(Vector vector) throws RPCException {
return new Vector(
currentBody.surfacePosition(currentBody.latitudeAtPosition(vector.toTriplet(), orbitalReferenceFrame),
- currentBody.longitudeAtPosition(vector.toTriplet(), orbitalReferenceFrame),
- orbitalReferenceFrame
- ));
+ currentBody.longitudeAtPosition(vector.toTriplet(), orbitalReferenceFrame),
+ orbitalReferenceFrame));
}
private Vector transformSurfToOrb(Vector vector) throws IOException, RPCException {
diff --git a/src/com/pesterenan/utils/Telemetry.java b/src/main/java/com/pesterenan/utils/Telemetry.java
similarity index 100%
rename from src/com/pesterenan/utils/Telemetry.java
rename to src/main/java/com/pesterenan/utils/Telemetry.java
diff --git a/src/com/pesterenan/utils/Utilities.java b/src/main/java/com/pesterenan/utils/Utilities.java
similarity index 96%
rename from src/com/pesterenan/utils/Utilities.java
rename to src/main/java/com/pesterenan/utils/Utilities.java
index d3be012..86bdccc 100644
--- a/src/com/pesterenan/utils/Utilities.java
+++ b/src/main/java/com/pesterenan/utils/Utilities.java
@@ -27,7 +27,7 @@ public static Vector inverseLinearInterpolation(Vector start, Vector end, double
}
public static double remap(double inputMin, double inputMax, double outputMin, double outputMax, double value,
- boolean clampOutput) {
+ boolean clampOutput) {
double between = inverseLinearInterpolation(inputMin, inputMax, value);
double remappedOutput = linearInterpolation(outputMin, outputMax, between);
return clampOutput ? clamp(remappedOutput, outputMin, outputMax) : remappedOutput;
@@ -78,7 +78,6 @@ public String formatElapsedTime(Double totalSeconds) {
int minutes = (totalSeconds.intValue() % 3600) / 60;
int seconds = totalSeconds.intValue() % 60;
return String.format(Bundle.getString("pnl_tel_lbl_date_template"), years, days, hours, minutes,
- seconds
- ); //$NON-NLS-1$
+ seconds); // $NON-NLS-1$
}
}
diff --git a/src/com/pesterenan/utils/Vector.java b/src/main/java/com/pesterenan/utils/Vector.java
similarity index 100%
rename from src/com/pesterenan/utils/Vector.java
rename to src/main/java/com/pesterenan/utils/Vector.java
diff --git a/src/main/java/com/pesterenan/utils/VersionUtil.java b/src/main/java/com/pesterenan/utils/VersionUtil.java
new file mode 100644
index 0000000..a6084ca
--- /dev/null
+++ b/src/main/java/com/pesterenan/utils/VersionUtil.java
@@ -0,0 +1,32 @@
+package com.pesterenan.utils;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.InputStreamReader;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+
+public class VersionUtil {
+ public static String getVersion() {
+ String version = "N/A";
+ MavenXpp3Reader reader = new MavenXpp3Reader();
+ Model model;
+ try {
+ if ((new File("pom.xml")).exists()) {
+ model = reader.read(new FileReader("pom.xml"));
+ } else {
+ model = reader.read(
+ new InputStreamReader(
+ VersionUtil.class.getResourceAsStream(
+ "/META-INF/maven/com.pesterenan/MechPeste/pom.xml")));
+ }
+ version = model.getVersion();
+ return version;
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ }
+ return version;
+ }
+}
diff --git a/src/com/pesterenan/views/AboutJFrame.java b/src/main/java/com/pesterenan/views/AboutJFrame.java
similarity index 95%
rename from src/com/pesterenan/views/AboutJFrame.java
rename to src/main/java/com/pesterenan/views/AboutJFrame.java
index 7c3d2eb..e402033 100644
--- a/src/com/pesterenan/views/AboutJFrame.java
+++ b/src/main/java/com/pesterenan/views/AboutJFrame.java
@@ -9,6 +9,8 @@
import javax.swing.JLabel;
import javax.swing.JPanel;
+import com.pesterenan.utils.VersionUtil;
+
import static com.pesterenan.views.MainGui.BTN_DIMENSION;
import static com.pesterenan.views.MainGui.centerDialogOnScreen;
import static com.pesterenan.views.MainGui.createMarginComponent;
@@ -28,7 +30,7 @@ public AboutJFrame() {
@Override
public void initComponents() {
// Labels:
- lblMechpeste = new JLabel("MechPeste - v.0.6.2");
+ lblMechpeste = new JLabel("MechPeste - v." + VersionUtil.getVersion());
lblAboutInfo = new JLabel(
"Esse app foi desenvolvido com o intuito de auxiliar o controle de naves
no game Kerbal Space Program.
"
+ "Não há garantias sobre o controle exato do app, portanto fique atento
"
diff --git a/src/com/pesterenan/views/ChangeVesselDialog.java b/src/main/java/com/pesterenan/views/ChangeVesselDialog.java
similarity index 99%
rename from src/com/pesterenan/views/ChangeVesselDialog.java
rename to src/main/java/com/pesterenan/views/ChangeVesselDialog.java
index 527b9ab..3702480 100644
--- a/src/com/pesterenan/views/ChangeVesselDialog.java
+++ b/src/main/java/com/pesterenan/views/ChangeVesselDialog.java
@@ -99,7 +99,6 @@ public void layoutComponents() {
pnlScroll.add(scrollPane);
pnlScroll.add(Box.createHorizontalStrut(190));
-
JPanel pnlOptionsAndList = new JPanel();
pnlOptionsAndList.setLayout(new BoxLayout(pnlOptionsAndList, BoxLayout.X_AXIS));
pnlOptions.setAlignmentY(TOP_ALIGNMENT);
diff --git a/src/com/pesterenan/views/CreateManeuverJPanel.java b/src/main/java/com/pesterenan/views/CreateManeuverJPanel.java
similarity index 99%
rename from src/com/pesterenan/views/CreateManeuverJPanel.java
rename to src/main/java/com/pesterenan/views/CreateManeuverJPanel.java
index 8bdf2ed..6c3a5ae 100644
--- a/src/com/pesterenan/views/CreateManeuverJPanel.java
+++ b/src/main/java/com/pesterenan/views/CreateManeuverJPanel.java
@@ -81,7 +81,6 @@ public void initComponents() {
sliderValues.put(5, 1000f);
ctrlManeuver.setOutput(-100, 100);
-
}
@Override
diff --git a/src/com/pesterenan/views/DockingJPanel.java b/src/main/java/com/pesterenan/views/DockingJPanel.java
similarity index 98%
rename from src/com/pesterenan/views/DockingJPanel.java
rename to src/main/java/com/pesterenan/views/DockingJPanel.java
index 8c5e975..26edbb3 100644
--- a/src/com/pesterenan/views/DockingJPanel.java
+++ b/src/main/java/com/pesterenan/views/DockingJPanel.java
@@ -5,7 +5,6 @@
import com.pesterenan.utils.Modulos;
import javax.swing.*;
-import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
diff --git a/src/com/pesterenan/views/FunctionsAndTelemetryJPanel.java b/src/main/java/com/pesterenan/views/FunctionsAndTelemetryJPanel.java
similarity index 99%
rename from src/com/pesterenan/views/FunctionsAndTelemetryJPanel.java
rename to src/main/java/com/pesterenan/views/FunctionsAndTelemetryJPanel.java
index 0c803a7..5a6dc03 100644
--- a/src/com/pesterenan/views/FunctionsAndTelemetryJPanel.java
+++ b/src/main/java/com/pesterenan/views/FunctionsAndTelemetryJPanel.java
@@ -22,7 +22,6 @@ public class FunctionsAndTelemetryJPanel extends JPanel implements UIMethods {
private final Dimension btnFuncDimension = new Dimension(140, 25);
private JButton btnLiftoff, btnLanding, btnManeuvers, btnDocking, btnRover, btnCancel;
-
private static JLabel lblAltitude, lblSurfaceAlt, lblApoapsis, lblPeriapsis, lblVertSpeed, lblHorzSpeed;
private static JLabel lblAltitudeValue, lblSurfaceAltValue, lblApoapsisValue;
private static JLabel lblPeriapsisValue, lblVertSpeedValue, lblHorzSpeedValue;
@@ -101,7 +100,6 @@ public void layoutComponents() {
pnlFunctionControls.add(btnLanding);
pnlFunctionControls.add(btnRover);
pnlFunctionControls.add(btnDocking);
-
pnlFunctionControls.add(btnManeuvers);
pnlFunctionControls.add(Box.createVerticalGlue());
diff --git a/src/main/java/com/pesterenan/views/InstallKrpcDialog.java b/src/main/java/com/pesterenan/views/InstallKrpcDialog.java
new file mode 100644
index 0000000..a9b0164
--- /dev/null
+++ b/src/main/java/com/pesterenan/views/InstallKrpcDialog.java
@@ -0,0 +1,200 @@
+package com.pesterenan.views;
+
+import com.pesterenan.resources.Bundle;
+import com.pesterenan.updater.KrpcInstaller;
+
+import javax.swing.*;
+import javax.swing.GroupLayout.Alignment;
+import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.TitledBorder;
+
+public class InstallKrpcDialog extends JDialog {
+ private static final long serialVersionUID = 1L;
+ private JLabel lblInstallerInfo;
+ private final JSeparator separator = new JSeparator();
+ private final JPanel pnlKspFolderPath = new JPanel();
+ private final JTextField txfPath = new JTextField();
+ private JButton btnBrowsePath;
+ private JButton btnDownloadInstall;
+ private JButton btnCancel;
+ private JPanel pnlStatus;
+ private static JLabel lblStatus;
+
+ public InstallKrpcDialog() {
+ try {
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ initComponents();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void initComponents() {
+ setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+ setResizable(false);
+ setBounds(MainGui.centerDialogOnScreen());
+ setAlwaysOnTop(true);
+ setModalityType(ModalityType.APPLICATION_MODAL);
+ setTitle(Bundle.getString("installer_dialog_title")); //$NON-NLS-1$
+
+ lblInstallerInfo = new JLabel(Bundle.getString("installer_dialog_txt_info")); //$NON-NLS-1$
+
+ pnlKspFolderPath.setBorder(
+ new TitledBorder(null, Bundle.getString("installer_dialog_pnl_path"), TitledBorder.LEADING, // $NON
+ // -NLS-1$
+ TitledBorder.TOP, null, null));
+
+ btnDownloadInstall = new JButton(Bundle.getString("installer_dialog_btn_download")); // $NON
+ // -NLS-1$
+ btnDownloadInstall.addActionListener((e) -> KrpcInstaller.downloadAndInstallKrpc());
+ btnDownloadInstall.setEnabled(false);
+
+ btnCancel = new JButton(Bundle.getString("installer_dialog_btn_cancel")); //$NON-NLS-1$
+ btnCancel.addActionListener((e) -> this.dispose());
+
+ pnlStatus = new JPanel();
+ pnlStatus.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
+
+ GroupLayout groupLayout = new GroupLayout(getContentPane());
+ groupLayout.setHorizontalGroup(groupLayout.createParallelGroup(Alignment.TRAILING)
+ .addGroup(groupLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(groupLayout.createParallelGroup(
+ Alignment.LEADING)
+ .addComponent(
+ pnlKspFolderPath,
+ GroupLayout.DEFAULT_SIZE,
+ 414,
+ Short.MAX_VALUE)
+ .addComponent(
+ lblInstallerInfo,
+ Alignment.TRAILING,
+ GroupLayout.DEFAULT_SIZE,
+ 414,
+ Short.MAX_VALUE)
+ .addComponent(separator,
+ Alignment.TRAILING,
+ GroupLayout.DEFAULT_SIZE,
+ 414,
+ Short.MAX_VALUE)
+ .addGroup(
+ groupLayout.createSequentialGroup()
+ .addComponent(
+ btnDownloadInstall)
+ .addPreferredGap(
+ ComponentPlacement.RELATED,
+ 184,
+ Short.MAX_VALUE)
+ .addComponent(
+ btnCancel)))
+ .addGap(10))
+ .addComponent(pnlStatus, Alignment.LEADING, GroupLayout.DEFAULT_SIZE,
+ 434, Short.MAX_VALUE));
+ groupLayout.setVerticalGroup(groupLayout.createParallelGroup(Alignment.LEADING)
+ .addGroup(groupLayout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(lblInstallerInfo,
+ GroupLayout.PREFERRED_SIZE, 60,
+ GroupLayout.PREFERRED_SIZE)
+ .addGap(2)
+ .addComponent(separator,
+ GroupLayout.PREFERRED_SIZE, 2,
+ GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.UNRELATED)
+ .addComponent(pnlKspFolderPath,
+ GroupLayout.PREFERRED_SIZE, 51,
+ GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(ComponentPlacement.UNRELATED)
+ .addGroup(groupLayout.createParallelGroup(
+ Alignment.BASELINE)
+ .addComponent(
+ btnDownloadInstall)
+ .addComponent(btnCancel))
+ .addPreferredGap(ComponentPlacement.RELATED, 60,
+ Short.MAX_VALUE)
+ .addComponent(pnlStatus,
+ GroupLayout.PREFERRED_SIZE, 25,
+ GroupLayout.PREFERRED_SIZE)));
+
+ lblStatus = new JLabel();
+ GroupLayout glPnlStatus = new GroupLayout(pnlStatus);
+ glPnlStatus.setHorizontalGroup(glPnlStatus.createParallelGroup(Alignment.LEADING)
+ .addGroup(glPnlStatus.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(lblStatus)
+ .addContainerGap(389, Short.MAX_VALUE)));
+ glPnlStatus.setVerticalGroup(glPnlStatus.createParallelGroup(Alignment.TRAILING)
+ .addGroup(glPnlStatus.createSequentialGroup()
+ .addGap(2)
+ .addComponent(lblStatus, GroupLayout.DEFAULT_SIZE,
+ GroupLayout.DEFAULT_SIZE,
+ Short.MAX_VALUE)
+ .addGap(0)));
+ pnlStatus.setLayout(glPnlStatus);
+
+ txfPath.setEditable(false);
+ txfPath.setColumns(10);
+
+ btnBrowsePath = new JButton(Bundle.getString("installer_dialog_btn_browse")); //$NON-NLS-1$
+ btnBrowsePath.addActionListener(e -> {
+ chooseKSPFolder();
+ txfPath.setText(KrpcInstaller.getKspFolder());
+ });
+ GroupLayout glPnlKspFolderPath = new GroupLayout(pnlKspFolderPath);
+ glPnlKspFolderPath.setHorizontalGroup(glPnlKspFolderPath.createParallelGroup(Alignment.LEADING)
+ .addGroup(Alignment.TRAILING,
+ glPnlKspFolderPath.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(txfPath,
+ GroupLayout.DEFAULT_SIZE,
+ 273,
+ Short.MAX_VALUE)
+ .addPreferredGap(
+ ComponentPlacement.RELATED)
+ .addComponent(btnBrowsePath,
+ GroupLayout.PREFERRED_SIZE,
+ 103,
+ GroupLayout.PREFERRED_SIZE)
+ .addContainerGap()));
+ glPnlKspFolderPath.setVerticalGroup(glPnlKspFolderPath.createParallelGroup(Alignment.LEADING)
+ .addGroup(glPnlKspFolderPath.createSequentialGroup()
+ .addGroup(
+ glPnlKspFolderPath.createParallelGroup(
+ Alignment.BASELINE)
+ .addComponent(
+ txfPath,
+ GroupLayout.PREFERRED_SIZE,
+ 23,
+ GroupLayout.PREFERRED_SIZE)
+ .addComponent(
+ btnBrowsePath))
+ .addContainerGap(24,
+ Short.MAX_VALUE)));
+ pnlKspFolderPath.setLayout(glPnlKspFolderPath);
+ getContentPane().setLayout(groupLayout);
+
+ setVisible(true);
+ }
+
+ public void chooseKSPFolder() {
+ JFileChooser kspDir = new JFileChooser();
+ kspDir.setDialogTitle("Escolha a pasta do KSP na Steam");
+ kspDir.setMultiSelectionEnabled(false);
+ kspDir.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ int response = kspDir.showOpenDialog(this);
+ if (response == JFileChooser.APPROVE_OPTION) {
+ KrpcInstaller.setKspFolder(kspDir.getSelectedFile().getPath());
+ btnDownloadInstall.setEnabled(true);
+ setStatus("Pasta escolhida, pronto para instalar.");
+ } else {
+ KrpcInstaller.setKspFolder(null);
+ btnDownloadInstall.setEnabled(false);
+ setStatus("");
+ }
+ }
+
+ public static void setStatus(String status) {
+ lblStatus.setText(status);
+ }
+}
diff --git a/src/com/pesterenan/views/LandingJPanel.java b/src/main/java/com/pesterenan/views/LandingJPanel.java
similarity index 100%
rename from src/com/pesterenan/views/LandingJPanel.java
rename to src/main/java/com/pesterenan/views/LandingJPanel.java
diff --git a/src/com/pesterenan/views/LiftoffJPanel.java b/src/main/java/com/pesterenan/views/LiftoffJPanel.java
similarity index 100%
rename from src/com/pesterenan/views/LiftoffJPanel.java
rename to src/main/java/com/pesterenan/views/LiftoffJPanel.java
diff --git a/src/com/pesterenan/views/MainGui.java b/src/main/java/com/pesterenan/views/MainGui.java
similarity index 100%
rename from src/com/pesterenan/views/MainGui.java
rename to src/main/java/com/pesterenan/views/MainGui.java
diff --git a/src/com/pesterenan/views/RoverJPanel.java b/src/main/java/com/pesterenan/views/RoverJPanel.java
similarity index 99%
rename from src/com/pesterenan/views/RoverJPanel.java
rename to src/main/java/com/pesterenan/views/RoverJPanel.java
index d9b4d20..8590f82 100644
--- a/src/com/pesterenan/views/RoverJPanel.java
+++ b/src/main/java/com/pesterenan/views/RoverJPanel.java
@@ -169,4 +169,4 @@ private boolean validateTextFields() {
}
return true;
}
-}
\ No newline at end of file
+}
diff --git a/src/com/pesterenan/views/RunManeuverJPanel.java b/src/main/java/com/pesterenan/views/RunManeuverJPanel.java
similarity index 98%
rename from src/com/pesterenan/views/RunManeuverJPanel.java
rename to src/main/java/com/pesterenan/views/RunManeuverJPanel.java
index ab2f7ee..037ecd8 100644
--- a/src/com/pesterenan/views/RunManeuverJPanel.java
+++ b/src/main/java/com/pesterenan/views/RunManeuverJPanel.java
@@ -3,13 +3,11 @@
import com.pesterenan.MechPeste;
import com.pesterenan.resources.Bundle;
import com.pesterenan.utils.ControlePID;
-import com.pesterenan.utils.Vector;
import com.pesterenan.utils.Modulos;
import krpc.client.RPCException;
import krpc.client.services.SpaceCenter.Node;
import krpc.client.services.SpaceCenter.Orbit;
-import krpc.client.services.SpaceCenter.ReferenceFrame;
import krpc.client.services.SpaceCenter.Vessel;
import krpc.client.services.SpaceCenter.VesselSituation;
@@ -65,7 +63,7 @@ public static void createManeuver() {
} catch (RPCException e) {
}
}
-
+
public static void createManeuver(double atFutureTime) {
System.out.println("Create maneuver overloaded");
try {
diff --git a/src/com/pesterenan/views/StatusJPanel.java b/src/main/java/com/pesterenan/views/StatusJPanel.java
similarity index 100%
rename from src/com/pesterenan/views/StatusJPanel.java
rename to src/main/java/com/pesterenan/views/StatusJPanel.java
diff --git a/src/main/java/com/pesterenan/views/UIMethods.java b/src/main/java/com/pesterenan/views/UIMethods.java
new file mode 100644
index 0000000..5338fd0
--- /dev/null
+++ b/src/main/java/com/pesterenan/views/UIMethods.java
@@ -0,0 +1,10 @@
+package com.pesterenan.views;
+
+public interface UIMethods {
+
+ public void initComponents();
+
+ public void setupComponents();
+
+ public void layoutComponents();
+}
diff --git a/src/com/pesterenan/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
similarity index 100%
rename from src/com/pesterenan/resources/META-INF/MANIFEST.MF
rename to src/main/resources/META-INF/MANIFEST.MF
diff --git a/src/com/pesterenan/resources/MechPesteBundle.properties b/src/main/resources/MechPesteBundle.properties
similarity index 100%
rename from src/com/pesterenan/resources/MechPesteBundle.properties
rename to src/main/resources/MechPesteBundle.properties
diff --git a/src/com/pesterenan/resources/MechPesteBundle_pt.properties b/src/main/resources/MechPesteBundle_pt.properties
similarity index 100%
rename from src/com/pesterenan/resources/MechPesteBundle_pt.properties
rename to src/main/resources/MechPesteBundle_pt.properties
diff --git a/src/com/pesterenan/resources/krpc-java-0.5.2.jar b/src/main/resources/krpc-java-0.5.2.jar
similarity index 100%
rename from src/com/pesterenan/resources/krpc-java-0.5.2.jar
rename to src/main/resources/krpc-java-0.5.2.jar