Cleaning up and improving item card buying process.

logins
Thomas Hintz 5 years ago
parent acb5c2df45
commit bf8df6c8eb

@ -1352,7 +1352,10 @@ class BoardApp extends React.Component {
<CardList ui={this.props.ui} />
</div>
<div className='cell medium-auto'>
<Card ui={this.props.ui} />
<Card ui={this.props.ui}
min={(this.props.ui.card.total * 0.2) / 1000}
max={Math.floor(Math.min(this.props.player.cash / 1000, this.props.ui.card.total / 1000))}
cash={(this.props.ui.card.total * 0.2) / 1000} />
</div>
</Row>
</div>
@ -1383,25 +1386,55 @@ export default connect(
)(BoardApp)
class Card extends React.Component {
constructor(props) {
super(props);
this.state = { cash: this.props.cash, initialCash: this.props.cash };
}
static getDerivedStateFromProps(props, state) {
if (state.initialCash !== props.cash) {
return {
cash: props.cash,
initialCash: props.cash
}
}
return null;
}
handleInput = e => {
const target = e.target;
let value = Math.min(Math.max(this.props.min,
parseInt(target.value)), this.props.max);
if (isNaN(value)) { value = this.props.min; }
this.setState({ cash: value });
}
handleSubmit = e => {
e.preventDefault();
buy(this.props.ui.card.id, this.state.cash);
}
render () {
const card = this.props.ui.card;
let action = (null);
switch (card.type) {
case 'otb': action = (
<div className='card-action'>
<form onSubmit={(e) =>
{ e.preventDefault();
buy(card.id, parseInt(document.getElementById('cash-input').value));
return false; }}>
<form onSubmit={this.handleSubmit}>
<Row collapse='true'>
<Col width='2'>
<Button className='tiny' type='submit'>Buy</Button>
<Button className='tiny'
disabled={this.props.max < this.props.min}
type='submit'>Buy</Button>
</Col>
<Col width='4' />
<Col width='6'>
<div className='money'>
$:
<input id='cash-input' type='number' />
<input id='cash-input' type='number'
disabled={this.props.max < this.props.min}
onChange={this.handleInput}
value={this.state.cash} />
{'\u00A0'},000
</div>
</Col>

@ -61,6 +61,7 @@ class Button extends React.Component {
<button className={'button ' + (this.props.size ? this.props.size : '') +
' ' + (this.props.className ? this.props.className : '')}
type={this.props.type || 'button'}
disabled={this.props.disabled}
onClick={this.props.onClick} >
{this.props.children}
</button>

@ -804,7 +804,10 @@
(string->symbol (alist-ref 'crop otb)))
(string->symbol (alist-ref 'crop otb))
(alist-ref 'amount otb)
(* (alist-ref 'cash msg) 1000)
(* (or (and (number? (alist-ref 'cash msg))
(alist-ref 'cash msg))
0)
1000)
player
game)
(set! (player-otbs player)
@ -1691,8 +1694,13 @@
(thread-join! *server-thread*)))
;; TODO
;; audit was called but didn't cause anything on year end
;; make game finished display results.
;; make sure two players can't have the same name
;; bug: harvest action multiplayer doesn't flow right for other players
;; info actions should look better
;; bug: dice shows no value when landing on christmas vacation
;; limit to 20 cows
;; don't give extra money for extra tractors
;; you can get $50 from harvest
;; buy ifs with blank box
;; ran out of otbs
;; bug: new websocket messages should not reset IFS card selection

Loading…
Cancel
Save