From b9c4e65347bdaae70d5013080e5a90d9b7da5b2e Mon Sep 17 00:00:00 2001 From: Alex Chapman Date: Thu, 15 May 2008 16:41:44 +1000 Subject: [PATCH] jamshred: adding roll on sideways scroll --- extra/jamshred/game/game.factor | 9 ++++++++- extra/jamshred/jamshred.factor | 5 +++-- extra/jamshred/oint/oint.factor | 3 +++ extra/jamshred/player/player.factor | 3 +++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/extra/jamshred/game/game.factor b/extra/jamshred/game/game.factor index dcb82d1de0..1d5a9e461e 100644 --- a/extra/jamshred/game/game.factor +++ b/extra/jamshred/game/game.factor @@ -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 ; diff --git a/extra/jamshred/jamshred.factor b/extra/jamshred/jamshred.factor index 3fb7113fde..13b5bea1c1 100755 --- a/extra/jamshred/jamshred.factor +++ b/extra/jamshred/jamshred.factor @@ -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 ; diff --git a/extra/jamshred/oint/oint.factor b/extra/jamshred/oint/oint.factor index e2104b6f41..d50a93a3d2 100644 --- a/extra/jamshred/oint/oint.factor +++ b/extra/jamshred/oint/oint.factor @@ -29,6 +29,9 @@ C: 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 / - ; diff --git a/extra/jamshred/player/player.factor b/extra/jamshred/player/player.factor index bea4ab4836..3d912e0085 100644 --- a/extra/jamshred/player/player.factor +++ b/extra/jamshred/player/player.factor @@ -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 ;