【家园功能1.0.8】建筑解锁推送修改,只推送解锁的建筑

back_recharge
duhui 2021-12-28 14:59:59 +08:00
parent 304d1da7ef
commit ee97a40004
1 changed files with 18 additions and 3 deletions

View File

@ -48,6 +48,7 @@ public class ArchitectureUnLockHandler implements IEventHandler {
List<SHomeLand> collect = STableManager.getConfig(SHomeLand.class).values().stream().sorted(Comparator.comparing(SHomeLand::getSort)).collect(Collectors.toList()); List<SHomeLand> collect = STableManager.getConfig(SHomeLand.class).values().stream().sorted(Comparator.comparing(SHomeLand::getSort)).collect(Collectors.toList());
Map<Integer, SHomeLandLevel> levelMap = STableManager.getConfig(SHomeLandLevel.class); Map<Integer, SHomeLandLevel> levelMap = STableManager.getConfig(SHomeLandLevel.class);
int nowInt = TimeUtils.nowInt(); int nowInt = TimeUtils.nowInt();
HashSet<Integer> set = new HashSet<>();
for (SHomeLand land : collect) { for (SHomeLand land : collect) {
// 不进版本 // 不进版本
if (land.getIsOpen() != 1) { if (land.getIsOpen() != 1) {
@ -70,6 +71,7 @@ public class ArchitectureUnLockHandler implements IEventHandler {
if (user.getPlayerInfoManager().getLevel() >= land.getUnlockLevel()[1]) { if (user.getPlayerInfoManager().getLevel() >= land.getUnlockLevel()[1]) {
ArchitectureInfo architectureInfo = new ArchitectureInfo(id, nowInt, 0); ArchitectureInfo architectureInfo = new ArchitectureInfo(id, nowInt, 0);
user.getPlayerInfoManager().putArchitectureInfo(land.getId(),architectureInfo); user.getPlayerInfoManager().putArchitectureInfo(land.getId(),architectureInfo);
set.add(land.getId());
} }
break; break;
case 2: case 2:
@ -86,6 +88,7 @@ public class ArchitectureUnLockHandler implements IEventHandler {
} }
ArchitectureInfo architectureInfo = new ArchitectureInfo(id, nowInt, 0); ArchitectureInfo architectureInfo = new ArchitectureInfo(id, nowInt, 0);
user.getPlayerInfoManager().putArchitectureInfo(land.getId(),architectureInfo); user.getPlayerInfoManager().putArchitectureInfo(land.getId(),architectureInfo);
set.add(land.getId());
break; break;
default: default:
// 其他条件暂不处理,有需求再加 // 其他条件暂不处理,有需求再加
@ -107,7 +110,7 @@ public class ArchitectureUnLockHandler implements IEventHandler {
user.getEquipManager().putEquipIntensifyMap(4,levelId); user.getEquipManager().putEquipIntensifyMap(4,levelId);
} }
} }
sendArchitectureUnlockIndication(user); sendArchitectureUnlockIndication(user,set);
} }
} }
@ -115,8 +118,20 @@ public class ArchitectureUnLockHandler implements IEventHandler {
* *
* @param user * @param user
*/ */
private void sendArchitectureUnlockIndication(User user) throws Exception { private void sendArchitectureUnlockIndication(User user, Set<Integer> set) throws Exception {
List<CommonProto.ArchitectureInfo> infoList = CBean2Proto.getArchitectureInfoList(user); if (set.isEmpty()){
return;
}
Map<Integer, ArchitectureInfo> infoMap = user.getPlayerInfoManager().getArchitectureInfoMap();
List<CommonProto.ArchitectureInfo> infoList = new ArrayList<>();
for (Integer value : set) {
ArchitectureInfo info = infoMap.get(value);
if (info == null){
continue;
}
CommonProto.ArchitectureInfo.Builder builder = CommonProto.ArchitectureInfo.newBuilder().setId(info.getId()).setProductionStartTime(info.getProductionStartTime()).setUpLvEndTime(info.getUpLvEndTime());
infoList.add(builder.build());
}
PlayerInfoProto.ArchitectureUnlockIndication.Builder builder = PlayerInfoProto.ArchitectureUnlockIndication.newBuilder().addAllInfos(infoList); PlayerInfoProto.ArchitectureUnlockIndication.Builder builder = PlayerInfoProto.ArchitectureUnlockIndication.newBuilder().addAllInfos(infoList);
ISession session = OnlineUserManager.getSessionByUid(user.getId()); ISession session = OnlineUserManager.getSessionByUid(user.getId());
MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ArchitectureUnlockIndication_VALUE, builder.build(), true); MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ArchitectureUnlockIndication_VALUE, builder.build(), true);