Merge branch 'master' into production

This commit is contained in:
Scott Erickson 2014-11-12 10:39:58 -08:00
commit c0a36024c4
9 changed files with 97 additions and 1 deletions

View file

@ -6,6 +6,7 @@ channelSchemas =
'bus': require './schemas/subscriptions/bus'
'editor': require './schemas/subscriptions/editor'
'errors': require './schemas/subscriptions/errors'
'ipad': require './schemas/subscriptions/ipad'
'misc': require './schemas/subscriptions/misc'
'multiplayer': require './schemas/subscriptions/multiplayer'
'play': require './schemas/subscriptions/play'

View file

@ -64,6 +64,7 @@
next: "Next" # Go from choose hero to choose inventory before playing a level
change_hero: "Change Hero" # Go back from choose inventory to choose hero
choose_inventory: "Equip Items"
buy_gems: "Buy Gems"
older_campaigns: "Older Campaigns"
anonymous: "Anonymous Player"
level_difficulty: "Difficulty: "

View file

@ -0,0 +1,12 @@
c = require 'schemas/schemas'
module.exports =
'ipad:products': c.object {required: ['products']},
products: c.array {},
c.object {},
gems: { type: 'integer' }
price: { type: 'string' }
id: { type: 'string' }
'ipad:iap-complete': c.object {},
gems: { type: 'integer' }

View file

@ -47,3 +47,8 @@ module.exports =
'supermodel:load-progress-changed': c.object {required: ['progress']},
progress: {type: 'number', minimum: 0, maximum: 1}
'buy-gems-modal:update-products': { }
'buy-gems-modal:purchase-initiated': c.object {required: ['productID']},
productID: { type: 'string' }

View file

@ -0,0 +1,8 @@
#buy-gems-modal
button
width: 100%
margin-bottom: 10px
.gem
width: 20px
height: 20px

View file

@ -0,0 +1,14 @@
extends /templates/modal/modal_base
block modal-header-content
h3(data-i18n='play.buy_gems')
block modal-body-content
for product in products
button.product.btn.btn-lg(value=product.id)
img.gem(src="/images/common/gem.png")
span x#{product.gems): #{product.price}
block modal-footer
.modal-footer
button(data-dismiss="modal", data-i18n="common.cancel").btn Cancel

View file

@ -40,6 +40,7 @@
button.btn.items(data-toggle='coco-modal', data-target='play/modal/PlayItemsModal', data-i18n="[title]play.items")
button.btn.heroes(data-toggle='coco-modal', data-target='play/modal/PlayHeroesModal', data-i18n="[title]play.heroes")
if me.isAdmin()
button.btn.gems(data-toggle='coco-modal', data-target='play/modal/BuyGemsModal', data-i18n="[title]play.buy_gems")
button.btn.achievements(data-toggle='coco-modal', data-target='play/modal/PlayAchievementsModal', data-i18n="[title]play.achievements")
button.btn.account(data-toggle='coco-modal', data-target='play/modal/PlayAccountModal', data-i18n="[title]play.account")
button.btn.settings(data-toggle='coco-modal', data-target='play/modal/PlaySettingsModal', data-i18n="[title]play.settings")
@ -63,7 +64,7 @@
.user-status.header-font
span.gem.gem-20
span.spr= me.gems()
span#gems-count.spr= me.gems()
span.spl.spr(data-i18n="general.player_level")
span.spr= me.level()
if me.get('anonymous')

View file

@ -46,6 +46,8 @@ module.exports = class WorldMapView extends RootView
@playMusicTimeout = _.delay (=> @playMusic() unless @destroyed), musicDelay
@preloadTopHeroes()
@hadEverChosenHero = me.get('heroConfig')?.thangType
@listenTo me, 'change:purchased', -> @renderSelectors('#gems-count')
@listenTo me, 'change:spent', -> @renderSelectors('#gems-count')
window.tracker?.trackEvent 'World Map', Action: 'Loaded'
destroy: ->

View file

@ -0,0 +1,52 @@
ModalView = require 'views/kinds/ModalView'
template = require 'templates/play/modal/buy-gems-modal'
module.exports = class BuyGemsModal extends ModalView
id: 'buy-gems-modal'
template: template
plain: true
products: [
{ price: '$4.99', gems: 5000, id: 'gems_5' }
{ price: '$9.99', gems: 11000, id: 'gems_10' }
{ price: '$19.99', gems: 25000, id: 'gems_20' }
]
subscriptions:
'ipad:products': 'onIPadProducts'
'ipad:iap-complete': 'onIAPComplete'
events:
'click button.product': 'onClickProductButton'
constructor: (options) ->
super(options)
if application.isIPadApp
@products = []
Backbone.Mediator.publish 'buy-gems-modal:update-products'
getRenderData: ->
c = super()
c.products = @products
return c
onIPadProducts: (e) ->
@products = e.products
@render()
onClickProductButton: (e) ->
productID = $(e.target).closest('button.product').val()
console.log 'purchasing', _.find @products, { id: productID }
if application.isIPadApp
Backbone.Mediator.publish 'buy-gems-modal:purchase-initiated', { productID: productID }
else
@$el.find('.modal-body').append($('<div class="alert alert-danger">Not implemented</div>'))
onIAPComplete: (e) ->
purchased = me.get('purchased') ? {}
purchased.gems ?= 0
purchased.gems += e.gems
me.set('purchased', purchased)
@hide()