Skip to content
Snippets Groups Projects
costume-library.js 1.62 KiB
Newer Older
  • Learn to ignore specific revisions
  • Tim Mickel's avatar
    Tim Mickel committed
    const bindAll = require('lodash.bindall');
    
    const React = require('react');
    const VM = require('scratch-vm');
    const MediaLibrary = require('../lib/media-library');
    
    const LibaryComponent = require('../components/library');
    
    
    class CostumeLibrary extends React.Component {
        constructor (props) {
            super(props);
    
    Tim Mickel's avatar
    Tim Mickel committed
            bindAll(this, ['setData', 'selectItem']);
    
            this.state = {costumeData: []};
        }
        componentWillReceiveProps (nextProps) {
            if (nextProps.visible && this.state.costumeData.length === 0) {
    
    Tim Mickel's avatar
    Tim Mickel committed
                this.props.mediaLibrary.getMediaLibrary('costume', this.setData);
    
            }
        }
        setData (data) {
            this.setState({costumeData: data});
        }
        selectItem (item) {
            var vmCostume = {
                skin: 'https://cdn.assets.scratch.mit.edu/internalapi/asset/' + item.md5 + '/get/',
                name: item.name,
                rotationCenterX: item.info[0],
                rotationCenterY: item.info[1]
            };
            if (item.info.length > 2) {
                vmCostume.bitmapResolution = item.info[2];
            }
            this.props.vm.addCostume(vmCostume);
        }
        render () {
            return <LibaryComponent
                title="Costume Library"
                visible={this.props.visible}
                data={this.state.costumeData}
                onRequestClose={this.props.onRequestClose}
    
    Tim Mickel's avatar
    Tim Mickel committed
                onItemSelected={this.selectItem}
    
    Tim Mickel's avatar
    Tim Mickel committed
            />;
    
        }
    }
    
    CostumeLibrary.propTypes = {
        vm: React.PropTypes.instanceOf(VM).isRequired,
        mediaLibrary: React.PropTypes.instanceOf(MediaLibrary),
        visible: React.PropTypes.bool,
        onRequestClose: React.PropTypes.func
    };
    
    module.exports = CostumeLibrary;