Ejemplo n.º 1
0
 public static function generatePage(&$tpl, &$session, &$account, &$perso)
 {
     $dbMgr = DbManager::getInstance();
     //Instancier le gestionnaire
     $db = $dbMgr->getConn('game');
     //Demander la connexion existante
     //Générer la liste des compétances
     $arrComp = $perso->getComp();
     $comp = array();
     $i = 0;
     foreach ($arrComp as $compId) {
         $rawXp = $perso->getCompXp($compId);
         $rawLvl = $perso->getCompRawLevel($compId);
         $realLvl = $perso->getCompRealLevel($compId);
         $pCompXp = Member_Perso::convCompLevelToXp($rawLvl);
         $nCompXp = Member_Perso::convCompLevelToXp($rawLvl + 1);
         $comp[$i]['code'] = $perso->getCompCode($compId);
         $comp[$i]['nom'] = $perso->getCompName($compId);
         $comp[$i]['totalXp'] = $nCompXp - $pCompXp;
         $comp[$i]['currentXp'] = $rawXp - $pCompXp;
         $comp[$i]['lvl'] = $rawLvl;
         $comp[$i]['reallvl'] = $realLvl;
         $comp[$i]['xp'] = $rawXp;
         $i++;
     }
     $tpl->set('COMP', $comp);
     //Générer la liste des statistiques
     $arrStat = $perso->getStat();
     $stat = array();
     $i = 0;
     foreach ($arrStat as $statId) {
         $statCode = $perso->getStatCode($statId);
         $rawXp = $perso->getStatRawXp($statId);
         $rawLvl = $perso->getStatRawLevel($statId);
         $statName = $perso->getStatName($statId);
         $prevLvlMinXp = Member_Perso::convStatLevelToXp($rawLvl - 1);
         $prevLvlMaxXp = Member_Perso::convStatLevelToXp($rawLvl);
         $nextLvlMinXp = Member_Perso::convStatLevelToXp($rawLvl);
         $nextLvlMaxXp = Member_Perso::convStatLevelToXp($rawLvl + 1);
         //Si le niveau est négatif
         if ($rawLvl < 0) {
             $prevBarMax = abs($prevLvlMinXp) - abs($prevLvlMaxXp);
             $prevBarPosition = abs($rawXp) - abs($prevLvlMaxXp) + 1;
             if ($prevBarMax == 0) {
                 $nextBarMax = $prevBarPosition;
                 $nextBarPosition = 1;
             } else {
                 $nextBarMax = abs($prevLvlMinXp) - abs($prevLvlMaxXp);
                 $nextBarPosition = $prevBarMax - $prevBarPosition;
             }
         }
         //Si le niveau est positif
         if ($rawLvl > 0) {
             $nextBarMax = abs($nextLvlMaxXp) - abs($nextLvlMinXp);
             $nextBarPosition = abs($rawXp) - abs($nextLvlMinXp) + 1;
             if ($nextBarMax == 0) {
                 $prevarMax = $nextBarPosition;
                 $prevBarPosition = 1;
             } else {
                 $prevBarMax = abs($nextLvlMaxXp) - abs($nextLvlMinXp);
                 $prevBarPosition = $nextBarMax - $nextBarPosition;
             }
         }
         //Si le niveau est celui du centre
         if ($rawLvl == 0) {
             $prevBarMax = abs($prevLvlMinXp) + abs($nextLvlMaxXp);
             $nextBarMax = abs($prevLvlMinXp) + abs($nextLvlMaxXp);
             $prevBarPosition = $rawXp + abs($prevLvlMinXp);
             $nextBarPosition = $prevBarMax - $prevBarPosition;
         }
         $stat[$i]['code'] = $statCode;
         $stat[$i]['nom'] = $statName;
         $stat[$i]['lvl'] = $rawLvl;
         $stat[$i]['xp'] = $rawXp;
         $stat[$i]['prevBarMax'] = $prevBarMax;
         $stat[$i]['nextBarMax'] = $nextBarMax;
         $stat[$i]['prevBarPos'] = $prevBarPosition;
         $stat[$i]['nextBarPos'] = $nextBarPosition;
         $i++;
     }
     //die(nl2br(var_export($stat, true)));
     $tpl->set('STAT', $stat);
     //Trouver les caractéristiques du perso
     $query = 'SELECT p.*, c.nom, t.nom as cat' . ' FROM ' . DB_PREFIX . 'perso_caract as p' . ' LEFT JOIN ' . DB_PREFIX . 'caract as c ON (c.id = p.caractid)' . ' LEFT JOIN ' . DB_PREFIX . 'caract as t ON (t.id = c.catid)' . ' WHERE p.persoid=:persoId;';
     $prep = $db->prepare($query);
     $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT);
     $prep->executePlus($db, __FILE__, __LINE__);
     $arrAll = $prep->fetchAll();
     $prep->closeCursor();
     $prep = NULL;
     foreach ($arrAll as &$arr) {
         $arr['cat'] = stripslashes($arr['cat']);
         $arr['nom'] = stripslashes($arr['nom']);
         $arr['desc'] = stripslashes($arr['desc']);
     }
     $tpl->set('CARACT', $arrAll);
     //Retourner le template complété/rempli
     return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Perso/FichePerso.htm', __FILE__, __LINE__);
 }
Ejemplo n.º 2
0
 function testConvStatLevelToXp()
 {
     $this->assertEquals(-400, Member_Perso::convStatLevelToXp(-6));
     $this->assertEquals(-400, Member_Perso::convStatLevelToXp(-5));
     $this->assertEquals(-200, Member_Perso::convStatLevelToXp(-4));
     $this->assertEquals(-100, Member_Perso::convStatLevelToXp(-3));
     $this->assertEquals(-50, Member_Perso::convStatLevelToXp(-2));
     $this->assertEquals(-20, Member_Perso::convStatLevelToXp(-1));
     $this->assertEquals(0, Member_Perso::convStatLevelToXp(0));
     $this->assertEquals(20, Member_Perso::convStatLevelToXp(1));
     $this->assertEquals(50, Member_Perso::convStatLevelToXp(2));
     $this->assertEquals(100, Member_Perso::convStatLevelToXp(3));
     $this->assertEquals(200, Member_Perso::convStatLevelToXp(4));
     $this->assertEquals(400, Member_Perso::convStatLevelToXp(5));
     $this->assertEquals(400, Member_Perso::convStatLevelToXp(6));
     //Valeurs 'impossibles'
     $tmp = array(null, '', 'test', array());
     foreach ($tmp as $value) {
         $this->assertEquals(0, Member_Perso::convStatLevelToXp($value));
     }
 }