Skip to content

Commit a4f6b53

Browse files
authored andcommitted
Engine now just accepts a config object
1 parent 92f85b9 commit a4f6b53

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/main/java/Engine.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import scalafx.scene.control.Alert.AlertType
1212
/**
1313
* Created by Chris on 8/4/2015. This class actually handles the trackball emulation
1414
*/
15-
class Engine(pollingRate: Option[Double], startupThreshold: Option[Double], giveupThreshold: Option[Double], drag: Option[Double]) extends Runnable{
15+
class Engine(config: Config) extends Runnable{
1616

1717
//Setting up engine
1818
val robot = new Robot
@@ -61,15 +61,15 @@ class Engine(pollingRate: Option[Double], startupThreshold: Option[Double], give
6161
//Reset click tracking
6262
clicked = false
6363
//Poll for mouse movement and give time to detect clicks
64-
Thread.sleep(pollingRate.getOrElse(10.00).toInt)
64+
Thread.sleep(config.pollingRate.getOrElse(10.00).toInt)
6565
val startPos = new Point2D(mouseX, mouseY)
66-
Thread.sleep(pollingRate.getOrElse(10.00).toInt)
66+
Thread.sleep(config.pollingRate.getOrElse(10.00).toInt)
6767
val endPos = new Point2D(mouseX, mouseY)
6868

6969
//If this movement was significant
70-
if(!startPos.almostEquals(endPos, giveupThreshold.getOrElse(1)) || clicked){
70+
if(!startPos.almostEquals(endPos, config.giveupThreshold.getOrElse(1)) || clicked){
7171
//If this movement was violent
72-
if (!startPos.almostEquals(endPos, startupThreshold.getOrElse(5))) {
72+
if (!startPos.almostEquals(endPos, config.startupThreshold.getOrElse(5))) {
7373
//Use the last polled movement as the new trackball speed
7474
lastVector = new Vector2D(startPos, endPos)
7575
}else{
@@ -83,7 +83,7 @@ class Engine(pollingRate: Option[Double], startupThreshold: Option[Double], give
8383
//Move the mouse according to the last trackball speed
8484
robot.mouseMove((endPos.x + lastVector.x).toInt, (endPos.y + lastVector.y).toInt)
8585
//Apply friction to trackball
86-
lastVector = new Vector2D(lastVector.x * drag.getOrElse(.95), lastVector.y * drag.getOrElse(.95))
86+
lastVector = new Vector2D(lastVector.x * config.drag.getOrElse(.95), lastVector.y * config.drag.getOrElse(.95))
8787
//If the trackball is almost stopped, stop it
8888
if(lastVector.almostEquals(noVector, 2)){
8989
lastVector = noVector

src/main/java/GUI.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Gui extends JFXApp {
5858
onAction = handle {selected.value match{
5959
case true =>
6060
try{
61-
engineThread = new Thread(new Engine(pollingField.value, startupField.value, giveupField.value, dragField.value))
61+
engineThread = new Thread(new Engine(new Config(pollingField.value, startupField.value, giveupField.value, dragField.value)))
6262
engineThread.start()
6363
}catch{
6464
case e: NumberFormatException =>

src/main/java/Main.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ import com.beust.jcommander.{JCommander, Parameter}
44
/**
55
* Created by Chris on 8/4/2015. Main execution environment
66
*/
7+
8+
case class Config(pollingRate: Option[Double], startupThreshold: Option[Double], giveupThreshold: Option[Double], drag: Option[Double])
9+
710
object Main extends App {
811
//Strings
912
final val name = "Virtual Trackball"
@@ -80,12 +83,13 @@ object Main extends App {
8083
}
8184

8285
//Start engine with provided parameters
83-
val engine = new Engine(pollingRate, startupThreshold, giveupThreshold, drag)
86+
87+
val engine = new Engine(new Config(pollingRate, startupThreshold, giveupThreshold, drag))
8488
engine.run()
8589
}catch{
8690
//If anything goes wrong at all, give up and run with defaults
8791
case e: Exception =>
88-
val engine = new Engine(None, None, None, None)
92+
val engine = new Engine(new Config(None, None, None, None))
8993
engine.run()
9094
}
9195
}

0 commit comments

Comments
 (0)