试炼更新
parent
c0e6246a04
commit
58a2d9e87a
|
@ -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";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue