class Oakdex::Battle::Side
Represents a side in an active battle, has n trainers
Attributes
battle[R]
trainers[R]
Public Class Methods
new(battle, trainers)
click to toggle source
# File lib/oakdex/battle/side.rb, line 13 def initialize(battle, trainers) @battle = battle @trainers = trainers @trainers.each { |t| t.side = self } end
Public Instance Methods
active_in_battle_pokemon()
click to toggle source
# File lib/oakdex/battle/side.rb, line 50 def active_in_battle_pokemon @trainers.map(&:active_in_battle_pokemon).flatten(1) end
fainted?()
click to toggle source
# File lib/oakdex/battle/side.rb, line 54 def fainted? @trainers.all?(&:fainted?) end
id()
click to toggle source
# File lib/oakdex/battle/side.rb, line 58 def id @id ||= trainers.map(&:name).join(',') end
next_position()
click to toggle source
# File lib/oakdex/battle/side.rb, line 19 def next_position left_position.first end
pokemon_in_battle?(position)
click to toggle source
# File lib/oakdex/battle/side.rb, line 40 def pokemon_in_battle?(position) active_in_battle_pokemon.any? do |ibp| ibp.position == position end end
pokemon_left?()
click to toggle source
# File lib/oakdex/battle/side.rb, line 46 def pokemon_left? !active_in_battle_pokemon.empty? end
remove_fainted()
click to toggle source
# File lib/oakdex/battle/side.rb, line 32 def remove_fainted @trainers.each(&:remove_fainted) end
send_to_battle()
click to toggle source
# File lib/oakdex/battle/side.rb, line 23 def send_to_battle @trainers.map do |trainer| pokemon_per_trainer.times do |i| break unless trainer.team[i] trainer.send_to_battle(trainer.team[i], self) end end end
to_h()
click to toggle source
# File lib/oakdex/battle/side.rb, line 62 def to_h { id: id, fainted: fainted?, trainers: trainers.map(&:to_h) } end
trainer_on_side?(trainer)
click to toggle source
# File lib/oakdex/battle/side.rb, line 36 def trainer_on_side?(trainer) @trainers.include?(trainer) end
Private Instance Methods
all_position()
click to toggle source
# File lib/oakdex/battle/side.rb, line 84 def all_position battle.pokemon_per_side.times.to_a end
left_position()
click to toggle source
# File lib/oakdex/battle/side.rb, line 76 def left_position all_position - taken_positions end
pokemon_per_trainer()
click to toggle source
# File lib/oakdex/battle/side.rb, line 72 def pokemon_per_trainer (battle.pokemon_per_side / trainers.size) end
taken_positions()
click to toggle source
# File lib/oakdex/battle/side.rb, line 80 def taken_positions active_in_battle_pokemon.map(&:position).sort end