From db2c0c8c30ec95da28dcac05ee8729143ad69007 Mon Sep 17 00:00:00 2001 From: Lang Date: Mon, 31 Oct 2016 18:07:37 +0100 Subject: [PATCH] current username checked && refactor && remove players in channel when they are more than 2 --- .../Resources/public/js/mine-seeker.js | 3 ++- .../Resources/public/js/mine-seeker/app.js | 17 ++++++++++++++--- .../public/js/mine-seeker/grid/grid-control.js | 8 +------- .../public/js/mine-seeker/user/user-control.js | 2 -- .../public/js/mine-seeker/user/user.js | 2 +- .../Resources/views/Game/play.html.twig | 3 ++- src/Mine/SeekerBundle/Topic/AcmeTopic.php | 17 +++++++++++------ 7 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker.js b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker.js index 8101b6a..79bce63 100644 --- a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker.js +++ b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker.js @@ -4,6 +4,7 @@ import MineSeeker from './mine-seeker/app'; ReactDOM.render( , + gameId={document.getElementById('mine-wrapper').dataset.gameId} + userName={document.getElementById('mine-wrapper').dataset.userName}/>, document.getElementById('mine-wrapper') ); diff --git a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/app.js b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/app.js index 56e43d8..f87ced3 100644 --- a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/app.js +++ b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/app.js @@ -8,11 +8,13 @@ class MineSeeker extends React.Component { var gameAssoc = props.gameId !== '' ? props.gameId : this.makeGameAssoc(50); var channel = "acme/channel/" + gameAssoc; + var userName = props.userName; this.state = { gameInherited: props.gameId !== '', gameAssoc: gameAssoc, channel: channel, + userName: userName, session: null, createGrid: false, stepCache: null @@ -66,12 +68,14 @@ class MineSeeker extends React.Component { channel: this.state.channel }); - /** setup the web player */ + /** setup the web player && save player name */ if (this.refs.gridControl.state.webPlayer === null) { if (this.state.gameInherited) { this.refs.gridControl.state.webPlayer = 'blue'; + this.refs.gridControl.refs.userControl.refs.blue.setState({name: this.state.userName}); } else { this.refs.gridControl.state.webPlayer = 'red'; + this.refs.gridControl.refs.userControl.refs.red.setState({name: this.state.userName}); } } @@ -86,12 +90,19 @@ class MineSeeker extends React.Component { /** Auto-Step if this player is not the current user */ if (this.refs.gridControl.state.webPlayer !== payload.data.player) { console.warn('Opponent stepped: Auto-Step process'); - + this.refs.gridControl.refs.userControl.state.bombSelected = payload.data.bomb; this.refs.gridControl.stepEvent(payload.data.coords); } } else { - console.info("User has been subscribed to the channel!"); + console.info( + (typeof payload.user !== 'undefined' ? payload.user : 'user') + " has been subscribed to the channel!" + ); + + // /** Save the opponent's player name */ + // if (this.state.gameInherited) { + // this.refs.gridControl.refs.userControl.refs.blue.setState({name: payload.user}); + // } } } ); diff --git a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/grid/grid-control.js b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/grid/grid-control.js index f3b332d..5acc2c9 100644 --- a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/grid/grid-control.js +++ b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/grid/grid-control.js @@ -368,14 +368,8 @@ class GridControl extends React.Component { return (
-
- {/*{this.renderGridFields()}*/} - {grid} -
- {/*{this.playingSound()}*/} +
{grid}
); } diff --git a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user-control.js b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user-control.js index 9d66342..0b584f9 100644 --- a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user-control.js +++ b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user-control.js @@ -42,7 +42,6 @@ class UserControl extends React.Component {
@@ -56,7 +55,6 @@ class UserControl extends React.Component {
diff --git a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user.js b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user.js index e37ccfc..f6c6161 100644 --- a/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user.js +++ b/src/Mine/SeekerBundle/Resources/public/js/mine-seeker/user/user.js @@ -5,7 +5,7 @@ class User extends React.Component { super(props); this.state = { - name: props.name, + name: "...", active: props.active, color: props.color === 'blue' ? 1 : 0, mines: 0, diff --git a/src/Mine/SeekerBundle/Resources/views/Game/play.html.twig b/src/Mine/SeekerBundle/Resources/views/Game/play.html.twig index 83e5342..ac0027c 100644 --- a/src/Mine/SeekerBundle/Resources/views/Game/play.html.twig +++ b/src/Mine/SeekerBundle/Resources/views/Game/play.html.twig @@ -10,7 +10,8 @@ {% block body %}
+ data-game-id="{{ app.request.get('gameAssoc') }}" + data-user-name="{{ app.user.username }}">
{% endblock %} diff --git a/src/Mine/SeekerBundle/Topic/AcmeTopic.php b/src/Mine/SeekerBundle/Topic/AcmeTopic.php index 9a3d7b2..400c044 100644 --- a/src/Mine/SeekerBundle/Topic/AcmeTopic.php +++ b/src/Mine/SeekerBundle/Topic/AcmeTopic.php @@ -43,12 +43,17 @@ class AcmeTopic implements TopicInterface $user = $this->clientManipulator->getClient($connection); $userName = is_string($user) ? $user : $user->getUsername(); - $topic->broadcast([ - 'userTopicId' => $connection->resourceId, - 'channel' => $topic->getId(), - 'user' => $userName, - 'userCnt' => $topic->count() - ]); + /** if more user wants to connect than 2 to one channel */ + if ($topic->count() > 2) { + $topic->remove($connection); + } else { + $topic->broadcast([ + 'userTopicId' => $connection->resourceId, + 'channel' => $topic->getId(), + 'user' => $userName, + 'userCnt' => $topic->count() + ]); + } } /**