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.start_activity(activity, queued_actions: params[: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