Private
Public Access
1
0

bugfix grid field render #12

This commit is contained in:
2016-11-18 20:03:54 +01:00
parent 165889346e
commit 541e2e605c
3 changed files with 21 additions and 11 deletions

View File

@@ -87,7 +87,7 @@ main {
font-family: 'Open Sans', sans-serif; font-family: 'Open Sans', sans-serif;
text-align: center; text-align: center;
color: #354d6a; color: #354d6a;
width: 300px; width: 500px;
padding: 10px; padding: 10px;
-webkit-border-radius: 10px; -webkit-border-radius: 10px;

View File

@@ -30,8 +30,8 @@ class MineSeeker extends React.Component {
/** game end control */ /** game end control */
makeGameEndIfItEnds(bluePoints, redPoints) { makeGameEndIfItEnds(bluePoints, redPoints) {
var redWins = redPoints > 3, var redWins = redPoints > 2,
blueWins = bluePoints > 3; blueWins = bluePoints > 2;
if (redWins || blueWins) { if (redWins || blueWins) {
this.refs.gridControl.setState({ this.refs.gridControl.setState({
@@ -74,6 +74,7 @@ class MineSeeker extends React.Component {
this.state.session = session; this.state.session = session;
/** save session to GridControl */ /** save session to GridControl */
/** render grid fields - #12 */
this.refs.gridControl.setState({ this.refs.gridControl.setState({
grid: this.state.gameInherited ? JSON.parse(Base64.decode(gridServer)) : gridClient, grid: this.state.gameInherited ? JSON.parse(Base64.decode(gridServer)) : gridClient,
session: this.state.session, session: this.state.session,
@@ -82,7 +83,8 @@ class MineSeeker extends React.Component {
overlayTitle: "We are waiting for your opponent...", overlayTitle: "We are waiting for your opponent...",
overlaySubTitle: this.state.gameAssoc overlaySubTitle: this.state.gameAssoc
? <a href={"/play/" + this.state.gameAssoc} target="_blank">Play w/ me!</a> ? <a href={"/play/" + this.state.gameAssoc} target="_blank">Play w/ me!</a>
: '' : '',
renderGridFields: this.state.gameAssoc
}); });
/** setup the web player */ /** setup the web player */
@@ -111,7 +113,7 @@ class MineSeeker extends React.Component {
this.refs.gridControl.refs.userControl.state.bombSelected = payload.data.bomb; this.refs.gridControl.refs.userControl.state.bombSelected = payload.data.bomb;
this.refs.gridControl.stepEvent(payload.data.coords); this.refs.gridControl.stepEvent(payload.data.coords);
/** End-game control */ /** End-game control */
this.makeGameEndIfItEnds( this.makeGameEndIfItEnds(
this.refs.gridControl.refs.userControl.refs.blue.state.mines, this.refs.gridControl.refs.userControl.refs.blue.state.mines,
@@ -126,8 +128,10 @@ class MineSeeker extends React.Component {
(typeof payload.user !== 'undefined' ? payload.user : 'user') + " has been subscribed to the channel!" (typeof payload.user !== 'undefined' ? payload.user : 'user') + " has been subscribed to the channel!"
); );
var activePlayer = this.refs.gridControl.refs.userControl.state.activePlayer ? 'blue' : 'red';
/** remove overlay when every user has been came */ /** remove overlay when every user has been came */
this.refs.gridControl.setState({overlay: payload.userCnt < 2}); this.refs.gridControl.setState({ overlay: payload.userCnt < 2});
/** Set up player names w/ server data */ /** Set up player names w/ server data */
this.refs.gridControl.refs.userControl.refs.red.setState({ this.refs.gridControl.refs.userControl.refs.red.setState({

View File

@@ -16,6 +16,8 @@ class GridControl extends React.Component {
env: props.env, env: props.env,
webPlayer: null, webPlayer: null,
grid: null, grid: null,
renderGridFields: false,
gridFields: [],
updatedFieldCache: [], updatedFieldCache: [],
bombFieldCache: [], bombFieldCache: [],
foundUserMineCache: 0, foundUserMineCache: 0,
@@ -382,13 +384,11 @@ class GridControl extends React.Component {
return 'game-overlay' + ( this.state.overlay ? '' : ' hide' ); return 'game-overlay' + ( this.state.overlay ? '' : ' hide' );
} }
render() { renderGridFields() {
var grid = [];
if (this.state.grid) { if (this.state.grid) {
for (let i = 0, j = this.state.grid.length; i < j; i++) { for (let i = 0, j = this.state.grid.length; i < j; i++) {
for (let k = 0, l = this.state.grid[i].length; k < l; k++) { for (let k = 0, l = this.state.grid[i].length; k < l; k++) {
grid.push( this.state.gridFields.push(
<GridField row={i} <GridField row={i}
col={k} col={k}
ref={this.refString(i, k)} ref={this.refString(i, k)}
@@ -399,6 +399,12 @@ class GridControl extends React.Component {
} }
} }
} }
}
render() {
/** Render the grid fields just one time in one party #12 */
this.state.renderGridFields && this.renderGridFields();
this.state.renderGridFields = false;
return ( return (
<div className="game-wrapper"> <div className="game-wrapper">
@@ -411,7 +417,7 @@ class GridControl extends React.Component {
<UserControl ref="userControl" <UserControl ref="userControl"
bombClear={this.bombClear.bind(this)}/> bombClear={this.bombClear.bind(this)}/>
<div className="grid-container"> <div className="grid-container">
<div className="grid"> {grid} </div> <div className="grid"> {this.state.gridFields} </div>
</div> </div>
</div> </div>
); );