back_recharge
zhangshanxue 2019-10-29 11:33:32 +08:00
commit 121f54fff3
7 changed files with 122 additions and 59 deletions

View File

@ -2,7 +2,6 @@ package com.ljsd.jieling.core;
import com.ljsd.GameApplication;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.exception.ErrorUtil;
import com.ljsd.jieling.handler.BaseHandler;
@ -11,7 +10,6 @@ import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.MainLevelManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
@ -19,7 +17,6 @@ import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.AyyncWorker;
import com.ljsd.jieling.util.MessageUtil;
import config.SChallengeConfig;
import config.SErrorCodeEerverConfig;
import config.SGlobalSystemConfig;
import config.SMainLevelConfig;
import manager.STableManager;

View File

@ -173,7 +173,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler {
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
}
private void getAllMissRewards(User user, ISession session, List<int[][]> itemAttrs) throws Exception {
public void getAllMissRewards(User user, ISession session, List<int[][]> itemAttrs) throws Exception {
List<Integer> misssIds = new LinkedList<>();
List<SActivityRewardConfig> cfgs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id);
if (null == cfgs) {

View File

@ -69,28 +69,11 @@ public class TreasureActivity extends AbstractActivity {
private void takeTreasureReward(ISession session, User user, int activityId, int missionId) throws Exception {
int rewardResponseValue = MessageTypeProto.MessageType.TAKE_ACTIVITY_REWARD_RESPONSE_VALUE;
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
int changeState = ActivityType.HAD_TAKED;
int hadBuyTreasure = playerInfoManager.getHadBuyTreasure();
if (hadBuyTreasure == 1) {
changeState = ActivityType.FINISH_TAKED;
}
int changeState = getChangerState(user);
List<int[][]> dropList = new ArrayList<>(2);
Set<Integer> missionIds = new HashSet<>();
// Set<Integer> missionIds = new HashSet<>();
if(missionId==-1){
for(int i = 1 ; i<=user.getPlayerInfoManager().getTreasureLevel();i++){
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityProgressInfoMap();
int state =progressInfoMap.get(i).getState();
if(state==changeState||state==ActivityType.FINISH_TAKED) {
continue;
}
missionIds.add(i);
dropByState(dropList,state,changeState,i);
ActivityProgressInfo progressInfo = new ActivityProgressInfo(0,changeState);
activityMission.updateProgressInfo(i, progressInfo);
}
getAllTreasureRewards(user,activityMission,changeState,dropList);
}else{
int state = activityMission.getActivityProgressInfoMap().get(missionId).getState();
if(state==changeState||state==ActivityType.FINISH_TAKED){
@ -99,7 +82,7 @@ public class TreasureActivity extends AbstractActivity {
dropByState(dropList,state,changeState,missionId);
ActivityProgressInfo progressInfo = new ActivityProgressInfo(0,changeState);
activityMission.updateProgressInfo(missionId, progressInfo);
missionIds.add(missionId);
// missionIds.add(missionId);
}
// sendActivityProgress(session,activityMission,missionIds);
@ -205,4 +188,31 @@ public class TreasureActivity extends AbstractActivity {
}
}
private int getChangerState(User user){
PlayerManager playerInfoManager = user.getPlayerInfoManager();
int changeState = ActivityType.HAD_TAKED;
int hadBuyTreasure = playerInfoManager.getHadBuyTreasure();
if (hadBuyTreasure == 1) {
changeState = ActivityType.FINISH_TAKED;
}
return changeState;
}
private void getAllTreasureRewards(User user,ActivityMission activityMission,int changeState,List<int[][]> dropList){
for(int i = 1 ; i<=user.getPlayerInfoManager().getTreasureLevel();i++){
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityProgressInfoMap();
int state =progressInfoMap.get(i).getState();
if(state==changeState||state==ActivityType.FINISH_TAKED) {
continue;
}
dropByState(dropList,state,changeState,i);
ActivityProgressInfo progressInfo = new ActivityProgressInfo(0,changeState);
activityMission.updateProgressInfo(i, progressInfo);
}
}
@Override
public void getAllMissRewards(User user, ISession session, List<int[][]> itemAttrs){
getAllTreasureRewards(user, user.getActivityManager().getActivityMissionMap().get(id), getChangerState(user), itemAttrs);
}
}

View File

@ -151,7 +151,18 @@ public class GuildLogic {
Collection<GuildInfo> guildInfos = GuilidManager.recommandGuild(user);
Family.FamilyRecommandResponse.Builder builder = Family.FamilyRecommandResponse.newBuilder();
Map<Integer, GuildApply> applyGuildInfos = GuilidManager.getApplyGuildInfos(uid, 1);
int now =(int)(System.currentTimeMillis()/1000);
if(applyGuildInfos.size()>0){
for(Map.Entry<Integer, GuildApply> applyEntry:applyGuildInfos.entrySet()){
GuildApply guildApply = applyEntry.getValue();
if(now - guildApply.getCreateTime() > SGuildSetting.sGuildSetting.getApplyReserve()){
GuilidManager.removeOneApplyGuildInfos(guildApply.getGuildId(),guildApply.getId());
continue;
}
}
}
for(GuildInfo guildInfo : guildInfos){
builder.addFamilyRecomandInfo(Family.FamilyRecomandInfo.newBuilder().
setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo))
.setIsApply(applyGuildInfos.containsKey(guildInfo.getId())?1:0)

View File

@ -258,10 +258,10 @@ public class CombatLogic {
}
}
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
int timesTemp =times;
while (timesTemp-->0){
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
}
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
@ -900,10 +900,10 @@ public class CombatLogic {
Integer times = fightStateInfoItem.getValue();
SMainLevelConfig sMainLevelConfig = SMainLevelConfig.config.get(fightId);
int[] randomRewardMin = sMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
int timesTemp =times;
while (!viewBaseReward&&timesTemp-->0){
ItemUtil.combineReward(user,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.combineReward(user,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
}
takeTimes+=times;
}
@ -918,10 +918,10 @@ public class CombatLogic {
if(maxTimes>0){
times = times > maxTimes?maxTimes:times;
int[] randomRewardMin = targetMainLevelConfig.getRandomRewardMin();
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD);
int timesTemp =times;
while (!viewBaseReward&&timesTemp-->0){
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap);
ItemUtil.combineReward(user,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD);
}
lastTimeTakes=times;
}

View File

@ -329,7 +329,7 @@ public class ItemLogic {
}
}
ItemUtil.combineReward(user, StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
ItemUtil.combineReward(user, StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,-1);
int reson = BIReason.DECOMPOS_HERO_REWARD;
if(null!=filterItem){

View File

@ -257,8 +257,27 @@ public class ItemUtil {
public static void combineReward(User user,int[] dropGroupIds,float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap){
public static void combineReward(User user,int[] dropGroupIds,float dropRatio, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap,int reason){
combineRewardDropGroup(user, dropGroupIds, dropRatio, itemMap, cardMap, equipMap, randomMap);
ItemManager itemManager = user.getItemManager();
for(Map.Entry<Integer,Integer> item : itemMap.entrySet()){
Integer itemId = item.getKey();
Integer value = item.getValue();
SItem sItem = SItem.getsItemMap().get(itemId);
int itemNums = privilegeAdd(user, 1, sItem.getItemType(), value);
Item hadItem = itemManager.getItem(itemId);
int hadNums = 0;
if(hadItem !=null){
hadNums = hadItem.getItemNum();
}
if(hadNums<sItem.getItemNumlimit()){
if(hadNums + itemNums >sItem.getItemNumlimit()){
itemMap.put(itemId,sItem.getItemNumlimit() - hadNums);
}else{
itemMap.put(itemId,itemNums);
}
}
}
}
public static void combineReward(int[][] itemArr, Map<Integer, Integer> itemMap, Map<Integer, Integer> cardMap, Map<Integer, Integer> equipMap, Map<Integer, Integer> randomMap){
@ -485,7 +504,6 @@ public class ItemUtil {
if(itemNum <= 0){
continue;
}
itemNum=privilegeAdd(user,reason,sItem.getItemType(),itemNum);
if (itemNum >= sItem.getItemNumlimit()){
itemNum = sItem.getItemNumlimit();
}
@ -493,6 +511,9 @@ public class ItemUtil {
if (item == null) {
item = itemManager.newItem(entry.getKey(), itemNum);
} else {
if(item.getItemNum()>= sItem.getItemNumlimit()){
continue;
}
if (item.getItemNum() + entry.getValue() >= sItem.getItemNumlimit()){
itemNum = sItem.getItemNumlimit() -item.getItemNum();
item.setItemNum(sItem.getItemNumlimit());
@ -1373,36 +1394,60 @@ public class ItemUtil {
public static boolean checkCardAndEquipLimit( User user ,int[][] itemArr) {
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
for (int[] ints : itemArr) {
int itemId = ints[0];
SItem sItem = SItem.getsItemMap().get(itemId);
int itemType = getItemType(sItem);
if (itemType == GlobalItemType.CARD) {
int hasHeroNum = user.getHeroManager().getHeroMap().size();
if (hasHeroNum >= gameSetting.getHeroNumlimit()){
return true;
}
} else if (itemType == GlobalItemType.EQUIP) {
EquipManager equipManager = user.getEquipManager();
int hasEquipNum = equipManager.getEquipMap().size();
if (hasEquipNum >= gameSetting.getEquipNumlimit()){
return true;
}
}else if(itemType == GlobalItemType.SOUL_MARK){
int limit = SSpecialConfig.getIntegerValue(SSpecialConfig.EQUIPSIGN_LIMIT);
if (user.getEquipManager().getSoulEquipMap().size() >=limit){
return true;
}
}else if(itemType == GlobalItemType.ESPECIAL_EQUIP){
int limit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismana_limit);
if (user.getEquipManager().getEspecialEquipMap().size() >=limit){
return true;
}
Map<Integer, Integer> itemTypeMap = getItemTypeMap(itemArr);
for (Map.Entry<Integer, Integer> entry : itemTypeMap.entrySet()) {
switch (entry.getKey()){
case GlobalItemType.CARD:
int hasHeroNum = user.getHeroManager().getHeroMap().size();
if (hasHeroNum+entry.getValue() >= gameSetting.getHeroNumlimit()){
return true;
}
break;
case GlobalItemType.EQUIP:
EquipManager equipManager = user.getEquipManager();
int hasEquipNum = equipManager.getEquipMap().size();
if (hasEquipNum +entry.getValue()>= gameSetting.getEquipNumlimit()){
return true;
}
break;
case GlobalItemType.SOUL_MARK:
int soulLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.EQUIPSIGN_LIMIT);
if (user.getEquipManager().getSoulEquipMap().size()+entry.getValue()>=soulLimit){
return true;
}
break;
case GlobalItemType.ESPECIAL_EQUIP:
int especialLimit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismana_limit);
if (user.getEquipManager().getEspecialEquipMap().size()+entry.getValue() >=especialLimit){
return true;
}
break;
default:
break;
}
}
return false;
}
/**
* map
* @param itemArr
* @return
*/
public static Map<Integer,Integer> getItemTypeMap(int[][] itemArr){
Map<Integer,Integer> itemTypeMap = new HashMap<>();
for (int[] ints : itemArr) {
int itemId = ints[0];
SItem sItem = SItem.getsItemMap().get(itemId);
int itemType = getItemType(sItem);
if(itemTypeMap.containsKey(itemType)){
itemTypeMap.put(itemType,itemTypeMap.get(itemType)+ints[1]);
}else{
itemTypeMap.put(itemType,ints[1]);
}
}
return itemTypeMap;
}
//特权加成收益计算
public static int privilegeAdd(User user,int reason,int itemType,int sourceNum){