mirror of
https://github.com/sudoxnym/habitica.git
synced 2026-08-01 15:31:16 +00:00
begin implementing streaks
This commit is contained in:
parent
df59817f64
commit
c9aa04439d
5 changed files with 35 additions and 10 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
||||
|
|
|
|||
|
|
@ -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/>
|
||||
|
|
|
|||
|
|
@ -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;{/}">
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
|
|
|||
Loading…
Reference in a new issue