Skip to content

Commit 87e016e

Browse files
committed
Added touch support
1 parent eacbaf8 commit 87e016e

File tree

4 files changed

+31
-5
lines changed

4 files changed

+31
-5
lines changed

src/baller/core.cljs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@
6464
(recur new-score))))))
6565

6666
(defn titlescreen-thread []
67-
(go-while (not (is-pressed? :space))
67+
(go-while (and (not (is-pressed? :space)) (not (state/touching?)))
6868
(m/with-sprite canvas :ui
69-
[press-space (pf/make-text :small "Press Space to Start"
69+
[press-space (pf/make-text :small "Press Space or Touch to Start"
7070
:scale 2
7171
:visible false
7272
:y 150)

src/baller/events.cljs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,27 @@
22
(:require [goog.events :as events]
33
[goog.events.EventType :as event-type]
44
[infinitelives.utils.coordinates :refer [origin-top-left->center]]
5-
[baller.state :refer [set-mouse-position!]]))
5+
[baller.state :refer [set-mouse-position! set-touch-status!]]))
6+
7+
; Handlers
68

79
(defn mouse-move-handler [event]
810
(set-mouse-position!
911
(origin-top-left->center (.-clientX event) (.-clientY event))))
1012

13+
(defn touch-status-handler [status event]
14+
(set-touch-status! status))
15+
16+
; Listeners
17+
1118
(defn mouse-listener []
1219
(events/listen js/window event-type/MOUSEMOVE mouse-move-handler))
20+
21+
(defn touch-listener []
22+
(events/listen js/window event-type/TOUCHMOVE mouse-move-handler))
23+
24+
(defn touch-start-listener []
25+
(events/listen js/window event-type/TOUCHSTART (partial touch-status-handler true)))
26+
27+
(defn touch-end-listener []
28+
(events/listen js/window event-type/TOUCHEND (partial touch-status-handler false)))

src/baller/init.cljs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[cljs.core.async :refer [<!]]
66
[goog.events :as events]
77
[goog.events.EventType :as event-type]
8-
[baller.events :refer [mouse-listener]]
8+
[baller.events :as e]
99
[baller.canvas :refer [canvas]])
1010
(:require-macros [cljs.core.async.macros :refer [go]]
1111
[infinitelives.pixi.pixelfont :as pf]))
@@ -27,4 +27,7 @@
2727
(t/set-texture! :ball (r/get-texture :ball :nearest)))
2828

2929
(defn handlers []
30-
(mouse-listener))
30+
(e/mouse-listener)
31+
(e/touch-listener)
32+
(e/touch-start-listener)
33+
(e/touch-end-listener))

src/baller/state.cljs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
:bounces 0
88
:bounce-protection 0
99
:playing false
10+
:touch-status false
1011
:mouse {:x 9999 :y 9999}})
1112

1213
(defonce game-state (atom default-state))
@@ -37,6 +38,9 @@
3738
(defn set-gravity! [gravity]
3839
(swap! game-state assoc :gravity gravity))
3940

41+
(defn set-touch-status! [status]
42+
(swap! game-state assoc :touch-status status))
43+
4044

4145
; State queries
4246

@@ -54,3 +58,6 @@
5458

5559
(defn playing? []
5660
(:playing @game-state))
61+
62+
(defn touching? []
63+
(:touch-status @game-state))

0 commit comments

Comments
 (0)