lib/rubicure/girl.rb in rubicure-0.0.7 vs lib/rubicure/girl.rb in rubicure-0.1.0
- old
+ new
@@ -1,24 +1,31 @@
module Rubicure
+ # Precure girl (ex. Cure Peace, Cure Rosetta, Cure Honey)
+ #
+ # this is record of "config/girls.yml"
class Girl
- attr_reader :human_name, :precure_name, :transform_message, :extra_names, :current_state, :state_names, :created_date
+ attr_reader :human_name, :precure_name, :transform_message, :extra_names,
+ :current_state, :state_names, :created_date, :attack_messages
@@cache = {}
@@config = nil
+ @@sleep_sec = 1
- def initialize(human_name: nil, precure_name: nil, transform_message: nil, extra_names: [], created_date: nil)
+ def initialize(human_name: nil, precure_name: nil, transform_message: nil, extra_names: [],
+ created_date: nil, attack_messages: [])
@human_name = human_name
@precure_name = precure_name
@transform_message = transform_message
@extra_names = extra_names || []
@created_date = created_date
@current_state = 0
@state_names = [@human_name, @precure_name]
@state_names += @extra_names unless @extra_names.empty?
+ @attack_messages = [""] + attack_messages
end
- def == (other)
+ def ==(other)
other.is_a?(self.class) && self.human_name == other.human_name
end
# @return [String] name of current form
def name
@@ -29,19 +36,27 @@
# @return [Rubicure::Girl] self
def transform!
@current_state += 1
@current_state = 0 unless @current_state < @state_names.length
- puts @transform_message if @current_state == 1
+ print_by_line @transform_message if @current_state == 1
self
end
def humanize
@current_state = 0
end
+ def attack!
+ raise "require transform" if current_attack_message.blank?
+
+ print_by_line current_attack_message
+
+ current_attack_message
+ end
+
# @param girl_name [Symbol]
# @return [Rubicure::Girl]
def self.find(girl_name)
raise "unknown girl: #{girl_name}" unless valid?(girl_name)
@@ -60,11 +75,11 @@
# @return [Array<Symbol>]
def self.uniq_names
uniq_names = []
config.each do |name, series|
- uniq_names << name unless uniq_names.any?{|uniq_name| config[uniq_name][:precure_name] == series[:precure_name] }
+ uniq_names << name unless uniq_names.any? { |uniq_name| config[uniq_name][:precure_name] == series[:precure_name] }
end
uniq_names
end
# @return [Hash] content of config/girls.yml
@@ -84,8 +99,27 @@
end
# @param [Symbol] girl_name
def self.valid?(girl_name)
names.include?(girl_name)
+ end
+
+ def self.sleep_sec=(sleep_sec)
+ @@sleep_sec = sleep_sec
+ end
+
+ private
+
+ def current_attack_message
+ attack_messages[current_state]
+ end
+
+ def print_by_line(message)
+ index = 0
+ message.each_line do |line|
+ sleep(@@sleep_sec) if index > 0
+ puts line
+ index += 1
+ end
end
end
end