试炼更新

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.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
import sun.plugin2.message.Message;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
@ -130,6 +131,7 @@ public class MapLogic {
}
}
}
if (user.getPlayerInfoManager().getMapId() < mapId) {
user.getPlayerInfoManager().setMapId(mapId);
}
@ -230,6 +232,15 @@ public class MapLogic {
.build();
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());
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 {
int uid = session.getUid();
User user = UserManager.getUser(uid);
SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(user.getMapManager().getCurMapId());
if(user.getMapManager().getTower()>1&&challengeConfig.getType()==2){
user.getMapManager().setMapIntoFlag(1);
MapManager mapManager = user.getMapManager();
SChallengeConfig challengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId());
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);
if (!result) {
MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "");
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 {
@ -1521,14 +1546,14 @@ public class MapLogic {
builder.setStarNum(sChallengeStarBox.getStarNum());
}
MapInfoProto.TowerCopyInfo towerCopyInfo = MapInfoProto.TowerCopyInfo.newBuilder()
.setTower(mapManager.getHighestTower() == 0 ? 1 : mapManager.getHighestTower())
.setTower(mapManager.getTower())
.setFightCount(mapManager.getFightCount())
.setResetCount(mapManager.getResetCount())
.setHighestTower(mapManager.getHighestTower())
.setHighestTower(mapManager.getHighestTower() == 0 ? 1 : mapManager.getHighestTower())
.setEssenceValue(mapManager.getEssenceValue())
.setMapIntoReset(mapManager.getMapIntoFlag())
.build();
builder.setTowerCopyInfo(towerCopyInfo);
LOGGER.info("关卡信息{}"+towerCopyInfo.toString());
MessageUtil.sendMessage(iSession, 1, msgId, builder.build(), true);
}
@ -1915,6 +1940,7 @@ public class MapLogic {
* @throws Exception
*/
public String initTrialMap(MapManager mapManager, User user) throws Exception {
STrialConfig sTrialConfig = STrialConfig.sTrialConfigMap.get(mapManager.getTower());
if (sTrialConfig == null) {
LOGGER.info("initTrialMap() uid=>{} sTrialConfig == null =>{} ", user.getId(), mapManager.getTower());
@ -2004,7 +2030,6 @@ public class MapLogic {
mapManager.setCurXY(xy);
mapManager.setMapInfo(newMap);
mapManager.setEssenceValue(0);
mapManager.setStartExporeTime(System.currentTimeMillis());
if(mapManager.getTowerUnusedBuffer()==null){
mapManager.setTowerUnusedBuffer(new HashMap<>());
}
@ -2035,6 +2060,11 @@ public class MapLogic {
int[][] bossType = config.getRandomBossType();
type = MathUtils.randomFromWeight(bossType);
if(mapManager.getTower()==1){
type = 3;
}else if(mapManager.getTower()==2){
type = 4;
}
// int amount = 0;
// for(int i = 0 ; i <bossType.length;i++){
// amount+=bossType[i][1];
@ -2086,21 +2116,21 @@ public class MapLogic {
}
i++;
}
mapManager.setBossType(3);
mapManager.setBossType(type);
// xyResult
mapManager.setBossXY(xyResult);
int randomPoint = MathUtils.randomFromWeight(pointId[2]);
int randomPoint = MathUtils.randomFromWeight(pointId[type-1]);
LOGGER.info("随机事件id"+randomPoint);
//buff处理
if(type==3){
if(currTower>0){
mapManager.addTowerUnusedBuffer(currTower, randomPoint);
}
}
// if(type==3){
// if(currTower>0){
// mapManager.addTowerUnusedBuffer(currTower, randomPoint);
// }
// }
MapInfoProto.MapTowerCallChiefResponse.Builder response = MapInfoProto.MapTowerCallChiefResponse.newBuilder();
Cell cell = BehaviorUtil.addBehaviorInfo(user,randomPoint,mapManager,mapManager.getCurMapId(),CellUtil.pos2XY(xyResult)[0],CellUtil.pos2XY(xyResult)[1]);
CommonProto.Cell protoCell =CBean2Proto.getCell(cell);
response.setType(3);
response.setType(type);
mapManager.setEssenceValue(-1);
response.setMonsterInfo(protoCell);
@ -2208,7 +2238,6 @@ public class MapLogic {
resetMapInfo(user, true);
MapInfoProto.MapTowerResetResponse mapTowerResetResponse = MapInfoProto.MapTowerResetResponse
.newBuilder()
.setResetCount(mapManager.getResetCount())
.setTower(1)
.build();
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 {
int uid = session.getUid();
MapManager mapManager = UserManager.getUser(uid).getMapManager();
if(!mapManager.getTowerUnusedBuffer().containsKey(towerLevel)){
MessageUtil.sendErrorCode(session,0,"使用错误当前层不存在buff");
String err = checkUseTowerBuff(mapManager, towerLevel, optionId);
if(!"".equals(err)){
MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),err);
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类型
private int bossType;
//每层最快时间
private int[] everyTowerTime;
private Map<Integer,Integer> everyTowerTime;
//当前层使用时间
private int currTowerTime;
@ -252,7 +252,7 @@ public class MapManager extends MongoBase {
if (itemNum < playerInfoManager.getMaxStamina()) {
int addValue = (updateTime - lastUpdateEnergyTime) / 60 / energyRecoverSpeed[1] * energyRecoverSpeed[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);
setLastUpdateEnergyTime(item, updateTime, lastUpdateEnergyTime);
}
@ -506,7 +506,7 @@ public class MapManager extends MongoBase {
updateString("towerUnusedBuffer." + key, value);
this.towerUnusedBuffer.put(key,value);
}
public void consunmeTowerBuffer(int tower){
removeString(getMongoKey() +".towerUnusedBuffer." + tower);
this.towerUnusedBuffer.remove(tower);
@ -530,18 +530,6 @@ public class MapManager extends MongoBase {
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() {
return currTowerTime;
}
@ -555,8 +543,23 @@ public class MapManager extends MongoBase {
return mapIntoFlag;
}
public void setMapIntoFlag(int mapIntoFlag) {
public int setMapIntoFlag(int mapIntoFlag) {
updateString("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;
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.MapLogic;
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 org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class FourtyTwoBehavior extends BaseBehavior{
@Override
@ -17,9 +21,21 @@ 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();
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.setCurrTowerTime(Integer.parseInt(String.valueOf(System.currentTimeMillis()-mapManager.getStartExporeTime()/1000)));
MapLogic.getInstance().initTrialMap(mapManager, user);
return true;
}

View File

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