oui désolé .
Voici le bloc-code dans son intégralité. C’est un code que j’avais repris d’un post de la communauté et adapté
$scenario->setlog("Pré-Nettoyage");
$tags=$scenario->getTags();
$pass = $tags['#pass#'];
$ordre = $tags['#ordre#'];
function rotate($x,$y, $angle,$centre) {
if($angle == 0)
{
// ajustement facultatif du centre par défaut en cas de léger déplacement de la base :
// $x = $x - 80;
// $y = $y + 80;
return array($x,$y);
}
$angle *= M_PI / 180;
$xM = $x - $centre[0];
$yM = $y - $centre[1];
$x = $xM * cos($angle) + $yM * sin($angle) + $centre[0];
$y = - $xM * sin($angle) + $yM * cos($angle) + $centre[1];
return array(round($x), round($y));
}
function generer($coordonnees,$quoi,$rotation,$centre) {
if( count($coordonnees[$quoi])<1 ) return "AUCUN";
$zonedef=array();
foreach($coordonnees[$quoi] as $lazone)
{ // pour chaque zone
$zone=explode(',', $lazone);
$coord=array();
list( $xa , $ya ) = rotate($zone[0],$zone[1],$rotation,$centre); // Renvoi position debut array(x,y)
if( $zone[2] > 0 )
{ // Clean zone
list( $xb , $yb ) = rotate($zone[2],$zone[3],$rotation,$centre); // renvoi position fin array(x,y)
if( $xa < $xb )
{
$coord[0] = $xa;
$coord[1] = 0;
$coord[2] = $xb;
}
else{
$coord[0] = $xb;
$coord[1] = 0;
$coord[2] = $xa;
}
if( $ya < $yb )
{
$coord[1] = $ya;
$coord[3] = $yb;
}
else{
$coord[1] = $yb;
$coord[3] = $ya;
}
$coord[4]=$zone[4];
$zonedef[]='['.implode(',',$coord).']';
}
else{ // Gothere
$zonedef[] = $xa . "," . $ya;
}
}
return implode('-',$zonedef);
}
// Script de contournement des problèmes de rotations de cartes
// définition des zones (XGauche,Ybas,Xdroite,Yhaut)
$coordonnees = array();
$coordonnees['LA_CUISINE'][] = "26000,26000,28500,28550,$pass";
$coordonnees['LE_CELLIER'][] = "26010,23700,29400,25700,$pass";
$coordonnees['LA_SALLE_A_MANGER'][] = "20455,24600,26000,29100,$pass";
$coordonnees['L_ENTREE'][] = "23783,18500,26000,19700,$pass";
$coordonnees['LE_SALON_'][] = "20455,19700,26000,24600,$pass";
$coordonnees['LE_COULOIR'][] = "19297,15800,20300,20600,$pass";
$coordonnees['LES_WC'][] = "20219,18700,21930,19600,$pass";
$coordonnees['LA_SALLE_DE_BAIN'][] = "20219,16870,22847,18630,$pass";
$coordonnees['LA_CHAMBRE_DE_MATHIS'][] = "20219,13050,23694,16790,$pass";
$coordonnees['LA_CHAMBRE_DE_JADE'][] = "16500,13050,20300,15800,$pass";
$coordonnees['LE_BUREAU'][] = "16500,17200,19297,20330,$pass";
$coordonnees['LA_CHAMBRE_DES_PARENTS'][] = "16500,20600,20300,24600,$pass";
$coordonnees['LA_SALLE_D___EAU'][] = "16500,20410,18293,21340,$pass";
$coordonnees['LE_COIN_REPAS'][] = $coordonnees['LA_CUISINE'][0];
$coordonnees['LE_COIN_REPAS'][] = $coordonnees['LA_SALLE_A_MANGER'][0];
$coordonnees['LE_SALON'][] = $coordonnees['L_ENTREE'][0];
$coordonnees['LE_SALON'][] = $coordonnees['LE_SALON_'][0];
$coordonnees['LA_PIECE_DE_VIE'][] = $coordonnees['LE_CELLIER'][0];
$coordonnees['LA_PIECE_DE_VIE'][] = $coordonnees['LA_CUISINE'][0];
$coordonnees['LA_PIECE_DE_VIE'][] = $coordonnees['LA_SALLE_A_MANGER'][0];
$coordonnees['LA_PIECE_DE_VIE'][] = $coordonnees['LE_SALON'][0];
$coordonnees['LA_PIECE_DE_VIE'][] = $coordonnees['L_ENTREE'][0];
$coordonnees['LES_CHAMBRES'][] = $coordonnees['LA_CHAMBRE_DES_PARENTS'][0];
$coordonnees['LES_CHAMBRES'][] = $coordonnees['LE_BUREAU'][0];
$coordonnees['LES_CHAMBRES'][] = $coordonnees['LA_CHAMBRE_DE_JADE'][0];
$coordonnees['LES_CHAMBRES'][] = $coordonnees['LA_CHAMBRE_DE_MATHIS'][0];
$coordonnees['LES_CHAMBRES'][] = $coordonnees['LA_SALLE_DE_BAIN'][0];
$coordonnees['LES_CHAMBRES'][] = $coordonnees['LE_COULOIR'][0];
$coordonnees['POUBELLE'][] = "28200,28100";
// Récupération des paramètres stockés dans le virtuel :
// rotation relative de la carte == 0 lors de la création initiale des zones
$cmd = cmd::byString("#[Salle à Manger][Tuile Roborock][rotation_map]#");
$rotation = $cmd->execCmd();
// centre X de la carte :
$cmd = cmd::byString("#[Salle à Manger][Tuile Roborock][centre_x]#");
$centre_x = $cmd->execCmd();
// centre Y de la carte :
$cmd = cmd::byString("#[Salle à Manger][Tuile Roborock][centre_y]#");
$centre_y = $cmd->execCmd();
$centre = array($centre_x,$centre_y); // centre X, Y de la carte (25000,25000)
// on génère les coordonnées corrigées :
$newpos = generer($coordonnees,$tags['#ordre#'],$rotation,$centre);
$scenario->setLog("Coordonnées : " .$newpos);
// et on sauve ces coordonnées dans notre virtuel (pour qu'ils soient exploitables hors de notre bloc de code)
$cmd = cmd::byString("#[Salle à Manger][Tuile Roborock][coordonnees]#");
$cmd->event($newpos);
$goto = explode (",",$newpos);
$goto = substr($goto[0],1).",".$goto[1];
$scenario -> setlog ("Point de départ de la zone : ".$goto);
$cmd = cmd::byString("#[Salle à Manger][Tuile Roborock][goto_coordonnees]#");
$cmd->event($goto);