Changeset 54534 in spip-zone


Ignore:
Timestamp:
Nov 16, 2011, 11:04:19 PM (8 years ago)
Author:
fredjust@…
Message:

modifications permettant d'utiliser des plateaux avec coordonnées
le nom du fichier doit comporter la nouvelle origine ex: cvd(25-25).png

Location:
_plugins_/jeux/jeux
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/jeux/jeux/diag_echecs.php

    r54527 r54534  
    8585        $font = intval(jeux_config('police'));
    8686        $img = jeux_config('img_img');
    87        
     87
    8888        // dechiffre la surbrillance eventuelle des cases
    8989         $surbrillance = array();
     
    140140                                }
    141141
     142       
    142143        for ($i=0 ; $i<count($table) ; $i++) {
    143144          $sub_table = preg_split("/[:,]/",$table[$i]);
     
    230231        if (strlen(jeux_config('redim'))>0) {
    231232                if (jeux_config('coords')) { $nbcases=9; } else { $nbcases=8; }
    232                 $newsize = intval(jeux_config('redim'))*$nbcases+2*$bordure;
    233                 if ($newsize>639) {$newsize=640;}; // taille maximale pour éviter les confusion taille de case et taille de l'image
    234                 $img_finale = imagecreatetruecolor($newsize,$newsize);
    235                 imagecopyresampled($img_finale,$chessboard,0,0,0,0,$newsize,$newsize,$taille*$nbcases+2*$bordure,$taille*$nbcases+2*$bordure);
     233                $newsize = intval(jeux_config('redim')) / intval(jeux_config('taille'));
     234                if ($newsize>3) {$newsize=3;}; // taille maximale pour éviter les erreurs
     235                $img_finale = imagecreatetruecolor(round($newsize*imagesx($chessboard)),round($newsize*imagesy($chessboard)));
     236                imagecopyresampled($img_finale,$chessboard,0,0,0,0,round($newsize*imagesx($chessboard)),round($newsize*imagesy($chessboard)),imagesx($chessboard),imagesy($chessboard));
    236237                // converti l'image en 256 couleurs si truecolor=non
    237238                if (!jeux_config('truecolor')) { imagetruecolortopalette($img_finale,false,256); };     
  • _plugins_/jeux/jeux/diag_echecs_inc.php

    r54506 r54534  
    6262        if (strlen(jeux_config('plateau'))>1 )  {
    6363        // si une image d'échiqier est utilisé
    64         //$url = jeux_config('base_url').jeux_config('plateau');
    65         $url = _DIR_PLUGIN_JEUX.'img/echiquiers/'.jeux_config('plateau');
     64        $nomfichier=jeux_config('plateau');
     65        $url = _DIR_PLUGIN_JEUX.'img/echiquiers/'.$nomfichier;
    6666        if (file_exists($url)) {
    6767                $board=imagecreatefrompng($url);
    6868                if(!$board) { die("Erreur lors de l'ouverture du fichier : ".jeux_config('plateau')); }
     69                list($width, $height) = getimagesize($url); //récupère la largeur on suppose l'image carrée
     70                $board_size = $width;
     71                jeux_config_set('board_size', $width);                 
     72                if(strpos($nomfichier,'(')<>0) { //si le nom du fichier contient les coordonnées de l'origine
     73                        $xori=substr($nomfichier,strpos($nomfichier,'(')+1,strpos($nomfichier,'-')-strpos($nomfichier,'(')-1);
     74                        $yori=substr($nomfichier,strpos($nomfichier,'-')+1,strpos($nomfichier,')')-strpos($nomfichier,'-')-1);
     75                        jeux_config_set('xori', $xori);
     76                        jeux_config_set('yori', $yori);         
     77                } else {
     78                        jeux_config_set('xori', '0');
     79                        jeux_config_set('yori', '0');           
     80                }               
    6981        }
     82       
     83       
    7084
    7185  }
     
    8195                  if (($i+$j) & 1) imagecopy($board,$square,$i*$taille,$j*$taille,0,0,$taille,$taille);
    8296        }
    83   $chessboard = imagecreatetruecolor($board_size+2*$bordure,$board_size+2*$bordure);
    84   $black_color = imagecolorallocate($chessboard,0,0,0);
    85   imagefill($chessboard,0,0,$black_color);
    86   imagecopy($chessboard,$board,$bordure,$bordure,0,0,$board_size,$board_size);
    87   return $chessboard;
     97        if ($bordure<>0)        { //inutile autrement
     98                $chessboard = imagecreatetruecolor($board_size+2*$bordure,$board_size+2*$bordure);
     99                $black_color = imagecolorallocate($chessboard,0,0,0);
     100                imagefill($chessboard,0,0,$black_color);
     101                imagecopy($chessboard,$board,$bordure,$bordure,0,0,$board_size,$board_size);
     102                return $chessboard;
     103        }
     104        else return $board;
     105       
     106 
    88107}
    89108
     
    100119  if ((!(ereg("[a-h]",$letter,$match1))) or (!(ereg("[1-8]",$number,$match2))))
    101120        die("Erreur dans la syntaxe (diag_echecs_put_piece)!");
     121       
     122        $xori=intval(jeux_config('xori'));
     123        $yori=intval(jeux_config('yori'));
    102124
    103125  $url = jeux_config('base_url').$side.$diag_echecs_globales['english'][$name].jeux_config('img_suffix');
     
    105127  $file = $img_create($url);
    106128  if (!$flip) {
    107     imagecopy($chessboard,$file,($diag_echecs_globales['letter2number'][$letter]-1)*$taille+$bordure,(8-$number)*$taille+$bordure,0,0,$taille,$taille);
    108   } else {
    109     imagecopy($chessboard,$file,(8-$diag_echecs_globales['letter2number'][$letter])*$taille+$bordure,($number-1)*$taille+$bordure,0,0,$taille,$taille);
     129    imagecopy($chessboard,$file,($diag_echecs_globales['letter2number'][$letter]-1)*$taille+$bordure+$xori,(8-$number)*$taille+$bordure+$yori,0,0,$taille,$taille);
     130  } else {
     131    imagecopy($chessboard,$file,(8-$diag_echecs_globales['letter2number'][$letter])*$taille+$bordure+$xori,($number-1)*$taille+$bordure+$yori,0,0,$taille,$taille);
    110132  }
    111133}
     
    122144        $letter = substr($square,0,1);
    123145        $number = substr($square,1,1);
     146       
     147        $xori=intval(jeux_config('xori'));
     148        $yori=intval(jeux_config('yori'));
    124149
    125150  if ((!(ereg("[a-h]",$letter,$match1))) or (!(ereg("[1-8]",$number,$match2))))
     
    131156        imagefill($square,0,0,$hilite_color);
    132157  if (!$flip) {
    133         imagecopy($chessboard,$square,($diag_echecs_globales['letter2number'][$letter]-1)*$taille+$bordure,(8-$number)*$taille+$bordure,0,0,$taille,$taille);
    134   } else {
    135         imagecopy($chessboard,$square,(8-$diag_echecs_globales['letter2number'][$letter])*$taille+$bordure,($number-1)*$taille+$bordure,0,0,$taille,$taille);
     158        imagecopy($chessboard,$square,($diag_echecs_globales['letter2number'][$letter]-1)*$taille+$bordure+$xori,(8-$number)*$taille+$bordure+$yori,0,0,$taille,$taille);
     159  } else {
     160        imagecopy($chessboard,$square,(8-$diag_echecs_globales['letter2number'][$letter])*$taille+$bordure+$xori,($number-1)*$taille+$bordure+$yori,0,0,$taille,$taille);
    136161  }
    137162
     
    155180        $yto = substr($squares,4,1);
    156181       
     182        $xori=intval(jeux_config('xori'));
     183        $yori=intval(jeux_config('yori'));
     184       
    157185        $color = $diag_echecs_globales[$hilite];
    158186        $hilite_color = imagecolorallocatealpha($image,$color[0],$color[1],$color[2],50);
    159187       
    160188        if (!$flip) {
    161                 $x1=round(($diag_echecs_globales['letter2number'][$xfrom]-1)*$taille+$bordure+$taille/2)-1;
    162                 $y1=round((8-$yfrom)*$taille+$bordure+$taille/2)-1;
    163                 $x2=round(($diag_echecs_globales['letter2number'][$xto]-1)*$taille+$bordure+$taille/2)-1;
    164                 $y2=round((8-$yto)*$taille+$bordure+$taille/2)-1;
    165   } else {
    166                 $x1=round((8-$diag_echecs_globales['letter2number'][$xfrom])*$taille+$bordure+$taille/2)-1;
    167                 $y1=round(($yfrom-1)*$taille+$bordure+$taille/2)-1;
    168                 $x2=round((8-$diag_echecs_globales['letter2number'][$xto])*$taille+$bordure+$taille/2)-1;
    169                 $y2=round(($yto-1)*$taille+$bordure+$taille/2)-1;               
     189                $x1=round(($diag_echecs_globales['letter2number'][$xfrom]-1)*$taille+$bordure+$taille/2)-1+$xori;
     190                $y1=round((8-$yfrom)*$taille+$bordure+$taille/2)-1+$yori;
     191                $x2=round(($diag_echecs_globales['letter2number'][$xto]-1)*$taille+$bordure+$taille/2)-1+$xori;
     192                $y2=round((8-$yto)*$taille+$bordure+$taille/2)-1+$yori;
     193  } else {
     194                $x1=round((8-$diag_echecs_globales['letter2number'][$xfrom])*$taille+$bordure+$taille/2)-1+$xori;
     195                $y1=round(($yfrom-1)*$taille+$bordure+$taille/2)-1+$yori;
     196                $x2=round((8-$diag_echecs_globales['letter2number'][$xto])*$taille+$bordure+$taille/2)-1+$xori;
     197                $y2=round(($yto-1)*$taille+$bordure+$taille/2)-1+$yori;         
    170198  }
    171199 
Note: See TracChangeset for help on using the changeset viewer.