diff --git a/src/components/farm/Board.jsx b/src/components/farm/Board.jsx
index ce6da44..36d694b 100644
--- a/src/components/farm/Board.jsx
+++ b/src/components/farm/Board.jsx
@@ -31,7 +31,7 @@ import { connect } from 'react-redux'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faUser, faUsers, faTractor, faWindowRestore,
faDollarSign, faTimes, faAsterisk, faExchangeAlt,
- faInfoCircle } from '@fortawesome/free-solid-svg-icons'
+ faInfoCircle, faArrowUp } from '@fortawesome/free-solid-svg-icons'
import { GroupBox, Row, Col, Button } from '../widgets.jsx'
import SpaceNode from './SpaceNode.jsx'
@@ -47,17 +47,17 @@ import { buy, roll, endTurn, loan, trade, submitTradeAccept,
function netWorth(player) {
return ((player.assets.hay + player.assets.grain) * 2000) +
- (player.assets.fruit * 5000) +
- (player.assets.cows * 500) +
- ((player.assets.harvester + player.assets.tractor) * 10000) +
- player.displayCash - player.debt;
+ (player.assets.fruit * 5000) +
+ (player.assets.cows * 500) +
+ ((player.assets.harvester + player.assets.tractor) * 10000) +
+ player.displayCash - player.debt;
}
function assetsValue(player) {
return ((player.assets.hay + player.assets.grain) * 2000) +
- (player.assets.fruit * 5000) +
- (player.assets.cows * 500) +
- ((player.assets.harvester + player.assets.tractor) * 10000);
+ (player.assets.fruit * 5000) +
+ (player.assets.cows * 500) +
+ ((player.assets.harvester + player.assets.tractor) * 10000);
}
function getElementValue(id) {
@@ -120,10 +120,10 @@ class PlayerTradeProposed extends React.Component {
return (
You GAIN something if it is POSITIVE and you GIVE something if it is NEGATIVE.
);
} else if (this.props.player.trade.originator === this.props.player.name) {
return (You proposed a trade with {this.props.player.trade.player} for
- {'\u00A0'}{tradeString(this.props.player, false)}.
);
+ {'\u00A0'}{tradeString(this.props.player, false)}.);
} else {
return ({this.props.player.trade.originator} proposed a trade for
- {'\u00A0'}{tradeString(this.props.player, true)}.
);
+ {'\u00A0'}{tradeString(this.props.player, true)}.);
}
}
}
@@ -161,11 +161,11 @@ class PlayerTradeButton extends React.Component {
return ();
} else {
return (
-
-
- );
+
+
+ );
}
}
}
@@ -177,9 +177,12 @@ class ResourceUnit extends React.Component {
- {this.props.img ? (
) : (
)}
- {this.props.children}
+ borderTop: '3px solid ' + hslString + '%, 55%)'}}>
+ {this.props.img ? (
) : (
)}
+ {this.props.children}
+ {this.props.doubled ? (
+
x2!
+ ) : (<>>)}
);
}
@@ -189,79 +192,83 @@ class PlayerTradeResources extends React.Component {
render () {
let player = this.props.player;
return ();
+
+ );
}
}
class PlayerResources extends React.Component {
render () {
- const player = this.props.player;
+ const player = this.props.player;
return (
-
- {player.assets.hay}
- {' '}
-
- {player.assets.grain}
- {' '}
-
- {player.assets.fruit}
- {' '}
-
- {player.assets.cows}
- {' '}
-
- {player.assets.harvester}
- {' '}
-
- {player.assets.tractor}
-
+
+ {player.assets.hay}
+ {' '}
+
+ {player.assets.grain}
+ {' '}
+
+ {player.assets.fruit}
+ {' '}
+
+ {player.assets.cows}
+ {' '}
+
+ {player.assets.harvester}
+ {' '}
+
+ {player.assets.tractor}
+
);
}
@@ -284,7 +291,7 @@ class PlayerSummary extends React.Component {
const player = this.props.player;
return (
{player.name}
- )}>
+ )}>
{' '}
{' '}
@@ -314,13 +321,13 @@ class PlayerTurnContainer extends React.Component {
const player = this.props.player,
worth = netWorth(player),
auditButton = (this.props.game.calledAudit === false && worth >= this.props.game.settings.auditThreshold) ? (
- ) : '';
+ ) : '';
if (this.props.game.state === 'finished') {
view = (Game finished!);
} else if (player.state === GAME_STATES.preTurn) {
view = (
- {' '}{auditButton}
+ {' '}{auditButton}
);
} else if (player.state === GAME_STATES.midTurn) {
@@ -330,38 +337,38 @@ class PlayerTurnContainer extends React.Component {
} else {
view = (
);
}
} else {
if (player.cash < 0) {
view = (
);
} else {
view = (
- {' '}{auditButton}
+ {' '}{auditButton}
);
}
}
} else {
view = (
);
}
return (
-
-
- {view}
-
-
+
+
+ {view}
+
+
);
}
@@ -408,10 +415,10 @@ class FarmsContainer extends React.Component {
{ridgeNames[3][0]}: {'\u00A0'}
{this.props.otherPlayers
- .map(p => (
+ .map(p => (
{'\u00A0'}
-
{p.player.name}
+
{p.player.name}
))}
@@ -434,7 +441,7 @@ class CCBY extends React.Component {
render() {
return (
- License Creative Commons CCBY
+ License Creative Commons CCBY
);
}
@@ -444,33 +451,33 @@ class Misc extends React.Component {
render() {
return (
);
}
@@ -482,24 +489,24 @@ class Messages extends React.Component {
newTurn = false;
return (
- {this.props.game.messages.map((m, i) => (
- {m[0] === this.props.player.name ? ({m[0]}) : m[0]}{': ' + m[2]}
- ))}
- {this.props.game.messages.length > 0 ? (
) : ()}
- {this.props.game.oldMessages.map((m, i) => {
- newTurn = false;
- if (m[1] !== lastTurn) {
- lastTurn = m[1];
- newTurn = true;
- }
- return (
-
- {newTurn ? (Turn {m[1]}
) : }
-
- {m[0] + ': ' + m[2]}
-
-
- )})}
+ {this.props.game.messages.map((m, i) => (
+ {m[0] === this.props.player.name ? ({m[0]}) : m[0]}{': ' + m[2]}
+ ))}
+ {this.props.game.messages.length > 0 ? (
) : ()}
+ {this.props.game.oldMessages.map((m, i) => {
+ newTurn = false;
+ if (m[1] !== lastTurn) {
+ lastTurn = m[1];
+ newTurn = true;
+ }
+ return (
+
+ {newTurn ? (Turn {m[1]}
) : }
+
+ {m[0] + ': ' + m[2]}
+
+
+ )})}
);
}
@@ -555,6 +562,21 @@ class Loans extends React.Component {
loan(1);
}
+ maxRepay = e => {
+ e.preventDefault();
+ this.setState({ repay: Math.max(0, Math.floor(
+ Math.min(this.props.player.debt + 900, this.props.player.displayCash) / 1000)) });
+ }
+
+ maxTakeout = e => {
+ e.preventDefault();
+ this.setState({ takeOut: Math.max(0, Math.floor(this.state.maxLoan / 1000)) });
+ }
+
+ quickLoan = i => {
+ loan(i);
+ }
+
componentDidUpdate(prevProps) {
if (this.props.player.debt !== prevProps.player.debt ||
this.props.game.settings.loanInterest !== prevProps.game.settings.loanInterest ||
@@ -578,7 +600,12 @@ class Loans extends React.Component {