diff --git a/src/main/resources/static/javascript/game.js b/src/main/resources/static/javascript/game.js index aa43c0d..7f80b23 100644 --- a/src/main/resources/static/javascript/game.js +++ b/src/main/resources/static/javascript/game.js @@ -77,6 +77,24 @@ function sendMessage(message, type) { })); } +function jsonParseFixer(data) { + if( (typeof data) == "object" ) { + if(data.length != undefined && data.length == 2 && typeof (data[0]) == "string" && data[0].startsWith("com.alterdekim.")) { // array + data = jsonParseFixer(data[1]); + } else if(data.length != undefined) { + for(let i = 0; i < data.length; i++) { + data[i] = jsonParseFixer(data[i]); + } + } else { // object + let k = Object.keys(data); + for( let i = 0; i < k.length; i++ ) { + data[k] = jsonParseFixer(data[k]); + } + } + } + return data; +} + $(document).ready(function() { let chips = []; $(".chip").each(function() { @@ -94,7 +112,7 @@ $(document).ready(function() { socket.onmessage = function(e) { //console.log('message', e.data); - showMessage(JSON.parse(e.data)[1]); + showMessage(jsonParseFixer(JSON.parse(e.data))); }; socket.onclose = function() { @@ -108,25 +126,25 @@ function showMessage(message) { console.log(message.body); switch(message.type) { case 'PlayersList': - parsePlayersList(JSON.parse(message.body)[1]); + parsePlayersList(JSON.parse(message.body)); break; case 'BoardGUI': - parseBoardGUI(JSON.parse(message.body)[1]); + parseBoardGUI(JSON.parse(message.body)); break; case 'ChangeBoardTileState': - changeBoardState(JSON.parse(message.body)[1]); + changeBoardState(JSON.parse(message.body)); break; case 'AssignChip': - assignChip(JSON.parse(message.body)[1]); + assignChip(JSON.parse(message.body)); break; case 'ChipMove': - chipMove(JSON.parse(message.body)[1]); + chipMove(JSON.parse(message.body)); break; case 'PlayerColor': - playerColor(JSON.parse(message.body)[1]); + playerColor(JSON.parse(message.body)); break; case 'ShowDialog': - showDialog(JSON.parse(message.body)[1]); + showDialog(JSON.parse(message.body)); break; } } @@ -294,35 +312,35 @@ function changeBoardState(body) { function parseBoardGUI(body) { let t_html = ''; for( let i = 0; i < body.top.length; i++ ) { - let board_tile = body.top[i][1]; + let board_tile = body.top[i]; t_html += '