大闹天宫初版

master_ob2
PC-202302260912\Administrator 2023-07-18 15:32:35 +08:00
parent cb55e2af1f
commit 934b85dcd4
16 changed files with 272 additions and 250 deletions

View File

@ -1,12 +1,7 @@
package com.ljsd.jieling.core.function;
import com.ljsd.jieling.core.FunctionManager;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.util.InnerMessageUtil;
import java.util.ArrayList;
/**
* Description:
@ -18,7 +13,7 @@ public class ExpeditionFunction implements FunctionManager {
public void startAction(TimeControllerOfFunction timeControllerOfFunction) throws Exception {
// int times = timeControllerOfFunction.getTimes();
InnerMessageUtil.broadcastWithRandom(user -> ExpeditionLogic.getInstance().flushUserdataEveryDay(user),new ArrayList<>(OnlineUserManager.sessionMap.keySet()), 20);
// InnerMessageUtil.broadcastWithRandom(user -> ExpeditionLogic.getInstance().flushUserdataEveryDay(user),new ArrayList<>(OnlineUserManager.sessionMap.keySet()), 20);
}
@Override

View File

@ -93,22 +93,13 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
int maxTime = sExpeditionSetting.getFightTime();
CommonProto.FightTeamInfo fightTeamInfo = ExpeditionLogic.getFightTeamInfoWithDouble(user,teamId,user.getExpeditionManager().getHeroHP());
SnapFightInfo deffightInfo = nodeInfo.getSnapFightInfo();
ExpeditionManager expeditionManager = user.getExpeditionManager();
LuaValue getFightData;
// if(nodeInfo.getType()==ExpeditionLogic.NODETYPE_GREED){
// int tid = deffightInfo.getUid();
// List<CommonProto.FightTeamInfo> gropFightTeamInfoWithDouble = ExpeditionLogic.getGropFightTeamInfoWithDouble(tid, nodeInfo.getBossHP());
// getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, gropFightTeamInfoWithDouble);
// }else {
CommonProto.FightTeamInfo deffightTeamInfo = FightUtil.makeFightBySnapDataWithDouble(new DefFightSnapData(deffightInfo.getHeroAttribute(),deffightInfo.getHeroSkills(),deffightInfo.getPokenmonSkills(),deffightInfo.getPassiveSkills()),nodeInfo.getBossHP());
getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo);
// }
CommonProto.FightTeamInfo deffightTeamInfo = FightUtil.makeFightBySnapDataWithDouble(new DefFightSnapData(deffightInfo.getHeroAttribute(),deffightInfo.getHeroSkills(),deffightInfo.getPokenmonSkills(),deffightInfo.getPassiveSkills()),nodeInfo.getBossHP());
LuaValue getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo);
LuaValue getOptionData = FightDataUtil.getOptionData(uid+"");
LuaValue getOptionData = FightDataUtil.getOptionData(String.valueOf(uid));
long[] checkResult = CheckFight.getInstance().checkFight(seed, maxTime, getFightData, getOptionData, GameFightType.Expediton.getFightType());
FightResult fight = FightResult.newBuilder().setCheckResult(checkResult).build();
@ -151,10 +142,6 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
if(ExpeditionLogic.NODETYPE_GREED == nodeInfo.getType()){
//节点血量更新
// nodeInfo.getSnapFightInfo().getHeroAttribute().forEach((s, familyHeroInfo) ->
// nodeInfo.getBossHP().put(s, (double) remainHp.remove(0) / (double) familyHeroInfo.getAttribute().get(HeroAttributeEnum.CurHP.getPropertyId()))
// );
nodeInfo.getSnapFightInfo().getHeroAttribute().forEach((s, familyHeroInfo) ->{
SMonsterConfig sMonsterConfig = STableManager.getConfig(SMonsterConfig.class).get(Integer.valueOf(s));
if(sMonsterConfig!=null){
@ -162,7 +149,6 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
}
}
);
}else {
//节点血量更新
nodeInfo.getSnapFightInfo().getHeroAttribute().forEach((s, familyHeroInfo) ->
@ -201,7 +187,7 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
TeamPosHeroInfo teamPosHeroInfo = iterator.next();
Hero hero = user.getExpeditionManager().getHero(teamPosHeroInfo.getHeroId());
if (hero==null) {
if (hero == null) {
hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId());
}
if (hero==null) {
@ -211,15 +197,13 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
double remain = remainHp.get(teamPosHeroInfo.getPosition()-1);
user.getExpeditionManager().getHeroHPWithChange().put(teamPosHeroInfo.getHeroId(), remain / (double) heroAttributeMap.get(HeroAttributeEnum.CurHP.getPropertyId()));
ids.add(hero.getId());
if(remain==0d){
if(remain == 0d){
iterator.remove();
}
}
//出队伍
user.getTeamPosManager().updateTeamPosByTeamId(1001,teamPosHeroInfos);
if (ExpeditionLogic.isBattleNode(nodeInfo.getType())) {
nodeInfo.setState(ExpeditionLogic.NODESTATE_NOT_GET);
}
@ -252,7 +236,7 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
drop = ItemUtil.drop(user,new int[]{STableManager.getConfig(SExpeditionSetting.class).get(1).getSpecialReward()},1,0,BIReason.EXPEDITION_DROP_REWARD);
}else{
if(sExpeditionFloorConfig.getReward()!=null&&sExpeditionNodeConfig.getReward()!=0){
drop = ItemUtil.drop(user, sExpeditionFloorConfig.getReward(),sExpeditionNodeConfig.getReward(),0,BIReason.EXPEDITION_DROP_REWARD);
drop = ItemUtil.drop(user, sExpeditionFloorConfig.getReward(),sExpeditionNodeConfig.getReward(),0,BIReason.EXPEDITION_DROP_REWARD);
}else {
drop = CommonProto.Drop.newBuilder();
}
@ -295,7 +279,6 @@ public class EndExpeditionBattleRequest extends BaseHandler<Expedition.EndExpedi
Jewel j = (Jewel) propertyItem;
drop.addSoulEquip(CBean2Proto.getEquipProto(j));
}
}
}

View File

@ -1,23 +1,19 @@
package com.ljsd.jieling.handler.Expedition;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.network.session.ISession;
import rpc.protocols.CommonProto;
import rpc.protocols.Expedition;
import rpc.protocols.MessageTypeProto;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.MessageUtil;
import config.SExpeditionSetting;
import config.SGlobalSystemConfig;
import manager.STableManager;
import rpc.protocols.CommonProto;
import rpc.protocols.Expedition;
import rpc.protocols.MessageTypeProto;
import java.util.ArrayList;
import java.util.List;
@ -66,40 +62,27 @@ public class GetExpeditionRequestHandler extends BaseHandler<Expedition.GetExped
manager.setSortid(0);
}
SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.Expedition.getFunctionType());
if (GlobleSystemLogic.checkOpen(user,sGlobalSystemConfig)) {
builder.addAllLay(manager.getRewardBox());
builder.addAllHeroInfo(ExpeditionLogic.getInstance().getAllHeroInfo(user));
builder.addAllNodeInfo(ExpeditionLogic.getInstance().getNodeInfo(user));
builder.addAllEquipIds(ExpeditionLogic.getInstance().getEquipnfo(user));
List<CommonProto.Hero> heroList = new ArrayList<>();
Map<String, Hero> heroMap = user.getExpeditionManager().getHeroMap();
for(Hero hero : heroMap.values()){
heroList.add(CBean2Proto.getHero(hero));
}
builder.addAllHeroList(heroList);
Map<String, PropertyItem> equipMap = user.getExpeditionManager().getEquipMap();
List<CommonProto.Equip> equipList = new ArrayList<>();
// for(PropertyItem equipInfo: equipMap.values()){
// if(equipInfo instanceof Equip)
// equipList.add(CBean2Proto.getEquipProto(equipInfo));
// }
builder.addAllEquip(equipList);
List<CommonProto.Equip> soulEquipList = new ArrayList<>();
for(PropertyItem equipInfo: equipMap.values()){
if(equipInfo instanceof Jewel)
soulEquipList.add(CBean2Proto.getEquipProto(equipInfo));
}
builder.addAllSoulEquip(soulEquipList);
TimeControllerOfFunction timeControllerOfFunction = GlobalDataManaager.getInstance().getTimeControllerOfFunctionByFunctinoType(FunctionIdEnum.Expedition);
if( null != timeControllerOfFunction){
builder.setStartTime((int)(timeControllerOfFunction.getStartTime()/1000));
}
builder.addAllLay(manager.getRewardBox());
builder.addAllHeroInfo(ExpeditionLogic.getInstance().getAllHeroInfo(user));
builder.addAllNodeInfo(ExpeditionLogic.getInstance().getNodeInfo(user));
builder.addAllEquipIds(ExpeditionLogic.getInstance().getEquipnfo(user));
List<CommonProto.Hero> heroList = new ArrayList<>();
Map<String, Hero> heroMap = user.getExpeditionManager().getHeroMap();
for(Hero hero : heroMap.values()){
heroList.add(CBean2Proto.getHero(hero));
}
builder.addAllHeroList(heroList);
Map<String, PropertyItem> equipMap = user.getExpeditionManager().getEquipMap();
List<CommonProto.Equip> equipList = new ArrayList<>();
builder.addAllEquip(equipList);
List<CommonProto.Equip> soulEquipList = new ArrayList<>();
for(PropertyItem equipInfo: equipMap.values()){
if(equipInfo instanceof Jewel)
soulEquipList.add(CBean2Proto.getEquipProto(equipInfo));
}
builder.addAllSoulEquip(soulEquipList);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_GET_EXPEDITION_RESONSE_VALUE, builder.build(), true);
}
}

View File

@ -3,22 +3,17 @@ package com.ljsd.jieling.handler.Expedition;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.ExpeditionItem;
import com.ljsd.jieling.logic.dao.ExpeditionManager;
import com.ljsd.jieling.logic.dao.ExpeditionNodeInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil;
import rpc.protocols.CommonProto;
import rpc.protocols.Expedition;
import rpc.protocols.MessageTypeProto;
import com.ljsd.jieling.util.MessageUtil;
import config.SExpeditionHolyConfig;
import manager.STableManager;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -49,59 +44,21 @@ public class TakeHolyEquipRequest extends BaseHandler<Expedition.TakeHolyEquipRe
if (nodeInfo.getState() != ExpeditionLogic.NODESTATE_NOT_GET) {
throw new ErrorCodeException(ErrorCode.newDefineCode("节点信息错误 节点状态不正确"+nodeInfo.getState()));
}
//check node
List<Integer> nextNodeId = ExpeditionLogic.getNextNodeId(user.getExpeditionManager().getSortid(),user.getExpeditionManager().getExpeditionNodeInfos().size());
if(!nextNodeId.contains(nodeId)){
throw new ErrorCodeException(ErrorCode.newDefineCode("节点信息错误 节点状态不正确"));
}
SExpeditionHolyConfig sExpeditionHolyConfig = STableManager.getConfig(SExpeditionHolyConfig.class).get(itemId);
if(sExpeditionHolyConfig==null){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
//updata node
Set<CommonProto.ExpeditionNodeInfo> nodeInfos = ExpeditionLogic.openLay(user,nodeInfo.getLay(),nodeId);
//更新背包
ExpeditionItem expeditionItem = new ExpeditionItem(iSession.getUid(), itemId);
ExpeditionManager expeditionManager = user.getExpeditionManager();
expeditionManager.addPropertyItems(expeditionItem);
expeditionManager.setGetHolyTiem(expeditionManager.getGetHolyTiem()+1);
//更新effectitem 参与计算
if(expeditionManager.getEffectItems().size()==0){
ExpeditionLogic.getFirstRankHoly(expeditionManager);
}
Map<Integer,SExpeditionHolyConfig> effectItems = expeditionManager.getEffectItems();
SExpeditionHolyConfig orDefault = effectItems.getOrDefault(sExpeditionHolyConfig.geteffect(), null);
if(orDefault==null){
effectItems.put(sExpeditionHolyConfig.geteffect(),sExpeditionHolyConfig);
}else {
if(sExpeditionHolyConfig.gettype()>orDefault.gettype()){
effectItems.put(sExpeditionHolyConfig.geteffect(),sExpeditionHolyConfig);
}
}
//添加专属英雄圣物缓存
if(sExpeditionHolyConfig.getHeroId() > 0){
expeditionManager.addHeroItems(sExpeditionHolyConfig);
}
//notify client
Expedition.ExpeditionEquipIndication.Builder indication = Expedition.ExpeditionEquipIndication.newBuilder();
indication.addEquipIds(CommonProto.ExpeditionEquip.newBuilder().setId(expeditionItem.getId()).setEquiptId(expeditionItem.getEquipId()).build());
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_HOLY_BAG_INDICATION_VALUE, indication.build(), true);
Expedition.ExpeditionNodeInfoIndication.Builder builder = Expedition.ExpeditionNodeInfoIndication.newBuilder();
builder.addAllNodeInfo(nodeInfos);
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_NOINFO_INDICATION_VALUE, builder.build(), true);
Expedition.TakeHolyEquipResponse.Builder build = Expedition.TakeHolyEquipResponse.newBuilder().setEquipId(expeditionItem.getId());
// 领取圣遗物
String expeditionId = ExpeditionLogic.getInstance().takeHoly(iSession, itemId);
Expedition.TakeHolyEquipResponse.Builder build = Expedition.TakeHolyEquipResponse.newBuilder().setEquipId(expeditionId);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EXPEDITION_TAKE_HOLY_EQUIP_RESONSE_VALUE, build.build(), true);
}
}

View File

@ -63,7 +63,6 @@ public class Cmd_role_gm extends GmRoleAbstract {
manager.clearPropertyItems();
manager.getHeroHPWithChange().clear();
manager.clearHeroToTemp();
manager.clearEquipToTemp();
manager.clearExpeditionNodeInfos();
//创建节点束河
@ -112,7 +111,7 @@ public class Cmd_role_gm extends GmRoleAbstract {
} catch (Exception e) {
e.printStackTrace();
}
user.getExpeditionManager().putExpeditionNodeInfos(sortId, nodeInfo);
user.getExpeditionManager().putExpeditionNodeInfos(nodeInfo);
});

View File

@ -15,15 +15,14 @@ import com.ljsd.jieling.logic.activity.activityLogic.GmSingleActivityLogic;
import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
import com.ljsd.jieling.logic.activity.event.ZeroRefreshEvent;
import com.ljsd.jieling.logic.activity.eventhandler.*;
import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.arena.ChallengeLogic;
import com.ljsd.jieling.logic.championship.ChampionshipLogic;
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
import com.ljsd.jieling.logic.dao.root.GlobalSystemControl;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.logic.family.GuildFightLogic;
import com.ljsd.jieling.logic.family.GuildLogic;
import com.ljsd.jieling.logic.friend.FriendLogic;
@ -425,7 +424,6 @@ public class GlobalDataManaager implements IManager {
PlayerLogic.getInstance().vipflushEveryDay(user,fBuilder);
PlayerLogic.getInstance().flushUserdataEvery(user,fBuilder);
GuildLogic.getInstance().flushEveryDay(user,fBuilder);
ExpeditionLogic.getInstance().flushUserdataEveryDay(user);
MapLogic.getInstance().flushEndlessTreasure(user);
//检测下称号
CBean2Proto.getUserTitleList(user);
@ -447,6 +445,8 @@ public class GlobalDataManaager implements IManager {
ArenaLogic.getInstance().takeTitleReward(user);
// gm单笔更新
GmSingleActivityLogic.getInstance().updateGmSingle(user);
// 大闹天宫隔天刷新
Poster.getPoster().dispatchEvent(new ZeroRefreshEvent(user.getId()));
WeekCardLogic.getInstance().weekCardInfoIndication(user,0,0);
ChallengeLogic.getInstance().ChallengeInfoIndication(session);

View File

@ -135,6 +135,7 @@ public interface ActivityType {
int FABAO_BOOK_REWARD = 118;//法宝图鉴宝箱
int DRAW_FABAO_LV_CHEST = 119;//抽卡等级宝箱
int TIAN_JIANG_GIFT = 120;//天降礼包
int DA_NAO_TIAN_GONG = 121;//大闹天宫
//***************************************bt活动=====================================//

View File

@ -118,6 +118,7 @@ public enum ActivityTypeEnum {
FABAO_BOOK_REWARD(ActivityType.FABAO_BOOK_REWARD,FabaoBookRewardActivity::new),//法宝图鉴宝箱
DRAW_FABAO_LV_CHEST(ActivityType.DRAW_FABAO_LV_CHEST,DrawLvChestActivity::new),//抽卡等级宝箱
TIAN_JIANG_GIFT(ActivityType.TIAN_JIANG_GIFT,DefaultEmptyActivity::new),//抽卡等级宝箱
DA_NAO_TIAN_GONG(ActivityType.DA_NAO_TIAN_GONG, DaNaoTianGongActivity::new),//大闹天宫
/****************************************************** bt **********************************************************/
BRUSH_PRIVILEGE(ActivityType.BRUSH_PRIVILEGE, BrushPrivilegeActivity::new),//刷充特权

View File

@ -0,0 +1,105 @@
package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
import com.ljsd.jieling.logic.activity.event.ZeroRefreshEvent;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.expedition.ExpeditionLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SSpecialConfig;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import java.text.MessageFormat;
import java.util.ArrayList;
public class DaNaoTianGongActivity extends AbstractActivity{
public DaNaoTianGongActivity(int id) {
super(id);
Poster.getPoster().listenEvent(this, ZeroRefreshEvent.class);
}
@Override
public void initActivity(User user) throws Exception {
ActivityMission mission = new ActivityMission();
ActivityLogic.getInstance().initOtherMission(mission,new ArrayList<>());
user.getActivityManager().getActivityMissionMap().put(id, mission);
ExpeditionLogic.getInstance().flushUserdataEveryDay(user);
refresh(user);
LOGGER.info("大闹天宫初始化...uid={} activityId={}",user.getId(), id);
}
@Override
public void onEvent(IEvent event) throws Exception {
// 类型验证
if (!(event instanceof ZeroRefreshEvent)) {
return;
}
// 获取信息
ZeroRefreshEvent event1 = (ZeroRefreshEvent) event;
User user = UserManager.getUser(event1.getUid());
refresh(user);
}
private void refresh(User user){
}
@Override
public boolean takeReward(ISession session, int missionId) throws Exception {
User user = UserManager.getUser(session.getUid());
ActivityMission mission = user.getActivityManager().getActivityMissionMap().get(id);
if (mission == null || mission.getActivityState() != ActivityType.OPEN_STATE){
String format = MessageFormat.format("大闹天宫退出活动数据未开启uid{0}活动id{1}", user.getId(), id);
throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN, format);
}
if (mission.getV() == 1) {
String format = MessageFormat.format("大闹天宫退出奖励已领取uid{0}活动id{1}档位id{2}", user.getId(), id, missionId);
throw new ErrorCodeException(ErrorCode.HAD_TAKE_REWARD, format);
}
checkAndSetProgress(mission,missionId,ActivityType.HAD_TAKED);
int[] value = SSpecialConfig.getOnceArrayValue("Danaotiangong_daily_reward");
int[][] reward = {value};
// reward
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, BIReason.TAKE_ACTIVITY_REWARD);
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
// 状态推送
sendActivityProgress(session, null);
// 打点上报
reportTakeActivityReward(user,reward,missionId);
return true;
}
/**
*
*/
public void checkAndSetProgress(ActivityMission activityMission, int missionId, int state) {
ActivityProgressInfo progressInfo = new ActivityProgressInfo();
progressInfo.setState(state);
activityMission.getActivityMissionMap().put(missionId, progressInfo);
activityMission.setV(1);
}
@Override
public boolean checkActivityMissionFinishAndTake(int uid, int activityId, ActivityMission activityMission) {
return false;
}
}

