Set up thang avatar views with the new db portraits.

This commit is contained in:
Scott Erickson 2014-01-09 14:04:46 -08:00
parent 4e34b38c83
commit 3c3e38b585
35 changed files with 20 additions and 46 deletions

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 700 B

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 5.1 KiB

Binary file not shown.

Before

(image error) Size: 4.6 KiB

Binary file not shown.

Before

(image error) Size: 6.6 KiB

Binary file not shown.

Before

(image error) Size: 5.4 KiB

Binary file not shown.

Before

(image error) Size: 5.1 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

Binary file not shown.

Before

(image error) Size: 2.6 KiB

Binary file not shown.

Before

(image error) Size: 5.6 KiB

Binary file not shown.

Before

(image error) Size: 4.6 KiB

Binary file not shown.

Before

(image error) Size: 1.7 KiB

Binary file not shown.

Before

(image error) Size: 2.8 KiB

Binary file not shown.

Before

(image error) Size: 4.9 KiB

Binary file not shown.

Before

(image error) Size: 4.4 KiB

Binary file not shown.

Before

(image error) Size: 551 B

Binary file not shown.

Before

(image error) Size: 671 B

Binary file not shown.

Before

(image error) Size: 5.7 KiB

Binary file not shown.

Before

(image error) Size: 6.7 KiB

Binary file not shown.

Before

(image error) Size: 5.7 KiB

View file

@ -243,11 +243,10 @@ module.exports = class SpriteBoss extends CocoClass
if alive and not @suppressSelectionSounds
instance = sprite.playSound 'selected'
if instance.playState is 'playSucceeded'
if instance?.playState is 'playSucceeded'
Backbone.Mediator.publish 'thang-began-talking', thang: sprite?.thang
instance.addEventListener 'complete', ->
Backbone.Mediator.publish 'thang-finished-talking', thang: sprite?.thang
console.log 'select...', instance.playState
# Marks

View file

