同步用户状态

back_recharge
wangyuan 2019-08-12 17:49:20 +08:00
parent a7ee427a08
commit db8c4d43d9
8 changed files with 97 additions and 10 deletions

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.config;
import com.ljsd.jieling.logic.STableManager;
import com.ljsd.jieling.logic.Table;
import com.ljsd.jieling.logic.dao.GuildMyInfo;
import java.util.Map;
@ -13,6 +14,7 @@ public class SChallengeMapConfig implements BaseConfig{
@Override
public void init() throws Exception {
integerSChallengeMapConfigMap = STableManager.getConfig(SChallengeMapConfig.class);
GuildMyInfo.init();
}
private int mapId;

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.handler;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto;
import org.springframework.stereotype.Component;
@Component
public class UpdateStateHandler extends BaseHandler{
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.UPDATE_STATE_REQUEST;
}
@Override
public void process(ISession iSession, PacketNetData netData) throws Exception {
PlayerInfoProto.UpdateStateRequest updateStateRequest = PlayerInfoProto.UpdateStateRequest.parseFrom(netData.parseClientProtoNetData());
PlayerLogic.getInstance().updateState(iSession,updateStateRequest.getType());
}
}

View File

@ -1736,6 +1736,12 @@ public class MapLogic {
return;
}
}else if(sChallengeConfig.getSweepingOpenRule()[0]==2){
CrossInfo crossInfo = mapManager.getCrossInfoMap().get(mapId);
if(crossInfo == null){
LOGGER.info("sweep 未通关");
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "未通关");
return;
}
MapMission copyMission = mapManager.getCopyMissionProgresById(sChallengeConfig.getMapId());
if(copyMission.getTotalWeight()<sChallengeConfig.getSweepingOpenRule()[1]){
LOGGER.info("sweep 功绩不足");
@ -2210,7 +2216,6 @@ public class MapLogic {
if (itemNum > 0) {
String reward = Global.STAMINA + "#" + itemNum;
ItemUtil.drop(user, StringUtil.parseFiledInt2(reward), BIReason.USER_LEVELUPSTAMINA_REWARD);
}
}

View File

@ -4,16 +4,13 @@ import com.ljsd.jieling.config.SErrorCodeEerverConfig;
import com.ljsd.jieling.config.SGlobalActivity;
import com.ljsd.jieling.config.SSevenDaysScore;
import com.ljsd.jieling.config.STreasureTaskConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.globals.Global;
import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
import com.ljsd.jieling.logic.mission.GameEvent;
import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType;
import com.ljsd.jieling.logic.mission.main.TreasureMissionType;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import java.util.ArrayList;

View File

@ -1,16 +1,28 @@
package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.SChallengeMapConfig;
import com.ljsd.jieling.util.CellUtil;
import java.util.ArrayList;
import java.util.List;
public class GuildMyInfo extends MongoBase {
private static int speed = 500;
private static int initPos = 0;
public static void init(){
SChallengeMapConfig sChallengeMapConfig = SChallengeMapConfig.integerSChallengeMapConfigMap.get(11);
initPos = CellUtil.xy2Pos(sChallengeMapConfig.getPosition()[0],sChallengeMapConfig.getPosition()[1]);
}
private List<Integer> path = new ArrayList<>(); //行走路线
private int curPos=257;//当前位置
private int curPos=initPos;//当前位置
private long preMoveTimestamp; //上次更新时间
public void clearOfLevelGuild(){

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.family;
import com.google.protobuf.GeneratedMessage;
import com.ljsd.jieling.config.SChallengeMapConfig;
import com.ljsd.jieling.config.SErrorCodeEerverConfig;
import com.ljsd.jieling.config.SGuildSetting;
import com.ljsd.jieling.core.GlobalsDef;
@ -58,11 +59,17 @@ public class GuildLogic {
return;
}
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
Family.GetFamilyInfoResponse build = Family.GetFamilyInfoResponse.newBuilder()
Family.GetFamilyInfoResponse.Builder builder = Family.GetFamilyInfoResponse.newBuilder()
.setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo))
.setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, getMemberType(uid, guildInfo.getMembers())))
.build();
MessageUtil.sendMessage(session,1,msgId,build,true);
.setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user, getMemberType(uid, guildInfo.getMembers())));
for(Set<Integer> members : guildInfo.getMembers().values()){
for(int uidOfMember : members){
User userMember = UserManager.getUser(uidOfMember);
builder.addFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(userMember));
}
}
MessageUtil.sendMessage(session,1,msgId,builder.build(),true);
}
@ -92,7 +99,9 @@ public class GuildLogic {
addGuildLog(guildInfo.getId(),GuildDef.Log.CREATE,user.getPlayerInfoManager().getNickName());
Family.FamilyCreateResponse build = Family.FamilyCreateResponse.newBuilder()
.setFamilyBaseInfo(CBean2Proto.getFamilyBaseInfo(guildInfo))
.setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user,GlobalsDef.CHAIRMAN)).build();
.setFamilyUserInfo(CBean2Proto.getFamilyUserInfo(user,GlobalsDef.CHAIRMAN))
.setFamilyWalkIndicaiton(CBean2Proto.getFamilyWalkIndicaiton(user))
.build();
MessageUtil.sendMessage(session,1,msgId,build,true);
familyFightMatching();
@ -694,6 +703,7 @@ public class GuildLogic {
return;
}
GuildMyInfo guildMyInfo = user.getGuildMyInfo();
LOGGER.info("cur ={},path={}",guildMyInfo.getCurPos(),path);
boolean continuous = CellUtil.isContinuous(guildMyInfo.getCurPos(),path);
if(!continuous){
MessageUtil.sendErrorResponse(session,0,msgId,"路线有误");

View File

@ -311,6 +311,9 @@ public class MissionEventDistributor {
}
if(gameMisionType == GameMisionType.SEVENMISSION){
STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureTaskConfigMap.get(missionStateChangeInfo.getMissionId());
if(sTreasureTaskConfig.getTaskType() == MissionType.SENVER_HAPPY.getMissionTypeValue()){
continue;
}
progress= sTreasureTaskConfig.getTaskValue()[1][0];
if(progress<0){
progress=1;

View File

@ -14,7 +14,11 @@ import com.ljsd.jieling.logic.fight.CombatLogic;
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.mission.GameMisionType;
import com.ljsd.jieling.logic.mission.MissionLoigc;
import com.ljsd.jieling.logic.mission.MissionState;
import com.ljsd.jieling.logic.mission.event.MissionEventDistributor;
import com.ljsd.jieling.logic.mission.main.MissionStateChangeInfo;
import com.ljsd.jieling.logic.mission.main.ServenMissionIdsType;
import com.ljsd.jieling.logic.mission.main.TreasureMissionType;
import com.ljsd.jieling.logic.store.GiftGoodsType;
@ -36,6 +40,36 @@ public class PlayerLogic {
return InnerClass.instance;
}
//更新客户状态
public void updateState(ISession iSession, int type) throws Exception {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
//七日狂欢领取活动
if(type == 1){
Map<Integer, ActivityMission> activityMissionMap = user.getActivityManager().getActivityMissionMap();
int sevenActivityId = 0;
for(Integer activityId : activityMissionMap.keySet()){
if(SGlobalActivity.getsGlobalActivityMap().get(activityId).getType() == ActivityType.SERVERHAPPY){
sevenActivityId = activityId;
}
}
if(sevenActivityId!=0){
STreasureTaskConfig sTreasureTaskConfig = STreasureTaskConfig.sTreasureSevenTaskConfigByActivityMap.get(sevenActivityId);
if(user.getActivityManager().getSenvenTime()<=System.currentTimeMillis()){
BitSet rewardedMissionIds = user.getUserMissionManager().getSevenHappyMissionType().getRewardedMissionIds();
MissionState state = MissionState.FINISH;
if(rewardedMissionIds.get(sTreasureTaskConfig.getId())){
state = MissionState.REWARD;
}
int progrss = MissionLoigc.getDoingProgress(user,user.getUserMissionManager().getSevenHappyCumulationData(),sTreasureTaskConfig.getTaskType(),sTreasureTaskConfig.getTaskValue()[0]);
MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(sTreasureTaskConfig.getId(), state, progrss);
MissionEventDistributor.getMissionStateChangeInfo(GameMisionType.SEVENMISSION).add(missionStateChangeInfo);
}
}
}
MessageUtil.sendMessage(iSession,1, MessageTypeProto.MessageType.UPDATE_STATE_RESPONSE_VALUE,null,true);
}
static class InnerClass{
public final static PlayerLogic instance = new PlayerLogic();