试炼更新

back_recharge
lvxinran 2019-07-01 17:29:39 +08:00
parent c0e6246a04
commit 58a2d9e87a
4 changed files with 118 additions and 47 deletions

View File

@ -30,6 +30,7 @@ import org.luaj.vm2.LuaValue;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import sun.plugin2.message.Message;
import java.util.*; import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@ -130,6 +131,7 @@ public class MapLogic {
} }
} }
} }
if (user.getPlayerInfoManager().getMapId() < mapId) { if (user.getPlayerInfoManager().getMapId() < mapId) {
user.getPlayerInfoManager().setMapId(mapId); user.getPlayerInfoManager().setMapId(mapId);
} }
@ -230,6 +232,15 @@ public class MapLogic {
.build(); .build();
mapEnterResponse.addHeroInfos(heroInfo); mapEnterResponse.addHeroInfos(heroInfo);
} }
List<MapInfoProto.TowerBuff> buffers = new ArrayList<>();
if(mapManager.getTowerUnusedBuffer()!=null){
for(Map.Entry<Integer,Integer> entry:mapManager.getTowerUnusedBuffer().entrySet()){
TowerBuff buff = new TowerBuff(entry.getKey(),entry.getValue());
buffers.add(CBean2Proto.getTowerBuff(buff));
}
}
// mapManager.setStartExporeTime(System.currentTimeMillis());
mapEnterResponse.addAllBuf(buffers);
LOGGER.info("enterMap() uid=>{} mapId =>{}", uid, mapManager.getCurMapId()); LOGGER.info("enterMap() uid=>{} mapId =>{}", uid, mapManager.getCurMapId());
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true); MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
} }
@ -795,16 +806,30 @@ public class MapLogic {
public void outMap(ISession session, int mapId, MessageTypeProto.MessageType messageType) throws Exception { public void outMap(ISession session, int mapId, MessageTypeProto.MessageType messageType) throws Exception {
int uid = session.getUid(); int uid = session.getUid();
User user = UserManager.getUser(uid); User user = UserManager.getUser(uid);
SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId()); MapManager mapManager = user.getMapManager();
if(user.getMapManager().getTower()>1&&challengeConfig.getType()==2){ SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId());
user.getMapManager().setMapIntoFlag(1); 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){
// mapManager.setTowerTimeByTower(mapManager.getTower(),time);
// }
if(mapManager.getTower()>=1){
mapManager.setMapIntoFlag(1);
}
} }
boolean result = onlyLevelMap(user, true); boolean result = onlyLevelMap(user, true);
if (!result) { if (!result) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), ""); MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
return; return;
} }
MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true); if(mapManager.getTower()>mapManager.getHighestTower()){
mapManager.setHighestTower(mapManager.getTower());
}
MapInfoProto.MapOutResponse.Builder builder = MapInfoProto.MapOutResponse.newBuilder();
builder.setUseTime(mapManager.getCurrTowerTime());
LOGGER.info("当前层使用时间{}"+mapManager.getCurrTowerTime());
MessageUtil.sendMessage(session, 1, messageType.getNumber(), builder.build(), true);
} }
public void whenLogin(User user) throws Exception { public void whenLogin(User user) throws Exception {
@ -1521,14 +1546,14 @@ public class MapLogic {
builder.setStarNum(sChallengeStarBox.getStarNum()); builder.setStarNum(sChallengeStarBox.getStarNum());
} }
MapInfoProto.TowerCopyInfo towerCopyInfo = MapInfoProto.TowerCopyInfo.newBuilder() MapInfoProto.TowerCopyInfo towerCopyInfo = MapInfoProto.TowerCopyInfo.newBuilder()
.setTower(mapManager.getHighestTower() == 0 ? 1 : mapManager.getHighestTower()) .setTower(mapManager.getTower())
.setFightCount(mapManager.getFightCount()) .setFightCount(mapManager.getFightCount())
.setResetCount(mapManager.getResetCount()) .setHighestTower(mapManager.getHighestTower() == 0 ? 1 : mapManager.getHighestTower())
.setHighestTower(mapManager.getHighestTower())
.setEssenceValue(mapManager.getEssenceValue()) .setEssenceValue(mapManager.getEssenceValue())
.setMapIntoReset(mapManager.getMapIntoFlag()) .setMapIntoReset(mapManager.getMapIntoFlag())
.build(); .build();
builder.setTowerCopyInfo(towerCopyInfo); builder.setTowerCopyInfo(towerCopyInfo);
LOGGER.info("关卡信息{}"+towerCopyInfo.toString());
MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true); MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true);
} }
@ -1915,6 +1940,7 @@ public class MapLogic {
* @throws Exception * @throws Exception
*/ */
public String initTrialMap(MapManager mapManager, User user) throws Exception { public String initTrialMap(MapManager mapManager, User user) throws Exception {
STrialConfig sTrialConfig = STrialConfig.sTrialConfigMap.get(mapManager.getTower()); STrialConfig sTrialConfig = STrialConfig.sTrialConfigMap.get(mapManager.getTower());
if (sTrialConfig == null) { if (sTrialConfig == null) {
LOGGER.info("initTrialMap() uid=>{} sTrialConfig == null =>{} ", user.getId(), mapManager.getTower()); LOGGER.info("initTrialMap() uid=>{} sTrialConfig == null =>{} ", user.getId(), mapManager.getTower());
@ -2004,7 +2030,6 @@ public class MapLogic {
mapManager.setCurXY(xy); mapManager.setCurXY(xy);
mapManager.setMapInfo(newMap); mapManager.setMapInfo(newMap);
mapManager.setEssenceValue(0); mapManager.setEssenceValue(0);
mapManager.setStartExporeTime(System.currentTimeMillis());
if(mapManager.getTowerUnusedBuffer()==null){ if(mapManager.getTowerUnusedBuffer()==null){
mapManager.setTowerUnusedBuffer(new HashMap<>()); mapManager.setTowerUnusedBuffer(new HashMap<>());
} }
@ -2035,6 +2060,11 @@ public class MapLogic {
int[][] bossType = config.getRandomBossType(); int[][] bossType = config.getRandomBossType();
type = MathUtils.randomFromWeight(bossType); type = MathUtils.randomFromWeight(bossType);
if(mapManager.getTower()==1){
type = 3;
}else if(mapManager.getTower()==2){
type = 4;
}
// int amount = 0; // int amount = 0;
// for(int i = 0 ; i <bossType.length;i++){ // for(int i = 0 ; i <bossType.length;i++){
// amount+=bossType[i][1]; // amount+=bossType[i][1];
@ -2086,21 +2116,21 @@ public class MapLogic {
} }
i++; i++;
} }
mapManager.setBossType(3); mapManager.setBossType(type);
// xyResult // xyResult
mapManager.setBossXY(xyResult); mapManager.setBossXY(xyResult);
int randomPoint = MathUtils.randomFromWeight(pointId[2]); int randomPoint = MathUtils.randomFromWeight(pointId[type-1]);
LOGGER.info("随机事件id"+randomPoint); LOGGER.info("随机事件id"+randomPoint);
//buff处理 //buff处理
if(type==3){ // if(type==3){
if(currTower>0){ // if(currTower>0){
mapManager.addTowerUnusedBuffer(currTower, randomPoint); // mapManager.addTowerUnusedBuffer(currTower, randomPoint);
} // }
} // }
MapInfoProto.MapTowerCallChiefResponse.Builder response = MapInfoProto.MapTowerCallChiefResponse.newBuilder(); MapInfoProto.MapTowerCallChiefResponse.Builder response = MapInfoProto.MapTowerCallChiefResponse.newBuilder();
Cell cell = BehaviorUtil.addBehaviorInfo(user,randomPoint,mapManager,mapManager.getCurMapId(),CellUtil.pos2XY(xyResult)[0],CellUtil.pos2XY(xyResult)[1]); Cell cell = BehaviorUtil.addBehaviorInfo(user,randomPoint,mapManager,mapManager.getCurMapId(),CellUtil.pos2XY(xyResult)[0],CellUtil.pos2XY(xyResult)[1]);
CommonProto.Cell protoCell =CBean2Proto.getCell(cell); CommonProto.Cell protoCell =CBean2Proto.getCell(cell);
response.setType(3); response.setType(type);
mapManager.setEssenceValue(-1); mapManager.setEssenceValue(-1);
response.setMonsterInfo(protoCell); response.setMonsterInfo(protoCell);
@ -2208,7 +2238,6 @@ public class MapLogic {
resetMapInfo(user, true); resetMapInfo(user, true);
MapInfoProto.MapTowerResetResponse mapTowerResetResponse = MapInfoProto.MapTowerResetResponse MapInfoProto.MapTowerResetResponse mapTowerResetResponse = MapInfoProto.MapTowerResetResponse
.newBuilder() .newBuilder()
.setResetCount(mapManager.getResetCount())
.setTower(1) .setTower(1)
.build(); .build();
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapTowerResetResponse, true); MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapTowerResetResponse, true);
@ -2222,20 +2251,43 @@ public class MapLogic {
public void useTowerBuff(ISession session,int towerLevel,int optionId , MessageTypeProto.MessageType messageType) throws Exception { public void useTowerBuff(ISession session,int towerLevel,int optionId , MessageTypeProto.MessageType messageType) throws Exception {
int uid = session.getUid(); int uid = session.getUid();
MapManager mapManager = UserManager.getUser(uid).getMapManager(); MapManager mapManager = UserManager.getUser(uid).getMapManager();
if(!mapManager.getTowerUnusedBuffer().containsKey(towerLevel)){ String err = checkUseTowerBuff(mapManager, towerLevel, optionId);
MessageUtil.sendErrorCode(session,0,"使用错误当前层不存在buff"); if(!"".equals(err)){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),err);
return; return;
}else{
int buffId = mapManager.getTowerUnusedBuffer().get(towerLevel);
mapManager.consunmeTowerBuffer(towerLevel);
LOGGER.info("使用第"+towerLevel+"层buff");
CombatLogic.getInstance().bufferAddByEatFoodOrEventTrigger(mapManager,buffId);
MapInfoProto.UseTowerBuffResponse.Builder useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder();
useTowerBuffResponse.setBuffId(buffId);
MessageUtil.sendMessage(session,1,messageType.getNumber(),useTowerBuffResponse.build(),true);
} }
int mapPointId = mapManager.getTowerUnusedBuffer().get(towerLevel);
mapManager.consunmeTowerBuffer(towerLevel);
int buffId = SOptionConfig.sOptionConfigMap.get(optionId).getBehaviorTypeValues()[0][0];
LOGGER.info("使用第{},mapPointId,id是:{}",towerLevel,mapPointId);
CombatLogic.getInstance().bufferAddByEatFoodOrEventTrigger(mapManager,buffId);
LOGGER.info("使用第"+towerLevel+"层buff,id是:"+buffId);
MapInfoProto.UseTowerBuffResponse.Builder useTowerBuffResponse = MapInfoProto.UseTowerBuffResponse.newBuilder();
useTowerBuffResponse.setBuffId(buffId);
MessageUtil.sendMessage(session,1,messageType.getNumber(),useTowerBuffResponse.build(),true);
}
private String checkUseTowerBuff(MapManager mapManager,int towerLevel,int optionId){
if(!mapManager.getTowerUnusedBuffer().containsKey(towerLevel)){
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){
if(optionTmp == optionId){
return "";
}
}
return "wrong parm";
} }
/** /**

View File

@ -91,7 +91,7 @@ public class MapManager extends MongoBase {
//副本boss类型 //副本boss类型
private int bossType; private int bossType;
//每层最快时间 //每层最快时间
private int[] everyTowerTime; private Map<Integer,Integer> everyTowerTime;
//当前层使用时间 //当前层使用时间
private int currTowerTime; private int currTowerTime;
@ -252,7 +252,7 @@ public class MapManager extends MongoBase {
if (itemNum < playerInfoManager.getMaxStamina()) { if (itemNum < playerInfoManager.getMaxStamina()) {
int addValue = (updateTime - lastUpdateEnergyTime) / 60 / energyRecoverSpeed[1] * energyRecoverSpeed[0]; int addValue = (updateTime - lastUpdateEnergyTime) / 60 / energyRecoverSpeed[1] * energyRecoverSpeed[0];
if (addValue != 0) { if (addValue != 0) {
int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, playerInfoManager.getMaxStamina()); int curEnergy = MathUtils.setBetweenWithMax(itemNum + addValue, 0, SGameSetting.getGameSetting().getInitialEnergy());
item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy); item.setItemNum(curEnergy > playerInfoManager.getMaxStamina() ? playerInfoManager.getMaxStamina() : curEnergy);
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime); setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
} }
@ -506,7 +506,7 @@ public class MapManager extends MongoBase {
updateString("towerUnusedBuffer." + key, value); updateString("towerUnusedBuffer." + key, value);
this.towerUnusedBuffer.put(key,value); this.towerUnusedBuffer.put(key,value);
} }
public void consunmeTowerBuffer(int tower){ public void consunmeTowerBuffer(int tower){
removeString(getMongoKey() +".towerUnusedBuffer." + tower); removeString(getMongoKey() +".towerUnusedBuffer." + tower);
this.towerUnusedBuffer.remove(tower); this.towerUnusedBuffer.remove(tower);
@ -530,18 +530,6 @@ public class MapManager extends MongoBase {
this.bossType = bossType; this.bossType = bossType;
} }
public int[] getEveryTowerTime() {
return everyTowerTime;
}
public void setEveryTowerTime(int[] everyTowerTime){
this.everyTowerTime = everyTowerTime;
}
public void setEachTime(int index,int eachTime){
if(everyTowerTime.length>0){
this.everyTowerTime[index] = eachTime;
}
}
public int getCurrTowerTime() { public int getCurrTowerTime() {
return currTowerTime; return currTowerTime;
} }
@ -555,8 +543,23 @@ public class MapManager extends MongoBase {
return mapIntoFlag; return mapIntoFlag;
} }
public void setMapIntoFlag(int mapIntoFlag) { public int setMapIntoFlag(int mapIntoFlag) {
updateString("mapIntoFlag",mapIntoFlag); updateString("mapIntoFlag",mapIntoFlag);
this.mapIntoFlag = mapIntoFlag; this.mapIntoFlag = mapIntoFlag;
return mapIntoFlag;
}
public Map<Integer, Integer> getEveryTowerTime() {
return everyTowerTime;
}
public void setEveryTowerTime(Map<Integer, Integer> everyTowerTime) {
updateString("everyTowerTime",everyTowerTime);
this.everyTowerTime = everyTowerTime;
}
public void setTowerTimeByTower(int tower,int time){
if(everyTowerTime!=null){
everyTowerTime.put(tower,time);
}
} }
} }

View File

@ -1,5 +1,7 @@
package com.ljsd.jieling.handler.map.behavior; package com.ljsd.jieling.handler.map.behavior;
import com.ljsd.jieling.config.SChallengeConfig;
import com.ljsd.jieling.config.STrialConfig;
import com.ljsd.jieling.handler.map.EventType; import com.ljsd.jieling.handler.map.EventType;
import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.MapManager;
@ -7,6 +9,8 @@ import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MapInfoProto;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Map;
@Component @Component
public class FourtyTwoBehavior extends BaseBehavior{ public class FourtyTwoBehavior extends BaseBehavior{
@Override @Override
@ -17,9 +21,21 @@ public class FourtyTwoBehavior extends BaseBehavior{
@Override @Override
public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception { public boolean process(int optionId, User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
MapManager mapManager = user.getMapManager(); MapManager mapManager = user.getMapManager();
mapManager.setTower(user.getMapManager().getTower()+1); 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();
}
}
SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId());
if(challengeConfig.getType()==2&&mapManager.getTower()>=maxTower){
LOGGER.info("当前层为{},最大层为{}"+mapManager.getTower()+maxTower);
return false;
}
LOGGER.info("当前层为{},进入下一层"+mapManager.getTower());
mapManager.setTower(mapManager.getTower()+1);
mapManager.setEssenceValue(0); mapManager.setEssenceValue(0);
mapManager.setCurrTowerTime(Integer.parseInt(String.valueOf(System.currentTimeMillis()-mapManager.getStartExporeTime()/1000)));
MapLogic.getInstance().initTrialMap(mapManager, user); MapLogic.getInstance().initTrialMap(mapManager, user);
return true; return true;
} }

View File

@ -116,7 +116,7 @@ public class StoreLogic {
} }
Map<Integer, Integer> itemNumMap = new ConcurrentHashMap<>(); Map<Integer, Integer> itemNumMap = new ConcurrentHashMap<>();
int rewardId = getRewardId(storeType,1,user); int rewardId = getRewardId(storeType,1,user);
itemNumMap.put(rewardId, 0); itemNumMap.put(rewardId, 1);
storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap); storeManager.newStoreInfo(sStoreTypeConfig.getId(),startTime,endTime,itemNumMap);
}else{ }else{
Map<Integer, Integer> itemNumMap = storeInfo.getItemNumMap(); Map<Integer, Integer> itemNumMap = storeInfo.getItemNumMap();
@ -131,7 +131,7 @@ public class StoreLogic {
Map<Integer, SStoreTypeConfig> sstoreTypeConfigMap = SStoreTypeConfig.getsStoreTypeConfigMap(); Map<Integer, SStoreTypeConfig> sstoreTypeConfigMap = SStoreTypeConfig.getsStoreTypeConfigMap();
for ( Map.Entry<Integer, SStoreTypeConfig> entry :sstoreTypeConfigMap.entrySet()){ for ( Map.Entry<Integer, SStoreTypeConfig> entry :sstoreTypeConfigMap.entrySet()){
SStoreTypeConfig sStoreTypeConfig = entry.getValue(); SStoreTypeConfig sStoreTypeConfig = entry.getValue();
if (sStoreTypeConfig.getStoreOpenRule() == 1){ //固定商店 if (sStoreTypeConfig.getStoreOpenRule() == 1 && sStoreTypeConfig.getId() !=8){ //固定商店
Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); Map<Integer, Integer> itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user);
long startTime = 0; long startTime = 0;
long endTime = 0; long endTime = 0;