File tree 10 files changed +38
-22
lines changed
10 files changed +38
-22
lines changed Original file line number Diff line number Diff line change 52
52
:choices {:card (fn [t] (same-side? (:side t) side))}}
53
53
(map->Card {:title " /adv-counter command" }) nil )))
54
54
55
+ (defn command-save-replay [state _]
56
+ (swap! state assoc-in [:options :save-replay ] true ))
57
+
55
58
(defn command-bug-report [state side]
56
59
(swap! state update :bug-reported (fnil inc -1 ))
57
60
(let [title " [EDITME] Please give a short description of your bug here"
388
391
:choices {:card (fn [t] (same-side? (:side t) %2 ))}}
389
392
(map->Card {:title " /rfg command" }) nil )
390
393
" /roll" #(command-roll %1 %2 value)
394
+ " /save-replay" command-save-replay
391
395
" /summon" #(command-summon %1 %2 args)
392
396
" /swap-ice" #(when (= %2 :corp )
393
397
(resolve-ability
Original file line number Diff line number Diff line change 151
151
(range 1 max-users)))
152
152
153
153
(safe-println " Spectators connected" )
154
- (game-ws-handler/-msg-handler {:id :netrunner /start
154
+ (game-ws-handler/-msg-handler {:id :game /start
155
155
:ring-req {:system/db db
156
156
:user {:username " TestCorp" }}
157
157
:uid " TestCorp"
Original file line number Diff line number Diff line change 264
264
(defn publish-annotations
265
265
[{db :system/db
266
266
{username :username } :user
267
- {:keys [gameid]} :params
267
+ {:keys [gameid]} :path- params
268
268
body :body }]
269
269
(let [{:keys [corp runner replay replay-shared annotations]}
270
270
(mc/find-one-as-map db :game-logs {:gameid gameid} [" corp" " runner" " replay" " replay-shared" " annotations" ])
291
291
(defn delete-annotations
292
292
[{db :system/db
293
293
{username :username } :user
294
- {:keys [gameid date]} :params }]
294
+ {:keys [gameid date]} :path- params }]
295
295
(let [{:keys [corp runner replay annotations]}
296
296
(mc/find-one-as-map db :game-logs {:gameid gameid} [" corp" " runner" " replay" " replay-shared" " annotations" ])
297
297
replay (or replay {})
316
316
(defn fetch-replay
317
317
[{db :system/db
318
318
{username :username } :user
319
- {:keys [gameid]} :params }]
319
+ {:keys [gameid]} :path- params }]
320
320
(let [{:keys [corp runner replay replay-shared bug-reported]}
321
321
(mc/find-one-as-map db :game-logs {:gameid gameid} [" corp" " runner" " replay" " replay-shared" " bug-reported" ])
322
322
replay (or replay {})]
332
332
(defn share-replay
333
333
[{db :system/db
334
334
{username :username } :user
335
- {:keys [gameid]} :params }]
335
+ {:keys [gameid]} :path- params }]
336
336
(if username
337
337
(try
338
338
(mc/update db :game-logs
359
359
360
360
(defn replay-handler
361
361
[{db :system/db
362
- {:keys [gameid bugid]} :path-params
362
+ {:keys [gameid bugid]} :path-params
363
363
{:keys [n d b]} :query-params
364
364
scheme :scheme
365
365
headers :headers
Original file line number Diff line number Diff line change 22
22
(reset! last-state @game-state)
23
23
(reset! ws/lock false )
24
24
(when (:replay-diffs state)
25
- (init-replay app-state state))))
25
+ (init-replay app-state state)
26
+ (swap! app-state assoc-in [:current-game :started ] true ))))
26
27
27
28
(defn launch-game! [state]
28
29
(init-game! state)
Original file line number Diff line number Diff line change 16
16
(js->clj (.parse js/JSON state) :keywordize-keys true ))
17
17
18
18
(defn get-side [state]
19
- (r/with- let [user-id (r/cursor app-state [:user :_id ])]
19
+ (let [user-id (get-in @ app-state [:user :_id ])]
20
20
(cond
21
21
(:replay state) @replay-side
22
- (= @ user-id (get-in state [:runner :user :_id ])) :runner
23
- (= @ user-id (get-in state [:corp :user :_id ])) :corp
22
+ (= user-id (get-in state [:runner :user :_id ])) :runner
23
+ (= user-id (get-in state [:corp :user :_id ])) :corp
24
24
:else :spectator )))
25
25
26
26
(defn not-spectator? []
Original file line number Diff line number Diff line change 109
109
:has-args :required
110
110
:usage " /roll n"
111
111
:help " Roll an n-sided die" }
112
+ {:name " /save-replay"
113
+ :usage " /save-replay"
114
+ :help " Save a replay of the game" }
112
115
{:name " /summon"
113
116
:has-args :required
114
117
:usage " /summon n"
Original file line number Diff line number Diff line change 24
24
(swap! app-state assoc :games data))
25
25
26
26
(defmethod ws /event-msg-handler :lobby/state [{data :?data }]
27
- (swap! app-state assoc :current-game data)
28
- (when (:started data)
29
- (ws/ws-send! [:game/resync {:gameid (:gameid data)}])))
27
+ (when-not (= " local-replay" (:gameid @app-state))
28
+ (swap! app-state assoc :current-game data)
29
+ (when (:started data)
30
+ (ws/ws-send! [:game/resync {:gameid (:gameid data)}]))))
30
31
31
32
(defmethod ws /event-msg-handler :lobby/notification [{data :?data }]
32
33
(play-sound data))
74
75
diffs (rest history)
75
76
init-state (assoc init-state :replay-diffs diffs)]
76
77
(ws/event-msg-handler-wrapper
77
- {:id :netrunner /start
78
+ {:id :game /start
78
79
:?data (.stringify js/JSON (clj->js
79
80
(if jump-to
80
81
(assoc init-state :replay-jump-to jump-to)
84
85
" error" {:time-out 0 :close-button true }))))))))
85
86
86
87
(defn leave-game []
87
- (ws/ws-send! [:game/leave {:gameid (current-gameid app-state)}]
88
- 8000
89
- #(when (sente/cb-success? %)
90
- (leave-game! ))))
88
+ (if (= " local-replay" (:gameid @app-state))
89
+ (do
90
+ (swap! app-state assoc :gameid nil )
91
+ (leave-game! ))
92
+ (ws/ws-send! [:game/leave {:gameid (current-gameid app-state)}]
93
+ 8000
94
+ #(when (sente/cb-success? %)
95
+ (leave-game! )))))
91
96
92
97
(defn- hidden-formats
93
98
" Remove games which the user has opted to hide"
Original file line number Diff line number Diff line change 14
14
diffs (rest history)
15
15
init-state (assoc init-state :replay-diffs diffs :gameid " local-replay" )]
16
16
(ws/event-msg-handler-wrapper
17
- {:id :netrunner /start
17
+ {:id :game /start
18
18
:?data (.stringify js/JSON (clj->js init-state))})))
19
19
20
20
(defn start-replay [replay-file]
Original file line number Diff line number Diff line change 40
40
:view deck-builder}]
41
41
[" /play" {:name :nav/lobby
42
42
:view lobby-or-game}]
43
+ [" /replay/:rid" {:name :nav/replay-lobby
44
+ :view lobby-or-game}]
43
45
[" /help" {:name :nav/help
44
46
:view help}]
45
47
[" /account" {:name :nav/account
Original file line number Diff line number Diff line change 13
13
(let [c (count (filter-games @user @games (:visible-formats @app-state)))]
14
14
(tr [:nav/game-count ] c))])
15
15
16
- (defn in-game-buttons [user current-game]
17
- (when (:started @current-game)
16
+ (defn in-game-buttons [user current-game gameid]
17
+ (when (and (:started @current-game)
18
+ (not= " local-replay" @gameid))
18
19
(let [user-id (-> @user :_id )
19
20
is-player (some #(= user-id (-> % :user :_id )) (:players @current-game))]
20
21
[:div.float-right
66
67
current-game (r/cursor app-state [:current-game ])]
67
68
[:div
68
69
[current-game-count user games]
69
- [in-game-buttons user current-game]
70
+ [in-game-buttons user current-game gameid ]
70
71
[replay-and-spectator-buttons gameid]
71
72
[spectator-list current-game]]))
You can’t perform that action at this time.
0 commit comments