Esempio n. 1
0
 private static function getComparisonMatrix(SR_Player $player, SR_Item $item1, SR_Item $item2)
 {
     $titles = array();
     $item1Stuff = array();
     $item2Stuff = array();
     $b = chr(2);
     $type = $item1->getItemType();
     // 		$titles[] = 'Type';
     $titles[] = Shadowfunc::translateVariable($player, 'Type');
     $item1Stuff[] = str_replace(" Weapon", "", $player->lang($item1->displayType()));
     $item2Stuff[] = str_replace(" Weapon", "", $player->lang($item2->displayType()));
     // 		$titles[] = 'Lvl';
     $titles[] = Shadowfunc::shortcutVariable($player, 'Level');
     $item1Lvl = $item1->getItemLevel();
     $item2Lvl = $item2->getItemLevel();
     if ($item1Lvl == $item2Lvl) {
         $item1Stuff[] = $b . $item1Lvl . $b;
         $item2Stuff[] = $b . $item2Lvl . $b;
     } else {
         if ($item2Lvl > $item1Lvl) {
             $item1Stuff[] = $item1Lvl;
             $item2Stuff[] = $b . $item2Lvl . $b;
         } else {
             $item1Stuff[] = $b . $item1Lvl . $b;
             $item2Stuff[] = $item2Lvl;
         }
     }
     // 		$item1ModA = $item1->getItemModifiersA($player);
     // 		$item2ModA = $item2->getItemModifiersA($player);
     $item1ModA = $item1->getItemModifiers($player);
     $item2ModA = $item2->getItemModifiers($player);
     unset($item1ModA['weight']);
     unset($item2ModA['weight']);
     if ($item1ModA || $item2ModA) {
         if (array_key_exists('min_dmg', $item1ModA) || array_key_exists('min_dmg', $item2ModA)) {
             // 				$titles[] = 'dmg';
             $titles[] = Shadowfunc::shortcutVariable($player, 'Damage');
             $item1min = false;
             $item1max = false;
             $item2min = false;
             $item2max = false;
             if (array_key_exists('min_dmg', $item1ModA)) {
                 $item1min = $item1ModA['min_dmg'];
                 $item1max = $item1ModA['max_dmg'];
                 unset($item1ModA['min_dmg']);
                 unset($item1ModA['max_dmg']);
             }
             if (array_key_exists('min_dmg', $item2ModA)) {
                 $item2min = $item2ModA['min_dmg'];
                 $item2max = $item2ModA['max_dmg'];
                 unset($item2ModA['min_dmg']);
                 unset($item2ModA['max_dmg']);
             }
             if ($item1min == $item2min) {
                 $item1min = $b . $item1min . $b;
                 $item2min = $b . $item2min . $b;
             } else {
                 if ($item1min > $item2min) {
                     $item1min = $b . $item1min . $b;
                 } else {
                     $item2min = $b . $item2min . $b;
                 }
             }
             if ($item1max == $item2max) {
                 $item1min = $b . $item1min . $b;
                 $item2min = $b . $item2min . $b;
             } else {
                 if ($item1max > $item2max) {
                     $item1max = $b . $item1max . $b;
                 } else {
                     $item2max = $b . $item2max . $b;
                 }
             }
             if ($item1max) {
                 $item1Stuff[] = $item1min . '-' . $item1max;
             } else {
                 $item1Stuff[] = "";
             }
             if ($item2max) {
                 $item2Stuff[] = $item2min . '-' . $item2max;
             } else {
                 $item2Stuff[] = "";
             }
         }
         $keys = array_unique(array_merge(array_keys($item1ModA ? $item1ModA : array()), array_keys($item2ModA ? $item2ModA : array())));
         foreach ($keys as $k => $v) {
             // 				$titles[] = Shadowfunc::longModifierToShort($v);
             $titles[] = Shadowfunc::shortcutVariable($player, $v);
             $item1V = $item1ModA && array_key_exists($v, $item1ModA) ? $item1ModA[$v] : false;
             $item2V = $item2ModA && array_key_exists($v, $item2ModA) ? $item2ModA[$v] : false;
             if ($item1V && $item2V && $item1V == $item2V) {
                 $item1V = $b . $item1V . $b;
                 $item2V = $b . $item2V . $b;
             } else {
                 if (!$item1V || $item2V > $item1V) {
                     $item2V = $b . $item2V . $b;
                 } else {
                     if (!$item2V || $item1V > $item2V) {
                         $item1V = $b . $item1V . $b;
                     }
                 }
             }
             $item1Stuff[] = $item1V;
             $item2Stuff[] = $item2V;
         }
     }
     // 		$item1ModB = $item1->getItemModifiersB();
     // 		$item2ModB = $item2->getItemModifiersB();
     // 		if($item1ModB || $item2ModB)
     // 		{
     // 			$keys = array_unique(array_merge(array_keys($item1ModB?$item1ModB:array()), array_keys($item2ModB?$item2ModB:array())));
     // 			foreach($keys as $k => $v){
     // 				$titles[] = Shadowfunc::longModifierToShort($v);
     // 				$item1V = ($item1ModB&&array_key_exists($v,$item1ModB))?$item1ModB[$v]:false;
     // 				$item2V = ($item2ModB&&array_key_exists($v,$item2ModB))?$item2ModB[$v]:false;
     // 				if($item1V && $item2V && ($item1V == $item2V))
     // 				{
     // 					$item1V = $b.$item1V.$b;
     // 					$item2V = $b.$item2V.$b;
     // 				}
     // 				else if(!$item1V || $item2V > $item1V)
     // 				{
     // 					$item2V = $b.$item2V.$b;
     // 				}
     // 				else if(!$item2V || $item1V > $item2V)
     // 				{
     // 					$item1V = $b.$item1V.$b;
     // 				}
     // 				$item1Stuff[] = $item1V;
     // 				$item2Stuff[] = $item2V;
     // 			}
     // 		}
     $item1Reqs = $item1->getItemRequirements();
     $item2Reqs = $item2->getItemRequirements();
     if ($item1Reqs || $item2Reqs) {
         // 			$titles[] = 'Reqs';
         $titles[] = Shadowfunc::shortcutVariable($player, 'Requirements');
         $keys = array_unique(array_merge(array_keys($item1Reqs ? $item1Reqs : array()), array_keys($item2Reqs ? $item2Reqs : array())));
         $samekeys = array_intersect(array_keys($item1Reqs ? $item1Reqs : array()), array_keys($item2Reqs ? $item2Reqs : array()));
         $item1V = array();
         $item2V = array();
         foreach ($samekeys as $key) {
             unset($keys[array_search($key, $keys)]);
             $req = Shadowfunc::longModifierToShort($key);
             $item1R = $item1Reqs[$key];
             $item2R = $item2Reqs[$key];
             if ($item1R == $item2R) {
                 $item1V[] = $req . ":" . $b . $item1R . $b;
                 $item2V[] = $req . ":" . $b . $item2R . $b;
             } else {
                 if ($item1R > $item2R) {
                     $item1V[] = $req . ":" . $b . $item1R . $b;
                     $item2V[] = $req . ":" . $item2R;
                 } else {
                     $item1V[] = $req . ":" . $item1R;
                     $item2V[] = $req . ":" . $b . $item2R . $b;
                 }
             }
         }
         foreach ($keys as $key) {
             // 				$req = Shadowfunc::longModifierToShort($key);
             $req = Shadowfunc::shortcutVariable($player, $key);
             $item1R = false;
             $item2R = false;
             if (array_key_exists($key, $item1Reqs)) {
                 $item1R = $item1Reqs[$key];
             }
             if (array_key_exists($key, $item2Reqs)) {
                 $item2R = $item2Reqs[$key];
             }
             if ($item1R) {
                 $item1V[] = $req . ":" . $b . $item1R . $b;
                 $item2V[] = $req . ":" . '0';
             } else {
                 $item1V[] = $req . ":" . '0';
                 $item2V[] = $req . ":" . $b . $item2R . $b;
             }
         }
         $item1Stuff[] = implode(',', $item1V);
         $item2Stuff[] = implode(',', $item2V);
     }
     $item1Rng = $item1->getItemRange();
     $item2Rng = $item2->getItemRange();
     if ($item1Rng > 0 || $item2Rng > 0) {
         // 			$titles[] = 'Rng';
         $titles[] = Shadowfunc::shortcutVariable($player, 'Range');
         if ($item1Rng == $item2Rng) {
             $item1Stuff[] = $b . $item1Rng . $b;
             $item2Stuff[] = $b . $item2Rng . $b;
         } else {
             if ($item2Rng > $item1Rng) {
                 $item1Stuff[] = $item1Rng;
                 $item2Stuff[] = $b . $item2Rng . $b;
             } else {
                 $item1Stuff[] = $b . $item1Rng . $b;
                 $item2Stuff[] = $item2Rng;
             }
         }
     }
     // 		$titles[] = 'Wgt';
     $titles[] = Shadowfunc::shortcutVariable($player, 'Weight');
     $item1Wgt = $item1->getItemWeight();
     $item2Wgt = $item2->getItemWeight();
     if ($item1Wgt == $item2Wgt) {
         $item1Stuff[] = $b . $item1Wgt . 'g' . $b;
         $item2Stuff[] = $b . $item2Wgt . 'g' . $b;
     } else {
         if ($item2Wgt < $item1Wgt) {
             // because lower item weight is better!
             $item1Stuff[] = $item1Wgt . 'g';
             $item2Stuff[] = $b . $item2Wgt . 'g' . $b;
         } else {
             $item1Stuff[] = $b . $item1Wgt . 'g' . $b;
             $item2Stuff[] = $item2Wgt . 'g';
         }
     }
     $titles[] = 'Worth';
     $item1Prc = $item1->getItemPrice();
     $item2Prc = $item2->getItemPrice();
     if ($item1Prc == $item2Prc) {
         $item1Stuff[] = $b . Shadowfunc::displayNuyen($item1Prc) . $b;
         $item2Stuff[] = $b . Shadowfunc::displayNuyen($item2Prc) . $b;
     } else {
         if ($item2Prc > $item1Prc) {
             $item1Stuff[] = Shadowfunc::displayNuyen($item1Prc);
             $item2Stuff[] = $b . Shadowfunc::displayNuyen($item2Prc) . $b;
         } else {
             $item1Stuff[] = $b . Shadowfunc::displayNuyen($item1Prc) . $b;
             $item2Stuff[] = Shadowfunc::displayNuyen($item2Prc);
         }
     }
     return array(Shadowrun4::lang('name') => $titles, '1.' . $item1->displayName($player, false) => $item1Stuff, '2.' . $item2->displayName($player, false) => $item2Stuff);
 }