import * as React from 'react' import { Component } from 'react' import { ItemList } from './ItemList' import Options from './Options' import { dragStore } from './store/DragStore' import { inventoryStore } from './store/InventoryStore' import { observer } from '../node_modules/mobx-react' import { Item } from './item' import { SwitchTransition, CSSTransition } from 'react-transition-group' import { withTranslation } from 'react-i18next' const FadeTransition = props => ( <CSSTransition {...props} classNames="transition" addEndListener={(node, done) => { node.addEventListener("transitionend", done, false); }} /> ); @observer class Inventory extends Component<any, any> { private draggable: HTMLElement = null constructor(props) { super(props) this.state = { clothes : false, targetClothes : false } } get dragging() { return dragStore.dragging ? '' : 'hide' } get itemData() { return dragStore.itemData; } get itemKey() { return dragStore.itemKey; } get dragStyle() { let offset = 0 if (this.draggable) { offset = this.draggable.offsetWidth; } return { left: dragStore.mousex - offset / 2, top: dragStore.mousey - offset * 2 } } render() { const { t } = this.props; return ( <div id="inventory"> <div className="inventory-list"> <div className="item-list-title"> <div className={"title" + (this.state.clothes ? "" : " selected")} onClick={() => this.setState({ clothes : false })}>{t("Inventaire")}</div> <div className="title" style={{ pointerEvents: 'none' }}> | </div> <div className={"title" + (!this.state.clothes ? "" : " selected")} onClick={() => this.setState({ clothes : true })} >{t("VĂȘtements")}</div> <div className="infos">{inventoryStore.pocketsWeight} / 45</div> </div> <SwitchTransition> <FadeTransition key={this.state.clothes ? "lol" : "no"}> <ItemList items={this.state.clothes ? inventoryStore.clothes : inventoryStore.pockets} eventName="inventory" /> </FadeTransition> </SwitchTransition> <div className="gunInventory"> <div className="item-list-title"> <div className="title selected" style={{ pointerEvents: 'none' }}>{t("Armes")}</div> </div> <Item keyNumber="1" eventName="weaponOne" data={inventoryStore.weaponOne && { name : inventoryStore.weaponOne.name, base : inventoryStore.weaponOne.base }} /> <Item keyNumber="2" eventName="weaponTwo" data={inventoryStore.weaponTwo && { name : inventoryStore.weaponTwo.name, base : inventoryStore.weaponTwo.base }} /> <Item keyNumber="3" eventName="weaponThree" data={inventoryStore.weaponThree && { name : inventoryStore.weaponThree.name, base : inventoryStore.weaponThree.base }} /> </div> </div> <Options /> <div className={"inventory-list " + (inventoryStore.targetMaxWeight <= 0 ? "hide" : "")}> {inventoryStore.targetMaxWeight > 0 && ( <div className="item-list-title"> <div className={"title" + (this.state.targetClothes ? "" : " selected")} onClick={() => this.setState({ targetClothes : false })}>{t("Coffre")}</div> <div className="title" style={{ pointerEvents: 'none' }}> | </div> <div className={"title" + (!this.state.targetClothes ? "" : " selected")} onClick={() => this.setState({ targetClothes : true })} >{t("VĂȘtements")}</div> <div className="infos">{inventoryStore.targetWeight} / {inventoryStore.targetMaxWeight}</div> </div> )} {inventoryStore.targetMaxWeight > 0 && ( <SwitchTransition> <FadeTransition key={this.state.targetClothes ? "lol" : "no"}> <ItemList IsTarget={true} items={this.state.targetClothes ? inventoryStore.targetClothes : inventoryStore.target} eventName="targetInventory" /> </FadeTransition> </SwitchTransition> )} </div> <div className={'item-icon drag ' + this.dragging} style={this.dragStyle} ref={draggable => (this.draggable = draggable)}> <Item data={this.itemData} key={this.itemKey} /> </div> </div> ) } } export default withTranslation('common')(Inventory);