diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/pokeviewer/pokemon.rb | 19 | ||||
-rw-r--r-- | app/models/pokeviewer/trainer.rb | 27 |
2 files changed, 44 insertions, 2 deletions
diff --git a/app/models/pokeviewer/pokemon.rb b/app/models/pokeviewer/pokemon.rb index 3975550..d14ea87 100644 --- a/app/models/pokeviewer/pokemon.rb +++ b/app/models/pokeviewer/pokemon.rb | |||
@@ -36,7 +36,7 @@ module Pokeviewer | |||
36 | enumerize :unown_letter, in: [:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, | 36 | enumerize :unown_letter, in: [:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, |
37 | :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z, | 37 | :l, :m, :n, :o, :p, :q, :r, :s, :t, :u, :v, :w, :x, :y, :z, |
38 | :question, :exclamation] | 38 | :question, :exclamation] |
39 | 39 | ||
40 | validates :slot, presence: true, | 40 | validates :slot, presence: true, |
41 | uniqueness: { scope: [:trainer_id, :box] }, | 41 | uniqueness: { scope: [:trainer_id, :box] }, |
42 | unless: Proc.new { |a| a.trainer.nil? } | 42 | unless: Proc.new { |a| a.trainer.nil? } |
@@ -46,7 +46,22 @@ module Pokeviewer | |||
46 | end | 46 | end |
47 | 47 | ||
48 | def icon_path | 48 | def icon_path |
49 | "pokeviewer/icons/#{species_id}.png" | 49 | form = "" |
50 | if species_id == 201 | ||
51 | # Handle Unown form | ||
52 | form = "-#{unown_letter}" | ||
53 | elsif species_id == 386 | ||
54 | # Handle Deoxys forms | ||
55 | if trainer.firered? | ||
56 | form = "-attack" | ||
57 | elsif trainer.leafgreen? | ||
58 | form = "-defense" | ||
59 | elsif trainer.emerald? | ||
60 | form = "-speed" | ||
61 | end | ||
62 | end | ||
63 | |||
64 | "pokeviewer/icons/#{species_id}#{form}.png" | ||
50 | end | 65 | end |
51 | 66 | ||
52 | def sprite_path | 67 | def sprite_path |
diff --git a/app/models/pokeviewer/trainer.rb b/app/models/pokeviewer/trainer.rb index edfbd25..d3a5b91 100644 --- a/app/models/pokeviewer/trainer.rb +++ b/app/models/pokeviewer/trainer.rb | |||
@@ -14,5 +14,32 @@ module Pokeviewer | |||
14 | validates :game, presence: true | 14 | validates :game, presence: true |
15 | enumerize :game, in: [:ruby, :sapphire, :firered, :leafgreen, :emerald], | 15 | enumerize :game, in: [:ruby, :sapphire, :firered, :leafgreen, :emerald], |
16 | predicates: true | 16 | predicates: true |
17 | |||
18 | def display_number | ||
19 | number.to_s.rjust(5, '0') | ||
20 | end | ||
21 | |||
22 | def party | ||
23 | pokemon.where(box: nil).order("slot ASC") | ||
24 | end | ||
25 | |||
26 | def boxes | ||
27 | (0..13).map { |i| box(i) } | ||
28 | end | ||
29 | |||
30 | def box(number) | ||
31 | pokes = pokemon.where(box: number).order("slot ASC").to_a | ||
32 | |||
33 | result = [] | ||
34 | (0..29).each do |i| | ||
35 | if pokes.empty? or (pokes.first.slot == i) | ||
36 | result << pokes.shift | ||
37 | else | ||
38 | result << nil | ||
39 | end | ||
40 | end | ||
41 | |||
42 | result | ||
43 | end | ||
17 | end | 44 | end |
18 | end | 45 | end |