# frozen-string-literal: true module Bioshogi module Formatter class AkfBuilder include Builder def self.default_params super.merge({}) end def initialize(formatter, params = {}) @formatter = formatter @params = self.class.default_params.merge(params) end def to_h @formatter.container_run_once @container2 = Container::Basic.new @formatter.container_init(@container2) @hv = {} @hv[:header] = @formatter.pi.header.to_h.clone @hv[:header]["手数"] = @formatter.pi.move_infos.size @main_clock = MainClock.new @hv[:moves] = [] @hv[:moves] << { :index => 0, :human_index => @container2.initial_state_turn_info.display_turn, :place_same => nil, **@main_clock.last_clock.to_h, :total_seconds => 0, :used_seconds => nil, :skill => nil, :history_sfen => @container2.to_history_sfen, :short_sfen => @container2.to_short_sfen, } @hv[:moves] += @formatter.pi.move_infos.collect.with_index do |info, i| @container2.execute(info[:input], used_seconds: @formatter.used_seconds_at(i)) @main_clock.add(@formatter.used_seconds_at(i)) hand_log = @container2.hand_logs.last { :index => i.next, :human_index => @container2.initial_state_turn_info.display_turn + i.next, :place_same => hand_log.place_same, **hand_log.to_akf, **@main_clock.last_clock.to_h, :skill => hand_log.skill_set.to_h, :history_sfen => @container2.to_history_sfen, :short_sfen => @container2.to_short_sfen, } end # if @formatter.pi.last_action_params # if used_seconds = @formatter.pi.last_action_params[:used_seconds] # if @main_clock # @main_clock.add(used_seconds) # right_part = @main_clock.to_s # end # end # end # @hv[:header] = @hv[:header] if @formatter.last_action_info @hv[:last_action_kakinoki_word] = @formatter.last_action_info.kakinoki_word end @hv[:judgment_message] = @formatter.judgment_message @hv[:error_text] = @formatter.error_message_part @hv end end end end