]> gitweb.factorcode.org Git - factor.git/commitdiff
jamshred: adding roll on sideways scroll
authorAlex Chapman <chapman.alex@gmail.com>
Thu, 15 May 2008 06:41:44 +0000 (16:41 +1000)
committerAlex Chapman <chapman.alex@gmail.com>
Thu, 15 May 2008 06:41:44 +0000 (16:41 +1000)
extra/jamshred/game/game.factor
extra/jamshred/jamshred.factor
extra/jamshred/oint/oint.factor
extra/jamshred/player/player.factor

index dcb82d1de0a71848572242cfc2485387264856bb..1d5a9e461ebfbeee72990846570d97f4c036032a 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2007 Alex Chapman
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors kernel opengl arrays sequences jamshred.log jamshred.player jamshred.sound jamshred.tunnel math.vectors ;
+USING: accessors kernel opengl arrays sequences jamshred.log jamshred.player jamshred.sound jamshred.tunnel math math.constants math.vectors ;
 IN: jamshred.game
 
 TUPLE: jamshred sounds tunnel players running quit ;
@@ -29,3 +29,10 @@ TUPLE: jamshred sounds tunnel players running quit ;
 : mouse-moved ( x-radians y-radians jamshred -- )
     jamshred-player -rot turn-player ;
 
+: mouse-units-per-full-roll ( -- n ) 50 ;
+
+: mouse-scroll-x ( jamshred x -- )
+    [ jamshred-player ] dip 2 pi * * mouse-units-per-full-roll / roll-player ;
+
+: mouse-scroll-y ( jamshred y -- )
+    neg swap jamshred-player change-player-speed ;
index 3fb7113fdecda726358bd44667760dece574ffcd..13b5bea1c1259f77e0cf20cd58145d8965ab1a44 100755 (executable)
@@ -68,8 +68,9 @@ M: jamshred-gadget ungraft* ( gadget -- )
     ] 2keep >>last-hand-loc drop ;
 
 : handle-mouse-scroll ( jamshred-gadget -- )
-    jamshred>> jamshred-player scroll-direction get
-    second neg swap change-player-speed ;
+    jamshred>> scroll-direction get
+    [ first mouse-scroll-x ]
+    [ second mouse-scroll-y ] 2bi ;
 
 : quit ( gadget -- )
     [ no-fullscreen ] [ close-window ] bi ;
index e2104b6f41fcd2839b65d3e0d03defcfc90fd239..d50a93a3d2473500d1e155af1b86251af0e8e915 100644 (file)
@@ -29,6 +29,9 @@ C: <oint> oint
 : up-pivot ( oint theta -- )
     over up>> rotate-oint ;
 
+: forward-pivot ( oint theta -- )
+    over forward>> rotate-oint ;
+
 : random-float+- ( n -- m )
     #! find a random float between -n/2 and n/2
     dup 10000 * >fixnum random 10000 / swap 2 / - ;
index bea4ab4836483c096e7510e310f87cda99727814..3d912e0085093839a435840c2b7470170de6dec5 100644 (file)
@@ -16,6 +16,9 @@ TUPLE: player < oint name sounds tunnel nearest-segment last-move speed ;
 : turn-player ( player x-radians y-radians -- )
     >r over r> left-pivot up-pivot ;
 
+: roll-player ( player z-radians -- )
+    forward-pivot ;
+
 : to-tunnel-start ( player -- )
     [ tunnel>> first dup location>> ]
     [ tuck (>>location) (>>nearest-segment) ] bi ;