Files
kondiplo_front/app/services/game_setup_service.rb
kontei f25fd6f802
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / system-test (push) Has been cancelled
フロントエンドプレイアブル
2026-02-15 14:57:17 +09:00

38 lines
1.2 KiB
Ruby

class GameSetupService
def initialize(game, client: GameApiClient.new)
@game = game
@client = client
end
def setup_initial_turn
initial_response = @client.api_game_initial_state
unless initial_response && initial_response["game_state"]
return { success: false, message: "初期状態の取得に失敗しました。" }
end
initial_state = initial_response["game_state"]
svg_render = @client.api_render(initial_state)
possible_orders = @client.api_calculate_possible_orders(initial_state, by_power: true)
@game.turns.build(
number: 1,
game_state: initial_state,
possible_orders: possible_orders,
phase: initial_state&.dig("name"),
svg_date: svg_render,
# Initialize svg_orders with NONE (and standard rendering as default)
svg_orders: { "NONE" => svg_render }
)
if @game.save
{ success: true, message: "ゲームが初期化されました。" }
else
{ success: false, message: "初期ターンの作成に失敗しました: #{@game.errors.full_messages.join(', ')}" }
end
rescue StandardError => e
Rails.logger.error("Game setup failed: #{e.message}")
{ success: false, message: "予期せぬエラーが発生しました。" }
end
end