J'ai les infos pour le stockage des valeurs ici
- 2019-12-29_10h46_42.png (16.5 Kio) Consulté 3195 fois
Et les actions pour changer les valeurs des infos
- 2019-12-29_10h48_01.png (31.46 Kio) Consulté 3195 fois
C'est la première fois que je mets en oeuvre le plugin virtuel et ma version a plus de zones de paramétrage que sur les screenshots du tuto...alors j'ai improvisé.
En attendant de régler la partie Virtuel, j'ai fixé les variables dans le code.
Mon aspirateur indique bien qu'il va effectuer un nettoyage par zone cependant ne va pas là où il doit aller. Il aurait du nettoyer la chambre principale (zone en vert) mais s'acharne sur la 2e chambre au dessus là où il y a la base.
- aspi.jpg (231.17 Kio) Consulté 3185 fois
Code : Tout sélectionner
// Coordonnées des pièces
$coordonnees['ASPICHOU_ENTREE'][] = "29758,22875,33058,24475,1";
$coordonnees['ASPICHOU_CUISINE'][] = "30454,19638,32054,22788,1";
$coordonnees['ASPICHOU_SALON'][] = "24346,17925,30496,21875,1";
$coordonnees['ASPICHOU_CHAMBRE1'][] = "24523,21989,27723,25039,1";
$coordonnees['ASPICHOU_CHAMBRE2'][] = "24342,24976,28492,27926,1";
$coordonnees['ASPICHOU_SDB'][] = "29773,25425,31373,27075,1";
$coordonnees['ASPICHOU_WC'][] = "29623,24538,31573,25488,1";
$coordonnees['ASPICHOU_COULOIR'][] = "28430,23450,29730,26450,1";
$coordonnees['ASPICHOU_PLACARDPC'][] = "27840,20875,30990,22875,1";
// Coordonnées Go There
$coordonnees['ASPICHOU_POUBELLE'][] ="17100,28900";
// Zones regroupement plusieurs autres zones :
/* NE PAS MODIFIER DESSOUS */
// 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("#[Appartement][V_Aspichou][Rotation_map]#");
$rotation = 0;//$cmd->execCmd();
// centre X de la carte :
$cmd = cmd::byString("#[Appartement][V_Aspichou][centre_x]#");
$centre_x = 25000;//$cmd->execCmd();
// centre Y de la carte :
$cmd = cmd::byString("#[Appartement][V_Aspichou][centre_y]#");
$centre_y = 25000;//$cmd->execCmd();
$centre = array($centre_x,$centre_y); // centre X,Y de la carte (25000, 25000)
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)
{ // CleanZone
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);
}
$cmd = cmd::byString("#[Appartement][V_Aspichou][ordre]#");
$job = $cmd->execCmd(); //contient le nom de la zone ou position demandée (tel que défini dans notre tableau)
// on génère les coordonnées corrigées :
$newpos = generer($coordonnees,$job,$rotation,$centre);
// et on sauve ces coordonnées dans notre virtuel (pour qu'ils soient exploitables hors de notre bloc de code)
$cmd = cmd::byString("#[Appartement][V_Aspichou][coordonnees]#");
$cmd->event($newpos);
// FIN DU SCRIPT
Je dois louper quelque chose...
Merci pour ton aide c'est très sympa.