diff --git a/app/models/habit.rb b/app/models/habit.rb index f1563f510d..2a7a1a7320 100644 --- a/app/models/habit.rb +++ b/app/models/habit.rb @@ -29,6 +29,7 @@ class Habit < ActiveRecord::Base end self.score += value + self.user.exp += value # also add money. Only take away money if it was a mistake (aka, a checkbox) if (direction=='up') || (direction=='down' && clear==false && self.habit_type!=Habit::ALWAYS) diff --git a/app/models/user.rb b/app/models/user.rb index 428674acd9..8a6695d5ff 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -9,4 +9,20 @@ class User < ActiveRecord::Base has_many :habits, :dependent => :destroy has_many :rewards, :dependent => :destroy + + before_save :calculate_experience + + def calculate_experience + self.exp = 0 if self.exp < 0 + if (self.exp > self.tnl) + self.exp -= self.tnl # carry over + self.lvl += 1 + end + end + + #TODO figure this out. Google "RPG level up formula" or something + def tnl + # http://tibia.wikia.com/wiki/Formula + 50*self.lvl**2 - 150*self.lvl + 200 + end end diff --git a/app/views/shared/_progressbar.erb b/app/views/shared/_progressbar.erb index 4f0415b090..a99f28cfdb 100644 --- a/app/views/shared/_progressbar.erb +++ b/app/views/shared/_progressbar.erb @@ -1,9 +1,11 @@ <% if current_user %> -
(Level 1)   <%= score %>/100
+
+ (Level <%= current_user.lvl %>)   <%= current_user.exp.to_i.to_s + "/" + current_user.tnl.to_i.to_s %> +
diff --git a/db/migrate/20120206170948_add_lvl_experience_to_user.rb b/db/migrate/20120206170948_add_lvl_experience_to_user.rb new file mode 100644 index 0000000000..c5b11e4d07 --- /dev/null +++ b/db/migrate/20120206170948_add_lvl_experience_to_user.rb @@ -0,0 +1,11 @@ +class AddLvlExperienceToUser < ActiveRecord::Migration + def up + add_column :users, :exp, :float, :default=>0.0 + add_column :users, :lvl, :integer, :default=>1 + end + + def down + remove_column :users, :exp + remove_column :users, :lvl + end +end