From c9aa04439dd8b2c1969b8e9f10b8dafc5dcb0ac1 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Fri, 3 May 2013 18:18:28 +0100 Subject: [PATCH] begin implementing streaks --- src/app/scoring.coffee | 6 ++++++ src/app/unlock.coffee | 20 +++++++++++--------- views/app/avatar.html | 4 +++- views/app/modals.html | 1 + views/app/tasks.html | 14 ++++++++++++++ 5 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/app/scoring.coffee b/src/app/scoring.coffee index d487909e80..79bd5566c2 100644 --- a/src/app/scoring.coffee +++ b/src/app/scoring.coffee @@ -144,10 +144,16 @@ score = (model, taskId, direction, times, batch, cron) -> if cron? # cron calculateDelta() subtractPoints() + batch.set "#{taskPath}.streak", 0 else calculateDelta(false) if delta != 0 addPoints() # obviously for delta>0, but also a trick to undo accidental checkboxes + if direction is 'up' + taskObj.streak = if taskObj.streak then taskObj.streak + 1 else 1 + else + taskObj.streak = if taskObj.streak then taskObj.streak - 1 else 0 + batch.set "#{taskPath}.streak", taskObj.streak when 'todo' if cron? #cron diff --git a/src/app/unlock.coffee b/src/app/unlock.coffee index 742aa1436b..86a31787d0 100644 --- a/src/app/unlock.coffee +++ b/src/app/unlock.coffee @@ -68,20 +68,22 @@ module.exports.app = (appExports, model) -> user.on 'push', 'items.pets', (after, before) -> return if user.get('achievements.beastMaster') if before >= 90 # evidently before is the count? - dontPersist = model._dontPersist - model._dontPersist = false - user.set 'achievements.beastMaster', true, -> - model._dontPersist = dontPersist + dontPersist = model._dontPersist; model._dontPersist = false + user.set 'achievements.beastMaster', true, (-> model._dontPersist = dontPersist) $('#beastmaster-achievement-modal').modal('show') user.on 'set', 'items.*', (after, before) -> return if user.get('achievements.ultimateGear') items = user.get('items') if parseInt(items.weapon) == 6 and parseInt(items.armor) == 5 and parseInt(items.head) == 5 and parseInt(items.shield) == 5 - debugger - dontPersist = model._dontPersist - model._dontPersist = false - user.set 'achievements.ultimateGear', true, -> - model._dontPersist = dontPersist + dontPersist = model._dontPersist; model._dontPersist = false + user.set 'achievements.ultimateGear', true, (-> model._dontPersist = dontPersist) $('#max-gear-achievement-modal').modal('show') + user.on 'set', 'tasks.*.streak', (id, val) -> + # 21-day streak, as per the old philosophy of doign a thing 21-days in a row makes a habit + if (val % 21) is 0 + dontPersist = model._dontPersist; model._dontPersist = false + user.incr 'achievements.streak', 1, (-> model._dontPersist = dontPersist) + $('#streak-achievement-modal').modal('show') + diff --git a/views/app/avatar.html b/views/app/avatar.html index 975a50ddd1..ceec7399f5 100644 --- a/views/app/avatar.html +++ b/views/app/avatar.html @@ -179,9 +179,11 @@ - + {#if @profile.achievements.streak} +
{@profile.achievements.streak} Streak Achievement(s) + {/} {#if @profile.achievements.originalUser}
Original User
diff --git a/views/app/modals.html b/views/app/modals.html index 5122e562e9..0408125a87 100644 --- a/views/app/modals.html +++ b/views/app/modals.html @@ -5,6 +5,7 @@ +
diff --git a/views/app/tasks.html b/views/app/tasks.html index 86a6225bd9..bfa3c5cf29 100644 --- a/views/app/tasks.html +++ b/views/app/tasks.html @@ -1,3 +1,13 @@ + + +

+

You have stacked your "Streaker" Achievement! Every 21 days of streak, you gain 1 achievement point here. +

+ <@footer> + + +
+ {{#if and( _loggedIn, notEqual(_user.flags.ads,'hide') )}} @@ -98,6 +108,10 @@
+ + {#if :task.streak} + {:task.streak} + {/}