From ab36222035dad87cd8b1c29d909facabcf43b810 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 23 Apr 2020 19:52:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B7=B1=E5=BA=A6=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/util/ClassLoaderHelper.java | 12 ++ jieling-dbgen/Ldb.xml | 33 ------ .../src/main/java/com/dbgen/Construct.java | 101 +++++++++++++++++ .../src/main/java/com/dbgen/VarCopyFrom.java | 103 +++++++++++++++++ .../src/main/java/com/dbgen/VarDeepCopy.java | 107 ++++++++++++++++++ .../ljsd/jieling/jbean/ActivityManager.java | 9 ++ .../ljsd/jieling/jbean/ActivityMission.java | 9 ++ .../jieling/jbean/ActivityProgressInfo.java | 6 + .../ljsd/jieling/jbean/LuckWheelMission.java | 7 ++ .../ljsd/jieling/jbean/LuckWheelPosInfo.java | 6 + .../com/ljsd/jieling/jbean/PropertyItem.java | 15 +++ .../network/server/ProtocolsManager.java | 4 + .../java/com/ljsd/jieling/util/ItemUtil.java | 7 +- 13 files changed, 381 insertions(+), 38 deletions(-) create mode 100644 jieling-dbgen/src/main/java/com/dbgen/Construct.java create mode 100644 jieling-dbgen/src/main/java/com/dbgen/VarCopyFrom.java create mode 100644 jieling-dbgen/src/main/java/com/dbgen/VarDeepCopy.java diff --git a/gamecommon/src/main/java/util/ClassLoaderHelper.java b/gamecommon/src/main/java/util/ClassLoaderHelper.java index 50340f895..e27ff690e 100644 --- a/gamecommon/src/main/java/util/ClassLoaderHelper.java +++ b/gamecommon/src/main/java/util/ClassLoaderHelper.java @@ -9,6 +9,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.util.Enumeration; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; import java.util.jar.JarEntry; import java.util.jar.JarFile; @@ -19,6 +20,17 @@ import java.util.jar.JarFile; */ public class ClassLoaderHelper { + final static ConcurrentHashMap> CLS_CACHE = new ConcurrentHashMap<>(); + + public static Class forName(String clsname) throws ClassNotFoundException{ + Class cls = CLS_CACHE.get(clsname); + if(null == cls){ + cls = Class.forName(clsname); + CLS_CACHE.put(clsname, cls); + } + return cls; + } + /** * 获取指定接口的某个包下的所有实现类(不包括接口和抽象类) */ diff --git a/jieling-dbgen/Ldb.xml b/jieling-dbgen/Ldb.xml index 1fc7dbd91..1ab667780 100644 --- a/jieling-dbgen/Ldb.xml +++ b/jieling-dbgen/Ldb.xml @@ -1,39 +1,6 @@ - - - - - 包裹属性,位置。从0开始编号 - - - - - - - - 道具map - - - - - 背包管理器 - 背包map - - - - - - - - - 主属性 key 对应PropertyConfig id - //副属性 - - - - diff --git a/jieling-dbgen/src/main/java/com/dbgen/Construct.java b/jieling-dbgen/src/main/java/com/dbgen/Construct.java new file mode 100644 index 000000000..a3dc47c85 --- /dev/null +++ b/jieling-dbgen/src/main/java/com/dbgen/Construct.java @@ -0,0 +1,101 @@ +package com.dbgen; + +import java.io.PrintStream; +import java.util.Collection; + +public class Construct implements Visitor { + private final PrintStream ps; + private final String variable; + private final String varname; + private final String prefix; + + private static void make(Collection variables, String name, PrintStream ps, String prefix, Naming variableParent) { + ps.println(prefix + "public " + name + "() {"); + if (!variableParent.baseclass.isEmpty()) { + ps.println(prefix + prefix + "super();"); + } + for (Variable var : variables) + make(var, ps, prefix + " "); + ps.println(prefix + "}"); + ps.println(); + } + + + public static void make(Jbean bean, PrintStream ps, String prefix) { + make(bean.getVariables(), bean.getLastName(), ps, prefix,bean); + } + + + public static void make(Variable var, PrintStream ps, String prefix) { + var.getType().accept(new Construct(var.getName(), ps, prefix)); + } + + public Construct(String varname, PrintStream ps, String prefix) { + this.variable = varname; + this.varname = varname; + this.ps = ps; + this.prefix = prefix; + } + + private void initial() { + } + + private void newVariable(Type type) { + ps.println(prefix + variable + " = new " + TypeName.getName(type) + "();"); + } + + @Override + public void visit(TypeFloat type) { + initial(); + } + + @Override + public void visit(TypeDouble type) { + initial(); + } + + @Override + public void visit(TypeBoolean type) { + initial(); + } + @Override + public void visit(TypeInt type) { + initial(); + } + + @Override + public void visit(TypeShort type) { + initial(); + } + + @Override + public void visit(TypeLong type) { + initial(); + } + + @Override + public void visit(TypeString type) { + ps.println(prefix + variable + " = \"\";"); + } + + @Override + public void visit(TypeList type) { + newVariable(type); + } + + + @Override + public void visit(TypeSet type) { + newVariable(type); + } + + @Override + public void visit(TypeMap type) { + newVariable(type); + } + + @Override + public void visit(Jbean type) { + ps.println(prefix + variable + " = new " + type.getName() + "(this, " + StringUtils.quote(varname) + ");"); + } +} diff --git a/jieling-dbgen/src/main/java/com/dbgen/VarCopyFrom.java b/jieling-dbgen/src/main/java/com/dbgen/VarCopyFrom.java new file mode 100644 index 000000000..b106791c8 --- /dev/null +++ b/jieling-dbgen/src/main/java/com/dbgen/VarCopyFrom.java @@ -0,0 +1,103 @@ +package com.dbgen; + +import java.io.PrintStream; + +class VarCopyFrom implements Visitor { + + static void make(Variable var, PrintStream ps, String prefix) { + var.getType().accept(new VarCopyFrom(var, ps, prefix)); + } + + private static String getCopy(Type type, String fullvarname, String parentVarname) { + if (type instanceof Jbean) { + return "new " + type.getName() + "(" + fullvarname + ")"; + } else { + return fullvarname; + } + } + + private PrintStream ps; + private String prefix; + private String varname; + private String this_varname; + + private VarCopyFrom(Variable var, PrintStream ps, String prefix) { + this.ps = ps; + this.prefix = prefix; + this.varname = var.getName(); + this.this_varname = "this." + this.varname; + } + + private void simple() { + ps.println(prefix + this_varname + " = _o_." + varname + ";"); + } + + @Override + public void visit(TypeBoolean type) { + simple(); + } + + @Override + public void visit(TypeShort type) { + simple(); + } + + @Override + public void visit(TypeInt type) { + simple(); + } + + @Override + public void visit(TypeLong type) { + simple(); + } + + @Override + public void visit(TypeFloat type) { + simple(); + } + + @Override + public void visit(TypeDouble type) { + simple(); + } + + + private void collection(Type type, Type value, String posttype) { + ps.println(prefix + "_o_." + varname + ".forEach(_v_ -> this_" + varname + ".add(" + + getCopy(value, "_v_", varname) + "));"); + } + + @Override + public void visit(TypeString type) { + simple(); + } + + @Override + public void visit(TypeList type) { + collection(type, type.getValueType(), "List"); + } + + @Override + public void visit(TypeSet type) { + collection(type, type.getValueType(), "Set"); + } + + @Override + public void visit(TypeMap type) { + Type key = type.getKeyType(); + Type value = type.getValueType(); + String keycopy = getCopy(key, "_k_", varname); + String valuecopy = getCopy(value, "_v_", varname); + ps.println(prefix + "_o_." + varname + ".forEach((_k_, _v_) -> this." + varname + ".put(" + keycopy + ", " + + valuecopy + "));"); + } + + + @Override + public void visit(Jbean type) { + ps.println(prefix + this_varname + ".copyFrom(_o_." + varname + ");"); + } + + +} diff --git a/jieling-dbgen/src/main/java/com/dbgen/VarDeepCopy.java b/jieling-dbgen/src/main/java/com/dbgen/VarDeepCopy.java new file mode 100644 index 000000000..2e50d8096 --- /dev/null +++ b/jieling-dbgen/src/main/java/com/dbgen/VarDeepCopy.java @@ -0,0 +1,107 @@ +package com.dbgen; + + +import java.io.PrintStream; + +class VarDeepCopy implements Visitor { + + static void make(Variable var, PrintStream ps, String prefix) { + var.getType().accept(new VarDeepCopy(var.getName(), ps, prefix)); + } + + + private static String getCopy(Type type, String fullvarname, String parentVarname) { + if (type instanceof Jbean) { + return "new " + type.getName() + "(" + fullvarname + ")"; + } else { + return fullvarname; + } + } + + private String varname; + private String this_varname; + private PrintStream ps; + private String prefix; + + private VarDeepCopy(String varname, PrintStream ps, String prefix) { + this.varname = varname; + this.ps = ps; + this.prefix = prefix; + this.this_varname = "this." + varname; + } + + + @Override + public void visit(Jbean type) { + ps.println(prefix + this_varname + " = new " + type.getName() + "(_o_." + varname +");"); + } + + @Override + public void visit(TypeString type) { + simple(); + } + + + private void simple() { + ps.println(prefix + this_varname + " = _o_." + varname + ";"); + } + + @Override + public void visit(TypeBoolean type) { + simple(); + } + + @Override + public void visit(TypeShort type) { + simple(); + } + + @Override + public void visit(TypeInt type) { + simple(); + } + + @Override + public void visit(TypeLong type) { + simple(); + } + + @Override + public void visit(TypeFloat type) { + simple(); + } + + @Override + public void visit(TypeDouble type) { + simple(); + } + + private void collection(Type type, Type value) { + ps.println(prefix + this_varname + " = new " + TypeName.getName(type) + "();"); + ps.println(prefix + "_o_." + varname + ".forEach(_v_ -> " + this_varname + ".add(" + + getCopy(value, "_v_", varname) + "));"); + } + + @Override + public void visit(TypeList type) { + collection(type, type.getValueType()); + } + + @Override + public void visit(TypeSet type) { + collection(type, type.getValueType()); + } + + @Override + public void visit(TypeMap type) { + ps.println(prefix + this_varname + " = new " + TypeName.getName(type) + "();"); + Type key = type.getKeyType(); + Type value = type.getValueType(); + String keycopy = getCopy(key, "_k_", varname); + String valuecopy =getCopy(value, "_v_", varname); + ps.println(prefix + "_o_." + varname + ".forEach((_k_, _v_) -> " + this_varname + ".put(" + keycopy + ", " + + valuecopy + "));"); + } + + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java index c8cf8b484..f99c2cbd0 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java @@ -21,6 +21,15 @@ public final class ActivityManager extends MongoBase { public ActivityManager() { } + + public ActivityManager(ActivityManager _o_ ) { + this.activityMissionMap = new HashMap(); + _o_.activityMissionMap.forEach((_k_, _v_) -> this.activityMissionMap.put(_k_, new ActivityMission(_v_))); + this.senvenTime = _o_.senvenTime; + this.luckWheel = new LuckWheelMission(_o_.luckWheel); + this.luckWheelAdvance = new LuckWheelMission(_o_.luckWheelAdvance); + } + public Map getActivityMissionMap() { if( null == activityMissionMapLog && activityMissionMap != null) activityMissionMapLog = new LogHashMap( this,"activityMissionMap",activityMissionMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityMission.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityMission.java index 159554d1c..73a122f0b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityMission.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityMission.java @@ -21,6 +21,15 @@ public final class ActivityMission extends MongoBase { public ActivityMission() { } + + public ActivityMission(ActivityMission _o_ ) { + this.activityMissionMap = new HashMap(); + _o_.activityMissionMap.forEach((_k_, _v_) -> this.activityMissionMap.put(_k_, new ActivityProgressInfo(_v_))); + this.activityState = _o_.activityState; + this.openType = _o_.openType; + this.v = _o_.v; + } + public Map getActivityMissionMap() { if( null == activityMissionMapLog && activityMissionMap != null) activityMissionMapLog = new LogHashMap( this,"activityMissionMap",activityMissionMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityProgressInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityProgressInfo.java index 0d50094a0..9c93a30a7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityProgressInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityProgressInfo.java @@ -17,6 +17,12 @@ public final class ActivityProgressInfo extends MongoBase { public ActivityProgressInfo() { } + + public ActivityProgressInfo(ActivityProgressInfo _o_ ) { + this.state = _o_.state; + this.progrss = _o_.progrss; + } + public int getState() { return this.state; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelMission.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelMission.java index a1a027b70..3da5ee820 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelMission.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelMission.java @@ -19,6 +19,13 @@ public final class LuckWheelMission extends MongoBase { public LuckWheelMission() { } + + public LuckWheelMission(LuckWheelMission _o_ ) { + this.posInfoMap = new HashMap(); + _o_.posInfoMap.forEach((_k_, _v_) -> this.posInfoMap.put(_k_, new LuckWheelPosInfo(_v_))); + this.refreshTime = _o_.refreshTime; + } + public Map getPosInfoMap() { if( null == posInfoMapLog && posInfoMap != null) posInfoMapLog = new LogHashMap( this,"posInfoMap",posInfoMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelPosInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelPosInfo.java index becc5c45c..e28eafcb5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelPosInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/LuckWheelPosInfo.java @@ -17,6 +17,12 @@ public final class LuckWheelPosInfo extends MongoBase { public LuckWheelPosInfo() { } + + public LuckWheelPosInfo(LuckWheelPosInfo _o_ ) { + this.luckId = _o_.luckId; + this.progrss = _o_.progrss; + } + public int getLuckId() { return this.luckId; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/PropertyItem.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/PropertyItem.java index 93777147f..4d73349e3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/PropertyItem.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/PropertyItem.java @@ -28,6 +28,21 @@ public final class PropertyItem extends MongoBase { public PropertyItem() { } + + public PropertyItem(PropertyItem _o_ ) { + this.id = _o_.id; + this.equipId = _o_.equipId; + this.level = _o_.level; + this.heroId = _o_.heroId; + this.propertyValueByIdMap = new HashMap(); + _o_.propertyValueByIdMap.forEach((_k_, _v_) -> this.propertyValueByIdMap.put(_k_, _v_)); + this.secondValueByIdMap = new HashMap(); + _o_.secondValueByIdMap.forEach((_k_, _v_) -> this.secondValueByIdMap.put(_k_, _v_)); + this.createTime = _o_.createTime; + this.skill = _o_.skill; + this.isLocked = _o_.isLocked; + } + public String getId() { return this.id; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java index 58f44df8c..bd25e680e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/network/server/ProtocolsManager.java @@ -91,6 +91,10 @@ public class ProtocolsManager implements ProtocolsAbstract { { simpleName = simpleName.substring(0, index); int number = getProtoIdBySimpleName(simpleName); + if(number == 0){ + //没写协议号 + return; + } handlers.put(number, handler); } return; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 07775b4f3..b6535f525 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -613,10 +613,7 @@ public class ItemUtil { } /** - * 玩家升级 - * - * @param user - * @param addExp + * 玩家升级 //zsx 保留 TODO 由事件分发到 playlogic 去处理 */ public static void userLevelUp(User user, int addExp) throws Exception { PlayerManager playerInfoManager = user.getPlayerInfoManager(); @@ -676,7 +673,7 @@ public class ItemUtil { } /** - * 孙龙宝藏升级 + * 孙龙宝藏升级 //zsx 保留 TODO 由事件分发到 Activitylogic 去处理 * @param user */ public static void treasureLevelUp(User user) throws Exception {