跨服,玩家信息和排行初版

back_recharge
duhui 2021-06-18 16:58:32 +08:00
parent 870f5eea52
commit 7f7223ee10
15 changed files with 917 additions and 159 deletions

View File

@ -320,6 +320,7 @@ public class RedisKey {
public static final String SERVER_SPLIT_INFO = "SERVER_SPLIT_INFO";
public static final String CROSS_SERVICE_ARENA = "CROSS_SERVICE_ARENA";
public static Set<String> familyKey = new HashSet<>();

View File

@ -1246,7 +1246,8 @@ public class RedisUtil {
// return GameApplication.serverProperties.getAreaId()+ RedisKey.Delimiter_colon+type + RedisKey.Delimiter_colon+key;
// }
if(RedisKey.TOKEN.equals(type)||RedisKey.USER_SERVER_INFO.equals(type)||
RedisKey.CDKEY.equals(type)||RedisKey.ServerArenaJob.equals(type)){
RedisKey.CDKEY.equals(type)||RedisKey.ServerArenaJob.equals(type)||
RedisKey.CROSS_SERVICE_ARENA.equals(type)){
return type + RedisKey.Delimiter_colon + key;
}

View File

@ -0,0 +1,107 @@
package com.ljsd.jieling.logic.activity.crossService;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.logic.arena.ArenaLogic;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.gm.CoreOfServerInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import java.net.UnknownHostException;
/**
* @Author hj
* @Date 2021/6/17 18:17
* @Description:
* @Version 1.0
*/
public class CrossServiceLogic {
private static final Logger LOGGER = LoggerFactory.getLogger(ArenaLogic.class);
private CrossServiceLogic(){}
public static class Instance {
public final static CrossServiceLogic instance = new CrossServiceLogic();
}
public static CrossServiceLogic getInstance() {
return CrossServiceLogic.Instance.instance;
}
public String findServerName(int serverId) throws UnknownHostException {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
Query query = new Query();
query.addCriteria(Criteria.where("server_id").is(String.valueOf(serverId)));
return core.findOne(query, CoreOfServerInfo.class).getName();
}
public void insert(User user) throws UnknownHostException {
ArenaOfUser arenaOfUser = new ArenaOfUser(user);
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
core.insert(arenaOfUser,"arenaOfUser");
}
public void update(ArenaOfUser arenaOfUser) throws Exception {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
// 根据id查询
Query query = new Query(Criteria.where("_id").is(arenaOfUser.getId()));
// 修改的参数
Update update = new Update();
update.set("arenaOfPlayerManager",arenaOfUser.getPlayerManager());
update.set("arenaOfHeroManager",arenaOfUser.getHeroManager());
update.set("arenaOfPokemons",arenaOfUser.getPokemons());
update.set("arenaOfSeals",arenaOfUser.getSeals());
update.set("arenaOfGuildSkill",arenaOfUser.getGuildSkill());
core.updateMulti(query, update, ArenaOfUser.class);
}
public ArenaOfUser query(int uid) throws UnknownHostException {
MongoTemplate core = MongoUtil.getCoreMongoTemplate();
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(uid));
return core.findOne(query, ArenaOfUser.class);
}
/**
*
* @param arenaOfUser
* @throws Exception
*/
private void countForce(ArenaOfUser arenaOfUser) throws Exception {
User user = UserManager.getUser(arenaOfUser.getId());
int totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE, false);
arenaOfUser.getHeroManager().setTotalForce(totalForce);
}
/**
*
* @param user
* @throws Exception
*/
public void dispose(User user) throws Exception{
ArenaOfUser query = query(user.getId());
// 添加
if (query == null){
insert(user);
}
// 更新
else {
// 获取新的跨服用户信息
ArenaOfUser arenaOfUser = new ArenaOfUser(user);
// 计算战力
countForce(arenaOfUser);
// 更新数据
update(arenaOfUser);
}
}
}

View File

@ -14,7 +14,7 @@ import org.slf4j.LoggerFactory;
import java.util.*;
@Deprecated
public class Equip extends PropertyItem implements Cloneable{
public class Equip extends PropertyItem{
private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(Equip.class);
private int rebuildLevel;
@ -320,9 +320,4 @@ public class Equip extends PropertyItem implements Cloneable{
updateString("rebuildLevel",rebuildLevel);
this.rebuildLevel = rebuildLevel;
}
@Override
public Object clone() throws CloneNotSupportedException {
return (Equip) super.clone();
}
}

View File

@ -19,7 +19,7 @@ import org.slf4j.LoggerFactory;
import java.util.*;
public class Hero extends MongoBase implements Comparable<Hero> {
public class Hero extends MongoBase implements Comparable<Hero>,Cloneable {
private static final Logger LOGGER = LoggerFactory.getLogger(Hero.class);
private String id;
@ -31,9 +31,9 @@ public class Hero extends MongoBase implements Comparable<Hero> {
private int star;
private Map<Integer,Integer> equipByPositionMap;
private Map<Integer,Integer> equipByPositionMap = new HashMap<>();
private Map<Integer,Integer> soulEquipByPositionMap;
private Map<Integer,Integer> soulEquipByPositionMap = new HashMap<>();
private int breakId;
@ -463,4 +463,20 @@ public class Hero extends MongoBase implements Comparable<Hero> {
}
return Integer.compare(o.getStar(), this.getStar());
}
@Override
public Object clone(){
Hero clone = null;
try {
clone = (Hero) super.clone();
clone.equipByPositionMap = new HashMap<>(clone.equipByPositionMap);
clone.soulEquipByPositionMap = new HashMap<>(clone.soulEquipByPositionMap);
clone.jewelInfo = new HashSet<>(clone.jewelInfo);
} catch (CloneNotSupportedException e) {
LOGGER.error("英雄克隆失败........");
e.printStackTrace();
}
return clone;
}
}

View File

@ -10,7 +10,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Pokemon extends MongoBase {
public class Pokemon extends MongoBase implements Cloneable {
private int tmpId;
@ -94,5 +94,15 @@ public class Pokemon extends MongoBase {
// updateString("comonpentsLevelMap",new HashMap<>());
// }
@Override
public Object clone(){
Pokemon clone = null;
try {
clone = (Pokemon) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
}

View File

@ -2,9 +2,11 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
public class PropertyItem extends MongoBase {
public class PropertyItem extends MongoBase implements Cloneable {
private String id;
private int equipId;
@ -120,4 +122,18 @@ public class PropertyItem extends MongoBase {
updateString("isLocked", isLocked);
this.isLocked = isLocked;
}
@Override
public Object clone() {
PropertyItem clone = null;
try {
clone = (PropertyItem) super.clone();
clone.propertyValueByIdMap = new HashMap<>(clone.propertyValueByIdMap);
clone.secondValueByIdMap = new HashMap<>(clone.secondValueByIdMap);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return clone;
}
}

View File

@ -0,0 +1,180 @@
package com.ljsd.jieling.logic.dao.gm;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.HeroManager;
import com.ljsd.jieling.logic.dao.root.User;
import java.util.*;
/**
* @Author hj
* @Date 2021/6/17 16:49
* @Description:
* @Version 1.0
*/
public class ArenaOfHero {
private String id;
private int templateId; //模板ID
private int level;//等级
private int star;
private Map<Integer,Integer> equipByPositionMap = new HashMap<>();
private Map<Integer,Integer> soulEquipByPositionMap = new HashMap<>();
private int breakId;
private int starBreakId;
private int createTime;
private int lastUpdateEnergyTime;
private int speed;
private int especialEquipLevel;
private int isLock;
private int createType;
private int changeId;
private Set<String> jewelInfo = new HashSet<>();
public ArenaOfHero(User user, Hero hero) {
HeroManager heroManager = user.getHeroManager();
this.id = hero.getId();
this.templateId = hero.getTemplateId();
this.level = hero.getLevel(heroManager);
this.star = hero.getStar();
this.equipByPositionMap = new HashMap<>(hero.getEquipByHongmengPositionMap(heroManager));
this.soulEquipByPositionMap = new HashMap<>(hero.getSoulEquipByPositionMap());
this.breakId = hero.getBreakIdByHongMeng(heroManager);
this.starBreakId = hero.getStarBreakId();
this.createTime = hero.getCreateTime();
this.lastUpdateEnergyTime = hero.getLastUpdateEnergyTime();
this.speed = hero.getSpeed();
this.especialEquipLevel = hero.getEspecialEquipLevelByHongmeng(heroManager,hero.getId());
this.isLock = hero.getIsLock();
this.createType = hero.getCreateType();
this.changeId = hero.getChangeId();
this.jewelInfo = new HashSet<>(hero.getJewelInfo());
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getTemplateId() {
return templateId;
}
public void setTemplateId(int templateId) {
this.templateId = templateId;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getStar() {
return star;
}
public void setStar(int star) {
this.star = star;
}
public Map<Integer, Integer> getEquipByPositionMap() {
return equipByPositionMap;
}
public void setEquipByPositionMap(Map<Integer, Integer> equipByPositionMap) {
this.equipByPositionMap = equipByPositionMap;
}
public Map<Integer, Integer> getSoulEquipByPositionMap() {
return soulEquipByPositionMap;
}
public void setSoulEquipByPositionMap(Map<Integer, Integer> soulEquipByPositionMap) {
this.soulEquipByPositionMap = soulEquipByPositionMap;
}
public int getBreakId() {
return breakId;
}
public void setBreakId(int breakId) {
this.breakId = breakId;
}
public int getStarBreakId() {
return starBreakId;
}
public void setStarBreakId(int starBreakId) {
this.starBreakId = starBreakId;
}
public int getCreateTime() {
return createTime;
}
public void setCreateTime(int createTime) {
this.createTime = createTime;
}
public int getLastUpdateEnergyTime() {
return lastUpdateEnergyTime;
}
public void setLastUpdateEnergyTime(int lastUpdateEnergyTime) {
this.lastUpdateEnergyTime = lastUpdateEnergyTime;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getEspecialEquipLevel() {
return especialEquipLevel;
}
public void setEspecialEquipLevel(int especialEquipLevel) {
this.especialEquipLevel = especialEquipLevel;
}
public int getIsLock() {
return isLock;
}
public void setIsLock(int isLock) {
this.isLock = isLock;
}
public int getCreateType() {
return createType;
}
public void setCreateType(int createType) {
this.createType = createType;
}
public int getChangeId() {
return changeId;
}
public void setChangeId(int changeId) {
this.changeId = changeId;
}
public Set<String> getJewelInfo() {
return jewelInfo;
}
public void setJewelInfo(Set<String> jewelInfo) {
this.jewelInfo = jewelInfo;
}
}

View File

@ -0,0 +1,87 @@
package com.ljsd.jieling.logic.dao.gm;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.PropertyItem;
import com.ljsd.jieling.logic.dao.TeamPosHeroInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author hj
* @Date 2021/6/18 14:51
* @Description:
* @Version 1.0
*/
public class ArenaOfHeroManager {
private Map<Integer, List<TeamPosHeroInfo>> teams = new HashMap<>();
private Map<String,ArenaOfHero> heros = new HashMap<>();
private Map<String, PropertyItem> jewels = new HashMap<>();
private int totalForce;
public ArenaOfHeroManager(User user) {
// 阵容信息
teams = new HashMap<>();
List<TeamPosHeroInfo> infos =
user.getTeamPosManager().getTeamPosForHero().getOrDefault(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,new ArrayList<>());
teams.put(GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,infos);
// 英雄
heros = new HashMap<>();
Map<String, Hero> heroMap = user.getHeroManager().getHeroMap();
infos.forEach(v->{
Hero hero = heroMap.get(v.getHeroId());
heros.put(v.getHeroId(),new ArenaOfHero(user,hero));
});
// 魂宝灵宝
jewels = new HashMap<>();
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
heroMap.values().forEach(v-> v.getJewelInfo().forEach(v2->{
PropertyItem item = (PropertyItem)equipMap.get(v2).clone();
jewels.put(v2,item);
}));
// 总战力
totalForce = HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.WORLD_TEAM_ARENA_DEFENSE,false);
}
public Map<Integer, List<TeamPosHeroInfo>> getTeams() {
return teams;
}
public void setTeams(Map<Integer, List<TeamPosHeroInfo>> teams) {
this.teams = teams;
}
public Map<String, ArenaOfHero> getHeros() {
return heros;
}
public void setHeros(Map<String, ArenaOfHero> heros) {
this.heros = heros;
}
public Map<String, PropertyItem> getJewels() {
return jewels;
}
public void setJewels(Map<String, PropertyItem> jewels) {
this.jewels = jewels;
}
public int getTotalForce() {
return totalForce;
}
public void setTotalForce(int totalForce) {
this.totalForce = totalForce;
}
}

View File

@ -1,83 +0,0 @@
package com.ljsd.jieling.logic.dao.gm;
/**
* @Author hj
* @Date 2021/6/17 15:16
* @Description: gm
* @Version 1.0
*/
public class ArenaOfPlayer {
private int uId;
private int level;
private String name;
private int head;
private int headFrame;
private String guildName;
private int userTitle;
private int practiceLevel;
public int getuId() {
return uId;
}
public void setuId(int uId) {
this.uId = uId;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHead() {
return head;
}
public void setHead(int head) {
this.head = head;
}
public int getHeadFrame() {
return headFrame;
}
public void setHeadFrame(int headFrame) {
this.headFrame = headFrame;
}
public String getGuildName() {
return guildName;
}
public void setGuildName(String guildName) {
this.guildName = guildName;
}
public int getUserTitle() {
return userTitle;
}
public void setUserTitle(int userTitle) {
this.userTitle = userTitle;
}
public int getPracticeLevel() {
return practiceLevel;
}
public void setPracticeLevel(int practiceLevel) {
this.practiceLevel = practiceLevel;
}
}

View File

@ -0,0 +1,135 @@
package com.ljsd.jieling.logic.dao.gm;
import com.ljsd.GameApplication;
import com.ljsd.jieling.core.GlobalsDef;
import com.ljsd.jieling.db.redis.RedisKey;
import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.dao.GuilidManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.root.GuildInfo;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.hero.HeroLogic;
import java.net.UnknownHostException;
/**
* @Author hj
* @Date 2021/6/17 15:16
* @Description: gm
* @Version 1.0
*/
public class ArenaOfPlayerManager {
private int uId;
private int level;
private String name;
private int head;
private int headFrame;
private String guildName;
private int userTitle;
private int practiceLevel;
private int serverId;
private String serverName;
public ArenaOfPlayerManager(User user) throws UnknownHostException {
PlayerManager player = user.getPlayerInfoManager();
int guildId = player.getGuildId();
this.uId = user.getId();
this.level = player.getLevel();
this.name = player.getNickName();
this.head = player.getHead();
this.headFrame = player.getHeadFrame();
if (guildId == 0){
this.guildName = "";
}else {
GuildInfo guildInfo = GuilidManager.guildInfoMap.get(guildId);
this.guildName = guildInfo.getName();
}
this.userTitle = player.getUserTitle();
this.practiceLevel = user.getHeroManager().getPracticeLevel();
this.serverId = GameApplication.serverId;
this.serverName = CrossServiceLogic.getInstance().findServerName(serverId);
}
public int getuId() {
return uId;
}
public void setuId(int uId) {
this.uId = uId;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHead() {
return head;
}
public void setHead(int head) {
this.head = head;
}
public int getHeadFrame() {
return headFrame;
}
public void setHeadFrame(int headFrame) {
this.headFrame = headFrame;
}
public String getGuildName() {
return guildName;
}
public void setGuildName(String guildName) {
this.guildName = guildName;
}
public int getUserTitle() {
return userTitle;
}
public void setUserTitle(int userTitle) {
this.userTitle = userTitle;
}
public int getPracticeLevel() {
return practiceLevel;
}
public void setPracticeLevel(int practiceLevel) {
this.practiceLevel = practiceLevel;
}
public int getServerId() {
return serverId;
}
public void setServerId(int serverId) {
this.serverId = serverId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
}

View File

@ -1,24 +1,110 @@
package com.ljsd.jieling.logic.dao.gm;
import com.ljsd.jieling.logic.dao.Hero;
import com.ljsd.jieling.logic.dao.Jewel;
import com.ljsd.jieling.logic.dao.Pokemon;
import com.ljsd.jieling.logic.dao.*;
import com.ljsd.jieling.logic.dao.root.User;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.List;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
/**
* @Author hj
* @Date 2021/6/17 13:43
* @Description:
* @Description:
* @Version 1.0
*/
@Document(collection = "arenaOfUser")
public class ArenaOfUser {
private ArenaOfPlayer player;
@Id
private int id;
private List<Hero> heroes;
@Field(value = "arenaOfPlayerManager")
private ArenaOfPlayerManager playerManager;
private List<Jewel> jewels;
@Field(value = "arenaOfHeroManager")
private ArenaOfHeroManager heroManager;
private List<Pokemon> pokemons;
@Field(value = "arenaOfPokemons")
private Map<String,Pokemon> pokemons = new HashMap<>();
@Field(value = "arenaOfSeals")
private Map<Integer,PurpleMansionSeal> seals = new HashMap<>();
@Field(value = "arenaOfGuildSkill")
private Map<Integer,Integer> guildSkill = new HashMap<>(4);
public ArenaOfUser(User user) throws UnknownHostException {
this.id = user.getId();
HeroManager heroManager = user.getHeroManager();
// 玩家基本信息
this.playerManager = new ArenaOfPlayerManager(user);
// 英雄
this.heroManager = new ArenaOfHeroManager(user);
// 灵兽
pokemons = new HashMap<>();
Map<String, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Map<Integer, String> teamMap = user.getPokemonManager().getPokemonTeamMap();
teamMap.values().forEach(v->{
// clone 深度复制
Pokemon pokemon = (Pokemon)pokemonMap.get(v).clone();
pokemons.put(v,pokemon);
});
// 紫府神印
seals = new HashMap<>(heroManager.getPurpleMansionSeal());
// 公会技能
guildSkill = new HashMap<>(user.getGuildMyInfo().getGuildSkill());
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public ArenaOfPlayerManager getPlayerManager() {
return playerManager;
}
public void setPlayerManager(ArenaOfPlayerManager playerManager) {
this.playerManager = playerManager;
}
public ArenaOfHeroManager getHeroManager() {
return heroManager;
}
public void setHeroManager(ArenaOfHeroManager heroManager) {
this.heroManager = heroManager;
}
public Map<String, Pokemon> getPokemons() {
return pokemons;
}
public void setPokemons(Map<String, Pokemon> pokemons) {
this.pokemons = pokemons;
}
public Map<Integer, Integer> getGuildSkill() {
return guildSkill;
}
public void setGuildSkill(Map<Integer, Integer> guildSkill) {
this.guildSkill = guildSkill;
}
public Map<Integer, PurpleMansionSeal> getSeals() {
return seals;
}
public void setSeals(Map<Integer, PurpleMansionSeal> seals) {
this.seals = seals;
}
}

View File

@ -0,0 +1,203 @@
package com.ljsd.jieling.logic.dao.gm;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
*
* @author Administrator
* @date 2015/8/13
*/
@Document(collection = "server_info")
public class CoreOfServerInfo {
@Id
private int _id;
@Field(value = "name")
private String name;
@Field(value = "ip")
private String IP;
@Field(value = "port")
private String port;
@Indexed
@Field(value = "server_id")
private String server_id;
@Field(value = "channel")
private String channel;
@Field(value = "sub_channel")
private String sub_channel;
/**
* -1
* -2
* 0
* 1
* 2
* 3
* 4
* 5
*/
@Field(value = "state")
private String status;
@Field(value = "plat")
private String plat;
@Field(value = "open_time")
private String open_time;
@Field(value = "is_new")
private String is_new;
/* 服务器启动类型 0手动开启 1 按时 2 按量*/
@Field(value = "open_type")
private String open_type;
@Field(value = "register_state")
private String register_state;
@Field(value = "coreName")
private String coreName;
public CoreOfServerInfo(int _id, String name) {
this._id = _id;
this.server_id = String.valueOf(_id);
this.name = name;
}
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIP() {
return IP;
}
public void setIP(String IP) {
this.IP = IP;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getServer_id() {
return server_id;
}
public void setServer_id(String server_id) {
this.server_id = server_id;
}
public String getChannel() {
return channel;
}
public void setChannel(String channel) {
this.channel = channel;
}
public String getSub_channel() {
return sub_channel;
}
public void setSub_channel(String sub_channel) {
this.sub_channel = sub_channel;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getPlat() {
return plat;
}
public void setPlat(String plat) {
this.plat = plat;
}
public String getOpen_time() {
return open_time;
}
public void setOpen_time(String open_time) {
this.open_time = open_time;
}
public String getIs_new() {
return is_new==null?"0":is_new;
}
public void setIs_new(String is_new) {
this.is_new = is_new;
}
public String getOpen_type() {
return open_type==null?"0":open_type;
}
public void setOpen_type(String open_type) {
this.open_type = open_type;
}
public String getRegister_state() { return register_state==null?"1":register_state; }
public void setRegister_state(String register_state) { this.register_state = register_state; }
public String getCoreName() {
return coreName;
}
public void setCoreName(String coreName) {
this.coreName = coreName;
}
@Override
public String toString() {
return "ServerInfo{" +
"_id=" + _id +
", name='" + name + '\'' +
", IP='" + IP + '\'' +
", port='" + port + '\'' +
", server_id='" + server_id + '\'' +
", channel='" + channel + '\'' +
", sub_channel='" + sub_channel + '\'' +
", status='" + status + '\'' +
", plat='" + plat + '\'' +
", open_time='" + open_time + '\'' +
", is_new='" + is_new + '\'' +
", open_type='" + open_type + '\'' +
", register_state='" + register_state + '\'' +
", coreName='" + coreName + '\'' +
'}';
}
}

View File

@ -20,6 +20,7 @@ import com.ljsd.jieling.ktbeans.ReportEventEnum;
import com.ljsd.jieling.ktbeans.ReportUtil;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.activity.event.*;
import com.ljsd.jieling.logic.activity.eventhandler.HeroFiveStarGetEventHandler;
import com.ljsd.jieling.logic.activity.eventhandler.PokemonFiveStarGetEventHandler;
@ -34,7 +35,6 @@ import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.redpacket.WelfareRedPackEvent;
import com.ljsd.jieling.logic.redpacket.WelfareRedPacketType;
import com.ljsd.jieling.logic.store.BuyGoodsNewLogic;
import com.ljsd.jieling.network.server.ProtocolsManager;
import com.ljsd.jieling.network.session.ISession;
import com.ljsd.jieling.util.*;
import config.*;
@ -778,63 +778,66 @@ public class HeroLogic{
}
user.getTeamPosManager().changeTeamInfo(teamId,heroIds);
//401图内可以更改编队
if(teamId == GlobalsDef.ENDLESS_TEAM){
if (teamId == GlobalsDef.ENDLESS_TEAM) {
List<TeamPosHeroInfo> teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId);
if(teamPosHeroInfos!=null){
List<String> heroes = new ArrayList<>(teamPosHeroInfos.size());
Map<String, Map<Integer, Long>> heroAllAttributeMap = new HashMap<>(teamPosHeroInfos.size());
List<MapInfoProto.HeroInfo> indiHeros = new ArrayList<>();
for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
Hero hero = heroManager.getEndlessHeroInfo().get(heroInfo.getHeroId());
if (hero == null) {
break;
}
if(heroAllAttributeMap.get(heroInfo.getHeroId())!=null){
continue;
}
Map<Integer, SEndlessHeroProp> config = STableManager.getConfig(SEndlessHeroProp.class);
SEndlessHeroProp sEndlessHeroProp = config.get(hero.getTemplateId());
Map<Integer, Long> heroAllAttribute = new HashMap<>();
for(int[] prop:sEndlessHeroProp.getProps()){
heroAllAttribute.put(prop[0],(long)prop[1]);
}
Map<String, Integer> endlessHeroInfo = user.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if(endlessHeroInfo!=null&& endlessHeroInfo.containsKey(heroInfo.getHeroId())){
int curHp = (int)(endlessHeroInfo.get(heroInfo.getHeroId()) /10000.00 * heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()));
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(), (long) curHp);
}else{
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(), 10000L);
}
heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
heroes.add(heroInfo.getHeroId());
MapInfoProto.HeroInfo indiInfo = MapInfoProto.HeroInfo.newBuilder().setHeroId(heroInfo.getHeroId())
.setHeroHp(heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId()))
.setHeroMaxHp(heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()))
.build();
indiHeros.add(indiInfo);
if (teamPosHeroInfos != null) {
List<String> heroes = new ArrayList<>(teamPosHeroInfos.size());
Map<String, Map<Integer, Long>> heroAllAttributeMap = new HashMap<>(teamPosHeroInfos.size());
List<MapInfoProto.HeroInfo> indiHeros = new ArrayList<>();
for (TeamPosHeroInfo heroInfo : teamPosHeroInfos) {
Hero hero = heroManager.getEndlessHeroInfo().get(heroInfo.getHeroId());
if (hero == null) {
break;
}
if (heroAllAttributeMap.get(heroInfo.getHeroId()) != null) {
continue;
}
user.getMapManager().setHeroAllAttributeMap(heroAllAttributeMap);
if(user.getMapManager().getCurMapId()!=0){
MapInfoProto.EndlessSetTeamIndication response = MapInfoProto.EndlessSetTeamIndication.newBuilder().addAllInfo(indiHeros).build();
MessageUtil.sendIndicationMessage(iSession,1, MessageTypeProto.MessageType.ENDLESS_MAP_SET_TEAM_INDICATION_VALUE,response,true);
Map<Integer, SEndlessHeroProp> config = STableManager.getConfig(SEndlessHeroProp.class);
SEndlessHeroProp sEndlessHeroProp = config.get(hero.getTemplateId());
Map<Integer, Long> heroAllAttribute = new HashMap<>();
for (int[] prop : sEndlessHeroProp.getProps()) {
heroAllAttribute.put(prop[0], (long) prop[1]);
}
}else{
user.getTeamPosManager().changeTeamInfo(teamId,heroIds);
Map<String, Integer> endlessHeroInfo = user.getMapManager().getEndlessMapInfo().getEndlessHeroInfo();
if (endlessHeroInfo != null && endlessHeroInfo.containsKey(heroInfo.getHeroId())) {
int curHp = (int) (endlessHeroInfo.get(heroInfo.getHeroId()) / 10000.00 * heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()));
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(), (long) curHp);
} else {
heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(), 10000L);
}
heroAllAttributeMap.put(hero.getId(), heroAllAttribute);
heroes.add(heroInfo.getHeroId());
MapInfoProto.HeroInfo indiInfo = MapInfoProto.HeroInfo.newBuilder().setHeroId(heroInfo.getHeroId())
.setHeroHp(heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId()))
.setHeroMaxHp(heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()))
.build();
indiHeros.add(indiInfo);
}
}else if(teamId == GlobalsDef.TEAM_ARENA_DEFENSE){
int teamForce = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false);
//更新竞技场防御编队战力
String key = RedisKey.getKey(RedisKey.AREDEF_TEAM_FORCE_RANK, "", false);
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), teamForce);
}
if(teamId==GlobalsDef.FORMATION_NORMAL){
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
user.getMapManager().setHeroAllAttributeMap(heroAllAttributeMap);
if (user.getMapManager().getCurMapId() != 0) {
MapInfoProto.EndlessSetTeamIndication response = MapInfoProto.EndlessSetTeamIndication.newBuilder().addAllInfo(indiHeros).build();
MessageUtil.sendIndicationMessage(iSession, 1, MessageTypeProto.MessageType.ENDLESS_MAP_SET_TEAM_INDICATION_VALUE, response, true);
}
} else {
user.getTeamPosManager().changeTeamInfo(teamId, heroIds);
}
} else if (teamId == GlobalsDef.TEAM_ARENA_DEFENSE) {
int teamForce = HeroLogic.getInstance().calTeamTotalForce(user, teamId, false);
//更新竞技场防御编队战力
String key = RedisKey.getKey(RedisKey.AREDEF_TEAM_FORCE_RANK, "", false);
RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), teamForce);
}
if (teamId == GlobalsDef.FORMATION_NORMAL) {
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(iSession.getUid()));
}
CrossServiceLogic.getInstance().dispose(user);
// 跨服 更新编队信息
if (teamId == GlobalsDef.WORLD_TEAM_ARENA_DEFENSE) {
CrossServiceLogic.getInstance().dispose(user);
}
user.getUserMissionManager().onGameEvent(user,GameEvent.HERO_IN_TEAM,heroIds.size());
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true);
}
@ -2359,7 +2362,6 @@ public class HeroLogic{
if(isInTeam(user,heroId,1)){
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(uid));
}
// 鸿蒙阵,穿装备
addOrUpdateHongmeng(session);
@ -2458,7 +2460,6 @@ public class HeroLogic{
if(isInTeam(user,heroId,1)){
Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(uid));
}
// 鸿蒙阵,脱装备
addOrUpdateHongmeng(session);
@ -2507,7 +2508,8 @@ public class HeroLogic{
if(!drop.getHeroList().isEmpty()){
user.getUserMissionManager().onGameEvent(user,GameEvent.COMPOS_HERO,drop.getHero(0).getHeroId(),composeNum);
}
MessageUtil.sendMessage(iSession,1,msgId,heroComposeResponse,true); }
MessageUtil.sendMessage(iSession,1,msgId,heroComposeResponse,true);
}
public String getQuality(int natural) {
String quality = "N";

View File

@ -43,7 +43,9 @@ public enum RankEnum {
WARLD_DIS_ARENA_RANK(28,RedisKey.WARLD_DIS_ARENA_RANK,ArenaRank::new,true),//世界服排行
SHAN_HE_SHE_JI_CHAPTER_RANK(29,RedisKey.SHAN_HE_SHE_JI_CHAPTER_RANK,ShanHeSheJiTuChapterRank::new,false),//山河社稷章节排行榜
SHAN_HE_SHE_JI_STAR_RANK(30,RedisKey.SHAN_HE_SHE_JI_STAR_RANK,ShanHeSheJiTuStarRank::new,false),//山河社稷星星排行榜
TA_SUI_LING_XIAO_RANK(31,RedisKey.TA_SUI_LING_XIAO_RANK,TaSuiLingXiaoRank::new,false)
TA_SUI_LING_XIAO_RANK(31,RedisKey.TA_SUI_LING_XIAO_RANK,TaSuiLingXiaoRank::new,false),
CROSS_SERVICE_ARENA(32,RedisKey.CROSS_SERVICE_ARENA,ArenaRank::new,false)
;
private int type;