<% content_for :title, @game.title %>

<%= h(@game.title) %>

<% if @game.memo.present? %>

<%= h(@game.memo) %>

<% end %>
<%= @game.solo_mode? ? 'ソロモード' : 'マルチプレイヤーモード' %> <% if @game.administrator %> 管理者: <%= h(@game.administrator.username) %> <% end %> 状態: <%= @game.status %>
<% if @game.year_limit.present? || @game.victory_sc_count != 18 || @game.scoring_system != "none" || @game.auto_turn? %>
ハウスルール: <% if @game.auto_turn? %> <%= @game.schedule_display %> <% end %> <% if @game.year_limit.present? %> <%= @game.year_limit %>年制限 <% end %> <% if @game.victory_sc_count != 18 %> 目標SC: <%= @game.victory_sc_count %> <% end %> <% if @game.scoring_system != "none" %> <%= @game.scoring_system_name %> <% end %>
<% end %> <% if @game.auto_turn? && @game.next_deadline_at.present? && @game.status == "in_progress" %>
次のターン締切: <%= @game.next_deadline_at.in_time_zone("Asia/Tokyo").strftime("%Y-%m-%d %H:%M") %>
<% end %>
<% if current_user&.admin? || @game.administrator == current_user %> <%= link_to "設定", edit_game_path(@game), class: "inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %> <%= button_to "削除", @game, method: :delete, class: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-red-600 hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500", data: { turbo_confirm: "本当に削除しますか?" } %> <% end %>
<% if !@game.solo_mode? && @game.status == 'recruiting' %>

ゲーム参加

現在の参加者: <%= @game.participants.count %> / <%= @game.participants_count %>

<% if @game.password_protected? %>

※このゲームはパスワード保護されています

<% end %>

参加者一覧:

<% @game.participants.includes(:user).each do |participant| %>
<%= participant.user.username %> <%= participant.power.present? ? "(#{participant.power})" : "(未選択)" %>
<% end %>
<% current_participant = @game.participants.find_by(user: current_user) %> <% if current_user && !current_participant && @game.participants.count < @game.participants_count %> <%= form_with url: join_game_game_path(@game), method: :post, class: "space-y-3" do |f| %> <% if @game.password_protected? %>
<%= f.label :password, "参加パスワード", class: "block text-sm font-medium text-gray-700" %> <%= f.password_field :password, class: "mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
<% end %>
<%= f.submit "ゲームに参加", class: "inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %>
<% end %> <% elsif current_participant %>

あなたはこのゲームに参加しています

<% elsif @game.participants.count >= @game.participants_count %>

このゲームは満員です

<% elsif !current_user %>

<%= link_to "ログイン", login_path %>してゲームに参加

<% end %> <% if current_user&.admin? || @game.administrator == current_user %>

ゲーム管理者コントロール

<% if @game.participants.count >= 2 && @game.status == 'recruiting' %> <%= button_to "国選択フェーズ開始", start_power_selection_game_path(@game), method: :post, class: "inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500" %> <% end %>
<% end %>
<% end %> <% if @game.status == 'power_selection' %>

国選択フェーズ

全参加者が国を選択してください

参加者の国選択状況:

<% @game.participants.includes(:user).each do |participant| %>
<%= participant.user.username %> <% if participant.power.present? %> <%= participant.power %> <% else %> 未選択 <% end %>
<% if participant.user == current_user && !participant.power.present? %> <%= form_with url: select_power_game_participant_path(@game, participant), method: :patch, class: "flex items-center space-x-2" do |f| %> <%= f.select :power, options_for_select(@game.available_powers.map { |p| [p, p] }), { prompt: "国を選択" }, { class: "block pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" } %> <%= f.submit "選択", class: "inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" %> <% end %> <% end %>
<% end %>
<% if (current_user&.admin? || @game.administrator == current_user) && @game.all_powers_assigned? %>

全員の国選択が完了しました!

<%= button_to "命令入力フェーズ開始", start_order_input_game_path(@game), method: :post, class: "inline-flex justify-center py-2 px-4 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500" %>
<% end %>
<% end %> <% if @display_turn && (@game.solo_mode? || @game.status == 'in_progress' || @game_finished) %> <% if @game_finished && @winner_info %>

Game Over - Final Result

結果: <%= @winner_info[:type] == "Solo Victory" ? "ソロ勝利" : "引き分け (Draw)" %>

<%= @winner_info[:type] == "Solo Victory" ? "勝者:" : "生存国:" %> <% @winner_info[:winners].each do |winner| %> <%= winner %> <% end %>

<% if @winner_info[:scores].present? %>

スコア(<%= @game.scoring_system_name %>):

<% @winner_info[:scores].sort_by { |_, v| -v }.each do |power, score| %>
<%= power %> <%= score %>
<% end %>
<% end %>
<% end %>
<% if @game_finished %>
履歴モード

<%= @current_season_year %>

<% else %>

<%= @current_season_year %>

<% end %>
ターン: <%= @display_turn.number %> | フェーズ: <%= @display_turn.phase %>
<% if @game_finished %>
<% if @display_turn.number > 1 %> <%= link_to game_path(@game, turn_number: @display_turn.number - 1, anchor: "game-turn-section"), class: "inline-flex items-center px-3 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", data: { turbo: false } do %> 前のターン <% end %> <% else %> <% end %> <% if @display_turn.number < @latest_turn.number %> <%= link_to game_path(@game, turn_number: @display_turn.number + 1, anchor: "game-turn-section"), class: "inline-flex items-center px-3 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", data: { turbo: false } do %> 次のターン <% end %> <% else %> <% end %>
<% else %>
<% current_participant = @game.participants.find_by(user: current_user) %> <% if current_participant&.power.present? %>
あなたの担当国: <%= current_participant.power %> <%= hidden_field_tag :current_user_power, current_participant.power, id: "current-user-power" %>
<% else %>
<% powers = %w[AUSTRIA ENGLAND FRANCE GERMANY ITALY RUSSIA TURKEY] %> <% powers << "ALL" if current_user&.admin? || @game.administrator == current_user %> <%= select_tag :power, options_for_select(powers), id: "power-select", prompt: "国を選択", class: "block w-40 pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
<% end %> <% if @latest_turn.number > 1 %>
<% if @display_turn.number > 1 %> <%= link_to game_path(@game, turn_number: @display_turn.number - 1), class: "inline-flex items-center px-3 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", data: { turbo: false } do %> 前 <% end %> <% else %> <% end %> <% if @display_turn.number < @latest_turn.number %> <%= link_to game_path(@game, turn_number: @display_turn.number + 1), class: "inline-flex items-center px-3 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", data: { turbo: false } do %> 次 <% end %> <% else %> <% end %>
<% end %>
<% end %>
<% if @display_turn %> <% if @game_finished %> <% initial_svg = @display_turn.svg_orders&.dig("ALL") || @display_turn.svg_orders&.dig("NONE") || @display_turn.svg_date %> <% else %> <% initial_svg = @display_turn.svg_orders&.dig("NONE") || @display_turn.svg_date %> <% end %> <% if initial_svg.present? %> <%= raw initial_svg %> <% else %>

マップデータがありません

<% end %> <% end %>
<% unless @game_finished || (@display_turn && @display_turn.number < @latest_turn.number) %>

命令入力

<%= form_with url: submit_orders_turn_path(@latest_turn), method: :patch, id: "orders-form", class: "space-y-4" do |f| %> <%= f.hidden_field :power, id: "hidden-power-field" %>

国を選択(または担当国でログイン)してください

<% end %>
<% end %> <% unless @game_finished || (@display_turn && @display_turn.number < @latest_turn.number) %> <% current_participant = @game.participants.find_by(user: current_user) %> <% if current_participant&.power.present? %>
<% if @latest_turn.draw_voted?(current_participant.power) %>
引き分けに投票済みです
<% else %>
ゲームを引き分けで終了しますか?
<% end %>
<% end %> <% end %>

国別情報

<% @country_statuses.each do |status| %> <% end %>
国名 SC Unit 命令
<%= status[:power] %> <% if status[:is_user] %> YOU <% elsif status[:participant].nil? %> NPC <% end %> <% if @latest_turn.draw_voted?(status[:power]) %> <% end %> <%= status[:sc_count] %> <%= status[:unit_count] %> <% if status[:submitted] %> 完了 <% else %> 未完了 <% end %>

確定した命令

-

<% unless @game_finished %> <% if current_user&.admin? || @game.administrator == current_user %>

管理者メニュー

<% if !@game.solo_mode? && !@game.all_orders_submitted? %>

⚠️ 全プレイヤーの命令入力が完了していません。
未完了: <%= @game.participants.where(orders_submitted: false).pluck(:power).compact.join(', ') %>

<%= button_to "ターン終了(全員完了待ち)", process_turn_turn_path(@display_turn), method: :post, form_class: "w-full", class: "w-full inline-flex justify-center items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-gray-600 hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500", data: { turbo_confirm: "全員の命令入力が完了していません。本当に実行しますか?" } %> <%= button_to "強制ターン終了", process_turn_turn_path(@display_turn, force: true), method: :post, form_class: "w-full", class: "w-full inline-flex justify-center items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-red-600 hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500", data: { turbo_confirm: "⚠️ 未完了のプレイヤーがいますが、強制的にターンを終了します。よろしいですか?" } %>
<%= button_to "強制引き分け (Draw)", force_draw_game_path(@game), method: :post, form_class: "w-full", class: "w-full inline-flex justify-center items-center px-4 py-2 border border-purple-300 text-sm font-medium rounded-md text-purple-700 bg-purple-50 hover:bg-purple-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-purple-500", data: { turbo_confirm: "⚠️ ゲームを強制的に引き分けとして終了させます。よろしいですか?" } %>
<% else %> <%= button_to "ターン終了", process_turn_turn_path(@display_turn), method: :post, form_class: "w-full", class: "w-full inline-flex justify-center items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-red-600 hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500", data: { turbo_confirm: "本当に実行しますか?これにより結果が計算され、次のフェーズに進みます。" } %> <% end %>
<% end %> <% end %>
<% else %>

<% if @game.solo_mode? %> ソロモードのゲーム準備中... <% elsif @game.status == 'recruiting' %> プレイヤーの参加を待っています... <% else %> ゲーム準備中... <% end %>

<% end %>