fixed package mismatch

This commit is contained in:
cs-powell
2024-11-24 15:05:33 -05:00
parent a5cf193a7d
commit 3579efea5d
23 changed files with 135 additions and 79 deletions

View File

@@ -0,0 +1,173 @@
package ModelFiles;
import java.io.IOException;
import ModelFiles.ActionType;
import ModelFiles.MotorType;
public class Model {
private MindQueue q; //Queue for actions
boolean modelActive; // On/Off Switch for the model execution
XPlaneConnect xpc; //Allows connection to the simulator
float[] storedVision;
//Constructors
public Model() {
q = new MindQueue();
modelActive = false;
}
public Model(XPlaneConnect xpc) {
q = new MindQueue();
modelActive = false;
this.xpc = xpc;
}
/*Getters*/
public MindQueue getQueue() {
return q;
}
/*Setters*/
/*
* Setup Methods
* Printing, Empty check, Activation/Deactivation of Model, etc.
*/
public void activateModel() {
modelActive = true;
}
public void establishConnection(XPlaneConnect newXPC){
this.xpc = newXPC;
}
public void deactivateModel(){
modelActive = false;
}
public boolean isEmpty(){
return q.isEmpty();
}
public void push(Action a){
q.push(a);
}
public boolean isActive(){
return modelActive;
}
public void printModelQueue(){
System.out.println(q.printQueue());
}
public int getModelQueueLength(){
return q.queueLength();
}
public void createAction(ActionType actionType,int delay,String target) {
Action newAction = null;
switch(actionType) {
case VISION:
newAction = new Vision(delay,target);
this.push(newAction);
break;
case MOTOR:
newAction = new Motor(delay,target);
this.push(newAction);
break;
case DELAY:
newAction = new Delay(delay);
this.push(newAction);
break;
}
}
/*
* Processing Methods
*
*/
/*
* Process the next event in the model queue
*/
public float[] next() {
float[] returnArray = null;
Action temp = q.pop();
// System.out.println("Type of Action: " + temp.getType());
if(temp.getType() == ActionType.VISION){ // Vision Action (Get Data)
handelVisionAction(temp, returnArray);
} else if (temp.getType() == ActionType.MOTOR){ //Motor Action (Act Upon Data)
handleMotorAction(temp);
} else if (temp.getType() == ActionType.DELAY){//Pure Delays (Do nothing)
handleDelayAction(temp);
}
// q.push(temp);
return returnArray;
}
/* Next Helpers */
private void handelVisionAction(Action temp, float[] returnArray) {
Vision tempV = (Vision) temp;
initiateDelay(tempV.getDelay());
String dref = tempV.getTarget();
try {
returnArray = xpc.getDREF(dref);
storedVision = returnArray.clone();
// System.out.println(returnArray[0]);
} catch (IOException e) {
}
}
private void handleMotorAction(Action temp) {
Motor tempM = (Motor) temp;
MotorType motorType = tempM.getMotorType();
float[] currentControls = null;
try {
switch(motorType){
case PITCHUP:
float[] pitchUp = {currentControls[0] + 0.01f};
if(storedVision[0] > 90) {
if(currentControls[0] < 0.1f) {
xpc.sendCTRL(pitchUp);
}
}
System.out.println("Pitching Up");
case PITCHDOWN:
float[] pitchDown = {currentControls[0] - 0.01f};
if(storedVision[0] < 50) {
if(currentControls[0] > 0.1f) {
xpc.sendCTRL(pitchDown);
}
}
System.out.println("Pitching Down");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void handleDelayAction(Action temp){
Delay tempD = (Delay) temp;
initiateDelay(tempD.getDelay());
}
public static void initiateDelay(int delay){
try {
Thread.sleep(delay); // Using the action's Built in Delay
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}