Advertisement
Guest User

Untitled

a guest
Jul 13th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.75 KB | None | 0 0
  1. case class Massive[T](pos: T => (Int,Int),
  2.                       move: T => ((Int,Int)) => T,
  3.                       setState: T => FallState => T,
  4.                       state:FallState,
  5.                       self:T) {
  6.   def update(w:World) = {
  7.     val epos = pos(self)
  8.     val grounded = w.isGrounded(epos)
  9.     state match {
  10.       case f@Falling(t, tiles) if !grounded =>
  11.         val newT = (t + 1) % f.fallTime
  12.         val newTiles = tiles + (newT == 0).select(0, 1)
  13.         val newPos = (newT == 0).select(epos, epos --> Direction.Down)
  14.         val newState = Falling(newT, newTiles)
  15.         val newE = move(self)(newPos)
  16.         setState(newE)(newState)
  17.       case _ if !grounded => setState(self)(Falling(0, 0))
  18.       case _ => setState(self)(Grounded)
  19.     }
  20.   }
  21. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement