This commit is contained in:
aozhiwei 2022-06-13 15:16:23 +08:00
parent 946f0f0fe9
commit dc3c40a98d
3 changed files with 82 additions and 7 deletions

View File

@ -124,6 +124,7 @@ class Hero(object):
'url': 'webapp/index.php?c=Hero&a=receive', 'url': 'webapp/index.php?c=Hero&a=receive',
'params': [ 'params': [
_common.ReqHead(), _common.ReqHead(),
['type', 0, '1:领取升级 2:领取升阶'],
['hero_uniid', 0, '英雄唯一id'], ['hero_uniid', 0, '英雄唯一id'],
], ],
'response': [ 'response': [

View File

@ -68,3 +68,6 @@ const kHAT_ABS_VAL = 1;
const kHAT_RATE_VAL = 2; const kHAT_RATE_VAL = 2;
const kWantedLockType = 3; const kWantedLockType = 3;
const kMaxHeroUpLevelNum = 2;
const kMaxHeroUpQualityNum = 4;

View File

@ -90,7 +90,7 @@ class HeroController extends BaseAuthedController {
public function getUpgradeLevelList() public function getUpgradeLevelList()
{ {
$infos = array(); $infos = array();
for ($i = 0; $i <= 1; ++$i) { for ($i = 0; $i < kMaxHeroUpLevelNum; ++$i) {
$heroUniId = $this->_getV(TN_HERO_LEVEL_UP, $i); $heroUniId = $this->_getV(TN_HERO_LEVEL_UP, $i);
$info = null; $info = null;
if ($heroUniId) { if ($heroUniId) {
@ -99,7 +99,7 @@ class HeroController extends BaseAuthedController {
$heroDto = Hero::toDto($heroDb); $heroDto = Hero::toDto($heroDb);
$info = array( $info = array(
'info' => $heroDto, 'info' => $heroDto,
'countdown' => 0 'countdown' => $heroDto['unlock_lefttime']
); );
} }
} }
@ -123,6 +123,80 @@ class HeroController extends BaseAuthedController {
public function receive() public function receive()
{ {
$type = getReqVal('type', 0);
$heroUniId = getReqVal('hero_uniid', 0);
$heroDb = Hero::find($heroUniId);
if (!$heroDb) {
$this->_rspErr(1, 'hero does not exist');
return;
}
$heroDto = Hero::toDto($heroDb);
if ($heroDto['unlock_lefttime'] > 0) {
$this->_rspErr(1, 'Countdown is not over');
return;
}
switch ($type) {
case 1:
{
$idx = 0;
$found = false;
for ($i = 0; $i < kMaxHeroUpLevelNum; ++$i) {
$upHeroUniId = $this->_getV(TN_HERO_LEVEL_UP, $i);
if ($upHeroUniId == $heroUniId) {
$idx = $i;
$found = true;
break;
}
}
if (!$found) {
$this->_rspErr(1, 'hero does not exist');
return;
}
$this->_setV(TN_HERO_LEVEL_UP, $idx, 0);
$propertyChgService = new services\PropertyChgService();
$propertyChgService->addHeroChg();
$propertyChgService->addBagChg();
$propertyChgService->addUserChg();
$rankActivityService = new service\RankActivityService();
$rankActivityService->heroUpgradeLevel($heroDb['hero_lv'] + 1);
$this->_rspData(array(
'property_chg' => $propertyChgService->toDto(),
));
}
break;
case 2:
{
$idx = 0;
$found = false;
for ($i = 0; $i < kMaxHeroUpQualityNum; ++$i) {
$upHeroUniId = $this->_getV(TN_HERO_QUALITY_UP, $i);
if ($upHeroUniId == $heroUniId) {
$idx = $i;
$found = true;
break;
}
}
if (!$found) {
$this->_rspErr(1, 'hero does not exist');
return;
}
$this->_setV(TN_HERO_QUALITY_UP, $idx, 0);
$propertyChgService = new services\PropertyChgService();
$propertyChgService->addHeroChg();
$propertyChgService->addBagChg();
$propertyChgService->addUserChg();
$this->_rspData(array(
'property_chg' => $propertyChgService->toDto(),
));
}
break;
default:
{
$this->_rspErr(1, 'type parameter error');
return;
}
break;
}
/* /*
$baseAttrs = mt\Hero::getHeroAttr($heroMeta); $baseAttrs = mt\Hero::getHeroAttr($heroMeta);
mt\AttrHelper::mergeAttr($baseAttrs, Bag::getAttrs()); mt\AttrHelper::mergeAttr($baseAttrs, Bag::getAttrs());
@ -347,17 +421,14 @@ class HeroController extends BaseAuthedController {
Hero::update($heroUniId, Hero::update($heroUniId,
array( array(
'hero_lv' => $heroDb['hero_lv'], 'hero_lv' => $heroDb['hero_lv'],
'quality' => $heroDb['quality'] + 1,
'rand_attr' => json_encode($attrs),
'lock_type' => Gun::QUALITY_LOCK, 'lock_type' => Gun::QUALITY_LOCK,
'unlock_time' => $this->_getNowTime() + $currQualityMeta['time'], 'unlock_time' => $this->_getNowTime() + $currQualityMeta['time'],
'unlock_trade_time' => $this->_getNowTime() + $currQualityMeta['time'] + mt\Parameter::getVal('hero_lock_transaction_time', 0)
) )
); );
$rankActivityService = new services\RankActivityService();
$rankActivityService->heroUpgradeQuality($heroDb['quality'] + 1);
$propertyChgService = new services\PropertyChgService(); $propertyChgService = new services\PropertyChgService();
$propertyChgService->addHeroChg(); $propertyChgService->addHeroChg();
$propertyChgService->addBagChg();
$propertyChgService->addUserChg();
$this->_rspData(array( $this->_rspData(array(
'property_chg' => $propertyChgService->toDto(), 'property_chg' => $propertyChgService->toDto(),
)); ));