功能开启关闭修改

back_recharge
lvxinran 2019-11-23 17:15:18 +08:00
parent 3c59042b88
commit e266403589
7 changed files with 185 additions and 84 deletions

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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());
}
}

View File

@ -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) {
}
}

View File

@ -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;
}
}

View File

@ -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();
}
}

View File

@ -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);