habitica-self-host/src/app/pets.coffee

86 lines
2.7 KiB
CoffeeScript
Raw Normal View History

2013-03-16 18:58:09 +00:00
_ = require 'underscore'
{ randomVal } = require './helpers'
2013-03-09 20:34:48 +00:00
{ pets, food } = require('./items').items
2013-03-09 13:30:06 +00:00
2013-03-08 17:44:21 +00:00
###
app exports
###
module.exports.app = (appExports, model) ->
user = model.at '_user'
user.on 'set', 'flags.dropsEnabled', (captures, args) ->
return unless captures == true
2013-03-09 13:30:06 +00:00
2013-03-21 19:55:31 +00:00
egg = randomVal pets
2013-03-09 13:30:06 +00:00
dontPersist = model._dontPersist
model._dontPersist = false
user.push 'items.eggs', egg
model._dontPersist = dontPersist
2013-03-09 13:30:06 +00:00
2013-03-13 15:47:37 +00:00
$('#drops-enabled-modal').modal 'show'
2013-03-16 20:30:45 +00:00
appExports.chooseEgg = (e, el) ->
model.ref '_feedEgg', e.at()
2013-03-16 20:30:45 +00:00
appExports.feedEgg = (e, el) ->
foodName = $(el).children('select').val()
myFood = user.get 'items.food'
egg = model.get '_feedEgg'
eggs = user.get 'items.eggs'
myPets = user.get 'items.pets'
2013-03-16 20:30:45 +00:00
foodIdx = myFood.indexOf foodName
eggIdx = eggs.indexOf egg
return alert "You don't own that food :\\" if foodIdx is -1
return alert "You don't own that egg :\\" if eggIdx is -1
return alert "You already have that pet." if myPets and myPets.indexOf("#{egg.name}-#{foodName}") != -1
2013-03-16 20:30:45 +00:00
user.push 'items.pets', egg.name + '-' + foodName
eggs.splice eggIdx, 1
myFood.splice foodIdx, 1
user.set 'items.eggs', eggs
user.set 'items.food', myFood
#FIXME Bug: this removes from the array properly in the browser, but on refresh is has removed all items from the arrays
# user.remove 'items.food', foodIdx, 1
# user.remove 'items.eggs', eggIdx, 1
2013-03-16 20:30:45 +00:00
2013-03-16 18:58:09 +00:00
appExports.choosePet = (e, el) ->
petArray = $(el).attr('data-pet').split '-'
name = petArray[0]
2013-03-16 18:58:09 +00:00
modifier = petArray[1]
petStr = "#{name}-#{modifier}"
pet = _.findWhere pets, name: name
2013-03-16 18:58:09 +00:00
pet.modifier = modifier
2013-03-16 19:09:16 +00:00
pet.str = petStr
2013-03-16 18:58:09 +00:00
ownsThisPet = user.get('items.pets').indexOf petStr
if ownsThisPet != -1
2013-03-16 19:17:55 +00:00
# If user's pet is already active, deselect it
pet = {} if user.get('items.currentPet.str') is petStr
user.set 'items.currentPet', pet
else
tokens = user.get('balance')*4
if tokens > pet.value
r = confirm("Buy this pet with #{pet.value} of your #{tokens} tokens?");
if r
user.push 'items.pets', name
user.set 'items.currentPet', pet
user.set 'balance', (tokens - pet.value)/4
else
2013-03-13 15:47:37 +00:00
$('#more-tokens-modal').modal 'show'
2013-03-16 20:30:45 +00:00
appExports.buyFood = (e, el) ->
name = $(el).attr 'data-food'
newFood = _.findWhere food, name: name
tokens = user.get('balance') * 4
if tokens > newFood.value
if confirm "Buy this food with #{newFood.value} of your #{tokens} tokens?"
user.push 'items.food', newFood.name
2013-03-16 20:30:45 +00:00
user.set 'balance', (tokens - newFood.value) / 4
else
$('#more-tokens-modal').modal 'show'