back_recharge
gaojie 2019-03-12 11:10:23 +08:00
commit c5d0813b68
12 changed files with 144 additions and 39 deletions

View File

@ -19,6 +19,7 @@ public class SItem implements BaseConfig {
private int rewardGroup;
private int usePerCount;
private boolean isopen;
private int isSave;
@Override
public void init() throws Exception {
@ -68,4 +69,8 @@ public class SItem implements BaseConfig {
public boolean isIsopen() {
return isopen;
}
public int getIsSave() {
return isSave;
}
}

View File

@ -45,9 +45,9 @@ public class EventType {
* id
* 16
* id#num#id
* 17
* 17
* id#id#id#id#id#id#id#id
* 18
* 18
* id#id
* 19
* id#id#id0

View File

@ -4,9 +4,7 @@ import com.ljsd.jieling.config.*;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.handler.map.behavior.BaseBehavior;
import com.ljsd.jieling.handler.mission.Mission;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession;
@ -14,10 +12,7 @@ import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.ljsd.jieling.protocols.MapInfoProto;
import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.CellUtil;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MathUtils;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
@ -111,12 +106,14 @@ public class MapLogic {
for (Map.Entry<Integer, Cell> entry : mapManager.getTypeEight().entrySet()) {
cellToProto(cells, entry);
}
MapInfoProto.MapEnterResponse mapEnterResponse = MapInfoProto.MapEnterResponse
.newBuilder()
.addAllMapList(cells)
.setCurXY(mapManager.getCurXY())
.build();
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse, true);
MapInfoProto.MapEnterResponse.Builder mapEnterResponse = MapInfoProto.MapEnterResponse.newBuilder();
mapEnterResponse.addAllMapList(cells);
mapEnterResponse.setLeftStep(mapManager.getTotalStep());
mapEnterResponse.setCurXY(mapManager.getCurXY());
if (mapManager.getTemporaryItems() != null) {
mapEnterResponse.setTemporaryItems(CBean2Proto.getDrop(mapManager.getTemporaryItems()));
}
MessageUtil.sendMessage(iSession, 1, messageType.getNumber(), mapEnterResponse.build(), true);
}
private void cellToProto(List<CommonProto.Cell> cells, Map.Entry<Integer, Cell> entry) {
@ -226,6 +223,20 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
if (mapManager.getTotalStep() <= 0) {
LOGGER.info("updateMap() uid=>{}, no step=>{}", uid, mapManager.getTotalStep());
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
// int leftStep = mapManager.getTotalStep() - cells.size();
// if (leftStep <= 0) {
// resetMapInfo(mapManager);
// LOGGER.info("updateMap() uid=>{}, leftStep=>{}", uid, leftStep);
// MapInfoProto.MapUpdateResponse mapUpdateResponse = MapInfoProto.MapUpdateResponse.newBuilder().build();
// MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateResponse, true);
// return;
// }
// mapManager.setTotalStep(leftStep);
Cell cell = mapManager.getMapInfo().get(curXY);
if (cell == null) {
cell = mapManager.getMapInfo().get(triggerXY);
@ -388,7 +399,7 @@ public class MapLogic {
}
}
}
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1);
CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, sOptionConfig.getReward(), 1, 1);
List<CommonProto.EventBehaviorValues> eventBehaviorValuesList = new ArrayList<>();
for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) {
CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues
@ -509,12 +520,14 @@ public class MapLogic {
mapManager.setWalkCells(new HashSet<>());
mapManager.setCurXY(0);
mapManager.setCurMapId(0);
TemporaryItems temporaryItems = mapManager.getTemporaryItems();
if (temporaryItems != null) {
Map<Integer, Item> items = temporaryItems.items;
Map<Integer, Equip> equips = temporaryItems.equips;
// ItemUtil.addItem();
}
}
//在地图吃东西
public void endFight(ISession session, int result, MessageTypeProto.MessageType messageType, int monsterGroupId) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
@ -531,7 +544,7 @@ public class MapLogic {
MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), "");
return;
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, sMonsterGroup.getRewardgroup(), 1, 1);
FightInfoProto.FightEndResponse fightEndResponse = FightInfoProto.FightEndResponse
.newBuilder()
.setDrop(drop)

View File

@ -30,6 +30,8 @@ public class MapManager extends MongoBase {
private int totalStep;
private TemporaryItems temporaryItems;
private Map<Integer, CrossMapCell> crossMapInfos = new ConcurrentHashMap<>();
public MapManager() {
@ -145,4 +147,13 @@ public class MapManager extends MongoBase {
updateString( "triggerXY", triggerXY);
this.triggerXY = triggerXY;
}
public TemporaryItems getTemporaryItems() {
return temporaryItems;
}
public void setTemporaryItems(TemporaryItems temporaryItems) {
updateString( "temporaryItems", temporaryItems);
this.temporaryItems = temporaryItems;
}
}

View File

@ -0,0 +1,15 @@
package com.ljsd.jieling.handler.map;
import com.ljsd.jieling.logic.dao.Equip;
import com.ljsd.jieling.logic.dao.Item;
import java.util.HashMap;
import java.util.Map;
public class TemporaryItems {
public Map<Integer, Item> items = new HashMap<>();
public Map<Integer, Equip> equips = new HashMap<>();
}

View File

@ -46,14 +46,14 @@ public class BehaviorUtil {
/**
*
* @param user
* @param behaviorTypeValues
* @param groupId
* @param eventUpdateResponse
* @throws Exception
*/
public static void getFightInfo(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
public static void getFightInfo(User user, int groupId, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
MapManager mapManager = user.getMapManager();
String key = RedisKey.getKey(RedisKey.FIGHT, user.getId(), false);
RedisUtil.getInstence().set(key, Integer.toString(behaviorTypeValues[0][0]), RedisKey.EXPIRE_TIME);
RedisUtil.getInstence().set(key, Integer.toString(groupId), RedisKey.EXPIRE_TIME);
Set<String> heroes = mapManager.getHeroes();
List<CommonProto.HeroFightInfo> heroFightInfos = new ArrayList<>(heroes.size());
for (String heroId : heroes) {
@ -79,7 +79,7 @@ public class BehaviorUtil {
heroFightInfos.add(heroFightInfo);
}
eventUpdateResponse.addAllHeroFightInfos(heroFightInfos);
List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(behaviorTypeValues[0][0]);
List<CommonProto.Monster> monsterByGroup = MonsterUtil.getMonsterByGroup(groupId);
eventUpdateResponse.addAllMonsterList(monsterByGroup);
}

View File

@ -14,8 +14,9 @@ public class FightAndDestroyPointBehavior extends BaseBehavior {
@Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.getFightInfo(user, behaviorTypeValues, eventUpdateResponse);
BehaviorUtil.distoryPoint(user, behaviorTypeValues[0][1]);
BehaviorUtil.updateMission(user, behaviorTypeValues[0][0], eventUpdateResponse);
BehaviorUtil.getFightInfo(user, behaviorTypeValues[0][1], eventUpdateResponse);
BehaviorUtil.distoryPoint(user, behaviorTypeValues[0][2]);
return true;
}
}

View File

@ -14,7 +14,7 @@ public class FightBehavior extends BaseBehavior {
@Override
public boolean process(User user, int[][] behaviorTypeValues, MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse) throws Exception {
BehaviorUtil.getFightInfo(user, behaviorTypeValues, eventUpdateResponse);
BehaviorUtil.getFightInfo(user, behaviorTypeValues[0][0], eventUpdateResponse);
return true;
}
}

View File

@ -138,7 +138,7 @@ public class MissionLogic {
user.getMissionManager().addTakeRewardMissions(missionId);
SMissionEventsConfig sMissionEventsConfig = SMissionEventsConfig.sMissionEventsConfigMap.get(missionId);
int[] reward = {sMissionEventsConfig.getReward()};
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward, 1, 0);
MissionInfoProto.TakeMissionResponse takeMissionResponse =
MissionInfoProto.TakeMissionResponse
.newBuilder()

View File

@ -320,7 +320,10 @@ public class HeroLogic {
}
if(scHeroRankUpConfigByTypeStar!=null){
SCHeroRankUpConfig scHeroRankUpConfigStar = scHeroRankUpConfigByTypeStar.get(hero.getStar());
if(hero.getLevel()+1 > scHeroRankUpConfigStar.getLimitLevel() && hero.getStar() < scHeroRankUpConfigStar.getOpenStar()){
if(scHeroRankUpConfigStar == null){
scHeroRankUpConfigStar = scHeroRankUpConfigByTypeStar.get(hero.getStar() -1);
}
if(scHeroRankUpConfigStar == null || (hero.getLevel()+1 > scHeroRankUpConfigStar.getLimitLevel() && hero.getStar() < scHeroRankUpConfigStar.getOpenStar())){
MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_LEVEL_RESPONSE_VALUE,"max level");
return;
}

View File

@ -1,18 +1,15 @@
package com.ljsd.jieling.util;
import com.ljsd.jieling.config.SCHero;
import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.config.SMonsterConfig;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.handler.map.TemporaryItems;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.protocols.CommonProto;
import com.ljsd.jieling.protocols.FightInfoProto;
import com.sun.org.apache.regexp.internal.RE;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.concurrent.CopyOnWriteArrayList;
public class CBean2Proto {
@ -118,6 +115,18 @@ public class CBean2Proto {
return equipProto;
}
public static CommonProto.Drop getDrop(TemporaryItems temporaryItems) {
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
for (Item item : temporaryItems.items.values()) {
drop.addItemlist(getItem(item));
}
for (Equip equip : temporaryItems.equips.values()) {
drop.addEquipId(getEquipProto(equip));
}
return drop.build();
}
private static List<CommonProto.SpecialEffects> parseFromMap(Map<Integer,Integer> propertyValueByIdMap){
List<CommonProto.SpecialEffects> result = new ArrayList<>();
for(Map.Entry<Integer,Integer> item:propertyValueByIdMap.entrySet()){

View File

@ -4,6 +4,8 @@ import com.ljsd.jieling.config.SRewardItem;
import com.ljsd.jieling.config.SItem;
import com.ljsd.jieling.config.SRewardGroup;
import com.ljsd.jieling.globals.GlobalItemType;
import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.TemporaryItems;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.protocols.CommonProto;
@ -56,13 +58,21 @@ public class ItemUtil {
for (Map.Entry<int [],Float> entry :dropGroupAndRatioMap.entrySet()){
int[] dropGroupIds = entry.getKey();
float dropRatio = entry.getValue();
dropBuilder = drop(user, dropGroupIds, dropRatio);
dropBuilder = drop(user, dropGroupIds, dropRatio, 0);
}
return dropBuilder;
}
//掉落
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio) throws Exception {
/**
*
* @param user
* @param dropGroupIds
* @param dropRatio
* @param isMapping 1
* @return
* @throws Exception
*/
public static CommonProto.Drop.Builder drop(User user, int[] dropGroupIds,float dropRatio, int isMapping) throws Exception {
CommonProto.Drop.Builder dropBuilder = CommonProto.Drop.newBuilder();
Map<Integer, Integer> itemMap = new HashMap<>();
Map<Integer, Integer> cardMap = new HashMap<>();
@ -76,7 +86,11 @@ public class ItemUtil {
selectDrop(sRewardGroup,itemMap,cardMap,equipMap,randomMap,dropRatio);
}
useRandomItem(user,randomMap);
addItem(user,itemMap,dropBuilder);
if (isMapping == 1) {
addItemToTemporaryBag(user,itemMap,dropBuilder);
} else {
addItem(user,itemMap,dropBuilder);
}
addCard(user,cardMap,dropBuilder);
addEquip(user,equipMap,dropBuilder);
return dropBuilder;
@ -241,6 +255,40 @@ public class ItemUtil {
// UserManager.ljsdMongoTemplate.lastUpdate();
}
/**
*
* @param user
* @param itemMap
* @throws Exception
*/
public static void addItemToTemporaryBag(User user, Map<Integer, Integer> itemMap,CommonProto.Drop.Builder dropBuilder) throws Exception {
List<CommonProto.Item> itemProtoList = new CopyOnWriteArrayList<>();
MapManager mapManager = user.getMapManager();
if (mapManager.getTemporaryItems() == null) {
TemporaryItems temporaryItems = new TemporaryItems();
mapManager.setTemporaryItems(temporaryItems);
}
Map<Integer, Item> items = mapManager.getTemporaryItems().items;
for (Map.Entry<Integer, Integer> entry : itemMap.entrySet()) {
SItem sItem = SItem.getsItemMap().get (entry.getKey());
if (sItem == null){
continue;
}
Item item = items.get(entry.getKey());
if (item == null) {
item = new Item(entry.getKey(), entry.getValue());
items.put(entry.getKey(), item);
} else {
item.setItemNum(item.getItemNum() + entry.getValue());
}
itemProtoList.add(CBean2Proto.getItem(item));
}
if (dropBuilder != null) {
dropBuilder.addAllItemlist(itemProtoList);
}
}
public static void useItem(User user,Map<Integer,Integer> useItemMap) throws Exception{
if(useItemMap.isEmpty()){
return;
@ -420,7 +468,7 @@ public class ItemUtil {
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
if (!dropIds.toString().isEmpty()){
int[] ints = StringUtil.parseFiledInt(dropIds.toString());
drop = ItemUtil.drop(user, ints, 1);
drop = ItemUtil.drop(user, ints, 1, 0);
}
return drop;
}