Commit 8b906329 authored by 18손재민's avatar 18손재민

Merge branch 'menuscene'

parents 0afef244 ccfae9d2
...@@ -132,7 +132,7 @@ class GameRoom ...@@ -132,7 +132,7 @@ class GameRoom
{ {
if (this.currentPhase === GameServer.Phase.READY) if (this.currentPhase === GameServer.Phase.READY)
{ {
this.endTime = Date.now() + 5000; // 테스트용 10초 this.endTime = Date.now() + 1000; // 테스트용 10초
this.announceToRoom('setRoomCount', this.announceToRoom('setRoomCount',
{ {
isEnable: true, endTime: this.endTime, playerCount: this.currentPlayer.length, isEnable: true, endTime: this.endTime, playerCount: this.currentPlayer.length,
...@@ -208,7 +208,7 @@ class GameRoom ...@@ -208,7 +208,7 @@ class GameRoom
{ {
if (this.currentPhase === GameServer.Phase.START) if (this.currentPhase === GameServer.Phase.START)
{ {
if (this.phaseChanger < 0 && checkTime - this.startTime > 60000) if (this.phaseChanger < 0 && checkTime - this.startTime > 6000)
{ {
this.currentPhase = GameServer.Phase.MAIN; this.currentPhase = GameServer.Phase.MAIN;
this.rateArrangePoint = 150; this.rateArrangePoint = 150;
......
This diff is collapsed.
...@@ -15,14 +15,16 @@ ...@@ -15,14 +15,16 @@
<script src="js/SelectWord.js"></script> <script src="js/SelectWord.js"></script>
<script src="js/BGMsound.js"></script> <script src="js/BGMsound.js"></script>
<script src="js/Enums.js"></script> <script src="js/Enums.js"></script>
<script src="js/ResourceLoader.js"></script>
<script src="js/UIObject.js"></script>
<style> <style>
img { position: relative; width: 100%; height: 100%; z-index: 0;} img { position: relative; width: 100%; height: 100%; z-index: 0;}
#dvLogin { position: absolute; left: 65%; top: 35%; width: 30%; height: 30%; background: black; z-index: 1;} #dvLogin { position: absolute; left: 65%; top: 35%; width: 30%; height: 30%; padding: 10px; background: black; z-index: 1;}
</style> </style>
</head> </head>
<body> <body>
<main id="mainTitle"> <div id="mainTitle">
<img id="titleImg" src="assets/image/background/title.png" alt="title"> <img id="titleImg" src="assets/image/background/title.png" alt="title">
<div id="dvLogin"> <div id="dvLogin">
<input id="userEmail" type="email" placeholder="email" style="width: 100%; height: 10%;"></br> <input id="userEmail" type="email" placeholder="email" style="width: 100%; height: 10%;"></br>
...@@ -31,7 +33,7 @@ ...@@ -31,7 +33,7 @@
<button id="emailBtn" style="width: 100%; height: 10%;">이메일로 로그인</button></br> <button id="emailBtn" style="width: 100%; height: 10%;">이메일로 로그인</button></br>
<button id="googleBtn" style="width: 10%; height: 10%;"><img src="assets/title/googleBtn.png" style="object-fit: contain"></button></br> <button id="googleBtn" style="width: 10%; height: 10%;"><img src="assets/title/googleBtn.png" style="object-fit: contain"></button></br>
</div> </div>
</main> </div>
<script src="https://www.gstatic.com/firebasejs/6.3.3/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/6.3.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.10.1/firebase-auth.js"></script> <script src="https://www.gstatic.com/firebasejs/5.10.1/firebase-auth.js"></script>
......
...@@ -11,14 +11,6 @@ BackGround.characterPos = [ ...@@ -11,14 +11,6 @@ BackGround.characterPos = [
] ]
BackGround.otherCharacters = []; BackGround.otherCharacters = [];
BackGround.loadImage = function(scene)
{
scene.load.image('brain', 'assets/image/background/brain.png');
scene.load.image('gameBackground', 'assets/image/background/background_brain.png');
scene.load.image('menuBackground', 'assets/placeholder/menuBackground.png');
scene.load.image('roomBackground', 'assets/placeholder/roomBackground.png');
}
BackGround.drawCharacter = function(scene) BackGround.drawCharacter = function(scene)
{ {
RoomData.myself.playerImage = scene.add.sprite(game.config.width / 2, game.config.height * 41 / 48, 'pyeongminWrite').setScale(0.45).setDepth(2); RoomData.myself.playerImage = scene.add.sprite(game.config.width / 2, game.config.height * 41 / 48, 'pyeongminWrite').setScale(0.45).setDepth(2);
...@@ -43,6 +35,11 @@ BackGround.drawBrain = function(scene) ...@@ -43,6 +35,11 @@ BackGround.drawBrain = function(scene)
BackGround.gameBackground = scene.add.sprite(game.config.width / 2, game.config.height / 2, 'gameBackground').setDisplaySize(game.config.width, game.config.height).setDepth(1); BackGround.gameBackground = scene.add.sprite(game.config.width / 2, game.config.height / 2, 'gameBackground').setDisplaySize(game.config.width, game.config.height).setDepth(1);
} }
BackGround.drawBackground = function(scene)
{
scene.add.sprite(game.config.width / 2, game.config.height / 2, 'baseBackground').setDisplaySize(game.config.width, game.config.height).setDepth(0);
}
BackGround.drawMenu = function(scene) BackGround.drawMenu = function(scene)
{ {
scene.add.sprite(game.config.width / 2, game.config.height / 2, 'menuBackground').setDisplaySize(game.config.width, game.config.height).setDepth(1); scene.add.sprite(game.config.width / 2, game.config.height / 2, 'menuBackground').setDisplaySize(game.config.width, game.config.height).setDepth(1);
......
...@@ -7,7 +7,8 @@ socket.on('alert', function(msg) // string errorcode ...@@ -7,7 +7,8 @@ socket.on('alert', function(msg) // string errorcode
{ {
//let toAlert = 'null alert'; //let toAlert = 'null alert';
if (msg === 'errNicknameOverlaped') alert('이미 사용중인 닉네임입니다.'); if (msg === 'errNicknameOverlaped') alert('이미 사용중인 닉네임입니다.');
if (msg === 'gameWin') else if (msg === 'errNicknameEmpty') alert('설정된 닉네임이 없습니다.');
else if (msg === 'gameWin')
{ {
//toAlert = '승리!'; //toAlert = '승리!';
ScenesData.gameScene.add.text(game.config.width / 2, game.config.height / 2, '승리!!!!', {fontSize: '30pt'}) ScenesData.gameScene.add.text(game.config.width / 2, game.config.height / 2, '승리!!!!', {fontSize: '30pt'})
...@@ -28,10 +29,9 @@ socket.on('setId', function(msg) // {str, num playerNum} ...@@ -28,10 +29,9 @@ socket.on('setId', function(msg) // {str, num playerNum}
// init game // init game
socket.on('enterRoom', function() socket.on('enterRoom', function()
{ {
fbClient.updateUserData('recentHopae', PlayerData.currentHopae);
Audio.killSound(ScenesData.menuScene, 'login'); Audio.killSound(ScenesData.menuScene, 'login');
game.scene.remove('menuScene'); ScenesData.changeScene('roomScene');
game.scene.start('roomScene');
}); });
socket.on('syncRoomScene', function(msg) socket.on('syncRoomScene', function(msg)
{ {
...@@ -104,8 +104,7 @@ socket.on('syncRoomData', function(msg) // {num roomNum, [] players} ...@@ -104,8 +104,7 @@ socket.on('syncRoomData', function(msg) // {num roomNum, [] players}
socket.on('startGame', function() socket.on('startGame', function()
{ {
Audio.killSound(ScenesData.roomScene, 'inRoom'); Audio.killSound(ScenesData.roomScene, 'inRoom');
game.scene.remove('roomScene'); ScenesData.changeScene('gameScene');
game.scene.start('gameScene');
}); });
// in game // in game
...@@ -116,11 +115,13 @@ socket.on('changePhase', function(msg) // number Phase ...@@ -116,11 +115,13 @@ socket.on('changePhase', function(msg) // number Phase
WordSpace.pauseCycle(true); WordSpace.pauseCycle(true);
// 여기서 종이 드르륵 열면됨 // 여기서 종이 드르륵 열면됨
let phaseChangeBgr = ScenesData.gameScene.add.sprite(game.config.width / 2, game.config.height / 2, 'phaseChangeBgr').setOrigin(0.5, 0.5).setDepth(10);
ScenesData.gameScene.scene.pause('gameScene'); ScenesData.gameScene.scene.pause('gameScene');
setTimeout(function() setTimeout(function()
{ {
ScenesData.gameScene.scene.resume('gameScene'); ScenesData.gameScene.scene.resume('gameScene');
// 여기서 종이 닫으면됨 // 여기서 종이 닫으면됨
phaseChangeBgr.destroy();
WordSpace.pauseCycle(false); WordSpace.pauseCycle(false);
//console.log('start again'); //console.log('start again');
}, 5000); }, 5000);
...@@ -141,12 +142,12 @@ socket.on('attackMode', function(msg) // number playerId ...@@ -141,12 +142,12 @@ socket.on('attackMode', function(msg) // number playerId
console.log(msg + ' is on attack Mode'); console.log(msg + ' is on attack Mode');
// msg의 id를 가진 사람이 attack Mode이다. // msg의 id를 가진 사람이 attack Mode이다.
}); });
socket.on('someoneAttacked', function(msg) // {Player attacker, Player victim} socket.on('someoneAttacked', function(msg) // {Id attackerId, Id victimId}
{ {
// 이때 위의 attack Mode인 사람(msg.attackerId)을 해제해주자. // 이때 위의 attack Mode인 사람(msg.attackerId)을 해제해주자.
console.log(msg.attacker.id + ' attacked ' + msg.victim.id); console.log(msg.attackerId + ' attacked ' + msg.victimId);
let attackerPos = RoomData.findPlayer(msg.attacker).position; let attackerPos = RoomData.findPlayer(msg.attackerId).position;
let victimPos = RoomData.findPlayer(msg.victim).position; let victimPos = RoomData.findPlayer(msg.victimId).position;
WordSpace.makeAttackPaper(ScenesData.gameScene, attackerPos, victimPos, msg.multiple); WordSpace.makeAttackPaper(ScenesData.gameScene, attackerPos, victimPos, msg.multiple);
}); });
socket.on('attacked', function(msg) // object attackData socket.on('attacked', function(msg) // object attackData
...@@ -155,13 +156,13 @@ socket.on('attacked', function(msg) // object attackData ...@@ -155,13 +156,13 @@ socket.on('attacked', function(msg) // object attackData
let attackedEvent = new Cycle(function() let attackedEvent = new Cycle(function()
{ {
if(!WordSpace.isInvincible) if(!WordSpace.isInvincible)
for (let i = 0; i < msg.multiple; i++) WordSpace.generateWord.Attack(ScenesData.gameScene, msg.text, msg.grade, msg.attacker, msg.attackOption); for (let i = 0; i < msg.multiple; i++) WordSpace.generateWord.Attack(ScenesData.gameScene, msg.text, msg.grade, RoomData.findPlayer(msg.attackerId), msg.attackOption);
attackedEvent.currentCycle.destroy(); attackedEvent.currentCycle.destroy();
WordSpace.attackedEvents.splice(WordSpace.attackedEvents.findIndex(function(element) { WordSpace.attackedEvents.splice(WordSpace.attackedEvents.findIndex(function(element) {
return element.cert === (msg.text + msg.attacker); return element.cert === (msg.text + msg.attackerId);
}), 1); }), 1);
}); });
attackedEvent.cert = msg.text + msg.attacker; attackedEvent.cert = msg.text + msg.attackerId;
attackedEvent.resetCycle(ScenesData.gameScene, 4000, 0, false); attackedEvent.resetCycle(ScenesData.gameScene, 4000, 0, false);
WordSpace.attackedEvents.push(attackedEvent); WordSpace.attackedEvents.push(attackedEvent);
...@@ -169,12 +170,23 @@ socket.on('attacked', function(msg) // object attackData ...@@ -169,12 +170,23 @@ socket.on('attacked', function(msg) // object attackData
}); });
socket.on('defeat', function(msg) // object player socket.on('defeat', function(msg) // object player
{ {
let playerImage = RoomData.findPlayer(msg.id).playerImage;
let position = RoomData.findPlayer(msg.id).position;
let nicknameText = RoomData.findPlayer(msg.id).nicknameText;
RoomData.players[msg.index] = msg; RoomData.players[msg.index] = msg;
RoomData.players[msg.index].playerImage = playerImage;
RoomData.players[msg.index].position = position;
RoomData.players[msg.index].nicknameText = nicknameText;
RoomData.aliveCount--; RoomData.aliveCount--;
console.log(msg.id);
console.log(RoomData.findPlayer(msg.id));
RoomData.findPlayer(msg.id).playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.gameOver]);
if (msg.lastAttack != null) if (msg.lastAttack != null)
{ {
console.log(RoomData.players[msg.index].nickname + ' defeated by ' + msg.lastAttack.attacker + ', with ' + msg.lastAttack.word); let lastAttacker = RoomData.findPlayer(msg.lastAttack.attackerId).nickname;
WordSpace.killLogForTest += ('\n' + msg.lastAttack.attacker + ' --' + msg.lastAttack.word + '-> ' + RoomData.players[msg.index].nickname); console.log(RoomData.findPlayer(msg.id).nickname + ' defeated by ' + lastAttacker + ', with ' + msg.lastAttack.word);
WordSpace.killLogForTest += ('\n' + lastAttacker + ' --' + msg.lastAttack.word + '-> ' + RoomData.findPlayer(msg.id).nickname);
if(msg.lastAttack.attackerId == RoomData.myself.id) if(msg.lastAttack.attackerId == RoomData.myself.id)
{ {
var keys = Object.keys(Enums.item); var keys = Object.keys(Enums.item);
...@@ -183,8 +195,8 @@ socket.on('defeat', function(msg) // object player ...@@ -183,8 +195,8 @@ socket.on('defeat', function(msg) // object player
} }
else else
{ {
console.log(RoomData.players[msg.index].nickname + ' defeated'); console.log(RoomData.findPlayer(msg.id).nickname + ' defeated');
WordSpace.killLogForTest += ('\n--Suicide->' + RoomData.players[msg.index].nickname); WordSpace.killLogForTest += ('\n--Suicide->' + RoomData.findPlayer(msg.id).nickname);
} }
}); });
socket.on('gameEnd', function(msg) // object player socket.on('gameEnd', function(msg) // object player
...@@ -194,8 +206,8 @@ socket.on('gameEnd', function(msg) // object player ...@@ -194,8 +206,8 @@ socket.on('gameEnd', function(msg) // object player
socket.on('attackSucceed', function(msg) socket.on('attackSucceed', function(msg)
{ {
//console.log('client'); //console.log('client');
let tempWord = WordSpace.generateWord.Name(ScenesData.gameScene, true, msg.victim); let tempWord = WordSpace.generateWord.Name(ScenesData.gameScene, true, RoomData.findPlayer(msg.victimId));
let victimPos = RoomData.findPlayer(msg.victim).position; let victimPos = RoomData.findPlayer(msg.victimId).position;
tempWord.physicsObj.setPosition(victimPos.x, victimPos.y); tempWord.physicsObj.setPosition(victimPos.x, victimPos.y);
tempWord.wordObj.setPosition(tempWord.physicsObj.x, tempWord.physicsObj.y); tempWord.wordObj.setPosition(tempWord.physicsObj.x, tempWord.physicsObj.y);
tempWord.destroy(); tempWord.destroy();
......
var Enums = Enums || {}; var Enums = Enums || {};
Enums.characterAnim = { write: 0, attackWrite: 1, throw: 2, hit: 3 } Enums.characterAnim = { sit: 0, write: 1, notBurning: 2, smallBurning: 3, bigBurning: 4, throw: 5, hit: 6, gameOver: 7 }
Enums.item = {invincible: "무적", nameList: "명단", charge: "충전", clean: "청소", heavy: "중량", dark: "암흑"} Enums.item = {invincible: "무적", nameList: "명단", charge: "충전", clean: "청소", heavy: "중량", dark: "암흑"}
\ No newline at end of file
...@@ -50,10 +50,29 @@ FirebaseClient.prototype.onAuthChange = function(user) ...@@ -50,10 +50,29 @@ FirebaseClient.prototype.onAuthChange = function(user)
FirebaseClient.prototype.setLogin = function() FirebaseClient.prototype.setLogin = function()
{ {
this.database = firebase.database(); this.database = firebase.database();
this.database.goOnline(); this.database.goOnline();
document.getElementById('mainTitle').style.display = 'none';
document.getElementById('titleImg').style.display = 'none'; var userDataRef = this.database.ref('/user-data/' + this.auth.currentUser.uid);
game = new Phaser.Game(config); userDataRef.once('value').then(function(snapshot)
{
if (snapshot.exists())
{
PlayerData.userData = snapshot.val();
}
else
{
let newUserData = new UserData();
PlayerData.userData = newUserData;
userDataRef.set(newUserData);
}
})
.then(function()
{
game = new Phaser.Game(config);
});
document.getElementById('mainTitle').style.display = 'none';
document.getElementById('titleImg').style.display = 'none';
} }
FirebaseClient.prototype.setLogOut = function() FirebaseClient.prototype.setLogOut = function()
...@@ -94,7 +113,7 @@ FirebaseClient.prototype.onEmailBtnClick = function() ...@@ -94,7 +113,7 @@ FirebaseClient.prototype.onEmailBtnClick = function()
} }
}); });
} }
this.auth.setPersistence(firebase.auth.Auth.Persistence.NONE) this.auth.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(cbSignInEmail.bind(this)); .then(cbSignInEmail.bind(this));
} }
} }
...@@ -146,7 +165,7 @@ FirebaseClient.prototype.createEmailUser = function() ...@@ -146,7 +165,7 @@ FirebaseClient.prototype.createEmailUser = function()
} }
}); });
} }
this.auth.setPersistence(firebase.auth.Auth.Persistence.NONE) this.auth.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(cbAfterPersistence.bind(this)) .then(cbAfterPersistence.bind(this))
.catch(function(error) { .catch(function(error) {
console.error('인증 상태 설정 중 에러 발생' , error); console.error('인증 상태 설정 중 에러 발생' , error);
...@@ -157,7 +176,7 @@ FirebaseClient.prototype.createEmailUser = function() ...@@ -157,7 +176,7 @@ FirebaseClient.prototype.createEmailUser = function()
FirebaseClient.prototype.onGoogleBtnClick = function() FirebaseClient.prototype.onGoogleBtnClick = function()
{ {
var googleProvider = new firebase.auth.GoogleAuthProvider(); var googleProvider = new firebase.auth.GoogleAuthProvider();
this.auth.setPersistence(firebase.auth.Auth.Persistence.NONE) this.auth.setPersistence(firebase.auth.Auth.Persistence.SESSION)
.then(this.signInWithPopup.bind(this, googleProvider)) .then(this.signInWithPopup.bind(this, googleProvider))
.catch(function(error) .catch(function(error)
{ {
...@@ -177,8 +196,64 @@ FirebaseClient.prototype.signInWithPopup = function(provider) ...@@ -177,8 +196,64 @@ FirebaseClient.prototype.signInWithPopup = function(provider)
}); });
} }
FirebaseClient.prototype.updateUserData = function(key, valueChanged, replace = false)
{
var beforeData = PlayerData.userData;
switch(key)
{
case 'exp':
beforeData.exp = replace ? (valueChanged) : (beforeData.exp + valueChanged);
break;
case 'rank':
beforeData.rank = replace ? (valueChanged) : (beforeData.rank + valueChanged);
break;
case 'hopae':
if (beforeData.hopae != null) beforeData.hopae.push(valueChanged);
else beforeData.hopae = [valueChanged];
break;
case 'recentHopae':
beforeData.recentHopae = valueChanged;
break;
case 'title':
if (beforeData.title != null) beforeData.title.push(valueChanged);
else beforeData.title = [valueChanged];
break;
case 'money':
beforeData.money = replace ? (valueChanged) : (beforeData.money + valueChanged);;
break;
case 'item':
if (beforeData.item != null) beforeData.item.push(valueChanged);
else beforeData.item = [valueChanged];
break;
default:
console.log('[ERROR] database has no key for ' + key);
break;
}
PlayerData.userData = beforeData;
console.log(beforeData);
return this.database.ref('/user-data/' + this.auth.currentUser.uid).update(beforeData);
}
document.addEventListener('DOMContentLoaded', function() document.addEventListener('DOMContentLoaded', function()
{ {
window.fbClient = new FirebaseClient(); window.fbClient = new FirebaseClient();
console.log('done load'); console.log('done load');
}); });
\ No newline at end of file
class UserData
{
constructor()
{
this.userName = prompt("유저의 이름을 입력해주세요.");
this.exp = 0;
this.rank = -1;
this.hopae =
[
{name: prompt("첫번째 호패의 닉네임을 입력해주세요.\n(반드시 한글만 사용해주세요 띄어쓰기도 금지)"), type: 'wood'}
];
this.recentHopae = null;
this.title = [];
this.money = 0;
this.item = [];
}
}
\ No newline at end of file
...@@ -34,7 +34,6 @@ Input.menuSceneEnterReaction = function() ...@@ -34,7 +34,6 @@ Input.menuSceneEnterReaction = function()
Input.finalInput = Input.removeConVow(Input.finalInput); Input.finalInput = Input.removeConVow(Input.finalInput);
if (Input.finalInput.length > 1) if (Input.finalInput.length > 1)
{ {
socket.emit('setNickname', Input.finalInput);
PlayerData.nickname = Input.finalInput; PlayerData.nickname = Input.finalInput;
Input.reset(); Input.reset();
} }
...@@ -319,12 +318,17 @@ Input.removeConVow = function(_wordText) ...@@ -319,12 +318,17 @@ Input.removeConVow = function(_wordText)
Input.inputField = Input.inputField =
{ {
generate: function(scene, enterCallback) generate: function(scene, enterCallback, text, isHopaeScene = false)
{ {
this.background = scene.add.sprite(game.config.width / 2, game.config.height * 25 / 36, 'inputfield').setDepth(10); this.text = text;
this.text = scene.add.text(game.config.width / 2, game.config.height * 25 / 36, "", {font: '25pt 궁서'}).setOrigin(0.5, 0.5).setColor('#000000').setDepth(10);
scene.input.keyboard.on('keyup', function() {Input.pressCount--; Input.justPressed = ''}) scene.input.keyboard.on('keyup', function() {Input.pressCount--; Input.justPressed = '';
if(isHopaeScene)
{
ScenesData.hopaeScene.checkBtn.setEnable(Input.checkProperInput(Input.inputField.text.text) ? true : false);
if(Input.finalInput.length > 4) ScenesData.hopaeScene.warningText.setVisible(true);
else ScenesData.hopaeScene.warningText.setVisible(false);
}})
scene.input.keyboard.on('keydown-SHIFT', function() {Input.isShifted = true}); scene.input.keyboard.on('keydown-SHIFT', function() {Input.isShifted = true});
scene.input.keyboard.on('keyup-SHIFT', function() {Input.isShifted = false}); scene.input.keyboard.on('keyup-SHIFT', function() {Input.isShifted = false});
scene.input.keyboard.on('keydown-DELETE', function() {Input.reset()}); scene.input.keyboard.on('keydown-DELETE', function() {Input.reset()});
...@@ -375,10 +379,6 @@ Input.inputField = ...@@ -375,10 +379,6 @@ Input.inputField =
scene.input.keyboard.on('keydown-B', function() {Input.pushInput('')}); scene.input.keyboard.on('keydown-B', function() {Input.pushInput('')});
scene.input.keyboard.on('keydown-N', function() {Input.pushInput('')}); scene.input.keyboard.on('keydown-N', function() {Input.pushInput('')});
scene.input.keyboard.on('keydown-M', function() {Input.pushInput('')}); scene.input.keyboard.on('keydown-M', function() {Input.pushInput('')});
},
loadImage: function(scene)
{
scene.load.image('inputfield', 'assets/placeholder/inputfield.png');
} }
} }
......
var ResourceLoader = ResourceLoader || {};
ResourceLoader.loadBackGround = function(scene)
{
scene.load.image('brain', 'assets/image/background/brain.png');
scene.load.image('baseBackground', 'assets/image/background/yellowBack.png');
scene.load.image('gameBackground', 'assets/image/background/background_brain.png');
scene.load.image('menuBackground', 'assets/placeholder/menuBackground.png');
scene.load.image('roomBackground', 'assets/placeholder/roomBackground.png');
}
ResourceLoader.loadImage = function(scene)
{
scene.load.image('inputfield', 'assets/image/etc/wordspace.png');
for (let i = 0; i < 4; i++)
{
for (let j = 2; j < 7; j++)
{
scene.load.image(('wordBgr' + i + '_' + j), ('assets/placeholder/'+i + '_' + j + '.png'));
}
}
for (let i = 0; i < 4; i++)
{
scene.load.image('attackAlert' + i, 'assets/placeholder/attackalert' + (i+1) + '.png');
}
for (let i = 0; i < 6; i++)
{
scene.load.image('item' + i, 'assets/placeholder/item' + i + '.png');
}
for (let i = 2; i < 7; i++)
{
scene.load.image('nameBgr' + i, 'assets/placeholder/name' + i + '.png');
scene.load.image('strongBgr' + i, 'assets/placeholder/strong' + i + '.png');
}
scene.load.spritesheet('wordBreak', 'assets/image/word/wordbreak.png', { frameWidth: 180, frameHeight: 180 });
scene.load.spritesheet('pyeongminSit', 'assets/image/character/pyeongmin/pyeong_sit.png', { frameWidth: 521, frameHeight: 610 });
scene.load.spritesheet('pyeongminWrite', 'assets/image/character/pyeongmin/write/pyeong_write.png', { frameWidth: 521, frameHeight: 610 });
scene.load.spritesheet('pyeongminThrow', 'assets/image/character/pyeongmin/throw/pyeong_throw.png', { frameWidth: 521, frameHeight: 610 });
scene.load.spritesheet('pyeongminBurningSmall', 'assets/image/character/pyeongmin/burning/pyeong_burning_small.png', { frameWidth: 521, frameHeight: 610 });
scene.load.spritesheet('pyeongminBurningBig', 'assets/image/character/pyeongmin/burning/pyeong_burning_big.png', { frameWidth: 521, frameHeight: 610 });
scene.load.spritesheet('pyeongminGameOver', 'assets/image/character/pyeongmin/balladang/pyeong_balladang.png', { frameWidth: 720, frameHeight: 700 });
scene.load.image('pyeongminStand', 'assets/image/character/pyeongmin/pyeong_stand.png');
scene.load.image('phaseChangeBgr', 'assets/placeholder/phaseChange.png');
scene.load.image('attackPaper', 'assets/image/etc/paper_crumbled.png');
scene.load.image('panel', 'assets/placeholder/panel.png');
scene.load.image('button', 'assets/placeholder/button.png');
}
ResourceLoader.loadAnimation = function(scene)
{
scene.anims.create({
key: 'wordBreakAnim',
frames: scene.anims.generateFrameNumbers('wordBreak'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.sit] = scene.anims.create({
key: 'pyeongminSitAnim',
frames: scene.anims.generateFrameNumbers('pyeongminSit'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.write] = scene.anims.create({
key: 'pyeongminWriteAnim',
frames: scene.anims.generateFrameNumbers('pyeongminWrite'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.notBurning] = scene.anims.create({
key: 'pyeongminnotBurningAnim',
frames: scene.anims.generateFrameNumbers('pyeongminWrite'),
frameRate: 10,
repeat: -1,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.smallBurning] = scene.anims.create({
key: 'pyeongminsmallBurningAnim',
frames: scene.anims.generateFrameNumbers('pyeongminBurningSmall'),
frameRate: 10,
repeat: -1,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.bigBurning] = scene.anims.create({
key: 'pyeongminbigBurningAnim',
frames: scene.anims.generateFrameNumbers('pyeongminBurningBig'),
frameRate: 10,
repeat: -1,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.throw] = scene.anims.create({
key: 'pyeongminThrowAnim',
frames: scene.anims.generateFrameNumbers('pyeongminThrow'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.gameOver] = scene.anims.create({
key: 'pyeongminGameOverAnim',
frames: scene.anims.generateFrameNumbers('pyeongminGameOver'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
}
\ No newline at end of file
This diff is collapsed.
var UIObject = UIObject || {};
UIObject.createLabel = function (scene, x, y, depth, image, size, align, text = '', textSize = 24, textColor = '#000000', textOriginX = 0.5, textOriginY = 0.5) {
var temp = scene.rexUI.add.label({
/*width: width,
height: height,*/
x: x,
y: y,
background: scene.add.sprite(x, y, image).setScale(size).setOrigin(0.5, 0.5).setDepth(depth),
text: scene.add.text(x, y, text, {
font: textSize + 'pt 궁서'
}).setDepth(depth).setOrigin(textOriginX, textOriginY).setColor(textColor),
space: {
left: 10,
right: 10,
top: 10,
bottom: 10
}
});
switch(align)
{
case 'left':
temp.x += temp.getElement('background').width / 2;
break;
case 'right':
temp.x -= temp.getElement('background').width / 2;
break;
case 'center':
break;
default:
break;
}
return temp;
}
UIObject.createButton = function(scene, buttonGameObject, overFrame, outFrame, downFrame, clickCallback) {
var temp = scene.rexUI.add.buttons({
x: 0,
y: 0,
width: undefined,
height: undefined,
orientation: 0,
buttons: [
buttonGameObject,
],
click: {
mode: 'pointerdown',
clickInterval: 100
}
});
buttonGameObject = buttonGameObject.getElement('background');
temp.enabled = true;
buttonGameObject.setFrame(outFrame).setInteractive()
.on('pointerover', () => {
if(temp.enabled)
{
buttonGameObject.setFrame(overFrame);
}
})
.on('pointerdown', () => {
if(temp.enabled)
{
buttonGameObject.setFrame(downFrame);
clickCallback();
}
})
.on('pointerup', () => {
buttonGameObject.setFrame(overFrame);
})
.on('pointerout', () => {
buttonGameObject.setFrame(outFrame);
})
temp.setEnable = function(isEnable)
{
temp.enabled = isEnable;
return temp;
}
return temp;
}
\ No newline at end of file
...@@ -59,6 +59,7 @@ class WordObject ...@@ -59,6 +59,7 @@ class WordObject
breakAnim.destroy(); breakAnim.destroy();
}, 200); }, 200);
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.write]); RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.write]);
RoomData.myself.playerImage.anims.chain(WordSpace.pyeongminAnims[Enums.characterAnim.sit]);
} }
attract() attract()
...@@ -206,8 +207,8 @@ class AttackWord extends WordObject ...@@ -206,8 +207,8 @@ class AttackWord extends WordObject
let attackData = let attackData =
{ {
roomNum: RoomData.roomId, roomNum: RoomData.roomId,
attacker: RoomData.myself, attackerId: RoomData.myself.id,
target: this.attacker.id, victimId: this.attacker.id,
text: this.wordText, text: this.wordText,
grade: Math.min(3, this.wordGrade + 1), grade: Math.min(3, this.wordGrade + 1),
attackOption: { attackOption: {
...@@ -390,7 +391,7 @@ class ItemWord extends WordObject ...@@ -390,7 +391,7 @@ class ItemWord extends WordObject
tempWords = Phaser.Utils.Array.Shuffle(tempWords); tempWords = Phaser.Utils.Array.Shuffle(tempWords);
let tempLenth = tempWords.length * 0.3; let tempLenth = tempWords.length * 0.3;
for(let i = 0; i < tempLenth; i++) for(let i = 0; i < tempLenth; i++)
if(WordSpace.wordGroup[tempWords[i]] != null) WordSpace.wordGroup[tempWords[i]].destroy(); if(WordSpace.wordGroup[tempWords[i]] != null) WordSpace.wordGroup[tempWords[i]].destroy(false);
break; break;
case Enums.item.heavy: case Enums.item.heavy:
Input.attackOption.isHeavy = true; Input.attackOption.isHeavy = true;
......
...@@ -168,69 +168,6 @@ WordSpace.genWordByProb = function(scene) ...@@ -168,69 +168,6 @@ WordSpace.genWordByProb = function(scene)
//WordSpace.generateWord(scene, SelectWord.selectWord(wordIdx)); //WordSpace.generateWord(scene, SelectWord.selectWord(wordIdx));
} }
WordSpace.loadImage = function(scene)
{
for (let i = 0; i < 4; i++)
{
for (let j = 2; j < 7; j++)
{
scene.load.image(('wordBgr' + i + '_' + j), ('assets/placeholder/'+i + '_' + j + '.png'));
}
}
for (let i = 0; i < 4; i++)
{
scene.load.image('attackAlert' + i, 'assets/placeholder/attackalert' + (i+1) + '.png');
}
for (let i = 0; i < 6; i++)
{
scene.load.image('item' + i, 'assets/placeholder/item' + i + '.png');
}
for (let i = 2; i < 7; i++)
{
scene.load.image('nameBgr' + i, 'assets/placeholder/name' + i + '.png');
scene.load.image('strongBgr' + i, 'assets/placeholder/strong' + i + '.png');
}
scene.load.spritesheet('wordBreak', 'assets/image/word/wordbreak.png', { frameWidth: 180, frameHeight: 180 });
scene.load.spritesheet('pyeongminWrite', 'assets/image/character/pyeongmin/write/pyeong_write.png', { frameWidth: 490, frameHeight: 423 });
scene.load.spritesheet('pyeongminThrow', 'assets/image/character/pyeongmin/throw/pyeong_throw.png', { frameWidth: 490, frameHeight: 423 });
scene.load.image('attackPapaer', 'assets/image/etc/paper_crumbled.png');
WordSpace.weightTextObjForTest = scene.add.text(game.config.width * 5 / 64, game.config.height * 5 / 48, '뇌의 무게: (현재) 0 / ' + this.brainCapacity + ' (전체)').setDepth(10).setColor('#000000');
WordSpace.killLogTextForTest = scene.add.text(game.config.width * 25 / 32, game.config.height * 5 / 72, WordSpace.killLogForTest).setDepth(10).setColor('#000000').setAlign('right');
}
WordSpace.loadAnimation = function(scene)
{
scene.anims.create({
key: 'wordBreakAnim',
frames: scene.anims.generateFrameNumbers('wordBreak'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.write] = scene.anims.create({
key: 'pyeongminWriteAnim',
frames: scene.anims.generateFrameNumbers('pyeongminWrite'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.attackWrite] = scene.anims.create({
key: 'pyeongminattackWriteAnim',
frames: scene.anims.generateFrameNumbers('pyeongminWrite'),
frameRate: 10,
repeat: -1,
hideOnComplete: false
});
WordSpace.pyeongminAnims[Enums.characterAnim.throw] = scene.anims.create({
key: 'pyeongminThrowAnim',
frames: scene.anims.generateFrameNumbers('pyeongminThrow'),
frameRate: 10,
repeat: 0,
hideOnComplete: false
});
}
WordSpace.generateWord = WordSpace.generateWord =
{ {
Normal: function(scene, grade, lenRate) Normal: function(scene, grade, lenRate)
...@@ -249,8 +186,8 @@ WordSpace.generateWord = ...@@ -249,8 +186,8 @@ WordSpace.generateWord =
{ {
if(newPlayerData == null) if(newPlayerData == null)
{ {
if(WordSpace.nameQueue.queue.length == 1) return null;
let temp = WordSpace.nameQueue.pop(); let temp = WordSpace.nameQueue.pop();
if(temp == null) return null;
word = new NameWord(temp, isStrong); word = new NameWord(temp, isStrong);
} }
else word = new NameWord(newPlayerData, isStrong); else word = new NameWord(newPlayerData, isStrong);
...@@ -344,7 +281,24 @@ WordSpace.findWord = function(wordText) ...@@ -344,7 +281,24 @@ WordSpace.findWord = function(wordText)
Input.attackMode = true; Input.attackMode = true;
WordSpace.attackGauge.pauseCycle(true); WordSpace.attackGauge.pauseCycle(true);
WordSpace.setPlayerTyping.add(wordText); WordSpace.setPlayerTyping.add(wordText);
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.attackWrite]); switch(tempAttackOption.wordCount)
{
case 2:
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.notBurning]);
break;
case 3:
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.smallBurning]);
break;
case 4:
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.smallBurning]);
break;
case 5:
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.bigBurning]);
break;
default:
console.log('Improper attack option.');
break;
}
RoomData.myself.playerImage.anims.msPerFrame /= (4 - Input.attackOption.wordGrade); RoomData.myself.playerImage.anims.msPerFrame /= (4 - Input.attackOption.wordGrade);
} }
else // 오타 체크 else // 오타 체크
...@@ -368,8 +322,8 @@ WordSpace.findWord = function(wordText) ...@@ -368,8 +322,8 @@ WordSpace.findWord = function(wordText)
let victimData = let victimData =
{ {
roomNum: RoomData.roomId, roomNum: RoomData.roomId,
victim: RoomData.myself, attackerId: element.attacker.id,
target: element.attacker.id, victimId: RoomData.myself.id,
word: element.wordText word: element.wordText
} }
socket.emit('defenseFailed', victimData); socket.emit('defenseFailed', victimData);
...@@ -410,7 +364,7 @@ WordSpace.attack = function(wordText, grade) ...@@ -410,7 +364,7 @@ WordSpace.attack = function(wordText, grade)
let victimId = element.ownerId; let victimId = element.ownerId;
let sendIdx = toSend.findIndex(function(element) let sendIdx = toSend.findIndex(function(element)
{ {
return element.victim.id === victimId; return element.victimId === victimId;
}); });
if (sendIdx != -1) toSend[sendIdx].multiple++; if (sendIdx != -1) toSend[sendIdx].multiple++;
else else
...@@ -421,8 +375,8 @@ WordSpace.attack = function(wordText, grade) ...@@ -421,8 +375,8 @@ WordSpace.attack = function(wordText, grade)
let attackData = let attackData =
{ {
roomNum: RoomData.roomId, roomNum: RoomData.roomId,
attacker: RoomData.myself, attackerId: RoomData.myself.id,
victim: target, victimId: target.id,
text: wordText, text: wordText,
grade: grade, grade: grade,
attackOption: { attackOption: {
...@@ -450,6 +404,7 @@ WordSpace.attack = function(wordText, grade) ...@@ -450,6 +404,7 @@ WordSpace.attack = function(wordText, grade)
WordSpace.attackGauge.resetValue(); WordSpace.attackGauge.resetValue();
WordSpace.setPlayerTyping.add(wordText); WordSpace.setPlayerTyping.add(wordText);
RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.throw]); RoomData.myself.playerImage.play(WordSpace.pyeongminAnims[Enums.characterAnim.throw]);
RoomData.myself.playerImage.anims.chain(WordSpace.pyeongminAnims[Enums.characterAnim.sit]);
Input.attackOption.isHeavy = false; Input.attackOption.isHeavy = false;
Input.attackOption.isDark = false; Input.attackOption.isDark = false;
} }
...@@ -461,7 +416,7 @@ WordSpace.attack = function(wordText, grade) ...@@ -461,7 +416,7 @@ WordSpace.attack = function(wordText, grade)
WordSpace.makeAttackPaper = function(scene, attackFrom, attackTo, multiple) WordSpace.makeAttackPaper = function(scene, attackFrom, attackTo, multiple)
{ {
var attackPaper = scene.add.sprite(attackFrom.x, attackFrom.y, 'attackPapaer').setScale(0.5 * multiple).setDepth(3); var attackPaper = scene.add.sprite(attackFrom.x, attackFrom.y, 'attackPaper').setScale(0.5 * multiple).setDepth(3);
attackPaper.mask = new Phaser.Display.Masks.BitmapMask(scene, BackGround.gameBackground); attackPaper.mask = new Phaser.Display.Masks.BitmapMask(scene, BackGround.gameBackground);
attackPaper.throwTarget = attackTo; attackPaper.throwTarget = attackTo;
attackPaper.follower = { t: 0, vec: new Phaser.Math.Vector2() }; attackPaper.follower = { t: 0, vec: new Phaser.Math.Vector2() };
...@@ -502,25 +457,30 @@ WordSpace.nameQueue = ...@@ -502,25 +457,30 @@ WordSpace.nameQueue =
Phaser.Utils.Array.Shuffle(tempQueue); Phaser.Utils.Array.Shuffle(tempQueue);
tempQueue.forEach(function(element) tempQueue.forEach(function(element)
{ {
if(RoomData.players[element].id != PlayerData.id && RoomData.players[element].isAlive && WordSpace.nameQueue.getCount(element) < 3) if(RoomData.players[element].id != PlayerData.id && RoomData.players[element].isAlive && WordSpace.nameQueue.getCount(RoomData.players[element]) < 3)
WordSpace.nameQueue.queue.push(element); WordSpace.nameQueue.queue.push(element);
}); });
}, },
pop: function() pop: function()
{ {
if(WordSpace.nameQueue.queue.length <= RoomData.aliveCount - 1) this.shuffle();
if(WordSpace.nameQueue.queue.length == 0) return null;
let tempElement = WordSpace.nameQueue.queue.shift(); let tempElement = WordSpace.nameQueue.queue.shift();
if(WordSpace.nameQueue.queue.length <= RoomData.aliveCount) this.shuffle(); if(!RoomData.players[tempElement].isAlive || WordSpace.nameQueue.getCount(RoomData.players[tempElement]) >= 3) return WordSpace.nameQueue.pop();
if(!RoomData.players[tempElement].isAlive && WordSpace.nameQueue.getCount(tempElement) < 3) return WordSpace.nameQueue.pop();
else return RoomData.players[tempElement]; else return RoomData.players[tempElement];
}, },
getCount: function(player) getCount: function(player)
{ {
let i = 0; WordSpace.nameQueue.counter = 0;
WordSpace.nameGroup.forEach(function(element){ WordSpace.nameGroup.forEach(function(element){
if(element.id == player.id) i++; if(element.id == player.id) WordSpace.nameQueue.counter++;
})
WordSpace.wordGroup.forEach(function(element){
if(element instanceof NameWord && element.ownerId == player.id) WordSpace.nameQueue.counter++;
}) })
return i; return WordSpace.nameQueue.counter;
}, },
counter: 0,
initiate: function() initiate: function()
{ {
this.shuffle(); this.shuffle();
......
...@@ -13,8 +13,8 @@ var config = { ...@@ -13,8 +13,8 @@ var config = {
debug: false debug: false
} }
}, },
backgroundColor: Phaser.Display.Color.HexStringToColor('#F0CB85').color,//GetColor(245,208,138), backgroundColor: Phaser.Display.Color.HexStringToColor('#ffffff').color,//GetColor(245,208,138),
scene: [ menuScene, roomScene, gameScene ] scene: [ menuScene, hopaeScene, roomScene, gameScene ]
}; };
var game = null; var game = null;
...@@ -24,7 +24,8 @@ var game = null; ...@@ -24,7 +24,8 @@ var game = null;
var PlayerData = PlayerData || {}; var PlayerData = PlayerData || {};
PlayerData.id = -1; //플레이어 아이디, 고유 번호 PlayerData.id = -1; //플레이어 아이디, 고유 번호
PlayerData.nickname = '홍길동'; //플레이어 닉네임 PlayerData.nickname = ''; //플레이어 닉네임
PlayerData.userData = null;
// 현재 들어가있는 Game Room의 정보 // 현재 들어가있는 Game Room의 정보
var RoomData = RoomData || {}; var RoomData = RoomData || {};
...@@ -33,7 +34,7 @@ RoomData.roomId = -1; ...@@ -33,7 +34,7 @@ RoomData.roomId = -1;
RoomData.myself = null; RoomData.myself = null;
RoomData.players = null; RoomData.players = null;
RoomData.aliveCount = -1; RoomData.aliveCount = -1;
RoomData.findPlayer = function(player) RoomData.findPlayer = function(playerId)
{ {
return RoomData.players.find(function(element){ return element.id == player.id; }); return RoomData.players.find(function(element){ return element.id == playerId; });
} }
\ No newline at end of file
This diff is collapsed.
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"express": "^4.17.1", "express": "^4.17.1",
"jshint": "^2.10.2",
"socket.io": "^2.2.0", "socket.io": "^2.2.0",
"web-audio-player": "^1.3.3" "web-audio-player": "^1.3.3"
} }
......
...@@ -38,19 +38,23 @@ io.on('connection', function(socket) ...@@ -38,19 +38,23 @@ io.on('connection', function(socket)
}); });
}); });
socket.on('setNickname', function(msg) // string new_nickname socket.on('enterRoom', function(msg) // string new_nickname
{ {
let isAlreadyHave = false; if(msg.length < 1) socket.emit('alert' ,'errNicknameEmpty');
GameServer.currentPlayer.forEach(function(element)
{
if (element.playerData.nickname === msg) isAlreadyHave = true;
});
if (isAlreadyHave) socket.emit('alert' ,'errNicknameOverlaped');
else else
{ {
socket.playerData.nickname = msg; let isAlreadyHave = false;
console.log('['+socket.playerData.id+'] nickname set to ' + msg); GameServer.currentPlayer.forEach(function(element)
GameServer.enterEmptyRoom(socket); {
if (element.playerData.nickname === msg) isAlreadyHave = true;
});
if (isAlreadyHave) socket.emit('alert' ,'errNicknameOverlaped');
else
{
socket.playerData.nickname = msg;
console.log('['+socket.playerData.id+'] nickname set to ' + msg);
GameServer.enterEmptyRoom(socket);
}
} }
}); });
...@@ -94,18 +98,17 @@ io.on('connection', function(socket) ...@@ -94,18 +98,17 @@ io.on('connection', function(socket)
socket.on('attack', function(msg) socket.on('attack', function(msg)
{ {
socket.playerData.currentRoom.announceToTarget(msg.victim.id, 'attacked', msg); socket.playerData.currentRoom.announceToTarget(msg.victimId, 'attacked', msg);
socket.playerData.currentRoom.announceToRoom('someoneAttacked', {attacker: msg.attacker, victim: msg.victim, multiple: msg.multiple}); socket.playerData.currentRoom.announceToRoom('someoneAttacked', {attackerId: msg.attackerId, victimId: msg.victimId, multiple: msg.multiple});
//console.log('attack ' + msg.target + ' by ' + msg.attacker.id + ' with ' + msg.text); //console.log('attack ' + msg.victimId + ' by ' + msg.attackerId + ' with ' + msg.text);
setTimeout(function() setTimeout(function()
{ {
let target = GameServer.findPlayerSocket(msg.victim.id); let target = GameServer.findPlayerSocket(msg.victimId);
if (target != null) if (target != null)
{ {
let dataToPush = let dataToPush =
{ {
attackerId: msg.attacker.id, attackerId: msg.attackerId,
attacker: msg.attacker.nickname,
wrongCount: 0, wrongCount: 0,
word: msg.text, word: msg.text,
wordGrade: msg.grade, wordGrade: msg.grade,
...@@ -128,10 +131,10 @@ io.on('connection', function(socket) ...@@ -128,10 +131,10 @@ io.on('connection', function(socket)
socket.on('defenseFailed', function(msg) socket.on('defenseFailed', function(msg)
{ {
socket.playerData.currentRoom.announceToTarget(msg.target, 'attackSucceed', msg); socket.playerData.currentRoom.announceToTarget(msg.attackerId, 'attackSucceed', msg);
let wrongCountIndex = socket.playerData.playingData.lastAttacks.findIndex(function(element) let wrongCountIndex = socket.playerData.playingData.lastAttacks.findIndex(function(element)
{ {
return (element.word === msg.word) && (element.attackerId === msg.target); return (element.word === msg.word) && (element.attackerId === msg.victimId);
}); });
if (wrongCountIndex !== -1) socket.playerData.playingData.lastAttacks[wrongCountIndex].wrongCount++; if (wrongCountIndex !== -1) socket.playerData.playingData.lastAttacks[wrongCountIndex].wrongCount++;
}); });
...@@ -139,7 +142,7 @@ io.on('connection', function(socket) ...@@ -139,7 +142,7 @@ io.on('connection', function(socket)
socket.on('disconnect', function(reason) socket.on('disconnect', function(reason)
{ {
let data = socket.playerData; let data = socket.playerData;
if (typeof data.id === undefined) if (data === undefined)
{ {
console.log('[ERROR] data.id is undefined'); console.log('[ERROR] data.id is undefined');
console.log(GameServer.currentPlayer); console.log(GameServer.currentPlayer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment