This commit is contained in:
aozhiwei 2024-08-12 14:45:00 +08:00
parent 7fcf394bff
commit e6bb0d9486

View File

@ -3,6 +3,8 @@ use phpcommon\SqlHelper;
require_once('models/Nft.php');
require_once('models/User.php');
require_once('models/Hero.php');
require_once('models/Chip.php');
require_once('models/ChipPage.php');
require_once('services/NftService.php');
require_once('mt/NftDesc.php');
require_once('mt/Hero.php');
@ -325,6 +327,7 @@ class OutAppNftController extends BaseController {
$info['detail']['def'] = $heroAbility['defence'];
$info['detail']['block'] = $heroAbility['block'];
$info['detail']['crit'] = $heroAbility['critical'];
$this->fillHeroDetail($heroDb, $info);
}
}
}
@ -475,15 +478,48 @@ class OutAppNftController extends BaseController {
$info['detail']['def'] = $heroAbility['defence'];
$info['detail']['block'] = $heroAbility['block'];
$info['detail']['crit'] = $heroAbility['critical'];
$info['detail']['chip_slots'] = 0;
$info['detail']['combat_ability_1'] = 0;
$info['detail']['combat_ability_2'] = 0;
$this->fillHeroDetail($heroDb, $info);
}
array_push($rspData['rows'], $info);
}
myself()->_rspData($rspData);
}
private function fillHeroDetail($heroDb, $info)
{
$info['detail']['chip_slots'] = 0;
$info['detail']['combat_ability_1'] = '';
$info['detail']['combat_ability_2'] = '';
$chipPageDb = ChipPage::find($heroDb['idx']);
if ($heroDb['quality'] > 1 && $chipPageDb){
$data = emptyReplace(json_decode($chipPageDb['data'], true), array());
$info['detail']['chip_slots'] = count($data);
foreach ($data as $value) {
$chipDb = Chip::findEx($value['chip_id']);
if (!empty($chipDb)) {
self::mergeAttr($attr, emptyReplace(json_decode($chipDb['rand_attr'], true), array()));
}
}
}
}
public static function mergeAttr(&$tarAttrs, $srcAttrs)
{
foreach ($srcAttrs as $srcAttr) {
$found = false;
foreach ($tarAttrs as &$tarAttr) {
if ($tarAttr['attr_id'] == $srcAttr['attr_id']) {
$tarAttr['val'] += $srcAttr['val'];
$found = true;
break;
}
}//end for tarAttrs
if (!$found) {
array_push($tarAttrs, $srcAttr);
}
}
}
private function isWingHero($tokenId)
{
return $tokenId > 6240603010001668 && $tokenId <= 6240603010002168;