灵兽分页,背包已满 添加
parent
1c3102157d
commit
c2bbab2c13
|
@ -156,6 +156,7 @@ public enum ErrorCode implements IErrorCode {
|
|||
NOT_IN_TAKE_TIME(126, "不在领取期间"),
|
||||
USER_LEVE_DOWN(127,"玩家等级不够"),
|
||||
HAS_AWAKE(130,"已达最大星级"),
|
||||
BAG_FULL(135,"背包内存储空间不足,无法领取附件"),
|
||||
SERVER_DEFINE_SELF(20000,"操作失败")
|
||||
|
||||
;
|
||||
|
|
|
@ -13,7 +13,7 @@ public interface GlobalItemType {
|
|||
int CARD = 1; // 卡牌
|
||||
int CARD_FRAGMENT = 2; // 卡牌碎片
|
||||
int EQUIP = 3; //装备
|
||||
int POKENMON_COMONPENT = 4; //异妖组件
|
||||
int POKENMON_COMONPENT = 4; //异妖组件(暂时无用)
|
||||
int RANDOM_ITME = 5; // 随机道具
|
||||
int RUNNE = 6; //符文
|
||||
int BLUE_IMAGE=7; // 蓝图
|
||||
|
|
|
@ -4,18 +4,20 @@ import com.ljsd.jieling.handler.BaseHandler;
|
|||
import com.ljsd.jieling.logic.hero.HeroLogic;
|
||||
import com.ljsd.jieling.netty.cocdex.PacketNetData;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.HeroInfoProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class GetAllPokemonHandler extends BaseHandler {
|
||||
public class GetAllPokemonHandler extends BaseHandler<HeroInfoProto.GetAllPokemonRequest> {
|
||||
@Override
|
||||
public MessageTypeProto.MessageType getMessageCode() {
|
||||
return MessageTypeProto.MessageType.GET_ALL_POKEMON_REQUEST;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void process(ISession iSession, PacketNetData netData) throws Exception {
|
||||
HeroLogic.getInstance().getAllPokemon(iSession);
|
||||
public void processWithProto(ISession iSession, HeroInfoProto.GetAllPokemonRequest proto) throws Exception {
|
||||
HeroLogic.getInstance().getAllPokemon(iSession,proto.getStart());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2900,7 +2900,7 @@ public class HeroLogic{
|
|||
* @param iSession
|
||||
* @throws Exception
|
||||
*/
|
||||
public void getAllPokemon(ISession iSession) throws Exception {
|
||||
public void getAllPokemon(ISession iSession,int start) throws Exception {
|
||||
int uid = iSession.getUid();
|
||||
User user = UserManager.getUser(uid);
|
||||
PokemonManager pokemonManager = user.getPokemonManager();
|
||||
|
@ -2916,32 +2916,32 @@ public class HeroLogic{
|
|||
for(String key:removeKey){
|
||||
pokemonManager.removePokemon(key);
|
||||
}
|
||||
//
|
||||
// //TODO 测试
|
||||
// if(pokemonMap.isEmpty()){
|
||||
// for(SDifferDemonsConfig sDifferDemonsConfig : SDifferDemonsConfig.sDifferDemonsConfigMap.values() ){
|
||||
// pokemonManager.addPokemon(new Pokemon(sDifferDemonsConfig.getId()));
|
||||
// }
|
||||
// }
|
||||
|
||||
List<CommonProto.PokemonInfo> pokemonInfoList = new ArrayList<>();
|
||||
//
|
||||
|
||||
int pageSize = Global.SEND_CARD_COUNT;
|
||||
int index = 0;
|
||||
for(Pokemon pokemon : pokemonMap.values()){
|
||||
pokemonInfoList.add(CBean2Proto.getPokemon(pokemon));
|
||||
if(index>=start&&index<start+pageSize){
|
||||
pokemonInfoList.add(CBean2Proto.getPokemon(pokemon));
|
||||
}
|
||||
index++;
|
||||
}
|
||||
List<CommonProto.TeamPokemonInfo> teamPokemonInfos = new ArrayList<>();
|
||||
for (Map.Entry<Integer, String> entry : pokemonManager.getPokemonTeamMap().entrySet()) {
|
||||
CommonProto.TeamPokemonInfo teamPokemonInfo = CommonProto.TeamPokemonInfo.newBuilder()
|
||||
.setPokemonId(entry.getValue())
|
||||
.setPosition(entry.getKey())
|
||||
.build();
|
||||
teamPokemonInfos.add(teamPokemonInfo);
|
||||
HeroInfoProto.GetAllPokemonResponse.Builder builder = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList);
|
||||
if(pokemonInfoList.size()<pageSize){
|
||||
List<CommonProto.TeamPokemonInfo> teamPokemonInfos = new ArrayList<>();
|
||||
for (Map.Entry<Integer, String> entry : pokemonManager.getPokemonTeamMap().entrySet()) {
|
||||
CommonProto.TeamPokemonInfo teamPokemonInfo = CommonProto.TeamPokemonInfo.newBuilder()
|
||||
.setPokemonId(entry.getValue())
|
||||
.setPosition(entry.getKey())
|
||||
.build();
|
||||
teamPokemonInfos.add(teamPokemonInfo);
|
||||
}
|
||||
builder.addAllTeamPokemonInfos(teamPokemonInfos)
|
||||
.addAllPokemonGot(pokemonManager.getPokemonGot())
|
||||
.addAllPokemonBookEnabled(pokemonManager.getPokemonBookEnabled());
|
||||
}
|
||||
HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList)
|
||||
.addAllTeamPokemonInfos(teamPokemonInfos)
|
||||
.addAllPokemonGot(pokemonManager.getPokemonGot())
|
||||
.addAllPokemonBookEnabled(pokemonManager.getPokemonBookEnabled())
|
||||
.build();
|
||||
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,build,true);
|
||||
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,builder.build(),true);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -233,6 +233,7 @@ public class MailLogic {
|
|||
if (isLimit){
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_POCKET_IS_FULL);
|
||||
}
|
||||
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr, BIReason.TAKE_MAIL_REWARD);
|
||||
for (String mailId : mailIdsList){
|
||||
Mail mail = mailManager.getMail(mailId);
|
||||
mail.setState(Global.MAIL_DRAW_ST_GOT);
|
||||
|
@ -240,7 +241,6 @@ public class MailLogic {
|
|||
mail.setNoUseDeleteTime(TimeUtils.now()+TimeUtils.DAY*Global.MAIL_NOUSE_DELETE_TIME);
|
||||
mailManager.addMail(mail);
|
||||
}
|
||||
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, itemArr, BIReason.TAKE_MAIL_REWARD);
|
||||
|
||||
PlayerInfoProto.TakeMailResponse takeMailResponse = PlayerInfoProto.TakeMailResponse.newBuilder()
|
||||
.setDrop(dropBuilder)
|
||||
|
|
|
@ -549,7 +549,6 @@ public class ItemUtil {
|
|||
private static int getItemType(SItem sItem) {
|
||||
int itemType = sItem.getItemType();
|
||||
switch (sItem.getItemType()) {
|
||||
case GlobalItemType.POKENMON_COMONPENT:
|
||||
case GlobalItemType.RUNNE:
|
||||
case GlobalItemType.CARD_FRAGMENT:
|
||||
case GlobalItemType.BLUE_IMAGE:
|
||||
|
@ -594,6 +593,9 @@ public class ItemUtil {
|
|||
List<CommonProto.Item> itemProtoList = new CopyOnWriteArrayList<>();
|
||||
ItemManager itemManager = user.getItemManager();
|
||||
List<CommonProto.Item> sendToFront = new CopyOnWriteArrayList<>();
|
||||
//超过上限不能直接获得
|
||||
Map<Integer,Integer> extraItem = new HashMap<>(itemMap.size());
|
||||
|
||||
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) {
|
||||
SItem sItem = SItem.getsItemMap().get (entry.getKey());
|
||||
int itemNumlimit = sItem.getItemNumlimit();
|
||||
|
@ -611,15 +613,30 @@ public class ItemUtil {
|
|||
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
|
||||
itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax();
|
||||
}
|
||||
if(item.getItemNum()>= itemNumlimit){
|
||||
//数量超过了
|
||||
if(item.getItemNum()> itemNumlimit){
|
||||
|
||||
//如果是寻龙玉,直接返回不给
|
||||
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
|
||||
continue;
|
||||
}
|
||||
if(reason==BIReason.TAKE_MAIL_REWARD){
|
||||
throw new ErrorCodeException(ErrorCode.BAG_FULL);
|
||||
}else{
|
||||
extraItem.put(entry.getKey(),extraItem.getOrDefault(entry.getKey(),0)+entry.getValue());
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (item.getItemNum() + entry.getValue() >= itemNumlimit){
|
||||
if (item.getItemNum() + entry.getValue() > itemNumlimit){
|
||||
if(sItem.getId()==Global.MISSING_ROOM_ITEM&&reason==BIReason.ADVENTURE_BASE_REWARD){
|
||||
item.setItemNum(item.getItemNum() + entry.getValue());
|
||||
}else{
|
||||
itemNum = itemNumlimit -item.getItemNum();
|
||||
item.setItemNum(itemNumlimit);
|
||||
if(reason==BIReason.TAKE_MAIL_REWARD){
|
||||
throw new ErrorCodeException(ErrorCode.BAG_FULL);
|
||||
}else{
|
||||
extraItem.put(entry.getKey(),extraItem.getOrDefault(entry.getKey(),0)+entry.getValue());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
item.setItemNum(item.getItemNum() + entry.getValue());
|
||||
|
@ -629,20 +646,12 @@ public class ItemUtil {
|
|||
if(itemNum>=0){
|
||||
itemProtoList.add(CBean2Proto.getItem(item,itemNum));
|
||||
}
|
||||
// int eventType = ParamEventBean.UserItemEvent;
|
||||
// if(currencyMap.contains(entry.getKey())){
|
||||
// eventType = ParamEventBean.UserCurrencyEvent;
|
||||
// }
|
||||
// KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum());
|
||||
|
||||
|
||||
ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId());
|
||||
|
||||
baseItemReport(user,item.getItemId(),itemNum,1,reason);
|
||||
|
||||
if(sItem.getItemType() == GlobalItemType.POKENMON_COMONPENT && sItem.getQuantity()>=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_differ_content_parm)){
|
||||
SDifferDemonsConfig sDifferDemonsConfig = SDifferDemonsConfig.sDifferDemonsConfigMapByComId.get(sItem.getId());
|
||||
String nickName = user.getPlayerInfoManager().getNickName();
|
||||
String message = SErrorCodeEerverConfig.getI18NMessage("lamp_lottery_differ_content_"+ sItem.getQuantity(), new Object[]{nickName,sDifferDemonsConfig.getName(),sItem.getName()});
|
||||
ChatLogic.getInstance().sendSysChatMessage(message,Global.LUCKY_LUCK,sItem.getId(),0,0,0,0,0);
|
||||
}
|
||||
if(sItem.getId() == Global.EXP){
|
||||
userLevelUp(user,itemNum);
|
||||
}
|
||||
|
@ -665,11 +674,25 @@ public class ItemUtil {
|
|||
//日志记录
|
||||
ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),0,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,sItem.getId(),itemNum,item.getItemNum()));
|
||||
}
|
||||
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){
|
||||
itemProtoList.add(CBean2Proto.getItem(itemManager.getItemMap().get(entry.getKey()),entry.getValue()));
|
||||
}
|
||||
if (dropBuilder != null) {
|
||||
dropBuilder.addAllItemlist(itemProtoList);
|
||||
}
|
||||
if(!sendToFront.isEmpty()){
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront);
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,extraItem.size()>0);
|
||||
}
|
||||
if(extraItem.size()>0){
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for(Map.Entry<Integer,Integer> entry:extraItem.entrySet()){
|
||||
builder.append(entry.getKey()).append("#").append(entry.getValue());
|
||||
String title = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_title");
|
||||
SItem item = SItem.getsItemMap().get(entry.getKey());
|
||||
String content = SErrorCodeEerverConfig.getI18NMessage("item_max_mail_content",new String[]{item.getName(),String.valueOf(item.getItemNumlimit())});
|
||||
MailLogic.getInstance().sendMail(user.getId(),title,content,builder.toString(),TimeUtils.nowInt(),Global.MAIL_EFFECTIVE_TIME);
|
||||
builder = new StringBuilder();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -815,7 +838,7 @@ public class ItemUtil {
|
|||
}
|
||||
|
||||
if(!sendToFront.isEmpty()){
|
||||
MessageUtil.sendBagIndication(user.getId(),1,sendToFront);
|
||||
MessageUtil.sendBagIndication(user.getId(),1,sendToFront,false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -871,7 +894,7 @@ public class ItemUtil {
|
|||
}
|
||||
user.getItemManager().setItemMap(itemMap);
|
||||
if(!sendToFront.isEmpty()){
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront);
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,false);
|
||||
}
|
||||
for(PropertyItem equip:equips){
|
||||
equipsToBag(user,isVictory,equip,rewardStr);
|
||||
|
@ -965,10 +988,10 @@ public class ItemUtil {
|
|||
sendToFront.add(CBean2Proto.getItem(myItem,-1));
|
||||
}
|
||||
if(!sendToFront.isEmpty()){
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront);
|
||||
MessageUtil.sendBagIndication(user.getId(),0,sendToFront,false);
|
||||
}
|
||||
if(!sendTemToFront.isEmpty()){
|
||||
MessageUtil.sendBagIndication(user.getId(),1,sendTemToFront);
|
||||
MessageUtil.sendBagIndication(user.getId(),1,sendTemToFront,false);
|
||||
}
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.CONSUMER_MATERIAL,useItemMap);
|
||||
Poster.getPoster().dispatchEvent(new UseItemEvent(user.getId(),useItemMap));
|
||||
|
|
|
@ -95,15 +95,15 @@ public class MessageUtil {
|
|||
user.getPlayerInfoManager().setReds(reds);
|
||||
}
|
||||
|
||||
public static void sendBagIndication(int sendUid,int type, List<CommonProto.Item> sendToFront) {
|
||||
public static void sendBagIndication(int sendUid,int type, List<CommonProto.Item> sendToFront,boolean isMax) {
|
||||
if(null!= SimpleTransaction.current()){
|
||||
PlayerInfoProto.UpdateBagIndication.Builder build = PlayerInfoProto.UpdateBagIndication.newBuilder().addAllItem(sendToFront).setType(type);
|
||||
PlayerInfoProto.UpdateBagIndication.Builder build = PlayerInfoProto.UpdateBagIndication.newBuilder().addAllItem(sendToFront).setType(type).setIsMax(isMax?1:0);
|
||||
SimpleTransaction.current().dealWhileCommit(new SimpleTransaction.SendTask(build.build(), MessageTypeProto.MessageType.UPDATE_BAG_INDICATION_VALUE));
|
||||
return;
|
||||
}
|
||||
ISession session = OnlineUserManager.sessionMap.get(sendUid);
|
||||
if(session!=null){
|
||||
PlayerInfoProto.UpdateBagIndication build = PlayerInfoProto.UpdateBagIndication.newBuilder().addAllItem(sendToFront).setType(type).build();
|
||||
PlayerInfoProto.UpdateBagIndication build = PlayerInfoProto.UpdateBagIndication.newBuilder().addAllItem(sendToFront).setType(type).setIsMax(isMax?1:0).build();
|
||||
MessageUtil.sendIndicationMessage(session,1,MessageTypeProto.MessageType.UPDATE_BAG_INDICATION_VALUE,build,true);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue