summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-06-13 21:40:42 -0400
committerDavid Gay <david@davidgay.org>2021-06-13 21:40:51 -0400
commit03b8bfa53b02754d7c375690d92ed83c1cd661da (patch)
tree175a6b7b7de6355a626f464b9881f1dfa3cf3d2d /app
parent0637f55dd896a48f1dc3dd544f377b0f48017071 (diff)
Fix wrong param name in new CharacterController `#set_character`
Diffstat (limited to 'app')
-rw-r--r--app/controllers/characters/skills_controller.rb15
-rw-r--r--app/controllers/characters_controller.rb2
-rw-r--r--app/views/characters/skills/index.html.erb176
3 files changed, 192 insertions, 1 deletions
diff --git a/app/controllers/characters/skills_controller.rb b/app/controllers/characters/skills_controller.rb
new file mode 100644
index 0000000..6fcf417
--- /dev/null
+++ b/app/controllers/characters/skills_controller.rb
@@ -0,0 +1,15 @@
+class Characters::SkillsController < ApplicationController
+ before_action :set_character, only: :index
+
+ def index
+ end
+
+ private
+ def set_character
+ @character = Character.find(params[:character_id])
+ unless current_char == @character
+ flash[:alert] = "You can only look at your own skills."
+ redirect_to character_path(@character)
+ end
+ end
+end
diff --git a/app/controllers/characters_controller.rb b/app/controllers/characters_controller.rb
index 1a91988..2eb906b 100644
--- a/app/controllers/characters_controller.rb
+++ b/app/controllers/characters_controller.rb
@@ -37,7 +37,7 @@ class CharactersController < ApplicationController
end
def set_character
- @character = Character.find(params[:character_id])
+ @character = Character.find(params[:id])
unless current_char == @character
flash[:alert] = "You can only manage your own character."
redirect_to character_path(@character)
diff --git a/app/views/characters/skills/index.html.erb b/app/views/characters/skills/index.html.erb
new file mode 100644
index 0000000..f13e611
--- /dev/null
+++ b/app/views/characters/skills/index.html.erb
@@ -0,0 +1,176 @@
+<h2 class="text-xl">Skills</h2>
+<div class="text-lg text-display mb-4">
+ <ul class="flex flex-row">
+ <li class="mr-2"><%= link_to "Rankings", character_rankings_path(@character) %></li>
+ <li class="mr-2"><%= link_to "Titles", character_titles_path(@character) %></li>
+ </ul>
+</div>
+
+<p class="mb-4">First entered the planes
+ <%= pluralize((Date.current - @character.created_at.to_date).to_i, "day") %> ago.</p>
+
+<p class="mb-4">Learned <%= @character.learned_activities.count %> recipe(s) or technique(s).</p>
+
+<div class="grid grid-cols-1 xl:grid-cols-2 my-2">
+ <div class="my-2">
+ <h2 class="text-xl mb-2">Boons & Banes</h2>
+ <% if @character.active_states.any? %>
+ <ul>
+ <% @character.active_states.each do |state| %>
+ <ul><%= state.condition.name %> (expires in <%= distance_of_time_in_words_to_now(state.expires_at)%>)</ul>
+ <% end %>
+ </ul>
+ <% else %>
+ <p>No boons or banes affect you.</p>
+ <% end %>
+ </div>
+ <div class="my-2">
+ <% if @character == current_char %>
+ <h2 class="text-xl mb-2">Combat Styles</h2>
+ <%= form_with url: character_combat_styles_path(character_id: @character) do |f| %>
+ <%= f.label :offensive_style, "Offensive" %>
+ <%= f.select :offensive_style, Character.offensive_styles.keys.to_a, selected: @character.offensive_style %>
+
+ <%= f.label :defensive_style, "Defensive" %>
+ <%= f.select :defensive_style, Character.defensive_styles.keys.to_a, selected: @character.defensive_style %>
+
+ <%= f.submit "Set" %>
+ <% end %>
+ <% end %>
+ </div>
+</div>
+
+
+<div class="my-6">
+ <div class="grid grid-cols-1 xl:grid-cols-2">
+ <div class="my-2">
+ <h2 class="text-xl mb-2">Combat Statistics</h2>
+ <table class="table-auto">
+ <tbody>
+ <tr>
+ <th class="table-cell-padded text-right">Wounds</th>
+ <td class="table-cell-padded"><%= @character.wounds %> / <%= @character.max_wounds %></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Max HP</th>
+ <td class="table-cell-padded"><%= @character.max_hp %></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Speed</th>
+ <td class="table-cell-padded"><%= @character.speed %></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Accuracy</th>
+ <td class="table-cell-padded"><%= @character.accuracy(with_combat_style: true) %></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Power</th>
+ <td class="table-cell-padded"><%= @character.power(with_combat_style: true) %></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Evasion</th>
+ <td class="table-cell-padded"><%= @character.evasion(with_combat_style: true) %></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div>
+ <h2 class="text-xl mb-2">Resistances</h2>
+ <div class="my-2 grid grid-cols-2">
+ <div class="my-2">
+ <table class="table-auto">
+ <tbody>
+ <tr>
+ <th class="table-cell-padded text-right">Slash</th>
+ <td class="table-cell-padded"><%= @character.resistance("slash")%></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Pierce</th>
+ <td class="table-cell-padded"><%= @character.resistance("pierce") %></td>
+ </tr>
+ <tr>
+ <th class="table-cell-padded text-right">Bash</th>
+ <td class="table-cell-padded"><%= @character.resistance("bash") %></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Arcane</th>
+ <td class="table-cell-padded"><%= @character.resistance("arcane") %></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Fire</th>
+ <td class="table-cell-padded"><%= @character.resistance("fire") %></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Frost</th>
+ <td class="table-cell-padded"><%= @character.resistance("frost") %></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Lightning</th>
+ <td class="table-cell-padded"><%= @character.resistance("lightning") %></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div class="my-2">
+ <table class="table-auto">
+ <tbody>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Acid</th>
+ <td class="table-cell-padded"><%= @character.resistance("acid") %></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Thunder</th>
+ <td class="table-cell-padded"><%= @character.resistance("thunder")%></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Radiant</th>
+ <td class="table-cell-padded"><%= @character.resistance("radiant") %></td>
+ </tr>
+ <tr class="text-blue-400">
+ <th class="table-cell-padded text-right">Necrotic</th>
+ <td class="table-cell-padded"><%= @character.resistance("necrotic") %></td>
+ </tr>
+ <tr class="text-purple-400">
+ <th class="table-cell-padded text-right">Poison</th>
+ <td class="table-cell-padded"><%= @character.resistance("poison") %></td>
+ </tr>
+ <tr class="text-red-400">
+ <th class="table-cell-padded text-right">Bleed</th>
+ <td class="table-cell-padded"><%= @character.resistance("bleed") %></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<div class="my-6">
+ <h2 class="text-xl mb-4">Skills</h2>
+
+ <table class="table-auto mb-8">
+ <thead>
+ <tr>
+ <th class="table-header-padded">Skill</th>
+ <th class="table-header-padded">Level</th>
+ <th class="table-header-padded">XPTNL</th>
+ <th class="table-header-padded">Total XP</th>
+ </tr>
+ </thead>
+ <tbody>
+ <% @character.character_skills.ordered_by_skill_name.each do |cs| %>
+ <tr>
+ <td class="table-cell-padded"><%= cs.skill.name %></td>
+ <td class="table-cell-padded"><%= cs.level %></td>
+ <td class="table-cell-padded"><%= cs.xp_to_next_level %></td>
+ <td class="table-cell-padded"><%= cs.xp %></td>
+ </tr>
+ <% end %>
+ </tbody>
+ </table>
+</div>
+
+<% if @character == current_char %>
+ <%= link_to "Manage account", edit_user_registration_path, class: "text-sm" %>
+<% end %>