diff --git a/webapp/controller/HeroController.class.php b/webapp/controller/HeroController.class.php index 85a68ca2..bd973b1f 100644 --- a/webapp/controller/HeroController.class.php +++ b/webapp/controller/HeroController.class.php @@ -3,6 +3,8 @@ require_once('mt/Shop.php'); require_once('mt/Hero.php'); require_once('mt/Item.php'); +require_once('mt/HeroLevel.php'); +require_once('mt/HeroQuality.php'); require_once('models/Hero.php'); require_once('models/HeroSkin.php'); @@ -86,6 +88,7 @@ class HeroController extends BaseAuthedController { public function upgradeLevel() { + $costItemId = getReqVal('cost_item_id', 0); $heroUniId = getReqVal('hero_uniid', 0); $heroDb = Hero::find($heroUniId); if (!$heroDb) { @@ -104,11 +107,64 @@ class HeroController extends BaseAuthedController { $this->_rspErr(2, '锁定期间不能操作'); return; } - $heroMeta = mt\Hero::get($heroDb['hero_id']); - if (!$heroMeta) { + $initLevelMeta = mt\HeroLevel::get(1, 1); + if (!$initLevelMeta) { $this->_rspErr(100, '服务器内部错误'); return; } + $currLevelMeta = mt\HeroLevel::get($heroDb['quality'], $heroDb['hero_lv']); + if (!$currLevelMeta) { + $this->_rspErr(100, '服务器内部错误'); + return; + } + $nextLevelMeta = mt\HeroLevel::get($heroDb['quality'], $heroDb['hero_lv'] + 1); + if (!$nextLevelMeta) { + $this->_rspErr(5, '已满级'); + return; + } + $costItems = array(); + switch ($costItemId) { + case V_ITEM_GOLD: + { + $costItems = array( + array( + 'item_id' => $costItemId, + 'item_num' => $currLevelMeta['gold'] + ) + ); + } + break; + case V_ITEM_DIAMOND: + { + $costItems = array( + array( + 'item_id' => $costItemId, + 'item_num' => $currLevelMeta['diamond'] + ) + ); + } + break; + default: + { + $this->_rspErr(2, '支付方式不支持'); + return; + } + break; + } + $lackItem = null; + if (!$this->_hasEnoughItems($costItems, $lackItem)) { + $this->_rspErr(3, $this->_getLackItemErrMsg($lackItem)); + return; + } + $randAttr = array(); + $this->_decItems($costItems); + Hero::update($heroUniId, + array( + 'level' => $heroDb['level'] + 1, + 'rand_attr' => json_encode($randAttr) + ) + ); + } public function upgradeQuality() diff --git a/webapp/mt/HeroLevel.php b/webapp/mt/HeroLevel.php index 1bd5806e..0c7205ff 100644 --- a/webapp/mt/HeroLevel.php +++ b/webapp/mt/HeroLevel.php @@ -17,6 +17,11 @@ class HeroLevel { return getXVal(self::$qualityLevelHash, $quality . '_' . $level, null); } + public static function getRandAttr($initMeta, $currMeta) + { + + } + protected static function getMetaList() { if (!self::$metaList) {