(function($) {
$(document).ready(function() {
var scJoueurId = scInput_JoueurId;
var lastData;
var dejaJoue = false;
function refreshScreen(data) {
if(data['statut'] == 0) {
window.location.href = 'index.php?j=' + scJoueurId;
}
for(var j in data['joueur']) {
/*
* AFFICHAGE DES TEMPLES
*/
for(var t = 0 ; t < data['joueur'][j]['temple'].length ; t++) {
if( ( !lastData || data['joueur'][j]['temple'][t] != lastData['joueur'][j]['temple'][t] ) && data['joueur'][j]['temple'][t] > 0 ) {
// Supprime l'ancien Temple
$('#AffTemple_User' + j + '_Temple' + (t + 1)).remove();
// Affiche le Temple a la nouvelle position
mInfo = data['joueur'][j]['temple'][t];
$('#PlateauCase_User' + j + '_Temple' + mInfo).append('
');
}
}
/*
* AFFICHAGE DES TUILES
*/
for(var t = 0 ; t < data['joueur'][j]['plateau'].length ; t++) {
if( ( !lastData || data['joueur'][j]['plateau'][t] != lastData['joueur'][j]['plateau'][t] ) && data['joueur'][j]['plateau'][t] != "" ) {
var caseInfo = decomposerTuile( data['joueur'][j]['plateau'][t] );
$('#PlateauCase_User' + j + '_Case' + (t + 1)).html('
');
if(caseInfo[1] != "")
$('#PlateauCase_User' + j + '_Case' + (t + 1)).append('
');
}
}
/*
* AFFICHAGE DES MEEPLES
*/
for(var m = 0 ; m < data['joueur'][j]['meeple'].length ; m++) {
if( ( !lastData || data['joueur'][j]['meeple'][m] != lastData['joueur'][j]['meeple'][m] ) && data['joueur'][j]['meeple'][m] > 0 ) {
// Supprime l'ancien Meeple
$('#AffMeeple_User' + j + '_Meeple' + (m + 1)).remove();
// Affiche le Meeple a la nouvelle position
mInfo = data['joueur'][j]['meeple'][m];
if(mInfo >= 200)
$('#PlateauCase_User' + j + '_Temple' + (mInfo - 200)).append('
');
else if(mInfo >= 100)
$('#PlateauCase_User' + j + '_Meeple' + (mInfo - 100)).append('
');
else
$('#PlateauCase_User' + j + '_Case' + mInfo).append('
');
}
}
/*
* AFFICHAGE DES INFOS
*/
var total = 0;
for(var i = 0 ; i < data['joueur'][j]['tresor'].length ; i++) {
$('#Plateau_User' + j + '_Temple' + (i + 1) + 'Nbr').html( data['joueur'][j]['tresor'][i] );
total += parseInt( data['joueur'][j]['tresor'][i] );
}
$('#Plateau_User' + j + '_OrNbr').html( data['joueur'][j]['or'] );
total += parseInt( data['joueur'][j]['or'] * 2 );
$('#Plateau_User' + j + '_DiamantNbr').html( data['joueur'][j]['diamant'] );
total += parseInt( data['joueur'][j]['diamant'] );
$('#Plateau_User' + j + '_TotalNbr').html( total );
if(j != scJoueurId) {
if( !lastData || data['joueur'][j]['dernier_coup'] != lastData['joueur'][j]['dernier_coup'] ) {
if(data['joueur'][j]['dernier_coup'].length > 0)
$('#Plateau_User' + j + '_Joue').html('
');
else
$('#Plateau_User' + j + '_Joue').empty;
}
}
} // FIN BOUCLE : REFRESH DES ECRANS DE CHAQUE JOUEUR
// ETAPES INITIALES DE POSITIONNEMENT DES MEEPLES & TEMPLES
if(data['statut'] > 0 && data['statut'] < 9 && (!lastData || data['statut'] != lastData['statut']) ) {
if(data['statut'] % 2 == 0) {
$('#zoneInfosTuile_tuile').html('
');
for(var i = 1 ; i <= 11 ; i++) {
$('#PlateauCase_User' + scJoueurId + '_Temple' + i).addClass('clickable');
$('#PlateauCase_User' + scJoueurId + '_Meeple' + i).removeClass('clickable');
}
}
else {
$('#zoneInfosTuile_tuile').html('
');
for(var i = 1 ; i <= 11 ; i++) {
$('#PlateauCase_User' + scJoueurId + '_Meeple' + i).addClass('clickable');
$('#PlateauCase_User' + scJoueurId + '_Temple' + i).removeClass('clickable');
}
}
}
// PENDANT LA PARTIE
else if(data['statut'] == 9) {
for(var i = 1 ; i <= 11 ; i++) {
$('#PlateauCase_User' + scJoueurId + '_Temple' + i).removeClass('clickable');
$('#PlateauCase_User' + scJoueurId + '_Meeple' + i).removeClass('clickable');
}
for(var i = 1 ; i <= 30 ; i++)
$('#PlateauCase_User' + scJoueurId + '_Case' + i).addClass('clickable');
for(var i = 1 ; i <= 4 ; i++) {
$('#AffMeeple_User' + scJoueurId + '_Meeple' + i).addClass('clickable');
$('#AffTemple_User' + scJoueurId + '_Temple' + i).addClass('clickable');
}
// AFFICHAGE DES INFOS
if(!dejaJoue && data['joueur'][scJoueurId]['dernier_coup'].length > 0) {
$('#zoneInfosTuile_tuile').html('
');
dejaJoue = true;
}
if( ( !lastData || lastData['statut'] < 9 || dejaJoue ) && data['joueur'][scJoueurId]['dernier_coup'].length == 0 ) {
dejaJoue = false;
var pioche = decomposerTuile( data['pioche'] );
$('#zoneInfosTuile_tuile').html('
');
if(pioche[1] != "")
$('#zoneInfosTuile_tuile').append('
');
}
$('#zoneInfosReste').html( 'Reste : ' + data['nbpioche'] );
for(var t = 0 ; t < 4 ; t++)
$('#zoneInfosTemple' + (t + 1)).html( data['tresor'][t] );
}
// FIN DE PARTIE : statut > 10
else if(data['statut'] >= 10) {
$('#finPartie').fadeIn();
}
lastData = data;
}
function refresh() {
$.get('jeu.php?j=' + scJoueurId)
.done(function(data, text, jqxhr) {
try {
var JsonResponse = JSON.parse(jqxhr.responseText);
refreshScreen( JsonResponse );
}
catch(error) {
// alert(jqxhr.responseText);
console.log("TRY JSON PARSE : --- " + jqxhr.responseText + " --- " + error);
}
})
.fail(function(jqxhr){
console.log("BACKEND REFRESH : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
refreshTimer = setTimeout(refresh, 1000);
});
}
refresh();
var refreshTimer;
/*
* CLICKS
*/
var meepleSelected = 0;
$('.zone-moi-plateau table tr td').on('click', function(e) {
if(dejaJoue) return;
if(lastData['statut'] > 9) return;
var ReadID = $(this).attr('id');
if(!ReadID) return;
ReadID = ReadID.substring('PlateauCase_User'.length);
var UserID = ReadID.substring(0, ReadID.indexOf('_'));
var InfoType = ReadID.substring(ReadID.indexOf('_') + 1);
var InfoID = 0;
if(InfoType.substring(0, 'Case'.length) == 'Case') { InfoID = InfoType.substring('Case'.length); InfoType = 'c'; }
else if(InfoType.substring(0, 'Temple'.length) == 'Temple') { InfoID = InfoType.substring('Temple'.length); InfoType = 't'; }
else if(InfoType.substring(0, 'Meeple'.length) == 'Meeple') { InfoID = InfoType.substring('Meeple'.length); InfoType = 'm'; }
/*
* DEBUT DE PARTIE : CHOIX DES POSITIONS DES TEMPLES ET MEEPLES
*/
if(lastData['statut'] > 0 && lastData['statut'] < 9) {
if(lastData['statut'] % 2 == 0) {
if(InfoType == 't') {
$.get('jeu.php?j=' + scJoueurId + '&temple=' + InfoID)
.done(function(data, text, jqxhr) {
})
.fail(function(jqxhr){
// alert(jqxhr.responseText);
console.log("BACKEND TEMPLE : " + jqxhr.responseText);
})
.always(function(){
});
}
}
else {
if(InfoType == 'm') {
$.get('jeu.php?j=' + scJoueurId + '&meeple=' + InfoID)
.done(function(data, text, jqxhr) {
})
.fail(function(jqxhr){
console.log("BACKEND MEEPLE : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
});
}
}
}
/*
* PENDANT LA PARTIE : JOUER UN COUP
*/
else if(lastData['statut'] == 9) {
meepleSelectId = caseHasMeeple(InfoType, InfoID);
// => CASE VIDE : DEPOSER LA TUILER
if(InfoType == 'c' && lastData['joueur'][scJoueurId]['plateau'][InfoID - 1].length == 0 && !meepleSelectId) {
if(meepleSelected > 0) $('#SelectionMeeple' + meepleSelected).remove();
meepleSelected = 0;
$.get('jeu.php?j=' + scJoueurId + '&dc=c' + InfoID)
.done(function(data, text, jqxhr) {
var piocheAff = decomposerTuile( lastData['pioche'] );
$('#zoneInfosTuile_tuile').html('
');
$('#PlateauCase_User' + scJoueurId + '_Case' + InfoID).append('
');
if(piocheAff[1] != "")
$('#PlateauCase_User' + scJoueurId + '_Case' + InfoID).append('
');
dejaJoue = true;
})
.fail(function(jqxhr){
console.log("BACKEND DC=C : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
});
}
// => CASE AVEC MEEPLE : LE SELECTIONNER
else if(meepleSelectId) {
if(meepleSelected > 0) $('#SelectionMeeple' + meepleSelected).remove();
$('#AffMeeple_User' + scJoueurId + '_Meeple' + meepleSelectId).parent().append('
');
meepleSelected = meepleSelectId;
}
// => MEEPLE SELECTED vers CASE VIDE OU TEMPLE : BOUGER LE MEEPLE
else if(meepleSelected) {
if(InfoType == 'c' && lastData['joueur'][scJoueurId]['plateau'][InfoID - 1].length > 0) {
if(meepleSelected > 0) $('#SelectionMeeple' + meepleSelected).remove();
tempMeepleSelected = meepleSelected;
meepleSelected = 0;
$.get('jeu.php?j=' + scJoueurId + '&dc=m' + tempMeepleSelected + 'c' + InfoID)
.done(function(data, text, jqxhr) {
$('#zoneInfosTuile_tuile').html('
');
$('#PlateauCase_User' + scJoueurId + '_Case' + InfoID).append('
');
dejaJoue = true;
})
.fail(function(jqxhr){
console.log("BACKEND DC=C : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
});
}
else if(InfoType == 't') {
templeSelectId = caseHasTemple(InfoID);
if(templeSelectId == meepleSelected) {
if(meepleSelected > 0) $('#SelectionMeeple' + meepleSelected).remove();
tempMeepleSelected = meepleSelected;
meepleSelected = 0;
$.get('jeu.php?j=' + scJoueurId + '&dc=m' + tempMeepleSelected + 't' + InfoID)
.done(function(data, text, jqxhr) {
$('#zoneInfosTuile_tuile').html('
');
$('#PlateauCase_User' + scJoueurId + '_Temple' + InfoID).append('
');
dejaJoue = true;
})
.fail(function(jqxhr){
console.log("BACKEND DC=C : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
});
}
}
}
}
});
function caseHasMeeple(type, id) {
if(type == 't') return false;
var position = parseInt(id);
if(type == 'm') position += 100;
for(var i = 0 ; i < lastData['joueur'][scJoueurId]['meeple'].length ; i++)
if( lastData['joueur'][scJoueurId]['meeple'][i] == position ) return (i + 1);
return false;
}
function caseHasTemple(id) {
for(var i = 0 ; i < lastData['joueur'][scJoueurId]['temple'].length ; i++)
if( lastData['joueur'][scJoueurId]['temple'][i] == id ) return (i + 1);
return false;
}
var actionJeter = false;
// Click sur la pioche : Action jeter
$('#zoneInfosTuile').on('click', function(e) {
if(dejaJoue) return;
if(actionJeter) {
actionJeter = false;
$('#zoneInfosTuile_jeter').hide();
if(meepleSelected > 0) $('#SelectionMeeple' + meepleSelected).remove();
meepleSelected = 0;
$.get('jeu.php?j=' + scJoueurId + '&dc=p')
.done(function(data, text, jqxhr) {
$('#zoneInfosTuile_tuile').html('
');
dejaJoue = true;
})
.fail(function(jqxhr){
console.log("BACKEND DC=P : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
});
}
else {
$('#zoneInfosTuile_jeter').fadeIn();
actionJeter = true;
}
});
$('#zoneInfosTuile').on('mouseleave', function(e) {
$('#zoneInfosTuile_jeter').fadeOut();
actionJeter = false;
});
/*
* BOUTON FIN DE PARTIE / NOUVELLE PARTIE
*/
function nouvellePartie() {
$.get('jeu.php?j=' + scJoueurId + '&new=1')
.done(function(data, text, jqxhr) {
})
.fail(function(jqxhr){
console.log("BACKEND NEW : " + jqxhr.responseText);
// alert(jqxhr.responseText);
})
.always(function(){
});
}
$('#finPartieBtn').on('click', function(e) {
nouvellePartie();
});
$('#basBoutonTerminer').on('click', function(e) {
nouvellePartie();
});
/*
* FONCTIONS ANNEXES
*/
function decomposerTuile(id) {
var newId = id;
var pepite = newId[newId.length - 1];
if(pepite == 'o' ||pepite == 'd')
newId = newId.substring(0, newId.length - 1);
else
pepite = '';
return [newId, pepite];
}
});
})(jQuery);