diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/activities_controller.rb | 3 | ||||
-rw-r--r-- | app/controllers/game_controller.rb | 12 | ||||
-rw-r--r-- | app/models/character.rb | 12 | ||||
-rw-r--r-- | app/views/characters/hearth/index.html.erb | 2 |
4 files changed, 24 insertions, 5 deletions
diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb index 934f617..43ee1b0 100644 --- a/app/controllers/activities_controller.rb +++ b/app/controllers/activities_controller.rb @@ -5,8 +5,7 @@ class ActivitiesController < ApplicationController def start @activity = Activity.find(params[:id]) - if current_char.can_do_activity?(@activity) - current_char.start_activity(@activity) + if current_char.start_activity(@activity, queued_actions: params[:queued_actions]) redirect_to activity_path(@activity) else flash[:alert] = "You can't do that. Make sure you have the items and meet the requirements." diff --git a/app/controllers/game_controller.rb b/app/controllers/game_controller.rb index 39bb940..f1387e0 100644 --- a/app/controllers/game_controller.rb +++ b/app/controllers/game_controller.rb @@ -5,7 +5,6 @@ class GameController < ApplicationController activity = current_char.activity return unless current_char.can_do_activity?(activity) # TODO: Add error message - current_char.update(activity_started_at: Time.now) Character.transaction do current_char.pay_cost_for(activity) @@ -88,6 +87,17 @@ class GameController < ApplicationController raise "Invalid result type (#{type})" # TODO: Improve this. end end + + if current_char.queued_actions + if current_char.queued_actions > 0 + current_char.queued_actions -= 1 + current_char.activity_started_at = Time.now + current_char.save + else + current_char.stop_activity + @results.push({ type: "message", body: "You have finished your work." }) + end + end end rescue ItemQuantityError @results.replace([{ type: "error", message: "You don't have enough items to complete this activity." }]) diff --git a/app/models/character.rb b/app/models/character.rb index 040c89b..970ede1 100644 --- a/app/models/character.rb +++ b/app/models/character.rb @@ -138,8 +138,16 @@ class Character < ApplicationRecord true end - def start_activity(activity) - self.update(activity: activity, activity_started_at: Time.now) if self.can_do_activity?(activity) + def start_activity(activity, queued_actions: nil) + if self.can_do_activity?(activity) + self.update(activity: activity, activity_started_at: Time.now, queued_actions: queued_actions) + else + false + end + end + + def stop_activity + self.update(activity: nil, activity_started_at: nil, queued_actions: nil) end def equipment_stats diff --git a/app/views/characters/hearth/index.html.erb b/app/views/characters/hearth/index.html.erb index e425fee..c95977e 100644 --- a/app/views/characters/hearth/index.html.erb +++ b/app/views/characters/hearth/index.html.erb @@ -27,6 +27,7 @@ <div class="my-3"> <%= form_with url: start_activity_path do |f| %> <%= f.hidden_field :id, value: construct_activity.id %> + <%= f.hidden_field :queued_actions, value: 0 %> <%= f.submit construct_activity.name %> <% end %> <div class="text-sm">(costs <%= construct_activity.cost_string %>)</div> @@ -40,6 +41,7 @@ <% construct_activity = foundation.construct_activity(1) %> <%= form_with url: start_activity_path do |f| %> <%= f.hidden_field :id, value: construct_activity.id %> + <%= f.hidden_field :queued_actions, value: 0 %> <%= f.submit construct_activity.name %> <% end %> (costs <%= construct_activity.cost_string %>) |