Skip to content

Instantly share code, notes, and snippets.

@Beyamor
Created January 30, 2013 06:46
Show Gist options
  • Save Beyamor/4671257 to your computer and use it in GitHub Desktop.
Save Beyamor/4671257 to your computer and use it in GitHub Desktop.
(ns break.rules
(:require [ame.entities.sets :as ent-sets]
[ame.input :as input])
(:use [ame.util :only [contains-all? +-when]]))
(input/define :up :vk-w :vk-up)
(input/define :down :vk-s :vk-down)
(input/define :left :vk-a :vk-left)
(input/define :right :vk-d :vk-right)
(def ^:private axis-move-buttons
{:x {:dec :left, :inc :right}
:y {:dec :up, :inc :down}})
(defn move-axis-keyboarders
[game]
(ent-sets/update-in game [:state :entities]
(for [ent (ent-sets/get-in game [:state :entities])
:when (contains-all? ent :pos :axis-key-mover)
:let [axis (get-in ent [:axis-key-mover :axis])
speed (get-in ent [:axis-key-mover :speed] 1)]]
(update-in ent [:pos axis]
+ (* speed (+-when (input/is-down? (get-in axis-move-buttons [axis :inc]))
(input/is-down? (get-in axis-move-buttons [axis :dec]))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment