73 lines
1.8 KiB
PHP
73 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace mt;
|
|
|
|
use phpcommon;
|
|
|
|
class BattleRandAttribute {
|
|
|
|
public static function get($id)
|
|
{
|
|
return getXVal(self::getMetaList(), $id);
|
|
}
|
|
|
|
|
|
|
|
public static function getByWeight($invoke){
|
|
$metaList = self::getByInvoke($invoke);
|
|
$totalWeight = 0;
|
|
$randMeta = array();
|
|
if ($metaList){
|
|
foreach ($metaList as $meta){
|
|
$totalWeight += $meta['qualityWeight'];
|
|
}
|
|
$rnd = rand() % $totalWeight;
|
|
$currWeight = 0;
|
|
foreach ($metaList as $meta){
|
|
$currWeight += $meta['qualityWeight'];
|
|
if ($currWeight > $rnd) {
|
|
$randMeta = $meta;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return $randMeta;
|
|
}
|
|
|
|
public static function getRandAttr($randMeta){
|
|
$attrArray = array();
|
|
$strs = explode('|', $randMeta['attributeRange']);
|
|
foreach ($strs as $str){
|
|
$attrStr = explode(':', $str);
|
|
$rnd = rand($attrStr[1]*100000 , $attrStr[2]*100000) / 100000;
|
|
$val = $attrStr[1] + ($attrStr[2] - $attrStr[1]) * $rnd;
|
|
array_push($attrArray,array(
|
|
"attr_id" => $attrStr[0],
|
|
"val" => $val,
|
|
));
|
|
}
|
|
return $attrArray;
|
|
}
|
|
|
|
protected static function getByInvoke($invoke){
|
|
$metaList = array();
|
|
foreach (self::getMetaList() as $meta){
|
|
if ($meta['invoke'] == $invoke){
|
|
array_push($metaList,$meta);
|
|
}
|
|
}
|
|
return $metaList;
|
|
}
|
|
|
|
protected static function getMetaList()
|
|
{
|
|
if (!self::$metaList) {
|
|
self::$metaList = getMetaTable('battleRandAttribute@battleRandAttribute.php');
|
|
}
|
|
return self::$metaList;
|
|
}
|
|
|
|
protected static $metaList;
|
|
|
|
}
|