View File

@ -2,11 +2,8 @@ package com.ljsd.jieling.logic.activity;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.activityLogic.WeekCardLogic;
import com.ljsd.jieling.logic.activity.event.IEvent;
import com.ljsd.jieling.logic.activity.event.Poster;
@ -14,19 +11,9 @@ import com.ljsd.jieling.logic.activity.event.SuperBoxEvent;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo;
import com.ljsd.jieling.logic.store.newRechargeInfo.RechargeType;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.AbstractWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.PerpetualWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
import com.ljsd.jieling.logic.store.newRechargeInfo.rechargeHandler.RechargeHandler;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.*;
import manager.STableManager;
import rpc.protocols.CommonProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
import java.util.*;
@ -52,7 +39,6 @@ public class WeekCardActivity extends AbstractActivity {
// 初始化礼包信息
user.getPlayerInfoManager().setWeekCard(new HashMap<>());
LOGGER.info("月卡初始化...uid={} activityId={}",user.getId(), id);
}

View File

@ -0,0 +1,21 @@
package com.ljsd.jieling.logic.activity.event;
/**
*
*/
public class ZeroRefreshEvent implements IEvent{
private int uid;
public ZeroRefreshEvent(int uid) {
this.uid = uid;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
}

View File

@ -1,14 +1,13 @@
package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.dao.root.User;
import config.SExpeditionHolyConfig;
import manager.STableManager;
import org.springframework.data.annotation.Transient;
import java.util.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* Description:
@ -38,16 +37,15 @@ public class ExpeditionManager extends MongoBase {
private Map<String, Hero> heroMap = new HashMap<>();
private Map<String,PropertyItem> equipMap = new HashMap<>();
private Map<String, Hero> heroMapTemp = new HashMap<>();
private Map<Integer,Map<String, Hero>> heroNodeMapTemp = new HashMap<>();
private Map<String,PropertyItem> equipMapTemp = new HashMap<>();
public ExpeditionManager(){
//初始化的时候把当前轮数赋值不能使用0
TimeControllerOfFunction openTimeOfFuntionCacheByType = GlobalDataManaager.getInstance().getOpenTimeOfFuntionCacheByType(FunctionIdEnum.Expedition);
this.setCurrentTime(openTimeOfFuntionCacheByType==null?1:openTimeOfFuntionCacheByType.getTimes());
// TimeControllerOfFunction openTimeOfFuntionCacheByType = GlobalDataManaager.getInstance().getOpenTimeOfFuntionCacheByType(FunctionIdEnum.Expedition);
// this.setCurrentTime(openTimeOfFuntionCacheByType==null?1:openTimeOfFuntionCacheByType.getTimes());
}
public void putExpeditionNodeInfos(Integer key, ExpeditionNodeInfo nodeInfo) {
public void putExpeditionNodeInfos(ExpeditionNodeInfo nodeInfo) {
this.expeditionNodeInfos.put(nodeInfo.getSortId(), nodeInfo);
nodeInfo.init(this.getRootId(), getMongoKey() + ".expeditionNodeInfos." + nodeInfo.getSortId());
updateString("expeditionNodeInfos." + nodeInfo.getSortId(), nodeInfo);
@ -124,26 +122,10 @@ public class ExpeditionManager extends MongoBase {
updateString("propertyItems", this.propertyItems);
}
public int getForceSnap() {
return forceSnap;
}
public void setForceSnap(int forceSnap) {
updateString("forceSnap", forceSnap);
this.forceSnap = forceSnap;
}
public Map<Integer, SExpeditionHolyConfig> getEffectItems() {
return effectItems;
}
public void resetTreasureReward(){
worldTreasureReward.reset();
onlyUpdateTreasureReward();
}
public WorldTreasureReward getWorldTreasureReward() {
updateString("worldTreasureReward", worldTreasureReward);
return worldTreasureReward;
@ -181,14 +163,14 @@ public class ExpeditionManager extends MongoBase {
}
public void addHero(Hero hero) throws Exception {
public void addHero(Hero hero) {
//绑定关系
hero.init(this.getRootId(),getMongoKey() + ".heroMap." + hero.getId());
updateString("heroMap." + hero.getId(), hero);
heroMap.put(hero.getId(), hero);
}
public void addHeroToTemp(Hero hero,int nodeID) throws Exception {
public void addHeroToTemp(Hero hero,int nodeID) {
//绑定关系
hero.init(this.getRootId(),getMongoKey() + ".heroNodeMapTemp."+nodeID+"."+ hero.getId());
Map<String, Hero> orDefault = heroNodeMapTemp.getOrDefault(nodeID, new HashMap<>());
@ -197,7 +179,7 @@ public class ExpeditionManager extends MongoBase {
heroNodeMapTemp.put(nodeID,orDefault);
}
public void clearHeroToTemp() throws Exception {
public void clearHeroToTemp() {
heroNodeMapTemp.clear();
updateString("heroNodeMapTemp" , heroNodeMapTemp);
}
@ -225,17 +207,6 @@ public class ExpeditionManager extends MongoBase {
updateString("equipMap", equipMap);
}
public void clearEquipToTemp(){
equipMapTemp.clear();
updateString("equipMapTemp" , equipMapTemp);
}
public void addEquipToTemp(PropertyItem equip){
equip.init(this.getRootId(),getMongoKey() + ".equipMapTemp." + equip.getId());
updateString("equipMapTemp." + equip.getId(), equip);
equipMapTemp.put(equip.getId(),equip);
}
public int getFreshTime() {
return freshTime;
}
@ -249,10 +220,6 @@ public class ExpeditionManager extends MongoBase {
return heroNodeMapTemp.getOrDefault(sortid,new HashMap<>());
}
public Map<String, PropertyItem> getEquipMapTemp() {
return equipMapTemp;
}
public Map<String, PropertyItem> getEquipMap() {
return equipMap;
}

View File

@ -95,10 +95,10 @@ public class BattleNode extends AbstractExpedition {
private void nodeHolyInfo(User user, int type, SExpeditionFloorConfig cfg, ExpeditionNodeInfo nodeInfo){
Set<Integer> staffsSet = new HashSet<>();
while (staffsSet.size()<3){
int[][] holyProbability = new int[cfg.getHolyProbability().length][2];
int[][] probability = cfg.getHolyProbability();
int[][] holyProbability = new int[probability.length][2];
for(int j = 0; j < holyProbability.length; j++){
System.arraycopy(cfg.getHolyProbability()[j], 0, holyProbability[j], 0, 2);
System.arraycopy(probability[j], 0, holyProbability[j], 0, 2);
}
SExpeditionNodeConfig sExpeditionNodeConfig = STableManager.getConfig(SExpeditionNodeConfig.class).get(type);
@ -113,7 +113,7 @@ public class BattleNode extends AbstractExpedition {
}catch (Exception e){
break;
}
Map<Integer, Integer> type2holy2weight = getType2holy2weightRemoveHas(user,ints);
Map<Integer, Integer> type2holy2weight = getType2holy2weightRemoveHas(user, ints);
int i1 = ExpeditionLogic.ranndomFromWeight(type2holy2weight);
staffsSet.add(i1);
}
@ -161,7 +161,7 @@ public class BattleNode extends AbstractExpedition {
int level = originalLevel+offset;
return level>1?level:1;
return Math.max(level, 1);
}
/**
@ -236,7 +236,7 @@ public class BattleNode extends AbstractExpedition {
Map<String, Hero> expeditonHeroMap = expeditionManager.getHeroMap();
Set<Integer> expeditonHeroIds = new HashSet<>();
expeditonHeroMap.values().forEach(v->expeditonHeroIds.add(v.getTemplateId()));
expeditionManager.getGHeroSet().forEach(v->expeditonHeroIds.add(v));
expeditonHeroIds.addAll(expeditionManager.getGHeroSet());
// 已生成得节点圣物信息
Set<Integer> nodeHolyInfo = getNodeHolyInfo(user);
@ -262,7 +262,6 @@ public class BattleNode extends AbstractExpedition {
// 已经生成过得圣物
if(nodeHolyInfo.contains(v)){
iterator.remove();
continue;
}
}
return valueMap;

View File

@ -3,14 +3,11 @@ package com.ljsd.jieling.logic.expedition;
import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig;
import com.ljsd.jieling.config.clazzStaticCfg.PlayStaticConfig;
import com.ljsd.jieling.config.clazzStaticCfg.WorldBossTreasureStaticConfig;
import com.ljsd.jieling.core.FunctionIdEnum;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.handler.Expedition.expedtionItem.ExpedtionItemHandler;
import com.ljsd.jieling.handler.Expedition.expedtionItem.HolyEnum;
import com.ljsd.jieling.logic.GlobalDataManaager;
import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
@ -18,9 +15,7 @@ import com.ljsd.jieling.logic.hero.HeroAttributeEnum;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.logic.store.StoreLogic;
import com.ljsd.jieling.logic.store.newRechargeInfo.bean.ReceiveWelfareBag;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
@ -85,19 +80,8 @@ public class ExpeditionLogic {
//每日重置
public void flushUserdataEveryDay(User user) throws Exception {
LOGGER.info("大闹天宫刷新逻辑开始");
checkAndResetTreasure(user);
TimeControllerOfFunction openTimeOfFuntionCacheByType = GlobalDataManaager.getInstance().getOpenTimeOfFuntionCacheByType(FunctionIdEnum.Expedition);
if (openTimeOfFuntionCacheByType == null){
LOGGER.error("大闹天宫刷新逻辑退出,大闹天宫功能类型为空");
return;
}
ExpeditionManager manager = user.getExpeditionManager();
if(manager.getCurrentTime()==openTimeOfFuntionCacheByType.getTimes()){
LOGGER.error("大闹天宫刷新逻辑退出 ,usertimes:{},systimes:{}",manager.getCurrentTime(),openTimeOfFuntionCacheByType.getTimes());
return;
}
takeAllReward(user);
manager.clearExpeditionNodeInfos();
manager.setLay(1);
@ -110,15 +94,12 @@ public class ExpeditionLogic {
manager.clearRewardBox();
manager.clearPropertyItems();
manager.getHeroHPWithChange().clear();
manager.setCurrentTime(openTimeOfFuntionCacheByType.getTimes());
manager.clearHeroToTemp();
manager.getHeroMap().clear();
manager.clearEquipToTemp();
manager.clearEquip();//删除多余装备
manager.getEffectItems().clear();
manager.clearHeroItems();
manager.getGHeroSet().clear();
manager.setFreshTime((int)(openTimeOfFuntionCacheByType.getStartTime()/1000));
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
if(sExpeditionSetting == null){
@ -132,9 +113,8 @@ public class ExpeditionLogic {
manager.setSortid(0);
}
SGlobalSystemConfig sGlobalSystemConfig = STableManager.getConfig(SGlobalSystemConfig.class).get(FunctionIdEnum.Expedition.getFunctionType());
ISession session = OnlineUserManager.getSessionByUid(user.getId());
if (GlobleSystemLogic.checkOpen(user,sGlobalSystemConfig) && session !=null) {
if (session != null) {
builder.addAllLay(manager.getRewardBox());
builder.addAllHeroInfo(ExpeditionLogic.getInstance().getAllHeroInfo(user));
builder.addAllNodeInfo(ExpeditionLogic.getInstance().getNodeInfo(user));
@ -143,8 +123,8 @@ public class ExpeditionLogic {
builder.addAllEquip(new ArrayList<>());
builder.addAllEquip(new ArrayList<>());
builder.setStartTime(manager.getFreshTime());
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ExpeditionResetIndication.getNumber(), builder.build(), true);
}
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ExpeditionResetIndication.getNumber(), builder.build(), true);
}
private void takeAllReward(User user)throws Exception {
@ -170,6 +150,49 @@ public class ExpeditionLogic {
MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
}
/**
*
* @param session
* @param itemId
* @return
* @throws ErrorCodeException
*/
public String takeHoly(ISession session, int itemId) throws Exception {
SExpeditionHolyConfig sExpeditionHolyConfig = STableManager.getConfig(SExpeditionHolyConfig.class).get(itemId);
if(sExpeditionHolyConfig==null){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
User user = UserManager.getUser(session.getUid());
//更新背包
ExpeditionItem expeditionItem = new ExpeditionItem(user.getId(), itemId);
ExpeditionManager expeditionManager = user.getExpeditionManager();
expeditionManager.addPropertyItems(expeditionItem);
expeditionManager.setGetHolyTiem(expeditionManager.getGetHolyTiem()+1);
//更新effectitem 参与计算
if(expeditionManager.getEffectItems().size()==0){
ExpeditionLogic.getFirstRankHoly(expeditionManager);
}
Map<Integer,SExpeditionHolyConfig> effectItems = expeditionManager.getEffectItems();
SExpeditionHolyConfig orDefault = effectItems.getOrDefault(sExpeditionHolyConfig.geteffect(), null);
if(orDefault==null){
effectItems.put(sExpeditionHolyConfig.geteffect(),sExpeditionHolyConfig);
}else {
if(sExpeditionHolyConfig.gettype()>orDefault.gettype()){
effectItems.put(sExpeditionHolyConfig.geteffect(),sExpeditionHolyConfig);
}
}
//添加专属英雄圣物缓存
if(sExpeditionHolyConfig.getHeroId() > 0){
expeditionManager.addHeroItems(sExpeditionHolyConfig);
}
//推送背包
Expedition.ExpeditionEquipIndication.Builder indication = Expedition.ExpeditionEquipIndication.newBuilder();
indication.addEquipIds(CommonProto.ExpeditionEquip.newBuilder().setId(expeditionItem.getId()).setEquiptId(expeditionItem.getEquipId()).build());
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.EXPEDITION_HOLY_BAG_INDICATION_VALUE, indication.build(), true);
return expeditionItem.getId();
}
/**
*
*/
@ -294,7 +317,7 @@ public class ExpeditionLogic {
/**
* type id state
*/
private Set<ExpeditionNodeInfo> createNodeSet(User user,int leve) throws Exception {
private void createNodeSet(User user, int leve) throws Exception {
// 配置表信息
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
if(leve-1>sExpeditionSetting.getMatchForce().length){
@ -307,7 +330,7 @@ public class ExpeditionLogic {
// 根据层数获取对应得每行id
Set<Integer> ids = STableManager.getFigureConfig(CommonStaticConfig.class).leve2ids.get(leve);
if(ids==null){
return nodeSets;
return;
}
// 创建节点
@ -317,7 +340,6 @@ public class ExpeditionLogic {
createNodesByLay(user,sExpeditionFloorConfig.getId(),leve,nodeSets);
}
}
return nodeSets;
}
/**
@ -344,7 +366,7 @@ public class ExpeditionLogic {
ExpeditionNodeInfo nodeInfo = expedition.creatNodes(user.getId(), id, leve, sort, config.getFloorLay());
nodeSets.add(nodeInfo);
// mongodb:入库
user.getExpeditionManager().putExpeditionNodeInfos(nodeInfo.getSortId(), nodeInfo);
user.getExpeditionManager().putExpeditionNodeInfos(nodeInfo);
sort++;
}
}
@ -518,47 +540,51 @@ public class ExpeditionLogic {
public static void openTreasure(User user,int type,int parm){
SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
int[] openRule = sExpeditionSetting.getOpenRules();
if(openRule[0] == type && openRule[1] == parm){
//国服设置第十四天后开启
user.getExpeditionManager().getWorldTreasureReward().setFirstStartTime((int)((TimeUtils.now()+14*TimeUtils.ONE_DAY)/1000));
}
// SExpeditionSetting sExpeditionSetting = STableManager.getConfig(SExpeditionSetting.class).get(1);
// int[] openRule = sExpeditionSetting.getOpenRules();
// if(openRule[0] == type && openRule[1] == parm){
// //国服设置第十四天后开启
// user.getExpeditionManager().getWorldTreasureReward().setFirstStartTime((int)((TimeUtils.now()+14*TimeUtils.ONE_DAY)/1000));
// }
}
/**
*
* @param user
* @throws Exception
*/
private static void checkAndResetTreasure(User user) throws Exception {
WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
int nowInt = TimeUtils.nowInt();
if(worldTreasureReward.getFirstStartTime()> nowInt){
return;
}
int createTime =worldTreasureReward.getCreateTime();
//重置
if(nowInt >=createTime){
user.getExpeditionManager().resetTreasureReward();
// 天宫秘宝礼包刷新
ReceiveWelfareBag bagInfo = (ReceiveWelfareBag) user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(106);
if (bagInfo == null){
return;
}
bagInfo.refresh();
sendAllTreasureInfo(user);
BuyGoodsNewLogic.sendGiftGooodsIndication(user.getId());
}
// WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
// int nowInt = TimeUtils.nowInt();
// if(worldTreasureReward.getFirstStartTime()> nowInt){
// return;
// }
// int createTime =worldTreasureReward.getCreateTime();
// //重置
// if(nowInt >= createTime){
// user.getExpeditionManager().resetTreasureReward();
// // 天宫秘宝礼包刷新
// ReceiveWelfareBag bagInfo = (ReceiveWelfareBag) user.getPlayerInfoManager().getNewRechargeInfo().getReceiveMap().get(106);
// if (bagInfo == null){
// return;
// }
// bagInfo.refresh();
// sendAllTreasureInfo(user);
// BuyGoodsNewLogic.sendGiftGooodsIndication(user.getId());
// }
}
private static void sendAllTreasureInfo(User user){
ISession session = OnlineUserManager.getSessionByUid(user.getId());
if(session!=null){
WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
Map<Integer, Integer> rewardStatusMap = worldTreasureReward.getRewardStatusMap();
WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class);
Map<Integer, Set<SWorldBossTreasureConfig>> idsByPeriods = worldBossTreasureStaticConfig.getIdsByPeriods();
Map<Integer,Integer> changeStateMap = new HashMap<>(rewardStatusMap);
idsByPeriods.get(worldTreasureReward.getRound()).forEach(item->changeStateMap.putIfAbsent(item.getId(),0));
sendTreasureRewardUpdate(session,0,changeStateMap,worldTreasureReward.getCreateTime(),worldTreasureReward.getIsBuy());
}
// ISession session = OnlineUserManager.getSessionByUid(user.getId());
// if(session!=null){
// WorldTreasureReward worldTreasureReward = user.getExpeditionManager().getWorldTreasureReward();
// Map<Integer, Integer> rewardStatusMap = worldTreasureReward.getRewardStatusMap();
// WorldBossTreasureStaticConfig worldBossTreasureStaticConfig = STableManager.getFigureConfig(WorldBossTreasureStaticConfig.class);
// Map<Integer, Set<SWorldBossTreasureConfig>> idsByPeriods = worldBossTreasureStaticConfig.getIdsByPeriods();
// Map<Integer,Integer> changeStateMap = new HashMap<>(rewardStatusMap);
// idsByPeriods.get(worldTreasureReward.getRound()).forEach(item->changeStateMap.putIfAbsent(item.getId(),0));
// sendTreasureRewardUpdate(session,0,changeStateMap,worldTreasureReward.getCreateTime(),worldTreasureReward.getIsBuy());
// }
}
public static void sendTreasureRewardUpdate(ISession iSession,int score,Map<Integer,Integer> changeStatusMap,int time,int isBuy){
@ -567,7 +593,6 @@ public class ExpeditionLogic {
changeStatusMap.forEach((id,status)-> builder.addTreasureRewardState(Expedition.TreasureRewardState.newBuilder().setId(id).setState(status).build()));
builder.setIsBuy(isBuy);
MessageUtil.sendIndicationMessage(iSession,1, MessageTypeProto.MessageType.EXPEDITION_TREASURE_STATE_INDICATION_VALUE,builder.build(),true);
}
/**
@ -724,7 +749,7 @@ public class ExpeditionLogic {
* 使
*
*/
public static CommonProto.FightTeamInfo getFightTeamInfoWithDouble(User user, int teamId, Map<String, Double> attackBloodMap) {
public static CommonProto.FightTeamInfo getFightTeamInfoWithDouble(User user, int teamId, Map<String, Double> attackBloodMap) {
user.getTeamPosManager().setCurTeamPosId(teamId);
List<CommonProto.FightUnitInfo> heroFightInfos = new ArrayList<>();
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);

View File

@ -14,10 +14,11 @@ public class PushWelfareBag extends AbstractWelfareBag {
public PushWelfareBag(User user, SRechargeCommodityNewConfig config){
setModId(config.getId());
setOpen(true);
setStartTime(TimeUtils.now());
setEndTime(getStartTime() + getTime() * TimeUtils.HOUR);
user.getPlayerInfoManager().getNewRechargeInfo().addPush(this);
this.setRootCollection(User._COLLECTION_NAME);
user.getPlayerInfoManager().getNewRechargeInfo().addPush(this);
}
@Override

View File

@ -24,7 +24,6 @@ public class PushHandler extends AbstractRechargeHandler {
boolean result = super.refreshStatus(user, rechargeId);
AbstractWelfareBag bag = getBag(user, rechargeId);
if(bag.isOpen()){
SRechargeCommodityNewConfig config = SRechargeCommodityNewConfig.getConfigById(rechargeId);
long now = TimeUtils.now();
// 结束时间到
if(bag.getEndTime() != 0 && now > bag.getEndTime()){