Mercurial > vba-clojure
comparison clojure/com/aurellem/gb/pokedex.clj @ 223:3dfb9dd3db9d
pokedex manipulation functions complete.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 24 Mar 2012 03:35:21 -0500 |
parents | c9a855de1d07 |
children | 5becef6312b9 |
comparison
equal
deleted
inserted
replaced
222:c9a855de1d07 | 223:3dfb9dd3db9d |
---|---|
8 | 8 |
9 (defn pokedex-offset [capture? species-num] | 9 (defn pokedex-offset [capture? species-num] |
10 (+ (if capture? | 10 (+ (if capture? |
11 pokedex-captured-start-address | 11 pokedex-captured-start-address |
12 pokedex-seen-start-address) | 12 pokedex-seen-start-address) |
13 (int (/ species-num 8)))) | 13 (int (/ (dec species-num) 8)))) |
14 | 14 |
15 (defn read-pokedex | 15 (defn read-pokedex |
16 ([^SaveState state capture? species-num] | 16 ([^SaveState state capture? species-num] |
17 (bit-test | 17 (bit-test |
18 (aget (memory state) | 18 (aget (memory state) |
23 ([^SaveState state capture? set? species-num] | 23 ([^SaveState state capture? set? species-num] |
24 (let [target (pokedex-offset capture? species-num) | 24 (let [target (pokedex-offset capture? species-num) |
25 current-bits | 25 current-bits |
26 (aget (memory state) | 26 (aget (memory state) |
27 (pokedex-offset capture? species-num)) | 27 (pokedex-offset capture? species-num)) |
28 bit-offset (rem species-num 8)] | 28 bit-offset (rem (dec species-num) 8)] |
29 (set-memory | 29 (set-memory |
30 state target | 30 state target |
31 (if set? | 31 (if set? |
32 (bit-set current-bits bit-offset) | 32 (bit-set current-bits bit-offset) |
33 (bit-clear current-bits bit-offset)))))) | 33 (bit-clear current-bits bit-offset)))))) |
34 | 34 |
35 (defn read-pokedex-seen | 35 (defn read-pokedex-seen |
36 ([^SaveState state species-num] | 36 ([^SaveState state species-or-num] |
37 (read-pokedex state false species-num)) | 37 (read-pokedex state false |
38 ([species-num] | 38 (species-name->pokedex-num |
39 (read-pokedex-seen @current-state species-num))) | 39 species-or-num species-or-num))) |
40 ([species-or-num] | |
41 (read-pokedex-seen @current-state species-or-num))) | |
40 | 42 |
41 (defn set-pokedex-seen | 43 (defn set-pokedex-seen |
42 ([^SaveState state species-num] | 44 ([^SaveState state species-or-num seen?] |
43 (set-pokedex state false species-num)) | 45 (set-pokedex state false seen? |
44 ([species-num] | 46 (species-name->pokedex-num |
45 (set-pokedex-seen @current-state species-num))) | 47 species-or-num species-or-num))) |
48 ([species-or-num seen?] | |
49 (set-pokedex-seen @current-state species-or-num seen?))) | |
46 | 50 |
47 (defn read-pokedex-captured | 51 (defn read-pokedex-captured |
48 ([^SaveState state species-num] | 52 ([^SaveState state species-or-num] |
49 (read-pokedex state true species-num)) | 53 (read-pokedex state true |
50 ([species-num] | 54 (species-name->pokedex-num |
51 (read-pokedex-captured @current-state species-num))) | 55 species-or-num species-or-num))) |
56 ([species-or-num] | |
57 (read-pokedex-captured @current-state species-or-num))) | |
52 | 58 |
53 (defn set-pokedex-captured | 59 (defn set-pokedex-captured |
54 ([^SaveState state species-num] | 60 ([^SaveState state species-or-num captured?] |
55 (set-pokedex state true species-num)) | 61 (set-pokedex state true captured? |
56 ([species-num] | 62 (species-name->pokedex-num |
57 (set-pokedex-captured @current-state species-num))) | 63 species-or-num species-or-num))) |
64 ([species-or-num captured?] | |
65 (set-pokedex-captured @current-state species-or-num captured?))) | |
58 | 66 |
59 (defn print-pokedex | 67 (defn print-pokedex |
60 ([^SaveState state] | 68 ([^SaveState state] |
61 (println "+-----------+-------+-------+") | 69 (println "+-----------+-------+-------+") |
62 (println "|Pokemon | Seen? | Capt? |") | 70 (println "|Pokemon | Seen? | Capt? |") |
69 (map #(if % " X " " ") | 77 (map #(if % " X " " ") |
70 (map read-pokedex-seen (range 152))) | 78 (map read-pokedex-seen (range 152))) |
71 (map #(if % " X " " ") | 79 (map #(if % " X " " ") |
72 (map read-pokedex-captured (range 152))))) | 80 (map read-pokedex-captured (range 152))))) |
73 (println "+-----------+-------+-------+")) | 81 (println "+-----------+-------+-------+")) |
82 ([] (print-pokedex @current-state))) | |
74 | 83 |
75 ([] (print-pokedex @current-state))) | 84 (defn give-full-pokedex |
76 | 85 ([^SaveState state] |
86 (reduce | |
87 (fn [state n] | |
88 (-> state | |
89 (set-pokedex-seen n true) | |
90 (set-pokedex-captured n true))) | |
91 state (range 1 152))) | |
92 ([] (give-full-pokedex @current-state))) |