diff 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
line wrap: on
line diff
     1.1 --- a/clojure/com/aurellem/gb/pokedex.clj	Sat Mar 24 03:10:56 2012 -0500
     1.2 +++ b/clojure/com/aurellem/gb/pokedex.clj	Sat Mar 24 03:35:21 2012 -0500
     1.3 @@ -10,7 +10,7 @@
     1.4    (+ (if capture?
     1.5         pokedex-captured-start-address
     1.6         pokedex-seen-start-address)
     1.7 -     (int (/ species-num 8))))
     1.8 +     (int (/ (dec species-num) 8))))
     1.9    
    1.10  (defn read-pokedex
    1.11    ([^SaveState state capture? species-num]
    1.12 @@ -25,7 +25,7 @@
    1.13             current-bits
    1.14             (aget (memory state)
    1.15                   (pokedex-offset capture? species-num))
    1.16 -           bit-offset (rem species-num 8)]
    1.17 +           bit-offset (rem (dec species-num) 8)]
    1.18         (set-memory
    1.19          state target
    1.20          (if set?
    1.21 @@ -33,28 +33,36 @@
    1.22            (bit-clear current-bits bit-offset))))))
    1.23  
    1.24  (defn read-pokedex-seen
    1.25 -  ([^SaveState state species-num]
    1.26 -     (read-pokedex state false species-num))
    1.27 -  ([species-num]
    1.28 -     (read-pokedex-seen @current-state species-num)))
    1.29 +  ([^SaveState state species-or-num]
    1.30 +     (read-pokedex state false
    1.31 +                   (species-name->pokedex-num
    1.32 +                    species-or-num species-or-num)))
    1.33 +  ([species-or-num]
    1.34 +     (read-pokedex-seen @current-state species-or-num)))
    1.35  
    1.36  (defn set-pokedex-seen
    1.37 -  ([^SaveState state species-num]
    1.38 -     (set-pokedex state false species-num))
    1.39 -  ([species-num]
    1.40 -     (set-pokedex-seen @current-state species-num)))
    1.41 +  ([^SaveState state species-or-num seen?]
    1.42 +     (set-pokedex state false seen?
    1.43 +                  (species-name->pokedex-num
    1.44 +                   species-or-num species-or-num)))
    1.45 +  ([species-or-num seen?]
    1.46 +     (set-pokedex-seen @current-state species-or-num seen?)))
    1.47  
    1.48  (defn read-pokedex-captured
    1.49 -  ([^SaveState state species-num]
    1.50 -     (read-pokedex state true species-num))
    1.51 -  ([species-num]
    1.52 -     (read-pokedex-captured @current-state species-num)))
    1.53 +  ([^SaveState state species-or-num]
    1.54 +     (read-pokedex state true
    1.55 +                   (species-name->pokedex-num
    1.56 +                    species-or-num species-or-num)))
    1.57 +  ([species-or-num]
    1.58 +     (read-pokedex-captured @current-state species-or-num)))
    1.59  
    1.60  (defn set-pokedex-captured
    1.61 -  ([^SaveState state species-num]
    1.62 -     (set-pokedex state true species-num))
    1.63 -  ([species-num]
    1.64 -     (set-pokedex-captured @current-state species-num)))
    1.65 +  ([^SaveState state species-or-num captured?]
    1.66 +     (set-pokedex state true captured?
    1.67 +                  (species-name->pokedex-num
    1.68 +                   species-or-num species-or-num)))
    1.69 +  ([species-or-num captured?]
    1.70 +     (set-pokedex-captured @current-state species-or-num captured?)))
    1.71  
    1.72  (defn print-pokedex
    1.73    ([^SaveState state]
    1.74 @@ -71,6 +79,14 @@
    1.75         (map #(if % "   X   " "       ")
    1.76              (map read-pokedex-captured (range 152)))))
    1.77       (println "+-----------+-------+-------+"))
    1.78 +  ([] (print-pokedex @current-state)))
    1.79  
    1.80 -  ([] (print-pokedex @current-state)))
    1.81 -     
    1.82 \ No newline at end of file
    1.83 +(defn give-full-pokedex
    1.84 +  ([^SaveState state]
    1.85 +     (reduce
    1.86 +      (fn [state n]
    1.87 +        (-> state
    1.88 +            (set-pokedex-seen n true)
    1.89 +            (set-pokedex-captured n true)))
    1.90 +      state (range 1 152)))
    1.91 +  ([] (give-full-pokedex @current-state)))