|
@@ -899,34 +899,37 @@ class StoreProc {
|
|
|
$user = $req->userInfo->game; # user引用
|
|
|
list($itemtype, $equipuid, $herouid) = $req->pars; # 提取参数: 装备类型, 装备的UID, 英雄的UID
|
|
|
|
|
|
- if (!CommUtil::isPropertyExists($user->store->equipment, $equipuid)) { # 1.检测是否存在该装备
|
|
|
+
|
|
|
+ if (!CommUtil::isPropertyExists($user->store->equipment, $equipuid)) { # 检测是否存在该装备
|
|
|
Err(ErrCode::store_itemno_err);
|
|
|
}
|
|
|
+ $equipVo = $user->store->equipment->$equipuid; # 取装备对象
|
|
|
+ if ($equipVo->herouid > 0 && $equipVo->herouid != $herouid) { # 检测该装备是否装备到其他英雄身上
|
|
|
+ Err(ErrCode::store_equipWeared_err);
|
|
|
+ }
|
|
|
$collectHeros = $user->heros->collectHeros;
|
|
|
if (!$collectHeros) { # 防御对象为空
|
|
|
Err(ErrCode::err_innerfault);
|
|
|
}
|
|
|
- if (!CommUtil::isPropertyExists($collectHeros, $herouid)) { # 2.检查是否存在需要装备的英雄
|
|
|
+ if (!CommUtil::isPropertyExists($collectHeros, $herouid)) { # 检查是否存在需要装备的英雄
|
|
|
Err(ErrCode::hero_no);
|
|
|
}
|
|
|
|
|
|
- foreach ($collectHeros as $tmpheroid => $tempvalue) { // 3.检测该装备是否装备到其他英雄身上
|
|
|
- if ($tempvalue->equip->weapon->itemuid == $equipuid) { # 武器
|
|
|
- Err(ErrCode::store_equipWeared_err);
|
|
|
- } elseif ($tempvalue->equip->armor->itemuid == $equipuid) { # 防具
|
|
|
- Err(ErrCode::store_equipWeared_err);
|
|
|
- } elseif ($tempvalue->equip->ring->itemuid == $equipuid) { # 饰品
|
|
|
- Err(ErrCode::store_equipWeared_err);
|
|
|
- }
|
|
|
- }
|
|
|
- if ($itemtype == 1) { // 4.添加或替换英雄该部位的装备
|
|
|
- $collectHeros->$herouid->equip->weapon->itemuid = $equipuid;
|
|
|
- }
|
|
|
- if ($itemtype == 2) { # 防具
|
|
|
- $collectHeros->$herouid->equip->armor->itemuid = $equipuid;
|
|
|
- }
|
|
|
- if ($itemtype == 3) { # 防具
|
|
|
- $collectHeros->$herouid->equip->ring->itemuid = $equipuid;
|
|
|
+ $user->store->equipment->$equipuid->herouid = $herouid; # 装备上添加反向引用, 避免查询时的循环
|
|
|
+
|
|
|
+ switch ($itemtype) { # 添加或替换英雄该部位的装备
|
|
|
+ case 1: # 武器
|
|
|
+ $collectHeros->$herouid->equip->weapon->itemuid = $equipuid;
|
|
|
+ break;
|
|
|
+ case 2: # 防具
|
|
|
+ $collectHeros->$herouid->equip->armor->itemuid = $equipuid;
|
|
|
+ break;
|
|
|
+ case 3: # 饰品
|
|
|
+ $collectHeros->$herouid->equip->ring->itemuid = $equipuid;
|
|
|
+ break;
|
|
|
+ default :
|
|
|
+ Err(ErrCode::store_equip_type);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
UserProc::updateUserInfo($req); // 5.回写数据
|
|
@@ -949,15 +952,21 @@ class StoreProc {
|
|
|
if (!$collectHeros) {
|
|
|
Err(ErrCode::err_innerfault);
|
|
|
}
|
|
|
- if (!CommUtil::isPropertyExists($collectHeros, $herouid)) { // 1.检测是否存在拥有该装备的英雄
|
|
|
+ if (!CommUtil::isPropertyExists($collectHeros, $herouid)) { # 检测是否存在拥有该装备的英雄
|
|
|
Err(ErrCode::hero_no);
|
|
|
}
|
|
|
- switch ($itemtype) { // 2.检测该装备是否装备在该英雄身上
|
|
|
+ if (!CommUtil::isPropertyExists($user->store->equipment, $equipuid)) { # 检测是否存在该装备
|
|
|
+ Err(ErrCode::store_itemno_err);
|
|
|
+ }
|
|
|
+ if ($user->store->equipment->$equipuid->herouid == $herouid) { # 取装备对象
|
|
|
+ $user->store->equipment->$equipuid->herouid = 0;
|
|
|
+ }
|
|
|
+ switch ($itemtype) { # 检测该装备是否装备在该英雄身上
|
|
|
case 1: # 武器
|
|
|
if ($collectHeros->$herouid->equip->weapon->itemuid != $equipuid) {
|
|
|
Err(ErrCode::store_noequip_err);
|
|
|
}
|
|
|
- $collectHeros->$herouid->equip->weapon->itemuid = 0; // 卸下
|
|
|
+ $collectHeros->$herouid->equip->weapon->itemuid = 0; # 卸下
|
|
|
break;
|
|
|
case 2: # 防具
|
|
|
if ($collectHeros->$herouid->equip->armor->itemuid != $equipuid) {
|
|
@@ -974,7 +983,7 @@ class StoreProc {
|
|
|
default :
|
|
|
Err(ErrCode::store_equip_type);
|
|
|
}
|
|
|
- UserProc::updateUserInfo($req); # 5.回写数据
|
|
|
+ UserProc::updateUserInfo($req); # 回写数据
|
|
|
$ret = array('resp' => "succeed!");
|
|
|
$resp = Resp::ok($ret); // 返回
|
|
|
// StoreProc::CheckItemNum($req);
|