mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-29 23:43:51 -04:00
Merge pull request #2313 from laituan245/master
Added a "god mode" button to the local dev environment (issue #2164)
This commit is contained in:
commit
4fec64c3ca
7 changed files with 33 additions and 7 deletions
app
locale
models
templates
views
server/users
|
@ -606,6 +606,7 @@
|
||||||
me_tab: "Me"
|
me_tab: "Me"
|
||||||
picture_tab: "Picture"
|
picture_tab: "Picture"
|
||||||
upload_picture: "Upload a picture"
|
upload_picture: "Upload a picture"
|
||||||
|
god_mode: "God Mode"
|
||||||
password_tab: "Password"
|
password_tab: "Password"
|
||||||
emails_tab: "Emails"
|
emails_tab: "Emails"
|
||||||
admin: "Admin"
|
admin: "Admin"
|
||||||
|
|
|
@ -12,6 +12,7 @@ module.exports = class User extends CocoModel
|
||||||
notyErrors: false
|
notyErrors: false
|
||||||
|
|
||||||
isAdmin: -> 'admin' in @get('permissions', true)
|
isAdmin: -> 'admin' in @get('permissions', true)
|
||||||
|
isInGodMode: -> 'godmode' in @get('permissions', true)
|
||||||
isAnonymous: -> @get('anonymous', true)
|
isAnonymous: -> @get('anonymous', true)
|
||||||
displayName: -> @get('name', true)
|
displayName: -> @get('name', true)
|
||||||
|
|
||||||
|
@ -72,13 +73,16 @@ module.exports = class User extends CocoModel
|
||||||
return level if tierThreshold >= tier
|
return level if tierThreshold >= tier
|
||||||
|
|
||||||
level: ->
|
level: ->
|
||||||
User.levelFromExp(@get('points'))
|
totalPoint = @get('points')
|
||||||
|
totalPoint = totalPoint + 1000000 if me.isInGodMode()
|
||||||
|
User.levelFromExp(totalPoint)
|
||||||
|
|
||||||
tier: ->
|
tier: ->
|
||||||
User.tierFromLevel @level()
|
User.tierFromLevel @level()
|
||||||
|
|
||||||
gems: ->
|
gems: ->
|
||||||
gemsEarned = @get('earned')?.gems ? 0
|
gemsEarned = @get('earned')?.gems ? 0
|
||||||
|
gemsEarned = gemsEarned + 100000 if me.isInGodMode()
|
||||||
gemsPurchased = @get('purchased')?.gems ? 0
|
gemsPurchased = @get('purchased')?.gems ? 0
|
||||||
gemsSpent = @get('spent') ? 0
|
gemsSpent = @get('spent') ? 0
|
||||||
Math.floor gemsEarned + gemsPurchased - gemsSpent
|
Math.floor gemsEarned + gemsPurchased - gemsSpent
|
||||||
|
@ -89,7 +93,7 @@ module.exports = class User extends CocoModel
|
||||||
heroes
|
heroes
|
||||||
items: -> (me.get('earned')?.items ? []).concat(me.get('purchased')?.items ? []).concat([ThangType.items['simple-boots']])
|
items: -> (me.get('earned')?.items ? []).concat(me.get('purchased')?.items ? []).concat([ThangType.items['simple-boots']])
|
||||||
levels: -> (me.get('earned')?.levels ? []).concat(me.get('purchased')?.levels ? []).concat(Level.levels['dungeons-of-kithgard'])
|
levels: -> (me.get('earned')?.levels ? []).concat(me.get('purchased')?.levels ? []).concat(Level.levels['dungeons-of-kithgard'])
|
||||||
ownsHero: (heroOriginal) -> heroOriginal in @heroes()
|
ownsHero: (heroOriginal) -> me.isInGodMode() || heroOriginal in @heroes()
|
||||||
ownsItem: (itemOriginal) -> itemOriginal in @items()
|
ownsItem: (itemOriginal) -> itemOriginal in @items()
|
||||||
ownsLevel: (levelOriginal) -> levelOriginal in @levels()
|
ownsLevel: (levelOriginal) -> levelOriginal in @levels()
|
||||||
|
|
||||||
|
@ -166,6 +170,7 @@ module.exports = class User extends CocoModel
|
||||||
return me.get('testGroupNumber') % numVideos
|
return me.get('testGroupNumber') % numVideos
|
||||||
|
|
||||||
isPremium: ->
|
isPremium: ->
|
||||||
|
return true if me.isInGodMode()
|
||||||
return false unless stripe = @get('stripe')
|
return false unless stripe = @get('stripe')
|
||||||
return true if stripe.subscriptionID
|
return true if stripe.subscriptionID
|
||||||
return true if stripe.free is true
|
return true if stripe.free is true
|
||||||
|
|
|
@ -12,6 +12,7 @@ else
|
||||||
- var name = me.get('name') || '';
|
- var name = me.get('name') || '';
|
||||||
- var email = me.get('email');
|
- var email = me.get('email');
|
||||||
- var admin = me.get('permissions', true).indexOf('admin') != -1;
|
- var admin = me.get('permissions', true).indexOf('admin') != -1;
|
||||||
|
- var godmode = me.get('permissions', true).indexOf('godmode') != -1;
|
||||||
.form-group
|
.form-group
|
||||||
label.control-label(for="name", data-i18n="general.name") Name
|
label.control-label(for="name", data-i18n="general.name") Name
|
||||||
input#name.form-control(name="name", type="text", value="#{name}")
|
input#name.form-control(name="name", type="text", value="#{name}")
|
||||||
|
@ -22,7 +23,10 @@ else
|
||||||
.form-group.checkbox
|
.form-group.checkbox
|
||||||
label(for="admin", data-i18n="account_settings.admin") Admin
|
label(for="admin", data-i18n="account_settings.admin") Admin
|
||||||
input#admin(name="admin", type="checkbox", checked=admin)
|
input#admin(name="admin", type="checkbox", checked=admin)
|
||||||
|
.form-group.checkbox
|
||||||
|
label(for="godmode", data-i18n="account_settings.god_mode") God Mode
|
||||||
|
input#godmode(name="godmode", type="checkbox", checked=godmode)
|
||||||
|
|
||||||
|
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-heading
|
.panel-heading
|
||||||
|
|
|
@ -56,7 +56,8 @@ else
|
||||||
.portals
|
.portals
|
||||||
for campaignSlug in ['dungeon', 'forest', 'desert', 'mountain', 'ice', 'volcano']
|
for campaignSlug in ['dungeon', 'forest', 'desert', 'mountain', 'ice', 'volcano']
|
||||||
- var campaign = campaigns[campaignSlug];
|
- var campaign = campaigns[campaignSlug];
|
||||||
div(class="campaign #{campaignSlug}" + (campaign ? "" : " silhouette") + (campaign && campaign.locked ? " locked" : ""), data-campaign-slug=campaignSlug)
|
- var godmode = me.get('permissions', true).indexOf('godmode') != -1;
|
||||||
|
div(class="campaign #{campaignSlug}" + (campaign ? "" : " silhouette") + (campaign && campaign.locked && !godmode ? " locked" : ""), data-campaign-slug=campaignSlug)
|
||||||
.campaign-label
|
.campaign-label
|
||||||
h2.campaign-name
|
h2.campaign-name
|
||||||
if campaign
|
if campaign
|
||||||
|
@ -68,7 +69,7 @@ else
|
||||||
span= campaign.levelsCompleted
|
span= campaign.levelsCompleted
|
||||||
| /
|
| /
|
||||||
span= campaign.levelsTotal
|
span= campaign.levelsTotal
|
||||||
if campaign && campaign.locked
|
if campaign && campaign.locked && !godmode
|
||||||
h3.campaign-locked(data-i18n="play.locked") Locked
|
h3.campaign-locked(data-i18n="play.locked") Locked
|
||||||
else if campaign
|
else if campaign
|
||||||
btn(data-i18n="common.play").btn.btn-illustrated.btn-lg.btn-success.play-button
|
btn(data-i18n="common.play").btn.btn-illustrated.btn-lg.btn-success.play-button
|
||||||
|
|
|
@ -158,8 +158,15 @@ module.exports = class AccountSettingsView extends CocoView
|
||||||
|
|
||||||
me.set('photoURL', @$el.find('#photoURL').val())
|
me.set('photoURL', @$el.find('#photoURL').val())
|
||||||
|
|
||||||
|
permissions = []
|
||||||
|
|
||||||
adminCheckbox = @$el.find('#admin')
|
adminCheckbox = @$el.find('#admin')
|
||||||
if adminCheckbox.length
|
if adminCheckbox.length
|
||||||
permissions = []
|
|
||||||
permissions.push 'admin' if adminCheckbox.prop('checked')
|
permissions.push 'admin' if adminCheckbox.prop('checked')
|
||||||
me.set('permissions', permissions)
|
|
||||||
|
godmodeCheckbox = @$el.find('#godmode')
|
||||||
|
if godmodeCheckbox.length
|
||||||
|
permissions.push 'godmode' if godmodeCheckbox.prop('checked')
|
||||||
|
|
||||||
|
me.set('permissions', permissions)
|
||||||
|
|
||||||
|
|
|
@ -252,7 +252,9 @@ module.exports = class CampaignView extends RootView
|
||||||
level.locked = false if @levelStatusMap[level.slug] in ['started', 'complete']
|
level.locked = false if @levelStatusMap[level.slug] in ['started', 'complete']
|
||||||
level.locked = false if @editorMode
|
level.locked = false if @editorMode
|
||||||
level.locked = false if @campaign?.get('name') is 'Auditions'
|
level.locked = false if @campaign?.get('name') is 'Auditions'
|
||||||
|
level.locked = false if me.isInGodMode()
|
||||||
level.disabled = true if level.adminOnly and @levelStatusMap[level.slug] not in ['started', 'complete']
|
level.disabled = true if level.adminOnly and @levelStatusMap[level.slug] not in ['started', 'complete']
|
||||||
|
level.disabled = false if me.isInGodMode()
|
||||||
level.color = 'rgb(255, 80, 60)'
|
level.color = 'rgb(255, 80, 60)'
|
||||||
if level.requiresSubscription
|
if level.requiresSubscription
|
||||||
level.color = 'rgb(80, 130, 200)'
|
level.color = 'rgb(80, 130, 200)'
|
||||||
|
|
|
@ -34,6 +34,10 @@ UserSchema.post('init', ->
|
||||||
@set('anonymous', false) if @get('email')
|
@set('anonymous', false) if @get('email')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
UserSchema.methods.isInGodMode = ->
|
||||||
|
p = @get('permissions')
|
||||||
|
return p and 'godmode' in p
|
||||||
|
|
||||||
UserSchema.methods.isAdmin = ->
|
UserSchema.methods.isAdmin = ->
|
||||||
p = @get('permissions')
|
p = @get('permissions')
|
||||||
return p and 'admin' in p
|
return p and 'admin' in p
|
||||||
|
@ -77,6 +81,7 @@ UserSchema.methods.setEmailSubscription = (newName, enabled) ->
|
||||||
|
|
||||||
UserSchema.methods.gems = ->
|
UserSchema.methods.gems = ->
|
||||||
gemsEarned = @get('earned')?.gems ? 0
|
gemsEarned = @get('earned')?.gems ? 0
|
||||||
|
gemsEarned = gemsEarned + 100000 if @isInGodMode()
|
||||||
gemsPurchased = @get('purchased')?.gems ? 0
|
gemsPurchased = @get('purchased')?.gems ? 0
|
||||||
gemsSpent = @get('spent') ? 0
|
gemsSpent = @get('spent') ? 0
|
||||||
gemsEarned + gemsPurchased - gemsSpent
|
gemsEarned + gemsPurchased - gemsSpent
|
||||||
|
@ -194,6 +199,7 @@ UserSchema.methods.register = (done) ->
|
||||||
@saveActiveUser 'register'
|
@saveActiveUser 'register'
|
||||||
|
|
||||||
UserSchema.methods.isPremium = ->
|
UserSchema.methods.isPremium = ->
|
||||||
|
return true if @isInGodMode()
|
||||||
return false unless stripeObject = @get('stripe')
|
return false unless stripeObject = @get('stripe')
|
||||||
return true if stripeObject.subscriptionID
|
return true if stripeObject.subscriptionID
|
||||||
return true if stripeObject.free is true
|
return true if stripeObject.free is true
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue