class ApplicationController < ActionController::Base before_action :authenticate_user! before_action :redirect_if_no_active_character, unless: :devise_controller? helper_method :current_char def current_char @_current_char ||= current_user&.active_character end def redirect_if_no_active_character redirect_to new_character_path if (current_user && current_char.nil?) end def roll(sides) rand(sides) + 1 end private def start_activity(activity) if current_char.resting? flash[:alert] = "You can't do anything while you're resting. Go to the Character page to stop resting." redirect_to character_path(current_char) and return end queued_actions = params[:actions].present? ? params[:actions].to_i - 1 : nil if current_char.start_activity(activity, queued_actions: queued_actions) redirect_to look_path else message = "You can't do that." message += " (requires #{activity.requirements&.join(", ")})" if activity.requirements.any? message += " (costs #{activity.costs&.join(", ")})" if activity.costs.any? flash[:alert] = message redirect_back(fallback_location: character_path(current_char)) end end end