Made flag detection more dynamic.

This commit is contained in:
Nick Winter 2014-11-10 10:51:46 -08:00
parent 956186b538
commit 97c4ff2e7e
3 changed files with 11 additions and 10 deletions
app
lib
views/play/level

View file

@ -684,6 +684,7 @@ module.exports = Lank = class Lank extends CocoClass
return true if m in ['moveRight', 'moveUp', 'moveDown', 'moveLeft']
return true if /^attack /.test m
return true if /^Repeating loop/.test m
return true if /^findNearestEnemy/.test m
false
playSounds: (withDelay=true, volume=1.0) ->

View file

@ -17,7 +17,7 @@ REAL_TIME_BUFFER_MAX = 3 * PROGRESS_UPDATE_INTERVAL
REAL_TIME_BUFFERED_WAIT_INTERVAL = 0.5 * PROGRESS_UPDATE_INTERVAL
REAL_TIME_COUNTDOWN_DELAY = 3000 # match CountdownScreen
ITEM_ORIGINAL = '53e12043b82921000051cdf9'
COUNTDOWN_LEVELS = ['sky-span', 'dueling-grounds', 'cavern-survival'] # TODO: determine flag usage dynamically
COUNTDOWN_LEVELS = ['sky-span']
module.exports = class World
@className: 'World'
@ -99,12 +99,12 @@ module.exports = class World
continueLaterFn = =>
@loadFrames(loadedCallback, errorCallback, loadProgressCallback, preloadedCallback, skipDeferredLoading, loadUntilFrame) unless @destroyed
if @realTime and not @countdownFinished
if @levelID in ['the-first-kithmaze', 'haunted-kithmaze', 'the-second-kithmaze', 'the-final-kithmaze', 'the-gauntlet', 'winding-trail', 'thornbush-farm', 'a-fiery-trap']
@realTimeSpeedFactor = 5
else if @levelID in ['forgetful-gemsmith', 'descending-further', 'tactical-strike', 'kithgard-gates', 'ogre-encampment', 'woodland-cleaver', 'shield-rush', 'peasant-protection', 'munchkin-swarm']
@realTimeSpeedFactor = 3
else
@realTimeSpeedFactor = 1
@realTimeSpeedFactor = 1
unless @showsCountdown
if @levelID in ['the-first-kithmaze', 'haunted-kithmaze', 'the-second-kithmaze', 'the-final-kithmaze', 'the-gauntlet', 'winding-trail', 'thornbush-farm', 'a-fiery-trap']
@realTimeSpeedFactor = 5
else if @levelID in ['forgetful-gemsmith', 'descending-further', 'tactical-strike', 'kithgard-gates', 'ogre-encampment', 'woodland-cleaver', 'shield-rush', 'peasant-protection', 'munchkin-swarm']
@realTimeSpeedFactor = 3
if @showsCountdown
return setTimeout @finishCountdown(continueLaterFn), REAL_TIME_COUNTDOWN_DELAY
else
@ -203,12 +203,12 @@ module.exports = class World
loadFromLevel: (level, willSimulate=true) ->
@levelID = level.slug
@showsCountdown = @levelID in COUNTDOWN_LEVELS
@levelComponents = level.levelComponents
@thangTypes = level.thangTypes
@loadScriptsFromLevel level
@loadSystemsFromLevel level
@loadThangsFromLevel level, willSimulate
@showsCountdown = @levelID in COUNTDOWN_LEVELS or _.any(@thangs, (t) -> (t.programmableProperties and 'findFlags' in t.programmableProperties) or t.inventory?.flag)
system.start @thangs for system in @systems
loadSystemsFromLevel: (level) ->

View file

@ -189,7 +189,7 @@ module.exports = class PlayLevelView extends RootView
@world = @levelLoader.world
@level = @levelLoader.level
@$el.addClass 'hero' if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
@$el.addClass 'flags' if (@level.get('slug') in ['sky-span', 'coinucopia']) or (@level.get('type', true) in ['hero-ladder', 'hero-coop']) # TODO: figure out when the player has flags.
@$el.addClass 'flags' if _.any(@world.thangs, (t) -> (t.programmableProperties and 'findFlags' in t.programmableProperties) or t.inventory?.flag) or @level.get('slug') is 'sky-span'
@otherSession = @levelLoader.opponentSession
@worldLoadFakeResources = [] # first element (0) is 1%, last (100) is 100%
for percent in [1 .. 100]
@ -243,7 +243,7 @@ module.exports = class PlayLevelView extends RootView
@insertSubView @tome = new TomeView levelID: @levelID, session: @session, otherSession: @otherSession, thangs: @world.thangs, supermodel: @supermodel, level: @level
@insertSubView new LevelPlaybackView session: @session, levelID: @levelID, level: @level
@insertSubView new GoalsView {}
@insertSubView new LevelFlagsView world: @world if (@levelID in ['sky-span', 'coinucopia']) or @level.get('type', true) in ['hero-ladder', 'hero-coop'] # TODO: figure out when flags are available
@insertSubView new LevelFlagsView world: @world if @$el.hasClass 'flags'
@insertSubView new GoldView {}
@insertSubView new HUDView {level: @level}
@insertSubView new LevelDialogueView {level: @level}