爬塔最后一层时间、爬塔扫荡、退出地图修改

back_recharge
lvxinran 2019-07-01 20:28:42 +08:00
parent 1c7be8d183
commit dc92619cbe
6 changed files with 60 additions and 41 deletions

View File

@ -16,6 +16,7 @@ public class STrialConfig implements BaseConfig {
@Override
public void init() throws Exception {
sTrialConfigMap = STableManager.getConfig(STrialConfig.class);
this.highestTower = sTrialConfigMap.size();
}
/**
@ -66,7 +67,10 @@ public class STrialConfig implements BaseConfig {
private int eliteEnergy;
private int[][] randomStore;
/**
*
*/
private static int highestTower;
public int getId() {
return id;
@ -109,4 +113,8 @@ public class STrialConfig implements BaseConfig {
}
public int[][] getRandomStore() { return randomStore;}
public static int getHighestTower() {
return highestTower;
}
}

View File

@ -53,6 +53,7 @@ public interface BIReason {
int BOMB_REWARD = 33;//炸弹掉落
int TOWER_SWEEP_REWARD = 34;//爬塔扫荡奖励
//道具消耗原因 1000开头
int ADVENTURE_UPLEVEL_CONSUME = 1000; //秘境升级

View File

@ -802,7 +802,7 @@ public class MapLogic {
* @param messageType
* @throws Exception
*/
public void outMap(ISession session, int mapId, MessageTypeProto.MessageType messageType) throws Exception {
public void outMap(ISession session, int mapId,int outType, MessageTypeProto.MessageType messageType) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
MapManager mapManager = user.getMapManager();
@ -810,29 +810,31 @@ public class MapLogic {
if(challengeConfig.getType()==2){
int time = (int)((System.currentTimeMillis()-mapManager.getStartExporeTime())/1000);
mapManager.setCurrTowerTime(time);
// if(mapManager.getEveryTowerTime()!=null&&mapManager.getEveryTowerTime().get(mapManager.getTower())!=null){
// if(mapManager.getEveryTowerTi
// me()!=null&&mapManager.getEveryTowerTime().get(mapManager.getTower())!=null){
// mapManager.setTowerTimeByTower(mapManager.getTower(),time);
// }
if(mapManager.getTower()>=1){
mapManager.setMapIntoFlag(1);
}
MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder();
builder.setUseTime(mapManager.getCurrTowerTime());
LOGGER.info("当前层使用时间{}"+mapManager.getCurrTowerTime());
if(mapManager.getTower()>mapManager.getHighestTower()){
mapManager.setHighestTower(mapManager.getTower());
}
if(outType == 0||mapManager.getTower()-1==STrialConfig.getHighestTower()){
boolean result = onlyLevelMap(user, true);
if (!result) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
return;
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true);
return;
}
boolean result = onlyLevelMap(user, true);
if (!result) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
return;
MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder();
builder.setUseTime(mapManager.getCurrTowerTime());
LOGGER.info("当前层使用时间{}"+mapManager.getCurrTowerTime());
if(mapManager.getTower()>mapManager.getHighestTower()){
mapManager.setHighestTower(mapManager.getTower());
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true);
MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true);
return;
}
public void whenLogin(User user) throws Exception {
@ -1243,7 +1245,12 @@ public class MapLogic {
if (monsterGroupId == mapManager.getSuddenlyBoss()) {
mapManager.findSuddenlyBoss(0, 0);
}
fightEndResponse.setEssenceValue(mapManager.getEssenceValue());
// if(mapManager.getBossType()==1)
if(mapManager.getTower()==STrialConfig.getHighestTower()&&mapManager.getBossType()!=0){
fightEndResponse.setLastTowerTime(mapManager.getCurrTowerTime());
}else{
fightEndResponse.setLastTowerTime(0);
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true);
}
@ -1945,6 +1952,14 @@ public class MapLogic {
public String initTrialMap(MapManager mapManager, User user) throws Exception {
STrialConfig sTrialConfig = STrialConfig.sTrialConfigMap.get(mapManager.getTower());
if(mapManager.getTower()>1){
for(int i = 1 ; i <mapManager.getTower();i++){
int type = MathUtils.randomFromWeight(STrialConfig.sTrialConfigMap.get(i).getRandomMonsterType());
if(type==3||type==4){
ItemUtil.drop(user,STrialConfig.sTrialConfigMap.get(i).getReward(),1.0f,1,BIReason.TOWER_SWEEP_REWARD);
}
}
}
if (sTrialConfig == null) {
LOGGER.info("initTrialMap() uid=>{} sTrialConfig == null =>{} ", user.getId(), mapManager.getTower());
return "";
@ -2065,10 +2080,12 @@ public class MapLogic {
type = MathUtils.randomFromWeight(bossType);
if(mapManager.getTower()==1){
type = 3;
type = 2;
}else if(mapManager.getTower()==2){
type = 4;
}
// int amount = 0;
// for(int i = 0 ; i <bossType.length;i++){
// amount+=bossType[i][1];
@ -2153,15 +2170,15 @@ public class MapLogic {
MapManager mapManager = user.getMapManager();
STrialSetting setting = STrialSetting.sTrialSetting;
int[][] bomb = setting.getBombId();
if(mapManager.getEssenceValue()==-1){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"已经召唤首领,无需使用炸弹");
return;
}
boolean isUse = ItemUtil.itemCost(user,bomb,BIReason.BOMB_CONSUME,mapManager.getCurMapId());
if(isUse){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"无炸弹");
return;
}
if(mapManager.getEssenceValue()==-1){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"已经召唤首领,无需使用炸弹");
return;
}
Map<Integer, Cell> mapInfo = mapManager.getMapInfo();
Map<Integer,SEventPointConfig> sEventPointConfig = SEventPointConfig.sEventPointConfigMap;
Set<Integer> destoryCell = new HashSet<>();
@ -2282,12 +2299,6 @@ public class MapLogic {
return "使用错误当前层不存在buff";
}
int mapPointId = mapManager.getTowerUnusedBuffer().get(towerLevel);
// MapPointConfig mapPointConfig = MapPointConfig.getScMapEventMap().get(mapPointId);
// if(mapPointId == null){
// return "parm wrong";
// }
// int initialEventId = mapPointConfig.getInitialEventId();
// mapManager.consunmeTowerBuffer(towerLevel);
SEventPointConfig sEventPointConfig = SEventPointConfig.sEventPointConfigMap.get(mapPointId);
int[] options = sEventPointConfig.getOption();
for(int optionTmp : options){

View File

@ -562,4 +562,8 @@ public class MapManager extends MongoBase {
everyTowerTime.put(tower,time);
}
}
public void removeBoss(){
this.setBossXY(0);
this.setBossType(0);
}
}

View File

@ -9,8 +9,6 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.protocols.MapInfoProto;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class FourtyTwoBehavior extends BaseBehavior{
@Override
@ -21,19 +19,15 @@ public class FourtyTwoBehavior extends BaseBehavior{
@Override
public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
MapManager mapManager = user.getMapManager();
int maxTower = 0;
Map<Integer,STrialConfig> sTrialConfig = STrialConfig.sTrialConfigMap;
for(Map.Entry<Integer,STrialConfig> entry:sTrialConfig.entrySet()){
if(entry.getValue().getId()>maxTower){
maxTower = entry.getValue().getId();
}
}
int maxTower = STrialConfig.getHighestTower();
SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId());
if(challengeConfig.getType()==2&&mapManager.getTower()>=maxTower){
LOGGER.info("当前层为{},最大层为{}"+mapManager.getTower()+maxTower);
mapManager.setTower(mapManager.getTower()+1);
LOGGER.info("当前层为{},最大层为{}",mapManager.getTower(),maxTower);
return false;
}
LOGGER.info("当前层为{},进入下一层"+mapManager.getTower());
LOGGER.info("当前层为{},进入下一层",mapManager.getTower());
mapManager.removeBoss();
mapManager.setTower(mapManager.getTower()+1);
mapManager.setEssenceValue(0);
MapLogic.getInstance().initTrialMap(mapManager, user);

View File

@ -20,6 +20,7 @@ public class MapOutRequestHandler extends BaseHandler{
byte[] bytes = netData.parseClientProtoNetData();
MapInfoProto.MapOutRequest mapOutRequest = MapInfoProto.MapOutRequest.parseFrom(bytes);
int mapId = mapOutRequest.getMapId();
MapLogic.getInstance().outMap(iSession, mapId,MessageTypeProto.MessageType.MAP_OUT_RESPONSE);
int outType = mapOutRequest.getOutType();
MapLogic.getInstance().outMap(iSession, mapId,outType,MessageTypeProto.MessageType.MAP_OUT_RESPONSE);
}
}