功能开启关闭修改
parent
3c59042b88
commit
e266403589
|
@ -1,7 +1,12 @@
|
|||
package com.ljsd.jieling.core;
|
||||
|
||||
import com.ljsd.jieling.core.function.ArenaFunction;
|
||||
import com.ljsd.jieling.core.function.DefaultFunction;
|
||||
import com.ljsd.jieling.core.function.EndlessFunction;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* 1 招募 Lottery
|
||||
|
@ -20,35 +25,35 @@ import java.util.Map;
|
|||
* 14 聊天 Talking
|
||||
*/
|
||||
public enum FunctionIdEnum {
|
||||
Lottery(1),
|
||||
Team(2),
|
||||
DifferDemons(3),
|
||||
Guild(4),
|
||||
WorkShop(5),
|
||||
Foods(6),
|
||||
Adventure(7),
|
||||
Arena(8),
|
||||
Lottery(1,new DefaultFunction()),
|
||||
Team(2,new DefaultFunction()),
|
||||
DifferDemons(3,new DefaultFunction()),
|
||||
Guild(4,new DefaultFunction()),
|
||||
WorkShop(5,new DefaultFunction()),
|
||||
Foods(6,new DefaultFunction()),
|
||||
Adventure(7,new DefaultFunction()),
|
||||
Arena(8, new ArenaFunction()),
|
||||
|
||||
DailyTasks(12),
|
||||
WorldBoss(13),
|
||||
Talking(14),
|
||||
DailyTasks(12,new DefaultFunction()),
|
||||
WorldBoss(13,new DefaultFunction()),
|
||||
Talking(14,new DefaultFunction()),
|
||||
|
||||
Store(20),
|
||||
Store(20,new DefaultFunction()),
|
||||
|
||||
Endless(46),
|
||||
Blood(47),
|
||||
ToBeStronger(48),
|
||||
SoulEquip(52),
|
||||
TopBattle(57),
|
||||
WorkShopTech(101),
|
||||
WorkShopCreateEquip(102),
|
||||
WorkShopCreateProtectEquip(103),
|
||||
WorkShopRebuildEquip(104),
|
||||
Endless(46,new EndlessFunction()),
|
||||
Blood(47,new DefaultFunction()),
|
||||
ToBeStronger(48,new DefaultFunction()),
|
||||
SoulEquip(52,new DefaultFunction()),
|
||||
TopBattle(57,new DefaultFunction()),
|
||||
WorkShopTech(101,new DefaultFunction()),
|
||||
WorkShopCreateEquip(102,new DefaultFunction()),
|
||||
WorkShopCreateProtectEquip(103,new DefaultFunction()),
|
||||
WorkShopRebuildEquip(104,new DefaultFunction()),
|
||||
|
||||
;
|
||||
|
||||
private int functionId;
|
||||
|
||||
private FunctionManager manager;
|
||||
private static Map<Integer,FunctionIdEnum> functionIdEnumMap = new HashMap<>();
|
||||
static {
|
||||
FunctionIdEnum[] values = FunctionIdEnum.values();
|
||||
|
@ -57,7 +62,8 @@ public enum FunctionIdEnum {
|
|||
}
|
||||
}
|
||||
|
||||
private FunctionIdEnum(int functionId) {
|
||||
private FunctionIdEnum(int functionId, FunctionManager manager) {
|
||||
this.manager = manager;
|
||||
this.functionId = functionId;
|
||||
}
|
||||
|
||||
|
@ -65,6 +71,10 @@ public enum FunctionIdEnum {
|
|||
return functionId;
|
||||
}
|
||||
|
||||
public FunctionManager getManager() {
|
||||
return manager;
|
||||
}
|
||||
|
||||
public static FunctionIdEnum getFunctionIdEnumById(int id) {
|
||||
return functionIdEnumMap.get(id);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package com.ljsd.jieling.core;
|
||||
|
||||
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/23
|
||||
* @discribe
|
||||
*/
|
||||
public interface FunctionManager {
|
||||
void startAction (TimeControllerOfFunction timeControllerOfFunction) throws Exception;
|
||||
|
||||
void closeAction () throws Exception;
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package com.ljsd.jieling.core.function;
|
||||
|
||||
import com.ljsd.jieling.core.FunctionManager;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.logic.arena.ArenaLogic;
|
||||
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/23
|
||||
* @discribe
|
||||
*/
|
||||
public class ArenaFunction implements FunctionManager {
|
||||
|
||||
@Override
|
||||
public void closeAction ()throws Exception {
|
||||
ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_SEASON_REWARD);
|
||||
ArenaLogic.getInstance().updateArenaSeason(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAction(TimeControllerOfFunction timeControllerOfFunction) {
|
||||
ArenaLogic.getInstance().updateArenaSeason(timeControllerOfFunction.getTimes());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.ljsd.jieling.core.function;
|
||||
|
||||
import com.ljsd.jieling.core.FunctionManager;
|
||||
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/23
|
||||
* @discribe
|
||||
*/
|
||||
public class DefaultFunction implements FunctionManager {
|
||||
@Override
|
||||
public void closeAction() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAction(TimeControllerOfFunction timeControllerOfFunction) {
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package com.ljsd.jieling.core.function;
|
||||
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.MapStaticConfig;
|
||||
import com.ljsd.jieling.core.FunctionManager;
|
||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||
import com.ljsd.jieling.handler.map.MapLogic;
|
||||
import com.ljsd.jieling.logic.GlobalDataManaager;
|
||||
import com.ljsd.jieling.logic.OnlineUserManager;
|
||||
import com.ljsd.jieling.logic.dao.ServerConfig;
|
||||
import com.ljsd.jieling.logic.dao.TimeControllerOfFunction;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
import com.ljsd.jieling.network.session.ISession;
|
||||
import com.ljsd.jieling.protocols.MapInfoProto;
|
||||
import com.ljsd.jieling.protocols.MessageTypeProto;
|
||||
import com.ljsd.jieling.util.MessageUtil;
|
||||
import manager.STableManager;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.mongodb.core.query.Query;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/23
|
||||
* @discribe
|
||||
*/
|
||||
public class EndlessFunction implements FunctionManager {
|
||||
@Override
|
||||
public void closeAction() throws Exception {
|
||||
MapLogic.getInstance().resetEndlessInfo();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startAction(TimeControllerOfFunction timeControllerOfFunction) throws Exception {
|
||||
ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
|
||||
int level = calWorldLevel();
|
||||
MapLogic.getInstance().updateEndlessSeason(timeControllerOfFunction.getTimes());
|
||||
serverConfigTmp.setWorldLevel(level);
|
||||
STableManager.getFigureConfig(MapStaticConfig.class).setDifficult();
|
||||
MongoUtil.getLjsdMongoTemplate().save(serverConfigTmp);
|
||||
MapLogic.getInstance().setEndlessMapId(GlobalDataManaager.getEndleeMapIdByLevel());
|
||||
Map<Integer, ISession> onlineUserMap = OnlineUserManager.sessionMap;
|
||||
MapInfoProto.EndlessMapChange info = MapInfoProto.EndlessMapChange.newBuilder().setMapId(MapLogic.getEndlessMapId()).setWorldLevel(level).build();
|
||||
for(Map.Entry<Integer, ISession> entry:onlineUserMap.entrySet()){
|
||||
MessageUtil.sendIndicationMessage(entry.getValue(),1, MessageTypeProto.MessageType.ENDLESS_MAP_CHANGE_INDICATION_VALUE,info,true);
|
||||
}
|
||||
}
|
||||
private static int calWorldLevel(){
|
||||
Query query = new Query();
|
||||
query.with(new Sort(Sort.Direction.DESC,"playerManager.level"));
|
||||
query.fields().include("playerManager.level");
|
||||
List<User> users = null;
|
||||
try {
|
||||
users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
int size = (int)(users.size()*0.85);
|
||||
if(size ==0){
|
||||
return 1;
|
||||
}
|
||||
int level = 0;
|
||||
for(int i = 0 ; i <size;i++){
|
||||
level+=users.get(i).getPlayerInfoManager().getLevel();
|
||||
}
|
||||
|
||||
// LOGGER.info("计算世界等级为{}",level/size);
|
||||
return level/size;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package com.ljsd.jieling.core.function;
|
||||
|
||||
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||
import com.ljsd.jieling.core.FunctionManager;
|
||||
|
||||
/**
|
||||
* @author lvxinran
|
||||
* @date 2019/11/23
|
||||
* @discribe
|
||||
*/
|
||||
public class FunctionContext {
|
||||
public static FunctionManager getFunction(int type){
|
||||
return FunctionIdEnum.getFunctionIdEnumById(type).getManager();
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ import com.ljsd.jieling.config.json.KTSDKConstans;
|
|||
import com.ljsd.jieling.config.json.ServerProperties;
|
||||
import com.ljsd.jieling.core.FunctionIdEnum;
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import com.ljsd.jieling.core.function.FunctionContext;
|
||||
import com.ljsd.jieling.db.mongo.MongoUtil;
|
||||
import com.ljsd.jieling.handler.map.MapLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
|
@ -161,7 +162,6 @@ public class GlobalDataManaager {
|
|||
}
|
||||
|
||||
public void openAction(List<Integer> ids) throws Exception {
|
||||
ServerConfig serverConfigTmp = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
|
||||
for(Integer openId : ids){
|
||||
int sameType = STableManager.getConfig(SGlobalSystemConfig.class).get(openId).getIsIDdSame();
|
||||
FunctionIdEnum type = FunctionIdEnum.getFunctionIdEnumById(sameType);
|
||||
|
@ -169,27 +169,7 @@ public class GlobalDataManaager {
|
|||
continue;
|
||||
}
|
||||
TimeControllerOfFunction timeControllerOfFunction = openTimeOfFuntionCache.get(openId);
|
||||
switch (type){
|
||||
case Arena:
|
||||
ArenaLogic.getInstance().updateArenaSeason(timeControllerOfFunction.getTimes());
|
||||
break;
|
||||
case Endless:
|
||||
int level = calWorldLevel();
|
||||
MapLogic.getInstance().updateEndlessSeason(timeControllerOfFunction.getTimes());
|
||||
serverConfigTmp.setWorldLevel(level);
|
||||
STableManager.getFigureConfig(MapStaticConfig.class).setDifficult();
|
||||
MongoUtil.getLjsdMongoTemplate().save(serverConfigTmp);
|
||||
MapLogic.getInstance().setEndlessMapId(getEndleeMapIdByLevel());
|
||||
Map<Integer, ISession> onlineUserMap = OnlineUserManager.sessionMap;
|
||||
MapInfoProto.EndlessMapChange info = MapInfoProto.EndlessMapChange.newBuilder().setMapId(MapLogic.getEndlessMapId()).setWorldLevel(level).build();
|
||||
for(Map.Entry<Integer, ISession> entry:onlineUserMap.entrySet()){
|
||||
MessageUtil.sendIndicationMessage(entry.getValue(),1, MessageTypeProto.MessageType.ENDLESS_MAP_CHANGE_INDICATION_VALUE,info,true);
|
||||
}
|
||||
case TopBattle:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
FunctionContext.getFunction(sameType).startAction(timeControllerOfFunction);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -197,23 +177,8 @@ public class GlobalDataManaager {
|
|||
public void closeAction(List<Integer> ids) throws Exception {
|
||||
for(Integer closeId : ids){
|
||||
int sameType = STableManager.getConfig(SGlobalSystemConfig.class).get(closeId).getIsIDdSame();
|
||||
FunctionIdEnum type = FunctionIdEnum.getFunctionIdEnumById(sameType);
|
||||
switch (type){
|
||||
case Arena:
|
||||
ArenaLogic.getInstance().sendReward(GlobalsDef.ARENA_SEASON_REWARD);
|
||||
ArenaLogic.getInstance().updateArenaSeason(0);
|
||||
break;
|
||||
case Endless:
|
||||
MapLogic.getInstance().resetEndlessInfo();
|
||||
break;
|
||||
case Blood:
|
||||
BloodLogic.getInstance().bloodSeasonReward();
|
||||
break;
|
||||
case TopBattle:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
// FunctionIdEnum type = FunctionIdEnum.getFunctionIdEnumById(sameType).g;
|
||||
FunctionContext.getFunction(sameType).closeAction();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -390,29 +355,8 @@ public class GlobalDataManaager {
|
|||
}
|
||||
|
||||
|
||||
private static int calWorldLevel(){
|
||||
Query query = new Query();
|
||||
query.with(new Sort(Sort.Direction.DESC,"playerManager.level"));
|
||||
query.fields().include("playerManager.level");
|
||||
List<User> users = null;
|
||||
try {
|
||||
users = MongoUtil.getLjsdMongoTemplate().findAllByCondition(query, User.class);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
int size = (int)(users.size()*0.85);
|
||||
if(size ==0){
|
||||
return 1;
|
||||
}
|
||||
int level = 0;
|
||||
for(int i = 0 ; i <size;i++){
|
||||
level+=users.get(i).getPlayerInfoManager().getLevel();
|
||||
}
|
||||
|
||||
LOGGER.info("计算世界等级为{}",level/size);
|
||||
return level/size;
|
||||
}
|
||||
private static int getEndleeMapIdByLevel() throws Exception {
|
||||
public static int getEndleeMapIdByLevel() throws Exception {
|
||||
ServerConfig config = MongoUtil.getInstence().getMyMongoTemplate().findById(1, ServerConfig.class);
|
||||
int mapId = 4001;
|
||||
Map<Integer, SEndlessDifficulty> difficultyMap = STableManager.getConfig(SEndlessDifficulty.class);
|
||||
|
|
Loading…
Reference in New Issue