新增礼物升星功能

master_otnew
grimm 2024-01-05 14:01:08 +08:00
parent 2421d26bc5
commit 27bf841cb6
4 changed files with 114 additions and 55 deletions

View File

@ -452,5 +452,7 @@ public interface BIReason {
int TRAINING_ARCH_UP_COST = 1338;//特训建筑升级消耗 int TRAINING_ARCH_UP_COST = 1338;//特训建筑升级消耗
int TRAINING_ARCH_UP_QUICK_COST = 1339;//特训建筑快速升级消耗 int TRAINING_ARCH_UP_QUICK_COST = 1339;//特训建筑快速升级消耗
int TRAINING_UP_LV_COST = 1340;//特训进阶消耗 int TRAINING_UP_LV_COST = 1340;//特训进阶消耗
int TRAINING_UNLOCK_SKILL_COST = 1340;//特训解锁技能消耗 int TRAINING_UNLOCK_SKILL_COST = 1341;//特训解锁技能消耗
int GIFT_UP_STAR_COST = 1342;//礼物装备升星
int GIFT_UP_STAR_GET = 1343;//礼物装备获得
} }

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.handler.equip;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.equip.EquipLogic;
import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
/**
*
*/
@Component
public class GiftUpStarEquipHandler extends BaseHandler<HeroInfoProto.GiftEquipUpStarRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.GiftEquipUpStarRequest;
}
@Override
public void processWithProto(ISession iSession, HeroInfoProto.GiftEquipUpStarRequest proto) throws Exception {
EquipLogic.getInstance().giftUpStar(iSession, proto);
}
}

View File

@ -12,7 +12,6 @@ import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent; import com.ljsd.jieling.logic.activity.event.SaveHeroForceEvent;
import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.TrainingLogic;
import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.tools.Utils; import com.ljsd.jieling.tools.Utils;
@ -515,11 +514,11 @@ public class EquipLogic {
String format = MessageFormat.format("礼物穿戴报错, 英雄礼物已穿戴uid{0}list{1}, roleList:{2}", user.getId(), giftIds, heroGifts); String format = MessageFormat.format("礼物穿戴报错, 英雄礼物已穿戴uid{0}list{1}, roleList:{2}", user.getId(), giftIds, heroGifts);
throw new ErrorCodeException(format); throw new ErrorCodeException(format);
} }
int boxNum = getHeroGiftBoxNum(user); // int boxNum = getHeroGiftBoxNum(user);
if (heroGifts.size() + set.size() > boxNum){ // if (heroGifts.size() + set.size() > boxNum){
String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量uid{0}wear{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum); // String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量uid{0}wear{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum);
throw new ErrorCodeException(format); // throw new ErrorCodeException(format);
} // }
int templateId = hero.getTemplateId(); int templateId = hero.getTemplateId();
SCHero scHero = SCHero.getsCHero().get(templateId); SCHero scHero = SCHero.getsCHero().get(templateId);
if (scHero == null){ if (scHero == null){
@ -547,25 +546,32 @@ public class EquipLogic {
} }
ItemUtil.itemCost(user, items, BIReason.GIFT_EQUIP_UP_COST ,1); ItemUtil.itemCost(user, items, BIReason.GIFT_EQUIP_UP_COST ,1);
} }
else { else {// 脱下
// 脱下 // 主角礼物
if (role.equals("0")){ if (role.equals("0")){
String format = MessageFormat.format("礼物脱卸报错, 主角礼物无法脱卸uid{0}", user.getId()); Set<Integer> playerGifts = playerManager.getPlayerGiftEquipList();
throw new ErrorCodeException(format); if (!playerGifts.containsAll(set)){
String format = MessageFormat.format("礼物脱卸报错, 主角礼物不存在uid{0}list{1}, roleList:{2}", user.getId(), giftIds, playerGifts);
throw new ErrorCodeException(format);
}
playerGifts.removeAll(set);
playerManager.setPlayerGiftEquipList(playerGifts);
} }
// 英雄礼物 else {
Hero hero = heroManager.getHero(role); // 英雄礼物
if (hero == null){ Hero hero = heroManager.getHero(role);
String format = MessageFormat.format("礼物脱卸报错, 英雄不存在uid{0}role{1}", user.getId(), role); if (hero == null){
throw new ErrorCodeException(format); String format = MessageFormat.format("礼物脱卸报错, 英雄不存在uid{0}role{1}", user.getId(), role);
throw new ErrorCodeException(format);
}
Set<Integer> heroGifts = hero.getHeroGiftEquipList();
if (!heroGifts.containsAll(set)){
String format = MessageFormat.format("礼物脱卸报错, 英雄礼物不存在uid{0}list{1}, roleList:{2}", user.getId(), giftIds, heroGifts);
throw new ErrorCodeException(format);
}
heroGifts.removeAll(set);
hero.setHeroGiftEquipList(heroGifts);
} }
Set<Integer> heroGifts = hero.getHeroGiftEquipList();
if (!heroGifts.containsAll(set)){
String format = MessageFormat.format("礼物脱卸报错, 英雄礼物不存在uid{0}list{1}, roleList:{2}", user.getId(), giftIds, heroGifts);
throw new ErrorCodeException(format);
}
heroGifts.removeAll(set);
hero.setHeroGiftEquipList(heroGifts);
ItemUtil.drop(user, items, BIReason.GIFT_EQUIP_DOWN_REWARD); ItemUtil.drop(user, items, BIReason.GIFT_EQUIP_DOWN_REWARD);
} }
@ -581,6 +587,29 @@ public class EquipLogic {
return false; return false;
} }
/**
*
*/
public void giftUpStar(ISession iSession, HeroInfoProto.GiftEquipUpStarRequest proto) throws Exception{
User user = UserManager.getUser(iSession.getUid());
int giftId = proto.getGiftId();
SEquipConfig config = SEquipConfig.equipConfigMap.get(giftId);
if (config == null){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
ArrayList<int[][]> costList = new ArrayList<>();
costList.add(config.getFormula());
costList.add(config.getResource());
boolean cost = ItemUtil.itemCost(user, costList, BIReason.GIFT_UP_STAR_COST, 1);
if (!cost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{{giftId, 1}}, BIReason.GIFT_UP_STAR_GET);
HeroInfoProto.GiftEquipUpStarResponse.Builder builder = HeroInfoProto.GiftEquipUpStarResponse.newBuilder().setDrop(drop);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GiftEquipUpStarResponse_VALUE, builder.build(), true);
}
/** /**
* *
*/ */
@ -646,44 +675,44 @@ public class EquipLogic {
* @param user * @param user
* @return * @return
*/ */
public int getGiftProsperityNum(User user){ // public int getGiftProsperityNum(User user){
Set<Integer> giftEquipList = user.getPlayerInfoManager().getPlayerGiftEquipList(); // Set<Integer> giftEquipList = user.getPlayerInfoManager().getPlayerGiftEquipList();
Map<Integer, SEquipConfig> configMap = SEquipConfig.equipConfigMap; // Map<Integer, SEquipConfig> configMap = SEquipConfig.equipConfigMap;
int num = 0; // int num = 0;
for (Integer id : giftEquipList) { // for (Integer id : giftEquipList) {
SEquipConfig config = configMap.get(id); // SEquipConfig config = configMap.get(id);
if (config == null){ // if (config == null){
continue; // continue;
} // }
num += config.getGift(); // num += config.getGift();
} // }
// 特训增加的额外收集值 // // 特训增加的额外收集值
int maxHeroNum = TrainingLogic.getInstance().getTrainingMaxHeroNum(user); // int maxHeroNum = TrainingLogic.getInstance().getTrainingMaxHeroNum(user);
int value = SSpecialConfig.getIntegerValue("Train_Gift_shouji"); // int value = SSpecialConfig.getIntegerValue("Train_Gift_shouji");
num += (maxHeroNum * value); // num += (maxHeroNum * value);
//
return num; // return num;
} // }
/** /**
* *
* @param user * @param user
* @return * @return
*/ */
public int getHeroGiftBoxNum(User user){ // public int getHeroGiftBoxNum(User user){
int prosperityNum = getGiftProsperityNum(user); // int prosperityNum = getGiftProsperityNum(user);
int resultBox = 0; // int resultBox = 0;
//
// 英雄礼物基础格子 // // 英雄礼物基础格子
for (SGiftConfig value : SGiftConfig.map.values()) { // for (SGiftConfig value : SGiftConfig.map.values()) {
if (prosperityNum >= value.getGift()){ // if (prosperityNum >= value.getGift()){
resultBox = value.getBox(); // resultBox = value.getBox();
}else { // }else {
break; // break;
} // }
} // }
return resultBox; // return resultBox;
} // }
/** /**
* *

View File

@ -55,6 +55,10 @@ public class SItem implements BaseConfig {
return sItemMap; return sItemMap;
} }
public static SItem getItem(int id) {
return sItemMap.get(id);
}
public static Map<Integer, List<SItem>> getItemMapByRecycle() { public static Map<Integer, List<SItem>> getItemMapByRecycle() {
return itemMapByRecycle; return itemMapByRecycle;
} }