@ -14,27 +14,3 @@ module.exports.createProgressBar = createProgressBar = (color, y, width=PROG_BAR
s.width = width
s.height = height
return s
module.exports.createAvatar = createAvatar = (spriteName, $image) ->
url = createAvatarURL spriteName
$image ?= $('<img>')
$image.attr('src', url)
$image
module.exports.createAvatarURL = createAvatarURL = (spriteName) ->
# We destroyed old version of this; this is temp anyway
spriteName = _.string.slugify(spriteName).replace /-/g, '_'
spriteName = {
"anya": "captain_anya"
"soldier": "ally_small"
"ogre_munchkin": "enemy_small"
"ogre": "enemy_medium"
"ogre_brawler": "enemy_large"
"ogre_fangrider": "enemy_flying"
"ogre_shaman": "mage"
"ogre_thrower": "thrower"
"health_potion_small": "potion"
"health_potion_medium": "potion"
"health_potion_large": "potion"
}[spriteName] ? spriteName
"/images/avatars/#{spriteName}.png"

View file

@ -3,7 +3,6 @@ template = require 'templates/play/level/hud'
prop_template = require 'templates/play/level/hud_prop'
action_template = require 'templates/play/level/hud_action'
DialogueAnimator = require './dialogue_animator'
spriteUtils = require 'lib/surface/sprite_utils'
module.exports = class HUDView extends View
id: 'thang-hud'

View file

@ -1,6 +1,6 @@
View = require 'views/kinds/CocoView'
template = require 'templates/play/level/thang_avatar'
{createAvatarURL} = require 'lib/surface/sprite_utils'
ThangType = require 'models/ThangType'
module.exports = class ThangAvatarView extends View
className: 'thang-avatar-view'
@ -17,7 +17,10 @@ module.exports = class ThangAvatarView extends View
getRenderData: (context={}) =>
context = super context
context.thang = @thang
context.avatarURL = createAvatarURL @thang.spriteName
thangs = @supermodel.getModels(ThangType)
thangs = (t for t in thangs when t.get('name') is @thang.spriteName)
thang = thangs[0]
context.avatarURL = thang.getPortraitSource()
context.includeName = @includeName
context

View file

@ -7,7 +7,7 @@ module.exports = class Spell
view: null
entryView: null
constructor: (programmableMethod, @spellKey, @pathComponents, @session) ->
constructor: (programmableMethod, @spellKey, @pathComponents, @session, @supermodel) ->
p = programmableMethod
@name = p.name
@source = @session.getSourceFor(@spellKey) ? p.source
@ -17,7 +17,8 @@ module.exports = class Spell
@thangs = {}
@view = new SpellView {spell: @, session: @session}
@view.render() # Get it ready and code loaded in advance
@tabView = new SpellListTabEntryView spell: @
console.log 'spell creates tab entry view', @supermodel
@tabView = new SpellListTabEntryView spell: @, supermodel: @supermodel
@tabView.render()
addThang: (thang) ->

View file

@ -23,7 +23,7 @@ module.exports = class SpellListEntryThangsView extends View
@avatars = []
spellName = @spell.name
for thang in @thangs
avatar = new ThangAvatarView thang: thang, includeName: true
avatar = new ThangAvatarView thang: thang, includeName: true, supermodel: @supermodel
@$el.append avatar.el
avatar.render()
avatar.setSelected thang is @thang

View file

@ -45,7 +45,7 @@ module.exports = class SpellListEntryView extends View
super()
return unless @options.showTopDivider # Don't repeat Thang avatars when not changed from previous entry
return unless spellThang = @getPrimarySpellThang()
@avatar = new ThangAvatarView thang: spellThang.thang, includeName: false
@avatar = new ThangAvatarView thang: spellThang.thang, includeName: false, supermodel: @supermodel
@$el.prepend @avatar.el # Before rendering, so render can use parent for popover
@avatar.render()
@avatar.setSharedThangs _.size @spell.thangs
@ -69,7 +69,7 @@ module.exports = class SpellListEntryView extends View
showThangs: =>
clearTimeout @hideThangsTimeout if @hideThangsTimeout
return if @thangsView
@thangsView = new SpellListEntryThangsView thangs: (spellThang.thang for thangID, spellThang of @spell.thangs), thang: @getPrimarySpellThang().thang, spell: @spell
@thangsView = new SpellListEntryThangsView thangs: (spellThang.thang for thangID, spellThang of @spell.thangs), thang: @getPrimarySpellThang().thang, spell: @spell, supermodel: @supermodel
@thangsView.render()
@$el.append @thangsView.el
@thangsView.$el.mouseenter (e) => @onMouseEnterAvatar()

View file

@ -1,7 +1,6 @@
SpellListEntryView = require './spell_list_entry_view'
ThangAvatarView = require 'views/play/level/thang_avatar_view'
template = require 'templates/play/level/tome/spell_list_tab_entry'
{createAvatarURL} = require 'lib/surface/sprite_utils'
Docs = require 'lib/world/docs'
module.exports = class SpellListTabEntryView extends SpellListEntryView
@ -35,7 +34,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
@buildDocs() unless @docsBuilt
buildAvatar: ->
avatar = new ThangAvatarView thang: @thang, includeName: false
avatar = new ThangAvatarView thang: @thang, includeName: false, supermodel: @supermodel
if @avatar
@avatar.$el.replaceWith avatar.$el
@avatar.destroy()

View file

@ -59,7 +59,7 @@ module.exports = class SpellListView extends View
theseThangs = _.keys(spell.thangs)
changedThangs = not lastThangs or not _.isEqual theseThangs, lastThangs
lastThangs = theseThangs
@entries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs
@entries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel
for entry in @entries
@$el.append entry.el
entry.render() # Render after appending so that we can access parent container for popover

View file

@ -42,7 +42,7 @@ module.exports = class ThangListEntryView extends View
afterRender: ->
super()
@avatar = new ThangAvatarView thang: @thang, includeName: true
@avatar = new ThangAvatarView thang: @thang, includeName: true, supermodel: @supermodel
@$el.append @avatar.el # Before rendering, so render can use parent for popover
@avatar.render()
@avatar.setSharedThangs @spells.length # A bit weird to call it sharedThangs; could refactor if we like this

View file

@ -62,7 +62,7 @@ module.exports = class ThangListView extends View
section = @$el.find(section).toggle thangs.length > 0
for thang in thangs
spells = _.filter @spells, (s) -> thang.id of s.thangs
entry = new ThangListEntryView thang: thang, spells: spells, permission: permission
entry = new ThangListEntryView thang: thang, spells: spells, permission: permission, supermodel: @supermodel
section.find('.thang-list').append entry.el # Render after appending so that we can access parent container for popover
entry.render()
@entries.push entry

View file

@ -52,15 +52,12 @@ module.exports = class TomeView extends View
'click #spell-view': 'onSpellViewClick'
'click': -> Backbone.Mediator.publish 'focus-editor'
constructor: (options) ->
super options
afterRender: ->
super()
programmableThangs = _.filter @options.thangs, 'isProgrammable'
@createSpells programmableThangs # Do before spellList, thangList, and castButton
@spellList = @insertSubView new SpellListView spells: @spells
@thangList = @insertSubView new ThangListView spells: @spells, thangs: @options.thangs
@spellList = @insertSubView new SpellListView spells: @spells, supermodel: @supermodel
@thangList = @insertSubView new ThangListView spells: @spells, thangs: @options.thangs, supermodel: @supermodel
@castButton = @insertSubView new CastButtonView spells: @spells
createSpells: (programmableThangs) ->
@ -80,7 +77,7 @@ module.exports = class TomeView extends View
spellKey = pathComponents.join '/'
@thangSpells[thang.id].push spellKey
unless method.cloneOf
spell = @spells[spellKey] = new Spell method, spellKey, pathPrefixComponents.concat(pathComponents), @options.session
spell = @spells[spellKey] = new Spell method, spellKey, pathPrefixComponents.concat(pathComponents), @options.session, @supermodel
for thangID, spellKeys of @thangSpells
thang = world.getThangByID(thangID)
@spells[spellKey].addThang thang for spellKey in spellKeys

View file

@ -128,7 +128,7 @@ module.exports = class PlayLevelView extends View
ctx.fillText("Loaded #{@modelsLoaded} thingies",50,50)
insertSubviews: ->
@insertSubView @tome = new TomeView levelID: @levelID, session: @session, thangs: @world.thangs
@insertSubView @tome = new TomeView levelID: @levelID, session: @session, thangs: @world.thangs, supermodel: @supermodel
@insertSubView new PlaybackView {}
@insertSubView new GoalsView {}
@insertSubView new HUDView {}