Spaces:
Running
Running
import bindAll from 'lodash.bindall'; | |
import PropTypes from 'prop-types'; | |
import React from 'react'; | |
import {defineMessages, injectIntl, intlShape} from 'react-intl'; | |
import VM from 'scratch-vm'; | |
import {getCostumeLibrary} from '../lib/libraries/tw-async-libraries'; | |
import spriteTags from '../lib/libraries/sprite-tags'; | |
import LibraryComponent from '../components/library/library.jsx'; | |
const messages = defineMessages({ | |
libraryTitle: { | |
defaultMessage: 'Choose a Costume', | |
description: 'Heading for the costume library', | |
id: 'gui.costumeLibrary.chooseACostume' | |
} | |
}); | |
class CostumeLibrary extends React.PureComponent { | |
constructor (props) { | |
super(props); | |
bindAll(this, [ | |
'handleItemSelected' | |
]); | |
} | |
handleItemSelected (item) { | |
const vmCostume = { | |
name: item.name, | |
rotationCenterX: item.rotationCenterX, | |
rotationCenterY: item.rotationCenterY, | |
bitmapResolution: item.bitmapResolution, | |
skinId: null | |
}; | |
if (item.fromPenguinModLibrary) { | |
vmCostume.fromPenguinModLibrary = true; | |
vmCostume.libraryId = item.libraryFilePage; | |
vmCostume.dataFormat = item.dataFormat; | |
} | |
this.props.vm.addCostumeFromLibrary(item.md5ext, vmCostume); | |
} | |
render () { | |
return ( | |
<LibraryComponent | |
data={getCostumeLibrary()} | |
id="costumeLibrary" | |
actor="CostumeLibrary" | |
tags={spriteTags} | |
header={"Costumes"} | |
title={this.props.intl.formatMessage(messages.libraryTitle)} | |
onItemSelected={this.handleItemSelected} | |
onRequestClose={this.props.onRequestClose} | |
/> | |
); | |
} | |
} | |
CostumeLibrary.propTypes = { | |
intl: intlShape.isRequired, | |
onRequestClose: PropTypes.func, | |
vm: PropTypes.instanceOf(VM).isRequired | |
}; | |
export default injectIntl(CostumeLibrary); | |