From: Ian Jackson Date: Sun, 13 Feb 2011 19:01:04 +0000 (+0000) Subject: gui: gamepad supports uninhibit X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=8e0c5c027e11e02ebc020aeff3b1cfdde8c999c6;p=trains.git gui: gamepad supports uninhibit --- diff --git a/hostside/gui b/hostside/gui index b88cf8c..f18b218 100755 --- a/hostside/gui +++ b/hostside/gui @@ -572,6 +572,13 @@ proc speedw-userinput-tractbrake {w tract brake} { tractbrake-userinput $s(train) $tract $brake $w } +proc speedw-uninhibit-tractbrake {w} { + upvar #0 speed/$w s + speedw-uninhibit $w 2 + if {![string length $s(train)]} return + tractbrake-reset-speed $s(train) +} + proc speedws-train-problem {train} { speedws-fortrain $train speedw-inhibit } @@ -652,14 +659,19 @@ proc tractbrake-queue-update {train} { [list tractbrake-update $train]] } +proc tractbrake-reset-speed {train} { + upvar #0 tractbrake/$train tb + if {![info exists tb]} return + upvar #0 speedcurve/$train sc + upvar #0 train_commanded($train) gcommanded + setexpr tb(v) {[lindex $sc $gcommanded] / [lindex $sc 126]} +} proc tractbrake-attach {train speedw} { # can safely be called when already attached upvar #0 tractbrake/$train tb - upvar #0 speedcurve/$train sc set tb(speedw) $speedw if {[info exists tb(queued)]} return - upvar #0 train_commanded($train) gcommanded - setexpr tb(v) {[lindex $sc $gcommanded] / [lindex $sc 126]} + tractbrake-reset-speed $train tractbrake-queue-update $train } proc tractbrake-detach {train} { @@ -919,6 +931,13 @@ proc ib-gamepad-main {devid xy value} { set in(main_active) $active } +proc ib-ev/gamepad/EV_KEY/BTN_TOP2 {devid value} { + upvar #0 input/$devid in + if {!$value} return + if {[string length $in(main_active)]} return + speedw-uninhibit-tractbrake $in(speedw) +} + #----- ebuyer wireless keyboard proc ib-create/ebwikeb {devid wunique} {