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