class Pazzdra::Calc
Constants
- COMBO_UP_BASE
- DROP_COLORS
- DROP_PLUS_UP_BASE
- LENGTH_UP_BASE
Attributes
data[RW]
Public Class Methods
DEFAULT_BASE()
click to toggle source
何も指定しない場合の値
# File lib/pazzdra/calc.rb, line 15 def DEFAULT_BASE { base: 0, leader: 1, friend: nil, skill: nil, up_drops: nil, combo: nil } end
cal(*ups)
click to toggle source
単に引数全てを掛け合わせるだけの簡単なお仕事
# File lib/pazzdra/calc.rb, line 11 def cal(*ups) ups.compact.inject(1){|base, i| base.to_f * i.to_f }.round end
new(data=nil)
click to toggle source
# File lib/pazzdra/calc.rb, line 20 def initialize(data=nil) self.data = data end
Public Instance Methods
cal(data={})
click to toggle source
データを元に計算する
# File lib/pazzdra/calc.rb, line 39 def cal(data={}) merge data case @data[:base] when Numeric Calc.cal @data[:base], @data[:leader], @data[:friend], @data[:skill], combo_up_pct when Array dragons = [] @data[:base].each do |val| dragon = {} DROP_COLORS.each do |key| next unless val[key] dragon[key] = Calc.cal attack_power_with_all_pct(val[key], key), @data[:leader], @data[:friend], @data[:skill], combo_up_pct next unless val[:sub] dragon[:sub] = {} attc_pct = 0.3 attc_pct = 0.1 if key == val[:sub] dragon[:sub][val[:sub]] = Calc.cal attack_power_with_all_pct((val[key].to_f * attc_pct).to_i, val[:sub]), @data[:leader], @data[:friend], @data[:skill], combo_up_pct end dragons.push(dragon) end dragons end end
data=(data)
click to toggle source
# File lib/pazzdra/calc.rb, line 24 def data=(data) data ||= Calc.DEFAULT_BASE @data = data end
merge(data={})
click to toggle source
# File lib/pazzdra/calc.rb, line 29 def merge(data={}) @data.merge!(data) end
show()
click to toggle source
# File lib/pazzdra/calc.rb, line 33 def show p @data p cal end
Private Instance Methods
attack_power_with_all_pct(base_power, color=nil)
click to toggle source
繋げた長さと強化ドロップを考慮したベース攻撃力
# File lib/pazzdra/calc.rb, line 93 def attack_power_with_all_pct(base_power, color=nil) base_power * length_up_pct(color) * plus_up_pct(color) end
combo_count(color=nil)
click to toggle source
コンボ総数
# File lib/pazzdra/calc.rb, line 73 def combo_count(color=nil) case @data[:combo] when Numeric @data[:combo].to_i when Hash if color return @data[:combo][color].count if @data[:combo][color] return 0 end total_count = 0 DROP_COLORS.each do |key| total_count += @data[:combo][key].count if @data[:combo][key] end total_count else 1 end end
combo_up_pct()
click to toggle source
コンボ数による倍率
# File lib/pazzdra/calc.rb, line 67 def combo_up_pct return 1 unless @data[:combo] 1 + ((combo_count - 1) * COMBO_UP_BASE) end
length_count(color=nil)
click to toggle source
繋げた長さ(余剰分)
# File lib/pazzdra/calc.rb, line 122 def length_count(color=nil) return 0 unless color case @data[:combo] when Numeric 0 when Hash return 0 unless @data[:combo][color] length_count_sub(@data[:combo][color]) else 0 end end
length_count_sub(count_data)
click to toggle source
配列内の 3 以上の余剰分の数を返す
# File lib/pazzdra/calc.rb, line 136 def length_count_sub(count_data) count_data.inject(0) do |val, i| val += i - 3 end end
length_up_pct(color=nil)
click to toggle source
繋げた長さによる加算倍率
# File lib/pazzdra/calc.rb, line 117 def length_up_pct(color=nil) combo_count(color) + (length_count(color) * LENGTH_UP_BASE) end
plus_count(color=nil)
click to toggle source
強化ドロップの数
# File lib/pazzdra/calc.rb, line 103 def plus_count(color=nil) return 0 unless color case @data[:plus_drop] when Numeric 0 when Hash return 0 unless @data[:plus_drop][color] @data[:plus_drop][color] else 0 end end
plus_up_pct(color=nil)
click to toggle source
強化ドロップによる加算倍率
# File lib/pazzdra/calc.rb, line 98 def plus_up_pct(color=nil) 1 + (plus_count(color) * DROP_PLUS_UP_BASE) end