mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-01 15:50:11 -04:00
Added a "god mode" button to the local dev environment #2164
This commit is contained in:
parent
42a4ca9299
commit
9c754bbd96
7 changed files with 33 additions and 7 deletions
app
locale
models
templates
views
server/users
|
@ -608,6 +608,7 @@
|
|||
me_tab: "Me"
|
||||
picture_tab: "Picture"
|
||||
upload_picture: "Upload a picture"
|
||||
god_mode: "God Mode"
|
||||
password_tab: "Password"
|
||||
emails_tab: "Emails"
|
||||
admin: "Admin"
|
||||
|
|
|
@ -12,6 +12,7 @@ module.exports = class User extends CocoModel
|
|||
notyErrors: false
|
||||
|
||||
isAdmin: -> 'admin' in @get('permissions', true)
|
||||
isInGodMode: -> 'godmode' in @get('permissions', true)
|
||||
isAnonymous: -> @get('anonymous', true)
|
||||
displayName: -> @get('name', true)
|
||||
|
||||
|
@ -72,13 +73,16 @@ module.exports = class User extends CocoModel
|
|||
return level if tierThreshold >= tier
|
||||
|
||||
level: ->
|
||||
User.levelFromExp(@get('points'))
|
||||
totalPoint = @get('points')
|
||||
totalPoint = totalPoint + 1000000 if me.isInGodMode()
|
||||
User.levelFromExp(totalPoint)
|
||||
|
||||
tier: ->
|
||||
User.tierFromLevel @level()
|
||||
|
||||
gems: ->
|
||||
gemsEarned = @get('earned')?.gems ? 0
|
||||
gemsEarned = gemsEarned + 100000 if me.isInGodMode()
|
||||
gemsPurchased = @get('purchased')?.gems ? 0
|
||||
gemsSpent = @get('spent') ? 0
|
||||
Math.floor gemsEarned + gemsPurchased - gemsSpent
|
||||
|
@ -89,7 +93,7 @@ module.exports = class User extends CocoModel
|
|||
heroes
|
||||
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'])
|
||||
ownsHero: (heroOriginal) -> heroOriginal in @heroes()
|
||||
ownsHero: (heroOriginal) -> me.isInGodMode() || heroOriginal in @heroes()
|
||||
ownsItem: (itemOriginal) -> itemOriginal in @items()
|
||||
ownsLevel: (levelOriginal) -> levelOriginal in @levels()
|
||||
|
||||
|
@ -166,6 +170,7 @@ module.exports = class User extends CocoModel
|
|||
return me.get('testGroupNumber') % numVideos
|
||||
|
||||
isPremium: ->
|
||||
return true if me.isInGodMode()
|
||||
return false unless stripe = @get('stripe')
|
||||
return true if stripe.subscriptionID
|
||||
return true if stripe.free is true
|
||||
|
|
|
@ -12,6 +12,7 @@ else
|
|||
- var name = me.get('name') || '';
|
||||
- var email = me.get('email');
|
||||
- var admin = me.get('permissions', true).indexOf('admin') != -1;
|
||||
- var godmode = me.get('permissions', true).indexOf('godmode') != -1;
|
||||
.form-group
|
||||
label.control-label(for="name", data-i18n="general.name") Name
|
||||
input#name.form-control(name="name", type="text", value="#{name}")
|
||||
|
@ -22,7 +23,10 @@ else
|
|||
.form-group.checkbox
|
||||
label(for="admin", data-i18n="account_settings.admin") 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-heading
|
||||
|
|
|
@ -56,7 +56,8 @@ else
|
|||
.portals
|
||||
for campaignSlug in ['dungeon', 'forest', 'desert', 'mountain', 'ice', 'volcano']
|
||||
- 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
|
||||
h2.campaign-name
|
||||
if campaign
|
||||
|
@ -68,7 +69,7 @@ else
|
|||
span= campaign.levelsCompleted
|
||||
| /
|
||||
span= campaign.levelsTotal
|
||||
if campaign && campaign.locked
|
||||
if campaign && campaign.locked && !godmode
|
||||
h3.campaign-locked(data-i18n="play.locked") Locked
|
||||
else if campaign
|
||||
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())
|
||||
|
||||
permissions = []
|
||||
|
||||
adminCheckbox = @$el.find('#admin')
|
||||
if adminCheckbox.length
|
||||
permissions = []
|
||||
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 @editorMode
|
||||
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 = false if me.isInGodMode()
|
||||
level.color = 'rgb(255, 80, 60)'
|
||||
if level.requiresSubscription
|
||||
level.color = 'rgb(80, 130, 200)'
|
||||
|
|
|
@ -34,6 +34,10 @@ UserSchema.post('init', ->
|
|||
@set('anonymous', false) if @get('email')
|
||||
)
|
||||
|
||||
UserSchema.methods.isInGodMode = ->
|
||||
p = @get('permissions')
|
||||
return p and 'godmode' in p
|
||||
|
||||
UserSchema.methods.isAdmin = ->
|
||||
p = @get('permissions')
|
||||
return p and 'admin' in p
|
||||
|
@ -77,6 +81,7 @@ UserSchema.methods.setEmailSubscription = (newName, enabled) ->
|
|||
|
||||
UserSchema.methods.gems = ->
|
||||
gemsEarned = @get('earned')?.gems ? 0
|
||||
gemsEarned = gemsEarned + 100000 if @isInGodMode()
|
||||
gemsPurchased = @get('purchased')?.gems ? 0
|
||||
gemsSpent = @get('spent') ? 0
|
||||
gemsEarned + gemsPurchased - gemsSpent
|
||||
|
@ -194,6 +199,7 @@ UserSchema.methods.register = (done) ->
|
|||
@saveActiveUser 'register'
|
||||
|
||||
UserSchema.methods.isPremium = ->
|
||||
return true if @isInGodMode()
|
||||
return false unless stripeObject = @get('stripe')
|
||||
return true if stripeObject.subscriptionID
|
||||
return true if stripeObject.free is true
|
||||
|
|
Loading…
Add table
Reference in a new issue