game2006api/webapp/mt/GunQuality.php
hujiabin 2819351697 1
2023-03-17 13:53:34 +08:00

73 lines
1.9 KiB
PHP

<?php
namespace mt;
use phpcommon;
class GunQuality {
public static function get($id)
{
return getXVal(self::getMetaList(), $id);
}
public static function getByQuality($quality)
{
self::mustBeQualityHash();
return getXVal(self::$qualityHash, $quality, null);
}
public static function getRandAttr($qualityMeta)
{
$nums = explode(':', $qualityMeta['rand_attrs_num']);
$attrs = StrHelper::parseList($qualityMeta['rand_attrs'], array('|', ':'));
$num = rand($nums[0], $nums[1]);
shuffle($attrs);
$result = array();
$i = 0;
foreach ($attrs as $item) {
if ($i < $num) {
array_push($result,
array(
'attr_id' => $item[0],
'type' => $item[1],
'val' => rand($item[2], $item[3])
));
}
++$i;
}
return $result;
}
protected static function getMetaList()
{
if (!self::$metaList) {
self::$metaList = getMetaTable('gunQuality@gunQuality.php');
foreach (self::$metaList as $key=>$value){
if ($value['id'] == 1){
self::$metaList[$key]['promote_val'] = (1+$value['promote']/100);
}else{
self::$metaList[$key]['promote_val'] = (1+$value['promote']/100)*self::$metaList[$key-1]['promote_val'];
}
}
}
return self::$metaList;
}
protected static function mustBeQualityHash()
{
if (!self::$qualityHash) {
self::$qualityHash = array();
foreach (self::getMetaList() as $meta) {
self::$qualityHash[$meta['quality']] = $meta;
}
}
}
protected static $metaList;
protected static $qualityHash;
}