比数小游戏挂机奖励

master_dev
grimm 2024-04-28 20:38:06 +08:00
parent 264cf180fc
commit ee077afb31
9 changed files with 106 additions and 23 deletions

View File

@ -462,4 +462,5 @@ public interface BIReason {
int SOLDIER_LOTTERY_COST = 1348;//小兵招募消耗
int SOLDIER_DISMISS_REWARD = 1349;//小兵遣散获得
int SOLDIER_MIAN_LEVEL_REWARD = 1350;//小兵主线奖励
int COMPARE_NUM_GAME_REWARD = 1351;//比数小游戏挂机奖励
}

View File

@ -13,12 +13,17 @@ import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SCompareNumChapter;
import config.SCompareNumSetting;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import java.util.Set;
/**
*
*/
@Component
public class CompareNumBonusHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
@ -101,8 +106,7 @@ public class CompareNumBonusHandler extends BaseHandler {
MessageUtil.sendIndicationMessage(sessionByUid, 1, MessageTypeProto.MessageType.COMPARENUM_DATA_INDICATION_VALUE, indication.build(), true);
}
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.COMPARENUM_BONUS_RESPONSE_VALUE,
response.build(), true);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.COMPARENUM_BONUS_RESPONSE_VALUE, response.build(), true);
}
}

View File

@ -5,6 +5,7 @@ import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.netty.cocdex.PacketNetData;
@ -14,6 +15,7 @@ import com.ljsd.jieling.util.MessageUtil;
import config.SCompareNumChapter;
import config.SCompareNumSetting;
import config.SMainLevelConfig;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
@ -21,7 +23,7 @@ import util.TimeUtils;
import java.util.TreeMap;
@Component
public class CompareNumEndGameHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
@ -34,6 +36,7 @@ public class CompareNumEndGameHandler extends BaseHandler {
PlayerInfoProto.CompareNumEndGameRequest request = PlayerInfoProto.CompareNumEndGameRequest.parseFrom(bytes);
User user = UserManager.getUser(session.getUid());
PlayerManager playerManager = user.getPlayerInfoManager();
int levelId = request.getLevelId();
int result = request.getResult();
@ -43,7 +46,7 @@ public class CompareNumEndGameHandler extends BaseHandler {
return;
}
int curLevelId = user.getPlayerInfoManager().getCompareNumLevelId();
int curLevelId = playerManager.getCompareNumLevelId();
if (curLevelId <= 0 || curLevelId < levelId) {
throw new ErrorCodeException(ErrorCode.newDefineCode("invalid CompareNumLevelId"));
}
@ -59,8 +62,8 @@ public class CompareNumEndGameHandler extends BaseHandler {
}
int lastId = (int)((TreeMap)SCompareNumSetting.getCompareNumSettingMap()).lastEntry().getKey();
if (curLevelId != lastId && user.getPlayerInfoManager().isCompareNumEndGame()) {
user.getPlayerInfoManager().setCompareNumEndGame(false);
if (curLevelId != lastId && playerManager.isCompareNumEndGame()) {
playerManager.setCompareNumEndGame(false);
}
/*
@ -70,7 +73,7 @@ public class CompareNumEndGameHandler extends BaseHandler {
for (int[] limit: chapterCfg.getLimit()) {
if (limit[0] == 1) {
if (limit[1] > user.getPlayerInfoManager().getLevel()) {
if (limit[1] > playerManager.getLevel()) {
throw new ErrorCodeException(ErrorCode.newDefineCode("invalid level"));
}
}
@ -94,7 +97,7 @@ public class CompareNumEndGameHandler extends BaseHandler {
*/
for (int[] limit: cfg.getLevelLimit()) {
if (limit[0] == 1) {
if (limit[1] > user.getPlayerInfoManager().getLevel()) {
if (limit[1] > playerManager.getLevel()) {
throw new ErrorCodeException(ErrorCode.newDefineCode("invalid level"));
}
}
@ -108,11 +111,11 @@ public class CompareNumEndGameHandler extends BaseHandler {
}
}
if (!user.getPlayerInfoManager().isCompareNumEndGame()) {
if (!playerManager.isCompareNumEndGame()) {
int nextId = 0;
if (lastId == curLevelId) {
nextId = curLevelId;
user.getPlayerInfoManager().setCompareNumEndGame(true);
playerManager.setCompareNumEndGame(true);
}
else {
nextId = curLevelId + 1;
@ -122,13 +125,13 @@ public class CompareNumEndGameHandler extends BaseHandler {
}
}
user.getPlayerInfoManager().setCompareNumLevelId(nextId);
user.getPlayerInfoManager().setCompareNumLevelTime(TimeUtils.nowInt());
playerManager.setCompareNumLevelId(nextId);
playerManager.setCompareNumLevelTime(TimeUtils.nowInt());
PlayerInfoProto.CompareNumDataIndication.Builder indication = PlayerInfoProto.CompareNumDataIndication.newBuilder();
indication.setLevelId(user.getPlayerInfoManager().getCompareNumLevelId());
indication.setCompleteNum(SCompareNumSetting.getChapterNumById(user.getPlayerInfoManager().getCompareNumLevelId(), user.getPlayerInfoManager().isCompareNumEndGame()));
for (int rewardId: user.getPlayerInfoManager().getCompareNumRewardInfo()) {
indication.setLevelId(playerManager.getCompareNumLevelId());
indication.setCompleteNum(SCompareNumSetting.getChapterNumById(playerManager.getCompareNumLevelId(), playerManager.isCompareNumEndGame()));
for (int rewardId: playerManager.getCompareNumRewardInfo()) {
indication.addRewardIdArr(rewardId);
}
ISession sessionByUid = OnlineUserManager.getSessionByUid(session.getUid());
@ -137,6 +140,9 @@ public class CompareNumEndGameHandler extends BaseHandler {
CommonProto.Drop.Builder drop = ItemUtil.drop(user, cfg.getPassReward(), BIReason.COMPARENUM_LEVEL_REWARD);
response.setDrop(drop);
response.setNextId(nextId);
if (playerManager.getCompareNumRewardStartTime() == 0){
playerManager.setCompareNumRewardStartTime(TimeUtils.now());
}
}
}

View File

@ -13,12 +13,14 @@ import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil;
import config.SCompareNumSetting;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import java.util.*;
@Component
public class CompareNumInfoHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {

View File

@ -0,0 +1,57 @@
package com.ljsd.jieling.handler.comparenum;
import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.exception.ErrorCodeException;
import com.ljsd.jieling.globals.BIReason;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.DuoduiTowerLogic;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import config.SCompareNumSetting;
import config.SSpecialConfig;
import org.springframework.stereotype.Component;
import rpc.protocols.CommonProto;
import rpc.protocols.FightInfoProto;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
import util.TimeUtils;
/**
*
*/
@Component
public class CompareNumRewardHandler extends BaseHandler<PlayerInfoProto.CompareNumRewardRequest> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.CompareNumRewardRequest;
}
@Override
public void processWithProto(ISession iSession, PlayerInfoProto.CompareNumRewardRequest proto) throws Exception {
User user = UserManager.getUser(iSession.getUid());
PlayerManager playerManager = user.getPlayerInfoManager();
int levelId = playerManager.getCompareNumLevelId();
long now = TimeUtils.now();
long startTime = playerManager.getCompareNumRewardStartTime();
long timeMinutes = (now - startTime) / 1000 / 60;
int accumulationTime = SSpecialConfig.getIntegerValue("Shenlingshilian_accumulation_time");
long max = Math.min(timeMinutes, accumulationTime);
if (max < 1){
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
}
SCompareNumSetting config = SCompareNumSetting.getConfig(levelId);
if (config == null || config.getIncome() == null || config.getIncome().length == 0){
throw new ErrorCodeException(ErrorCode.CFG_NULL);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, config.getIncome(), max, BIReason.COMPARE_NUM_GAME_REWARD);
PlayerInfoProto.CompareNumRewardResponse.Builder builder = PlayerInfoProto.CompareNumRewardResponse.newBuilder();
builder.setDrop(drop);
playerManager.setCompareNumRewardStartTime(now);
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CompareNumRewardResponse_VALUE, builder.build(), true);
}
}

View File

@ -8,9 +8,11 @@ import com.ljsd.jieling.netty.cocdex.PacketNetData;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.MessageUtil;
import config.SCompareNumSetting;
import org.springframework.stereotype.Component;
import rpc.protocols.MessageTypeProto;
import rpc.protocols.PlayerInfoProto;
@Component
public class GetCompareInfoHandler extends BaseHandler {
@Override
public MessageTypeProto.MessageType getMessageCode() {
@ -30,7 +32,8 @@ public class GetCompareInfoHandler extends BaseHandler {
response.setLevelId(player.getCompareNumLevelId())
.setCompleteNum(SCompareNumSetting.getChapterNumById(player.getCompareNumLevelId(), player.isCompareNumEndGame()))
.addAllRewardIdArr(player.getCompareNumRewardInfo());
.addAllRewardIdArr(player.getCompareNumRewardInfo())
.setRewardStartTime(player.getCompareNumRewardStartTime());
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.GET_COMPARENUM_INFO_RESPONSE_VALUE, response.build(), true);
}

View File

@ -184,12 +184,10 @@ public class PlayerManager extends MongoBase {
// 数字小游戏
private int compareNumLevelId;
private Set<Integer> compareNumRewardInfo = new HashSet<>();
private int compareNumLevelTime;
private boolean compareNumEndGame;
private long compareNumRewardStartTime;
// 开启的七界层数, key 七届类型, value 最高层数
private final Map<Integer,Integer> sevenWorldOpenTier = new HashMap<>();
@ -1506,6 +1504,15 @@ public class PlayerManager extends MongoBase {
updateString("compareNumEndGame", this.compareNumEndGame);
}
public long getCompareNumRewardStartTime() {
return compareNumRewardStartTime;
}
public void setCompareNumRewardStartTime(long compareNumRewardStartTime) {
this.compareNumRewardStartTime = compareNumRewardStartTime;
updateString("compareNumRewardStartTime", compareNumRewardStartTime);
}
public Map<Integer, Integer> getGemDrawCountMap() {
return gemDrawCountMap;
}

View File

@ -175,7 +175,7 @@ public class DuoduiTowerLogic {
}
List<SDuoDuiTower> towers = SDuoDuiTower.duoduiMap.get(type).get(tier);
if (towers == null || towers.isEmpty() || towers.get(0).getIncome() == null || towers.get(0).getIncome().length == 0){
String format = MessageFormat.format("多队获取奖励失败,配置表奖励不存在,类型:{0},当前层数:{1}uid{3}", type, tier, user.getId());
String format = MessageFormat.format("多队获取奖励失败,配置表奖励不存在,类型:{0},当前层数:{1}uid{2}", type, tier, user.getId());
throw new ErrorCodeException(format);
}
int[][] income = towers.get(0).getIncome();

View File

@ -13,6 +13,7 @@ public class SCompareNumSetting implements BaseConfig {
private int[][] levelLimit;
private int[] buildID;
private int[][] passReward;
private int[][] income;
private int repeat;
private static Map<Integer, SCompareNumSetting> sCompareNumSettingMap = new HashMap<>();
@ -30,7 +31,7 @@ public class SCompareNumSetting implements BaseConfig {
SCompareNumSetting cfg = sCompareNumSettingMap.get(id);
if (cfg != null) {
List<SCompareNumSetting> list = chapter2List.get(cfg.getChapter());
if (list != null && list.size() > 0) {
if (list != null && !list.isEmpty()) {
SCompareNumSetting info = list.get(0);
if (info != null) {
int lastId = (int)((TreeMap)SCompareNumSetting.getCompareNumSettingMap()).lastEntry().getKey();
@ -80,16 +81,18 @@ public class SCompareNumSetting implements BaseConfig {
return levelLimit;
}
public int[][] getPassReward() {
return passReward;
}
public int[][] getIncome() {
return income;
}
public int getRepeat() {
return repeat;
}
public static List<SCompareNumSetting> getListByChapter(int chapterId) {
return chapter2List.get(chapterId);
}