From cec0178662ab7c003d7feda3c36203392eae6649 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 6 Jan 2022 17:31:00 +0800 Subject: [PATCH] 1 --- webapp/controller/HeroController.class.php | 39 +++++++----------- webapp/mt/AttrHelper.php | 47 ++++++---------------- 2 files changed, 27 insertions(+), 59 deletions(-) diff --git a/webapp/controller/HeroController.class.php b/webapp/controller/HeroController.class.php index 1356897c..10a9496c 100644 --- a/webapp/controller/HeroController.class.php +++ b/webapp/controller/HeroController.class.php @@ -5,6 +5,7 @@ require_once('mt/Hero.php'); require_once('mt/Item.php'); require_once('mt/HeroLevel.php'); require_once('mt/HeroQuality.php'); +require_once('mt/AttrHelper.php'); require_once('models/Hero.php'); require_once('models/HeroSkin.php'); @@ -195,16 +196,6 @@ class HeroController extends BaseAuthedController { $this->_rspErr(2, '锁定期间不能操作'); return; } - $initLevelMeta = mt\HeroLevel::getByQualityLevel(1, 1); - if (!$initLevelMeta) { - $this->_rspErr(100, '服务器内部错误'); - return; - } - $initQualityMeta = mt\HeroQuality::getByQuality(1); - if (!$initQualityMeta) { - $this->_rspErr(100, '服务器内部错误'); - return; - } $currQualityMeta = mt\HeroQuality::getByQuality($heroDb['quality']); if (!$currQualityMeta) { $this->_rspErr(100, '服务器内部错误'); @@ -212,12 +203,12 @@ class HeroController extends BaseAuthedController { } $nextQualityMeta = mt\HeroQuality::getByQuality($heroDb['quality'] + 1); if (!$nextQualityMeta) { - $this->_rspErr(5, '已满级'); + $this->_rspErr(5, '已满级1'); return; } - $nextLevelMeta = mt\HeroLevel::getByQualityLevel($heroDb['quality'] + 1, $heroDb['level']); + $nextLevelMeta = mt\HeroLevel::getByQualityLevel($heroDb['quality'] + 1, $heroDb['hero_lv']); if (!$nextLevelMeta) { - $this->_rspErr(5, '已满级'); + $this->_rspErr(5, '已满级2'); return; } $costItems = array(); @@ -254,19 +245,13 @@ class HeroController extends BaseAuthedController { $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); return; } - $oldAttr = json_decode($heroDb['rand_attr'], true); - $randAttr = $oldAttr; - $ret = false; + $attrs = emptyReplace(json_decode($heroDb['rand_attr'], true), array()); { - $ret = mt\HeroQuality::getNextAttr($initQualityMeta, $nextQualityMeta, $oldAttr, $randAttr); - if (!$ret) { - $this->_rspErr(2, '服务器内部错误'); - return; - } - $oldAttr = $randAttr; + $obtainAttrs = mt\HeroQuality::getRandAttr($nextQualityMeta); + mt\AttrHelper::mergeAttr($attrs, $obtainAttrs); } { - $ret = mt\HeroLevel::getNextAttr($initLevelMeta, $nextLevelMeta, $oldAttr, $randAttr); + $ret = mt\HeroLevel::addRandAttr($nextLevelMeta, $attrs); if (!$ret) { $this->_rspErr(2, '服务器内部错误'); return; @@ -275,10 +260,16 @@ class HeroController extends BaseAuthedController { $this->_decItems($costItems); Hero::update($heroUniId, array( + 'hero_lv' => $heroDb['hero_lv'], 'quality' => $heroDb['quality'] + 1, - 'rand_attr' => json_encode($randAttr) + 'rand_attr' => json_encode($attrs) ) ); + $propertyChgService = new services\PropertyChgService(); + $propertyChgService->addHeroChg(); + $this->_rspData(array( + 'property_chg' => $propertyChgService->toDto(), + )); } } diff --git a/webapp/mt/AttrHelper.php b/webapp/mt/AttrHelper.php index 58cee428..87ec960e 100644 --- a/webapp/mt/AttrHelper.php +++ b/webapp/mt/AttrHelper.php @@ -6,45 +6,22 @@ use phpcommon; class AttrHelper { - public static function parseAttrCfg($attrStr) + public static function mergeAttr(&$tarAttrs, $srcAttrs) { - $attrs = array(); - $strs = explode('|', $attrStr); - foreach ($strs as $str) { - $strs1 = explode('|', $attrStr); - array_push($attrs, - array( - 'attr_id' => $strs1[0], - 'type' => $strs1[1], - )); - } - return $attrs; - } - - public static function mergeAttr($aAttr, $bAttr) - { - - } - - public static function canMergeCfg($aAttr, $bAttr) - { - foreach ($bAttr as $attr){ - if (!array_find($aAttr, function($val) use($attr) { - if ($val['attr_id'] == $attr['attr_id'] && - $val['type'] == $attr['type']) { - return true; + foreach ($srcAttrs as $srcAttr) { + $found = false; + foreach ($tarAttrs as &$tarAttr) { + if ($tarAttr['attr_id'] == $srcAttr['attr_id'] && + $tarAttr['type'] == $srcAttr['type']) { + $tarAttr['val'] += $srcAttr['val']; + $found = true; + break; } - return false; - })) { - return false; + }//end for tarAttrs + if (!$found) { + array_push($tarAttrs, $srcAttr); } } - return true; - } - - public static function randAttr($attr, $outAttr) - { - } }