begin implementing streaks

This commit is contained in:
Tyler Renelle 2013-05-03 18:18:28 +01:00
parent df59817f64
commit c9aa04439d
5 changed files with 35 additions and 10 deletions

View file

@ -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

View file

@ -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')

View file

@ -179,9 +179,11 @@
<!--<div class='achievement achievement-bow'></div>-->
<!--<div class='achievement achievement-heart'></div>-->
<!--<div class='achievement achievement-shield'></div>-->
<!--<div class='achievement achievement-thermometer'></div>-->
<!--<div class='achievement achievement-firefox'></div>-->
<!--<div class='achievement achievement-karaoke'></div>-->
{#if @profile.achievements.streak}
<div class='achievement achievement-thermometer'></div> {@profile.achievements.streak} Streak Achievement(s)
{/}
{#if @profile.achievements.originalUser}
<div class='achievement achievement-cake'></div>Original User
<hr/>

View file

@ -5,6 +5,7 @@
<app:pets:modals />
<app:alerts:modals />
<app:rewards:modals />
<app:tasks:modals />
<!-- Game Over Modal -->
<div style="{#unless equal(_user.stats.lvl,0)}display:none;{/}">

View file

@ -1,3 +1,13 @@
<modals:>
<app:modals:modal modalId='streak-achievement-modal' header="Achievement!">
<p>
<div class='achievement achievement-thermometer'></div>You have stacked your "Streaker" Achievement! Every 21 days of streak, you gain 1 achievement point here.
</p>
<@footer>
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
</@footer>
</app:modals:modal>
<ads: nonvoid>
{{#if and( _loggedIn, notEqual(_user.flags.ads,'hide') )}}
<span class='pull-right'>
@ -98,6 +108,10 @@
<!-- right-hand side control buttons -->
<div class="task-meta-controls">
<!-- Streak -->
{#if :task.streak}
{:task.streak} <span rel='tooltip' title='Streak Counter'><i class='icon-forward'></i></span>
{/}
<!-- edit -->
<a x-bind=click:toggleTaskEdit data-hide-id="{{:task.id}}-chart" data-toggle-id="{{:task.id}}-edit" rel=tooltip title="Edit"><i class="icon-pencil"></i></a>
<!-- delete -->