Increase autocomplete font size in dungeon levels

Also moving getCampaignForSlug to new CampaignOptions file.
This commit is contained in:
Matt Lott 2014-11-20 12:41:53 -08:00
parent 79ac94d84a
commit ef8e7563b4
4 changed files with 31 additions and 14 deletions

View file

@ -0,0 +1,23 @@
CampaignList = require('views/play/WorldMapView').campaigns
# TODO: Is this file structured correctly?
# Per-campaign options, with default fallback set
options =
'default':
autocompleteFontSizePx: 16
'dungeon':
autocompleteFontSizePx: 20
module.exports = CampaignOptions =
getCampaignForSlug: (slug) ->
return unless slug
for campaign in CampaignList
for level in campaign.levels
return campaign.id if level.id is slug
getOption: (levelSlug, option) ->
return unless levelSlug and option
return unless campaign = CampaignOptions.getCampaignForSlug levelSlug
return options[campaign]?[option] if options[campaign]?[option]?
return options.default[option] if options.default[option]?

View file

@ -7,6 +7,7 @@ RealTimeModel = require 'models/RealTimeModel'
RealTimeCollection = require 'collections/RealTimeCollection'
LevelSetupManager = require 'lib/LevelSetupManager'
GameMenuModal = require 'views/game-menu/GameMenuModal'
CampaignOptions = require 'lib/CampaignOptions'
module.exports = class ControlBarView extends CocoView
id: 'control-bar-view'
@ -67,7 +68,7 @@ module.exports = class ControlBarView extends CocoView
else if @level.get('type', true) in ['hero', 'hero-coop']
@homeLink = c.homeLink = '/play'
@homeViewClass = require 'views/play/WorldMapView'
campaign = @getCampaignForSlug @level.get 'slug'
campaign = CampaignOptions.getCampaignForSlug @level.get 'slug'
if campaign isnt 'dungeon'
@homeLink += '/' + campaign
@homeViewArgs.push campaign
@ -102,11 +103,6 @@ module.exports = class ControlBarView extends CocoView
@controlsEnabled = enabled
@$el.toggleClass 'controls-disabled', not enabled
getCampaignForSlug: (slug) ->
for campaign in require('views/play/WorldMapView').campaigns
for level in campaign.levels
return campaign.id if level.id is slug
onIPadMemoryWarning: (e) ->
@hasReceivedMemoryWarning = true

View file

@ -8,6 +8,7 @@ utils = require 'lib/utils'
ThangType = require 'models/ThangType'
LadderSubmissionView = require 'views/play/common/LadderSubmissionView'
AudioPlayer = require 'lib/AudioPlayer'
CampaignOptions = require 'lib/CampaignOptions'
module.exports = class HeroVictoryModal extends ModalView
id: 'hero-victory-modal'
@ -265,16 +266,11 @@ module.exports = class HeroVictoryModal extends ModalView
for level in campaign.levels
return level if level.id is slug
getCampaignForSlug: (slug) ->
for campaign in require('views/play/WorldMapView').campaigns
for level in campaign.levels
return campaign.id if level.id is slug
getNextLevelCampaign: ->
# Wouldn't handle skipping/more practice across campaign boundaries, but we don't do that.
campaign = @getCampaignForSlug @level.get 'slug'
campaign = CampaignOptions.getCampaignForSlug @level.get 'slug'
if nextLevelSlug = @getNextLevel 'continue'
campaign = @getCampaignForSlug nextLevelSlug
campaign = CampaignOptions.getCampaignForSlug nextLevelSlug
campaign or 'dungeon'
getNextLevelLink: (type) ->

View file

@ -9,6 +9,7 @@ SpellDebugView = require './SpellDebugView'
SpellToolbarView = require './SpellToolbarView'
LevelComponent = require 'models/LevelComponent'
UserCodeProblem = require 'models/UserCodeProblem'
CampaignOptions = require 'lib/CampaignOptions'
LevelOptions = require 'lib/LevelOptions'
module.exports = class SpellView extends CocoView
@ -216,6 +217,7 @@ module.exports = class SpellView extends CocoView
# TODO: Turn on more autocompletion based on level sophistication
# TODO: E.g. using the language default snippets yields a bunch of crazy non-beginner suggestions
# TODO: Options logic shouldn't exist both here and in updateAutocomplete()
popupFontSizePx = CampaignOptions.getOption(@options.level.get('slug'), 'autocompleteFontSizePx') ? 16
@zatanna = new Zatanna @ace,
basic: false
liveCompletion: false
@ -226,7 +228,7 @@ module.exports = class SpellView extends CocoView
text: @autocomplete
autoLineEndings:
javascript: ';'
popupFontSizePx: 16
popupFontSizePx: popupFontSizePx
popupWidthPx: 380
updateAutocomplete: (@autocomplete) ->