- Normalized many SCSS files as deep as possible - Fixed print css to display all 6 pages - Fixed sheet header to match original sheet header - Fixed issue with range property for ranged items
176 lines
5.2 KiB
JavaScript
176 lines
5.2 KiB
JavaScript
import IconButton from '../../components/IconButton';
|
|
import { Item } from '../../utils/DataUtils';
|
|
import { get } from '../../stores/ListStore';
|
|
import InventoryActions from '../../actions/InventoryActions';
|
|
import InventoryStore from '../../stores/InventoryStore';
|
|
import React, { Component, PropTypes } from 'react';
|
|
import TooltipToggle from '../../components/TooltipToggle';
|
|
|
|
const GROUPS = ['Nahkampfwaffen', 'Fernkampfwaffen', 'Rüstungen', 'Munition', 'Waffenzubehör', 'Kleidung', 'Reisebedarf und Werkzeuge', 'Beleuchtung', 'Verbandzeug und Heilmittel', 'Behältnisse', 'Seile und Ketten', 'Diebeswerkzeug', 'Handwerkszeug', 'Orientierungshilfen', 'Schmuck', 'Edelsteine und Feingestein', 'Schreibwaren', 'Bücher', 'Magische Artefakte', 'Alchimica', 'Gifte', 'Heilkräuter', 'Musikinstrumente', 'Genussmittel und Luxus', 'Tiere', 'Tierbedarf', 'Forbewegungsmittel'];
|
|
|
|
export default class InventoryListItem extends Component {
|
|
|
|
static propTypes = {
|
|
add: PropTypes.bool,
|
|
data: PropTypes.instanceOf(Item).isRequired,
|
|
};
|
|
|
|
edit = () => InventoryActions.showItemEditor(Item.prepareDataForEditor(InventoryStore.get(this.props.data.id)));
|
|
delete = () => InventoryActions.removeFromList(this.props.data.id);
|
|
add = () => InventoryActions.addToList(this.props.data);
|
|
|
|
render() {
|
|
|
|
const { add, data: { gr, name, number, price, weight, where, combattechnique, damageDiceNumber, damageDiceSides, damageFlat, damageBonus, at, pa, reach, length, reloadtime, range, ammunition, pro, enc, addpenalties } } = this.props;
|
|
|
|
const numberValue = number > 1 ? number : null;
|
|
|
|
return (
|
|
<TooltipToggle content={
|
|
<div className="inventory-item">
|
|
<h4><span>{name}</span><span>{numberValue}</span></h4>
|
|
{ gr === 4 ? <p className="ammunition">Munition</p> : null}
|
|
{ [4,5].includes(gr) ? <table className="melee">
|
|
<tbody>
|
|
<tr>
|
|
<td>Gewicht</td>
|
|
<td>{weight} Stn</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Preis</td>
|
|
<td>{price} S</td>
|
|
</tr>
|
|
</tbody>
|
|
</table> : null}
|
|
{ gr === 1 ? <table className="melee">
|
|
<tbody>
|
|
<tr>
|
|
<td>Kampftechnik</td>
|
|
<td>{get(combattechnique).name}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TP</td>
|
|
<td>{damageDiceNumber}W{damageDiceSides}{damageFlat > 0 ? '+' : null}{damageFlat !== 0 ? damageFlat : null}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>L+S</td>
|
|
<td>{get(combattechnique).primary.map(attr => get(attr).short).join('/')} {damageBonus}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>AT/PA-Mod</td>
|
|
<td>{at > 0 ? '+' : null}{at}/{pa > 0 ? '+' : null}{pa}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>RW</td>
|
|
<td>{['Kurz','Mittel','Lang'][reach - 1]}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Gewicht</td>
|
|
<td>{weight} Stn</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Länge</td>
|
|
<td>{length} HF</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Preis</td>
|
|
<td>{price} S</td>
|
|
</tr>
|
|
</tbody>
|
|
</table> : null}
|
|
{ gr === 2 ? <table className="ranged">
|
|
<tbody>
|
|
<tr>
|
|
<td>Kampftechnik</td>
|
|
<td>{get(combattechnique).name}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TP</td>
|
|
<td>{damageDiceNumber}W{damageDiceSides}{damageFlat > 0 ? '+' : null}{damageFlat !== 0 ? damageFlat : null}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>LZ</td>
|
|
<td>{reloadtime}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>RW</td>
|
|
<td>{range.join('/')}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Munitionstyp</td>
|
|
<td>{(InventoryStore.getTemplate(ammunition) || {}).name}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Gewicht</td>
|
|
<td>{weight} Stn</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Länge</td>
|
|
<td>{length} HF</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Preis</td>
|
|
<td>{price} S</td>
|
|
</tr>
|
|
</tbody>
|
|
</table> : null}
|
|
{ gr === 3 ? <table className="armor">
|
|
<tbody>
|
|
<tr>
|
|
<td>RS</td>
|
|
<td>{pro}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>BE</td>
|
|
<td>{enc}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Gewicht</td>
|
|
<td>{weight} Stn</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Preis</td>
|
|
<td>{price} S</td>
|
|
</tr>
|
|
</tbody>
|
|
</table> : null}
|
|
{ gr === 3 ? <p className="armor">
|
|
Zus. Abzüge: {addpenalties ? '-1 GS, -1 INI' : '-'}
|
|
</p> : null}
|
|
</div>
|
|
} margin={11}>
|
|
{add ? (
|
|
<tr>
|
|
<td className="name">{name}</td>
|
|
<td className="inc">
|
|
<IconButton
|
|
icon=""
|
|
onClick={this.add}
|
|
/>
|
|
</td>
|
|
</tr>
|
|
):(
|
|
<tr>
|
|
<td className="type">{GROUPS[gr - 1]}</td>
|
|
<td className="number">{numberValue}</td>
|
|
<td className="name">{name}</td>
|
|
<td className="price">{price} S</td>
|
|
<td className="weight">{weight} Stn</td>
|
|
<td className="where">{where}</td>
|
|
<td className="inc">
|
|
<IconButton
|
|
icon=""
|
|
onClick={this.edit}
|
|
/>
|
|
<IconButton
|
|
icon=""
|
|
onClick={this.delete}
|
|
/>
|
|
</td>
|
|
</tr>
|
|
)}
|
|
</TooltipToggle>
|
|
);
|
|
}
|
|
}
|