diff --git a/conf/server/EventPointConfig.txt b/conf/server/EventPointConfig.txt new file mode 100644 index 000000000..4fac5c114 --- /dev/null +++ b/conf/server/EventPointConfig.txt @@ -0,0 +1,59 @@ +Id Option +int mut,int#int,1 +101001 10101 +101002 10102 +101003 10104 +101004 101001#101002 +101005 101003#101004 +101006 101005#101006 +101007 101007#101008 +101008 101009#101010 +101009 101011#101012 +101010 101013 +101011 101014 +101012 101015#101016 +101013 101017 +101014 101018#101019 +101015 101020 +101016 101021 +101017 101022 +101018 101023 +101019 101024 +101020 101025 +101021 101026 +101022 101027 +101023 101028 +101024 101029 +101025 101030 +101026 101031 +101027 101032 +101028 101033 +101029 101034 +101030 101035 +101029 101036#101037 +101030 101036#101037 +101031 101036#101037 +101032 101036#101037 +101033 101036#101037 +101034 null +101035 null +101036 null +101037 null +101038 null +101039 null +101040 null +101041 null +101042 null +101043 null +101044 null +101045 null +101046 null +101047 null +101048 null +101049 null +101050 null +101051 null +101052 null +101053 null +101054 null +101055 null diff --git a/conf/server/MapPointConfig.txt b/conf/server/MapPointConfig.txt new file mode 100644 index 000000000..7ae798cd7 --- /dev/null +++ b/conf/server/MapPointConfig.txt @@ -0,0 +1,148 @@ +Id Style Refresh TriggerRules ExploreValues InitialEventId +int int int int int int +101001 1 2 1 0 101001 +101002 1 2 1 0 101002 +101003 1 2 1 0 101003 +101004 2 3 1 0 101004 +101005 3 2 1 0 101005 +101006 4 2 1 0 101006 +101007 5 3 1 0 101007 +101008 5 4 1 0 101029 +101009 5 3 1 0 101030 +101010 5 3 1 0 101031 +101011 5 3 1 0 101032 +101012 5 3 1 0 101033 +101013 8 2 1 0 0 +102001 1 2 1 0 0 +102002 1 2 1 0 0 +102003 1 2 1 0 0 +102004 1 2 1 0 0 +102005 2 2 1 0 0 +102006 2 2 1 0 0 +102007 2 1 1 0 0 +102008 2 2 1 0 0 +102009 2 1 1 0 0 +102010 3 2 1 0 0 +102011 5 3 1 0 0 +102012 5 3 1 0 0 +102013 5 3 1 0 0 +102014 5 3 1 0 0 +102015 5 3 1 0 0 +103001 1 2 1 0 0 +103002 1 2 1 0 0 +103003 1 2 1 0 0 +103004 2 2 1 0 0 +103005 2 1 1 0 0 +103006 2 2 1 0 0 +103007 2 1 1 0 0 +103008 2 1 1 0 0 +103009 2 2 1 0 0 +103010 3 2 1 0 0 +103011 4 2 1 0 0 +103012 5 3 1 0 0 +103013 5 3 1 0 0 +103014 5 3 1 0 0 +103015 5 3 1 0 0 +103016 5 3 1 0 0 +103017 5 3 1 0 0 +103018 5 3 1 0 0 +103019 5 3 1 0 0 +103020 5 3 1 0 0 +103021 5 3 1 0 0 +103022 5 3 1 0 0 +103023 8 2 1 0 0 +104001 1 2 1 0 0 +104002 1 2 1 0 0 +104003 1 2 1 0 0 +104004 2 2 1 0 0 +104005 2 1 1 0 0 +104006 2 2 1 0 0 +104007 2 1 1 0 0 +104008 2 1 1 0 0 +104009 2 2 1 0 0 +104010 2 2 1 0 0 +104011 2 2 1 0 0 +104012 3 2 1 0 0 +104013 5 3 1 0 0 +104014 5 3 1 0 0 +104015 5 3 1 0 0 +104016 5 3 1 0 0 +104017 5 3 1 0 0 +104018 5 3 1 0 0 +104019 8 2 1 0 0 +105001 1 2 1 0 0 +105002 1 2 1 0 0 +105003 1 2 1 0 0 +105004 2 2 1 0 0 +105005 2 1 1 0 0 +105006 2 2 1 0 0 +105007 2 1 1 0 0 +105008 2 1 1 0 0 +105009 2 2 1 0 0 +105010 2 2 1 0 0 +105011 2 2 1 0 0 +105012 2 1 1 0 0 +105013 3 2 1 0 0 +105014 5 3 1 0 0 +105015 5 3 1 0 0 +105016 5 3 1 0 0 +105017 5 3 1 0 0 +105018 5 3 1 0 0 +105019 5 3 1 0 0 +105020 5 3 1 0 0 +105021 4 2 1 0 0 +105022 8 2 1 0 0 +106001 1 2 1 0 0 +106002 1 2 1 0 0 +106003 2 2 1 0 0 +106004 2 1 1 0 0 +106005 2 2 1 0 0 +106006 3 2 1 0 0 +106007 5 3 1 0 0 +106008 5 3 1 0 0 +106009 5 3 1 0 0 +106010 5 3 1 0 0 +106011 5 3 1 0 0 +106012 5 3 1 0 0 +106013 8 2 1 0 0 +107001 1 2 1 0 0 +107002 1 2 1 0 0 +107003 2 2 1 0 0 +107004 2 1 1 0 0 +107005 2 2 1 0 0 +107006 2 2 1 0 0 +107007 2 1 1 0 0 +107008 2 2 1 0 0 +107009 3 2 1 0 0 +107010 5 3 1 0 0 +107011 5 3 1 0 0 +107012 5 3 1 0 0 +107013 5 3 1 0 0 +107014 5 3 1 0 0 +107015 5 3 1 0 0 +107016 5 3 1 0 0 +107017 5 3 1 0 0 +107018 5 3 1 0 0 +107019 5 3 1 0 0 +107020 5 3 1 0 0 +107021 5 3 1 0 0 +107022 5 3 1 0 0 +107023 8 2 1 0 0 +108001 1 2 1 0 0 +108002 1 2 1 0 0 +108003 1 2 1 0 0 +108004 2 2 1 0 0 +108005 2 1 1 0 0 +108006 2 2 1 0 0 +108007 2 2 1 0 0 +108008 2 1 1 0 0 +108009 2 2 1 0 0 +108010 2 2 1 0 0 +108011 3 2 1 0 0 +108012 4 2 1 0 0 +108013 5 3 1 0 0 +108014 5 3 1 0 0 +108015 5 3 1 0 0 +108016 5 3 1 0 0 +108017 5 3 1 0 0 +108018 8 2 1 0 0 diff --git a/conf/server/Map_101.txt b/conf/server/Map_101.txt index e4fc870e7..c169543a8 100644 --- a/conf/server/Map_101.txt +++ b/conf/server/Map_101.txt @@ -1,44 +1,44 @@ id Event Groups int int mut,int#int,2 -1 101013 1#19 -2 101013 2#19 -3 101013 1#20 -4 101013 2#20 -5 101013 1#3 -6 101013 8#7 -7 101013 10#7 -8 101013 3#20 -9 101013 10#16 -10 101013 8#17 -11 101013 1#18 -12 101002 8#3|9#3|8#4|7#5|7#6 -13 101001 2#14|3#14|2#15|3#15 -14 101001 7#18|8#18|8#19 -15 101002 4#10|4#11 -16 101010 2#17 -17 101013 9#15 -18 101013 10#15 -19 101013 8#16 -20 101013 9#8 -21 101013 10#8 -22 101013 2#1 -23 101011 8#8 -24 101012 7#15 -25 101013 1#1 -26 101013 3#1 -27 101013 4#1 -28 101013 5#1 -29 101013 1#2 -30 101013 2#2 -31 101013 3#2 -32 101013 4#2 -33 101001 4#18|3#19 -34 101013 2#3|1#4 -35 101013 7#17 -36 101013 9#7 -37 101013 4#20 -38 101013 9#16 -39 101013 9#17 +1 101007 9#17 +2 101013 1#19 +3 101013 2#19 +4 101013 1#20 +5 101013 2#20 +6 101013 1#3 +7 101013 8#7 +8 101013 10#7 +9 101013 3#20 +10 101013 10#16 +11 101013 8#17 +12 101013 1#18 +13 101002 8#3|9#3|8#4|7#5|7#6 +14 101001 2#14|3#14|2#15|3#15 +15 101001 7#18|8#18|8#19 +16 101002 4#10|4#11 +17 101010 2#17 +18 101013 9#15 +19 101013 10#15 +20 101013 8#16 +21 101013 9#8 +22 101013 10#8 +23 101013 2#1 +24 101011 8#8 +25 101012 7#15 +26 101013 1#1 +27 101013 3#1 +28 101013 4#1 +29 101013 5#1 +30 101013 1#2 +31 101013 2#2 +32 101013 3#2 +33 101013 4#2 +34 101001 4#18|3#19 +35 101013 2#3|1#4 +36 101013 7#17 +37 101013 9#7 +38 101013 4#20 +39 101013 9#16 40 101008 8#2 41 101009 10#10 42 101004 1#11|2#11|1#12|2#12|5#17|6#17|6#18 diff --git a/conf/server/OptionAddCondition.txt b/conf/server/OptionAddCondition.txt new file mode 100644 index 000000000..8a431404c --- /dev/null +++ b/conf/server/OptionAddCondition.txt @@ -0,0 +1,14 @@ +Id Type Values +int int mut,int#int,2 +1 2 1503#1 +2 1 101008 +0 0 null +0 0 null +0 0 null +0 0 null +0 0 null +0 0 null +0 0 null +0 0 null +0 0 null +0 0 null diff --git a/conf/server/OptionConfig.txt b/conf/server/OptionConfig.txt new file mode 100644 index 000000000..76db8408a --- /dev/null +++ b/conf/server/OptionConfig.txt @@ -0,0 +1,39 @@ +Id AddConditionID BehaviorType BehaviorTypeValues Reward JumpType JumpTypeValues +int int int mut,int#int,2 mut,int#int,2 int mut,int#int,2 +101001 1 2 1503#1 null 4 null +101002 0 0 null null 4 null +101003 0 0 null null 5 null +101004 0 0 null null 4 null +101005 0 0 null null 6 102 +101006 0 0 null null 4 null +101007 0 0 null null 1 101008 +101008 0 0 null null 4 null +101009 0 0 null null 1 101009 +101010 0 0 null null 4 null +101011 0 0 null null 1 101010 +101012 0 0 null null 4 null +101013 0 0 null null 1 101011 +101014 0 0 null null 1 101012 +101015 0 0 null null 1 101013 +101016 0 0 null null 4 null +101017 0 0 null null 1 101014 +101018 0 0 null null 3 101015#101028|2 +101019 0 0 null null 4 null +101020 0 0 null null 3 101016 +101021 0 0 null null 3 101017 +101022 0 0 null null 3 101018 +101023 0 0 null null 3 101019 +101024 0 0 null null 3 101020 +101025 0 0 null null 3 101021 +101026 0 0 null null 3 101022 +101027 0 0 null null 3 101023 +101028 0 0 null null 1 101024 +101029 0 0 null null 3 101025 +101030 0 0 null null 3 101026 +101031 0 0 null null 3 101027 +101032 0 0 null null 3 101028 +101033 0 0 null null 3 101029 +101034 0 0 null null 3 101030 +101035 0 0 null null 5 null +101036 1 2 1503#1 null 4 null +101037 0 0 null null 4 null diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SCMapEventsConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/MapPointConfig.java similarity index 72% rename from serverlogic/src/main/java/com/ljsd/jieling/config/SCMapEventsConfig.java rename to serverlogic/src/main/java/com/ljsd/jieling/config/MapPointConfig.java index 45cd2a858..34e7f9e8b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SCMapEventsConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/MapPointConfig.java @@ -5,10 +5,10 @@ import com.ljsd.jieling.logic.Table; import java.util.Map; -@Table(name = "MapEventsConfig") -public class SCMapEventsConfig implements BaseConfig{ +@Table(name = "MapPointConfig") +public class MapPointConfig implements BaseConfig{ - public static Map scMapEventMap; + public static Map scMapEventMap; /** * 大事件id */ @@ -32,18 +32,20 @@ public class SCMapEventsConfig implements BaseConfig{ * 2覆盖触发 */ private int triggerRules; - /** - * 是否记录进度 - */ - private boolean isSchedule; + /** * 探索值 */ private int exploreValues; + /** + * 初始事件id + */ + private int initialEventId; + @Override public void init() throws Exception { - scMapEventMap = STableManager.getConfig(SCMapEventsConfig.class); + scMapEventMap = STableManager.getConfig(MapPointConfig.class); } public int getId() { @@ -58,7 +60,7 @@ public class SCMapEventsConfig implements BaseConfig{ return refresh; } - public static Map getScMapEventMap() { + public static Map getScMapEventMap() { return scMapEventMap; } @@ -66,8 +68,8 @@ public class SCMapEventsConfig implements BaseConfig{ return triggerRules; } - public boolean isSchedule() { - return isSchedule; + public int getInitialEventId() { + return initialEventId; } public int getExploreValues() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SCMapEventsItemConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SCMapEventsItemConfig.java deleted file mode 100644 index c975d9f70..000000000 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SCMapEventsItemConfig.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.ljsd.jieling.config; - -import com.ljsd.jieling.logic.STableManager; -import com.ljsd.jieling.logic.Table; - -import java.util.HashMap; -import java.util.Map; - -@Table(name = "MapEventsItemConfig") -public class SCMapEventsItemConfig implements BaseConfig{ - - public static Map scMapEventsItemConfigMap; - - public static Map> scMapEventsItemConfigs; - - private int id; - /** - *"小事件id - */ - private int eventsId; - /** - * 排序 - */ - private int order; - /** - * 事件内容 - */ - private int[][] contents; - /** - * 奖励 - */ - private int[][] reward; - - /** - * 结果跳转 - */ - private int[][] jump; - - /** - * 开启条件 - */ - private int[][] openRules; - - @Override - public void init() throws Exception { - scMapEventsItemConfigMap = STableManager.getConfig(SCMapEventsItemConfig.class); - scMapEventsItemConfigs = new HashMap<>(scMapEventsItemConfigMap.size()); - for (SCMapEventsItemConfig eventsItemConfigEntry : scMapEventsItemConfigMap.values()){ - if (!scMapEventsItemConfigs.containsKey(eventsItemConfigEntry.getEventsId())) { - scMapEventsItemConfigs.put(eventsItemConfigEntry.getEventsId(), new HashMap<>()); - } - scMapEventsItemConfigs.get(eventsItemConfigEntry.getEventsId()).put(eventsItemConfigEntry.getOrder(), eventsItemConfigEntry); - } - } - - public int getId() { - return id; - } - - public int getEventsId() { - return eventsId; - } - - public int getOrder() { - return order; - } - - public int[][] getContents() { - return contents; - } - - public int[][] getReward() { - return reward; - } - - public int[][] getJump() { - return jump; - } - - public int[][] getOpenRules() { - return openRules; - } -} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SEventPointConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SEventPointConfig.java new file mode 100644 index 000000000..a18b8e334 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SEventPointConfig.java @@ -0,0 +1,28 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name ="EventPointConfig") +public class SEventPointConfig implements BaseConfig { + public static Map sEventPointConfigMap; + private int id; + + private int[] option; + + @Override + public void init() throws Exception { + sEventPointConfigMap = STableManager.getConfig(SEventPointConfig.class); + } + + + public int getId() { + return id; + } + + public int[] getOption() { + return option; + } +} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SMapEventsItemConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SMapEventsItemConfig.java deleted file mode 100644 index 99363bf19..000000000 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SMapEventsItemConfig.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.ljsd.jieling.config; - -import com.ljsd.jieling.logic.STableManager; -import com.ljsd.jieling.logic.Table; - -import java.util.Map; - -@Table(name ="MapEventsItemConfig") -public class SMapEventsItemConfig implements BaseConfig { - - private int id; - - private int eventsId; - - private int order; - - private int sort; - - private int[][] contents; - - private int[][] reward; - - private int[][] jump; - - private int[][] openRules; - - private String unfinishInfo; - - private String unfinishOption; - - private int[][] unfinishContents; - - - @Override - public void init() throws Exception { - - } - - - public int getId() { - return id; - } - - public int getEventsId() { - return eventsId; - } - - public int getOrder() { - return order; - } - - public int getSort() { - return sort; - } - - public int[][] getContents() { - return contents; - } - - public int[][] getReward() { - return reward; - } - - public int[][] getJump() { - return jump; - } - - public int[][] getOpenRules() { - return openRules; - } - - public String getUnfinishInfo() { - return unfinishInfo; - } - - public String getUnfinishOption() { - return unfinishOption; - } - - public int[][] getUnfinishContents() { - return unfinishContents; - } - - -} \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SOptionAddCondition.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SOptionAddCondition.java new file mode 100644 index 000000000..fe35e4d31 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SOptionAddCondition.java @@ -0,0 +1,35 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name = "OptionAddCondition") +public class SOptionAddCondition implements BaseConfig{ + + public static Map sOptionAddConditionMap; + + @Override + public void init() throws Exception { + sOptionAddConditionMap = STableManager.getConfig(SOptionAddCondition.class); + } + + private int id; + + private int type; + + private int[][] values; + + public int getId() { + return id; + } + + public int getType() { + return type; + } + + public int[][] getValues() { + return values; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SOptionConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SOptionConfig.java new file mode 100644 index 000000000..23e5bfb6f --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SOptionConfig.java @@ -0,0 +1,65 @@ +package com.ljsd.jieling.config; + +import com.ljsd.jieling.logic.STableManager; +import com.ljsd.jieling.logic.Table; + +import java.util.Map; + +@Table(name = "OptionConfig") +public class SOptionConfig implements BaseConfig{ + + public static Map sOptionConfigMap; + + @Override + public void init() throws Exception { + sOptionConfigMap = STableManager.getConfig(SOptionConfig.class); + } + + private int id; + + private int addConditionId; + + private int behaviorType; + + private int[][] behaviorTypeValues; + + private int[][] reward; + + private int jumpType; + + private int[][] jumpTypeValues; + + private int addConditionID; + + public int getId() { + return id; + } + + public int getAddConditionId() { + return addConditionId; + } + + public int getBehaviorType() { + return behaviorType; + } + + public int[][] getBehaviorTypeValues() { + return behaviorTypeValues; + } + + public int[][] getReward() { + return reward; + } + + public int getJumpType() { + return jumpType; + } + + public int[][] getJumpTypeValues() { + return jumpTypeValues; + } + + public int getAddConditionID() { + return addConditionID; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java index 114471c80..9c8281c33 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java @@ -9,8 +9,8 @@ public interface GlobalsDef { //英雄属性 int HP_TYPE =1; int ATTACK_TYPE =2; - int PhysicalDefence_TYPE =3; - int MagicDefence_TYPE =4; + int PHYSICAL_DEFENCE_TYPE =3; + int MAGIC_DEFENCE_TYPE =4; int SPEED_TYPE =5; // diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Cell.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Cell.java index e48902daf..6d744eabb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Cell.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/Cell.java @@ -6,17 +6,17 @@ public class Cell extends MongoBase { private int cellId; - private int eventId; + private int pointId; - private int state; + private int eventId; public Cell() { } - public Cell(int cellId, int eventId, int state) { + public Cell(int cellId, int eventId, int pointId) { this.cellId = cellId; + this.pointId = pointId; this.eventId = eventId; - this.state = state; } public int getCellId() { @@ -27,12 +27,17 @@ public class Cell extends MongoBase { return eventId; } - public int getState() { - return state; + public int getPointId() { + return pointId; } - public void setState(int state) throws Exception { - updateString("state", state); - this.state = state; + public void setPointId(int pointId) throws Exception { + updateString("pointId", pointId); + this.pointId = pointId; + } + + public void setEventId(int eventId) throws Exception { + updateString("eventId", eventId); + this.eventId = eventId; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java index e8738ba50..08177e4a6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventType.java @@ -18,23 +18,20 @@ public class EventType { /** * 小事件类型 * 1战斗 - * 2判断属性(属性id#(0,-1,1)#num - * 3消耗物品 - * 5侦察 - * 6离开 - * 7做选择不同跳转文本 - * 8行动到某张地图某坐标点 - * 9吃buff - * 10走进度条 + * 2消耗物品 + * 3侦察 + * 4离开 + * 5行动到某张地图某坐标点 + * 6进度条 + * 7生成新的地图点 + * 8吃buff + * 9确认 */ public static final int fight = 1; - public static final int attribute = 2; - public static final int useItem = 3; -// public static final int scout = 4; - public static final int scout = 5; - public static final int leave = 6; + public static final int useItem = 2; + public static final int scout = 3; + public static final int leave = 4; + public static final int jump = 5; public static final int dialogue = 7; - public static final int jump = 8; - public static final int eatBuff = 9; -// public static final int obstacle = 10; + public static final int eatBuff = 8; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateEventRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventUpdateRequestHandler.java similarity index 56% rename from serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateEventRequestHandler.java rename to serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventUpdateRequestHandler.java index 651a02635..a4f62de9f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateEventRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/EventUpdateRequestHandler.java @@ -8,16 +8,16 @@ import com.ljsd.jieling.protocols.MessageTypeProto; import org.springframework.stereotype.Component; @Component -public class MapUpdateEventRequestHandler extends BaseHandler { +public class EventUpdateRequestHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { - return MessageTypeProto.MessageType.MAP_UDPATE_EVENT_REQUEST; + return MessageTypeProto.MessageType.EVENT_UPDATE_REQUEST; } @Override public void process(ISession iSession, PacketNetData netData) throws Exception { byte[] message = netData.parseClientProtoNetData(); - MapInfoProto.MapUpdateEventRequest mapEnterRequest = MapInfoProto.MapUpdateEventRequest.parseFrom(message); - MapLogic.getInstance().updateEvent(iSession, mapEnterRequest.getCurXY(), mapEnterRequest.getChoice(), mapEnterRequest.getCellsList(), MessageTypeProto.MessageType.MAP_UDPATE_EVENT_RESPONSE); + MapInfoProto.EventUpdateRequest eventUpdateRequest = MapInfoProto.EventUpdateRequest.parseFrom(message); + MapLogic.getInstance().updateEvent(iSession, eventUpdateRequest.getEventId(), eventUpdateRequest.getOptionId(), MessageTypeProto.MessageType.EVENT_UPDATE_RESPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 3afbfd6f9..30dd42a8c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -1,22 +1,22 @@ package com.ljsd.jieling.handler.map; import com.ljsd.jieling.config.SCMap; -import com.ljsd.jieling.config.SCMapEventsConfig; -import com.ljsd.jieling.config.SCMapEventsItemConfig; +import com.ljsd.jieling.config.MapPointConfig; +import com.ljsd.jieling.config.SEventPointConfig; +import com.ljsd.jieling.config.SOptionConfig; +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.dao.Hero; import com.ljsd.jieling.logic.dao.MapManager; import com.ljsd.jieling.logic.dao.User; import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; 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; @@ -55,14 +55,19 @@ public class MapLogic { // if (heroInfosList == null || heroInfosList.isEmpty()) { // return; // } - Map heroes = new HashMap<>(heroInfosList.size()); + Set heroes = new HashSet<>(heroInfosList.size()); for (MapInfoProto.HeroInfo heroInfo : heroInfosList) { - heroes.put(heroInfo.getHeroId(), heroInfo.getHeroHp()); + Hero hero = user.getHeroManager().getHero(heroInfo.getHeroId()); + if (hero == null) { + return; + } + hero.setCurHp(HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.HP_TYPE)); + heroes.add(heroInfo.getHeroId()); } if (heroes.size() != heroInfosList.size()) { return; } - mapManager.setHeroHps(heroes); + mapManager.setHeroes(heroes); user.getPlayerInfoManager().setMapId(101); mapManager.setCurMapId(101); initMap(mapManager); @@ -87,7 +92,7 @@ public class MapLogic { .newBuilder() .setCellId(entry.getKey()) .setEventId(cell.getEventId()) - .setState(cell.getState()) + .setPointId(cell.getPointId()) .build(); cells.add(cellProto); } @@ -111,17 +116,20 @@ public class MapLogic { int x = scMap1.getGroups()[randomIndex][0]; int y = scMap1.getGroups()[randomIndex][1]; int xy = CellUtil.xy2Pos(x, y); - Cell cellValue = new Cell(xy, scMap1.getEvent(), 0); - SCMapEventsConfig scMapEvent = SCMapEventsConfig.scMapEventMap.get(scMap1.getEvent()); - if (scMapEvent.getStyle() == EventType.enter) { + MapPointConfig mapPointConfig = MapPointConfig.scMapEventMap.get(scMap1.getEvent()); + Cell cellValue = new Cell(xy, mapPointConfig.getInitialEventId(), mapPointConfig.getId()); + if (mapPointConfig.getStyle() == EventType.enter) { mapManager.setCurXY(xy); } - if (scMapEvent.getStyle() == EventType.allEvents) { + if (mapPointConfig.getStyle() == EventType.allEvents) { spicelMap.put(xy, cellValue); } else { newMap.put(xy, cellValue); } } + if (mapManager.getCurMapId() > mapManager.getMaxMapId()) { + mapManager.setMaxMapId(mapManager.getCurMapId()); + } mapManager.setMapInfo(newMap); mapManager.setTypeEight(spicelMap); } @@ -129,33 +137,63 @@ public class MapLogic { /** * 战斗开始 */ - public void fightStart(int uid, int bigEventId){ + public List fightStart(int uid, int bigEventId, User user){ String key = RedisKey.getKey(RedisKey.FIGHT, Integer.toString(uid) + RedisKey.UNDERLINE_LINE + Integer.toString(bigEventId), false); RedisUtil.getInstence().set(key, Integer.toString(uid), RedisKey.EXPIRE_TIME); + Set heroes = user.getMapManager().getHeroes(); + List heroFightInfos = new ArrayList<>(heroes.size()); + for (String heroId : heroes) { + Hero hero = user.getHeroManager().getHero(heroId); + if (hero == null || hero.getCurHp() == 0) { + continue; + } + float attack = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.ATTACK_TYPE); + float physicalDefence = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.PHYSICAL_DEFENCE_TYPE); + float magicDefence = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.MAGIC_DEFENCE_TYPE); + float hp = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.HP_TYPE); + float speed = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.HP_TYPE); + CommonProto.Hero heroProto = CBean2Proto.getHero(hero); + CommonProto.HeroFightInfo heroFightInfo = CommonProto.HeroFightInfo + .newBuilder() + .setAttack(attack) + .setPhysicalDefence(physicalDefence) + .setMagicDefence(magicDefence) + .setHp(hp) + .setSpeed(speed) + .setHero(heroProto) + .build(); + heroFightInfos.add(heroFightInfo); + } + return heroFightInfos; } /** * 战斗结束 */ - public void fightEnd(int uid) { + public void fightEnd(ISession session, int result, List heroInfos, MessageTypeProto.MessageType messageType) throws Exception { + int uid = session.getUid(); String key = RedisKey.getKey(RedisKey.FIGHT, Integer.toString(uid), false); String fightInfo = RedisUtil.getInstence().getAndDelete(key); if (fightInfo == null || fightInfo.isEmpty()) { + MessageUtil.sendErrorResponse(session, 0, messageType.getNumber(), "未开始战斗"); + return; + } + User user = UserManager.getUser(uid); + MapManager mapManager = user.getMapManager(); + if (result != 1) { + mapManager.setCurXY(0); + Set heroes = mapManager.getHeroes(); + for (String heroId : heroes) { + Hero hero = user.getHeroManager().getHero(heroId); + hero.setCurHp(0); + } return; } } - - /** - * 更新事件点 - * - * @param session - * @param xy - */ - public void updateEvent(ISession session, int xy, int choice, List cells, MessageTypeProto.MessageType messageType) throws Exception { - Set cellSet = new HashSet<>(cells); - if (cells.size() != cellSet.size()) { - LOGGER.info("cells has repeated"); + public void updateMap(ISession session, int curXY, List cells, MessageTypeProto.MessageType messageType) throws Exception { + if (cells.isEmpty()) { + LOGGER.info("cells.isEmpty()"); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } @@ -167,111 +205,175 @@ public class MapLogic { MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - Cell cell = mapManager.getMapInfo().get(xy); + Cell cell = mapManager.getMapInfo().get(curXY); if (cell == null) { - LOGGER.info("xy is wrong =>{}", xy); + LOGGER.info("xy is wrong =>{}", curXY); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + mapManager.addWalkCells(new HashSet<>(cells)); + mapManager.setCurXY(curXY); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true); + } + + + /** + * 更新事件点 + * optionConfig Id + * @param session + * @param optionId + */ + public void updateEvent(ISession session, int eventId, int optionId, MessageTypeProto.MessageType messageType) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + MapManager mapManager = user.getMapManager(); + if (mapManager.getMapInfo() == null) { + LOGGER.info("mapManager.getMapInfo() == null"); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + Cell cell = mapManager.getMapInfo().get(mapManager.getCurXY()); + if (cell == null) { + LOGGER.info("cell == null xy is wrong =>{}", mapManager.getCurXY()); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - mapManager.setCurXY(xy); int bigEventId = cell.getEventId(); - int schedule = cell.getState(); + if (eventId != bigEventId) { + LOGGER.info("eventId != bigEventId =>{} {}", eventId, bigEventId); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + SEventPointConfig sEventPointConfig = SEventPointConfig.sEventPointConfigMap.get(eventId); + if (sEventPointConfig == null) { + LOGGER.info("sEventPointConfig == null"); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + int[] option = sEventPointConfig.getOption(); + boolean can = false; + for (int i = 0; i < option.length; i++) { + if (option[i] == optionId) { + can = true; + break; + } + } + if (!can) { + LOGGER.info("option =>{} optionId=>{}", option, optionId); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + int schedule = cell.getPointId(); if (schedule == -1) { LOGGER.info("event is finished,bigEventId=>{} smallEventId=>{}", bigEventId, -1); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - Map integerSCMapEventsItemConfigMap = SCMapEventsItemConfig.scMapEventsItemConfigs.get(bigEventId); - if (integerSCMapEventsItemConfigMap == null) { - LOGGER.info("no this event=>{}", bigEventId); + SOptionConfig sOptionConfig = SOptionConfig.sOptionConfigMap.get(optionId); + if (sOptionConfig == null) { + LOGGER.info("sOptionConfig == null=>{}", optionId); MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); return; } - SCMapEventsItemConfig scMapEventsItemConfig = integerSCMapEventsItemConfigMap.get(schedule); - if (scMapEventsItemConfig == null) { - LOGGER.info("no scMapEventsItemConfig bigEventId=>{} smallEventId=>{}", bigEventId, schedule); - MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); - return; - } - int[][] contents = scMapEventsItemConfig.getContents(); boolean isSuccess = false; - if (contents.length > 0) { - if (choice < 0 || contents.length < choice) { - LOGGER.info("no this choice =>{} scMapEventsItemConfig.getContents()=>{}", choice, scMapEventsItemConfig.getContents()); - MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); - return; + int behaviorType = sOptionConfig.getBehaviorType(); + int[][] behaviorTypeValues = sOptionConfig.getBehaviorTypeValues(); + switch (behaviorType) { + case EventType.fight: { +// heroFightInfos = fightStart(uid, bigEventId, user); + isSuccess = true; + break; } - int[] eventArr = contents[choice - 1]; - switch (eventArr[0]) { - case EventType.fight: { - fightStart(uid, bigEventId); + case EventType.eatBuff: + case EventType.useItem: + case EventType.scout: { + Map useItems = new HashMap<>(); + useItems.put(behaviorTypeValues[0][0], behaviorTypeValues[0][1]); + ItemUtil.useItem(user, useItems); + isSuccess = true; + break; + } +// case EventType.attribute: { +// Set heroes = mapManager.getHeroes(); +// for (String heroId : heroes) { +// Hero hero = user.getHeroManager().getHero(heroId); +// if (hero == null || hero.getCurHp() == 0) { +// continue; +// } +// float hp = HeroLogic.getInstance().calHeroAttribute(hero, GlobalsDef.HP_TYPE); +// +//// eventArr[1] +// } +// isSuccess = true; +// break; +// } + case EventType.leave: { + int randomInt = MathUtils.randomInt(100) + 1; + if (randomInt <= behaviorTypeValues[0][0]) { isSuccess = true; - break; } - case EventType.attribute: { - Map heroHps = mapManager.getHeroHps(); - for (Map.Entry entry : heroHps.entrySet()) { - if (entry.getValue() == 0) { - continue; - } - Hero hero = user.getHeroManager().getHero(entry.getKey()); -// eventArr[1] - } - isSuccess = true; - break; - } - case EventType.eatBuff: - case EventType.useItem: - case EventType.scout: { - Map useItems = new HashMap<>(); - useItems.put(eventArr[1], eventArr[2]); - ItemUtil.useItem(user, useItems); - isSuccess = true; - break; - } - case EventType.leave: { - int randomInt = MathUtils.randomInt(100) + 1; - if (randomInt <= eventArr[1]) { - isSuccess = true; - } - break; - } - case EventType.dialogue: { + break; + } + case EventType.dialogue: { - break; - } - case EventType.jump: { + break; + } + case EventType.jump: { - break; - } - default: { - return; - } + break; } - } else { - isSuccess = true; - } - MapInfoProto.MapUpdateEventResponse.Builder mapUpdateEventResponse = MapInfoProto.MapUpdateEventResponse.newBuilder(); - if (!isSuccess) { - MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); - return; - } - if (scMapEventsItemConfig.getJump() == null || scMapEventsItemConfig.getJump().length == 0) { - cell.setState(-1); - } else { - int[][] jumps = scMapEventsItemConfig.getJump(); - for (int i = 0; i < jumps.length; i++) { - int[] jump = jumps[i]; - if (jump[0] == choice) { - cell.setState(jump[1]); - break; - } + default: { + break; } } - mapManager.addOrUpdateCell(xy, cell); - int[][] reward = scMapEventsItemConfig.getReward(); + + int jumpType = sOptionConfig.getJumpType(); + int nextPoint = 0; + int[][] jumpTypeValues = sOptionConfig.getJumpTypeValues(); + switch (jumpType) { + // 1 无条件跳转,对应事件点 + case 1:{ + nextPoint = jumpTypeValues[0][0]; + break; + } + // 2 权重跳转,1001#1002|0.2#0.8 + case 2:{ + int ranom = MathUtils.randomInt(100) + 1; + if (ranom >= jumpTypeValues[1][0]) { + nextPoint = jumpTypeValues[0][0]; + } else { + nextPoint = jumpTypeValues[0][1]; + } + break; + } + // 3 条件跳转 1001#1002|0(0或1为和)#条件id#条件id + case 3:{ + break; + } + // 4 不跳转,关闭界面 + case 4:{ + nextPoint = -1; + break; + } + // 5 返回主城 + case 5:{ + break; + } + // 6 无条件跳转地图id + case 6:{ + break; + } + default:{ + break; + } + } + MapInfoProto.EventUpdateResponse.Builder eventUpdateResponse = MapInfoProto.EventUpdateResponse.newBuilder(); + cell.setEventId(nextPoint); + mapManager.addOrUpdateCell(mapManager.getCurXY(), cell); + int[][] reward = sOptionConfig.getReward(); List rewards = new ArrayList<>(); if (reward != null && reward.length > 0) { +// ItemUtil.drop() Map itemMap = new HashMap<>(); // ItemUtil.addItem(user, itemMap); } @@ -287,11 +389,48 @@ public class MapLogic { // user.getPlayerInfoManager().setMapId(user.getPlayerInfoManager().getMapId() + 1); // return; // } - mapUpdateEventResponse.setCurXY(xy); - mapUpdateEventResponse.setEventSchedule(cell.getState()); - mapUpdateEventResponse.addAllItems(rewards); - LOGGER.info("updateEvent success xy=>{}, state=>{}", xy, cell.getState()); - MessageUtil.sendMessage(session, 1, messageType.getNumber(), mapUpdateEventResponse.build(), true); + List eventBehaviorValuesList = new ArrayList<>(); + for (int i = 0; i < sOptionConfig.getBehaviorTypeValues().length; i++) { + CommonProto.EventBehaviorValues.Builder eventBehaviorValues = CommonProto.EventBehaviorValues + .newBuilder(); + for (int j = 0; j < sOptionConfig.getBehaviorTypeValues()[i].length; j++) { + eventBehaviorValues.addBehaviorValues(sOptionConfig.getBehaviorTypeValues()[i][j]); + } + eventBehaviorValuesList.add(eventBehaviorValues.build()); + } + CommonProto.EventBehaviorCommon eventBehaviorCommon = CommonProto.EventBehaviorCommon + .newBuilder() + .setBehaviorType(sOptionConfig.getBehaviorType()) + .addAllEventBehaviorValues(eventBehaviorValuesList) + .build(); + eventUpdateResponse.setEventBehaviorCommon(eventBehaviorCommon); + eventUpdateResponse.setEventId(cell.getEventId()); + LOGGER.info("updateEvent success xy=>{}, getPointId=>{} eventId={}", mapManager.getCurXY(), cell.getPointId(), cell.getEventId()); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), eventUpdateResponse.build(), true); + } + + /** + * 退出地图 + * @param session + * @param messageType + * @throws Exception + */ + public void outMap(ISession session, MessageTypeProto.MessageType messageType) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + MapManager mapManager = user.getMapManager(); + if (mapManager.getMapInfo() == null) { + LOGGER.info("mapManager.getMapInfo() == null"); + MessageUtil.sendErrorResponse(session,0, messageType.getNumber(), ""); + return; + } + mapManager.setMapInfo(new HashMap<>()); + mapManager.setHeroes(new HashSet<>()); + mapManager.setTypeEight(new HashMap<>()); + mapManager.setWalkCells(new HashSet<>()); + mapManager.setCurXY(0); + mapManager.setCurMapId(0); + MessageUtil.sendMessage(session, 1, messageType.getNumber(), null, true); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapOutRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapOutRequestHandler.java new file mode 100644 index 000000000..3bc77d086 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapOutRequestHandler.java @@ -0,0 +1,20 @@ +package com.ljsd.jieling.handler.map; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +@Component +public class MapOutRequestHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.MAP_OUT_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + MapLogic.getInstance().outMap(iSession, MessageTypeProto.MessageType.MAP_OUT_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java new file mode 100644 index 000000000..e530b8c51 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapUpdateRequestHandler.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.handler.map; + + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +@Component +public class MapUpdateRequestHandler extends BaseHandler{ + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.MAP_UDPATE_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + byte[] message = netData.parseClientProtoNetData(); + MapInfoProto.MapUpdateRequest mapEnterRequest = MapInfoProto.MapUpdateRequest.parseFrom(message); + MapLogic.getInstance().updateMap(iSession, mapEnterRequest.getCurXY(), mapEnterRequest.getCellsList(), MessageTypeProto.MessageType.MAP_UDPATE_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index b2bba96b3..4cd403873 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -4,6 +4,8 @@ import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.SCHero; import com.ljsd.jieling.config.SGameSetting; import com.ljsd.jieling.config.SHeroLevlConfig; +import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.util.KeyGenUtils; import com.ljsd.jieling.util.UUIDEnum; @@ -35,6 +37,8 @@ public class Hero extends MongoBase { private int lastUpdateEnergyTime; + private float curHp; + public Hero(){} public Hero(String uid,int heroTid){ @@ -49,6 +53,7 @@ public class Hero extends MongoBase { if(skillIds!=null && skillIds.isEmpty()){ this.skillList.addAll(skillIds); } + this.curHp = HeroLogic.getInstance().calHeroAttribute(this, GlobalsDef.HP_TYPE); createTime = (int)(System.currentTimeMillis()/1000); lastUpdateEnergyTime = createTime; breakId = 0; @@ -81,6 +86,14 @@ public class Hero extends MongoBase { this.templateId = templateId; } + public float getCurHp() { + return curHp; + } + + public void setCurHp(float curHp) throws Exception { + updateString("curHp",curHp); + this.curHp = curHp; + } public void setLevel(int level) throws Exception { updateString("level",level); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/MapManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/MapManager.java index 52b77ff4d..007026771 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/MapManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/MapManager.java @@ -5,8 +5,10 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.handler.map.Cell; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -16,12 +18,16 @@ public class MapManager extends MongoBase { private int curXY; - private Map heroHps; + private int maxMapId; + + private Set heroes; private Map mapInfo; private Map typeEight; + private Set walkCells; + private Map> crossMapInfos = new ConcurrentHashMap<>(); public Map getMapInfo() { @@ -74,12 +80,39 @@ public class MapManager extends MongoBase { this.typeEight = typeEight; } - public Map getHeroHps() { - return heroHps; + public Set getHeroes() { + return heroes; } - public void setHeroHps(Map heroHps) throws Exception { - updateString( "heroHps", heroHps); - this.heroHps = heroHps; + public void setHeroes(Set heroes) throws Exception { + updateString( "heroes", heroes); + this.heroes = heroes; + } + + public Set getWalkCells() { + return walkCells; + } + + public void setWalkCells(Set walkCells) throws Exception { + updateString( "walkCells", walkCells); + this.walkCells = walkCells; + } + + public void addWalkCells(Set walkCells) throws Exception { + updateString( "walkCells", walkCells); + if (this.walkCells == null) { + this.walkCells = walkCells; + } else { + this.walkCells.addAll(walkCells); + } + } + + public int getMaxMapId() { + return maxMapId; + } + + public void setMaxMapId(int maxMapId) throws Exception { + updateString( "maxMapId", maxMapId); + this.maxMapId = maxMapId; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 86d493b70..14a000954 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -369,8 +369,8 @@ public class HeroLogic { Map baseValueMap = new HashMap<>(); baseValueMap.put(GlobalsDef.HP_TYPE,getBaseValueByType(scHero,GlobalsDef.HP_TYPE)); baseValueMap.put(GlobalsDef.ATTACK_TYPE,getBaseValueByType(scHero,GlobalsDef.ATTACK_TYPE)); - baseValueMap.put(GlobalsDef.PhysicalDefence_TYPE,getBaseValueByType(scHero,GlobalsDef.PhysicalDefence_TYPE)); - baseValueMap.put(GlobalsDef.MagicDefence_TYPE,getBaseValueByType(scHero,GlobalsDef.MagicDefence_TYPE)); + baseValueMap.put(GlobalsDef.PHYSICAL_DEFENCE_TYPE,getBaseValueByType(scHero,GlobalsDef.PHYSICAL_DEFENCE_TYPE)); + baseValueMap.put(GlobalsDef.MAGIC_DEFENCE_TYPE,getBaseValueByType(scHero,GlobalsDef.MAGIC_DEFENCE_TYPE)); baseValueMap.put(GlobalsDef.SPEED_TYPE,getBaseValueByType(scHero,GlobalsDef.SPEED_TYPE)); for(Map.Entry item : baseValueMap.entrySet()){ Integer attributeType = item.getKey(); @@ -431,10 +431,10 @@ public class HeroLogic { case GlobalsDef.ATTACK_TYPE: result = scHero.getAttack(); break; - case GlobalsDef.PhysicalDefence_TYPE: + case GlobalsDef.PHYSICAL_DEFENCE_TYPE: result = scHero.getPhysicalDefence(); break; - case GlobalsDef.MagicDefence_TYPE: + case GlobalsDef.MAGIC_DEFENCE_TYPE: result = scHero.getMagicDefence(); break; case GlobalsDef.SPEED_TYPE: @@ -449,7 +449,7 @@ public class HeroLogic { //todo 计算英雄战斗力 战斗力 = 生命*0.7 + (护甲 + 魔坑)*5 + 攻击 *10 + (暴击率 + 效果命中率 )*5 +(属性攻击率 + 属性防御率)*30 public int calHeoForce(Hero hero){ Map heroAllAttribute = calHeroAllAttribute(hero); - double heroBaseForce = heroAllAttribute.get(GlobalsDef.HP_TYPE) * 0.7 + (heroAllAttribute.get(GlobalsDef.PhysicalDefence_TYPE) + heroAllAttribute.get(GlobalsDef.MagicDefence_TYPE)) * 5 + heroAllAttribute.get(GlobalsDef.ATTACK_TYPE) * 10; + double heroBaseForce = heroAllAttribute.get(GlobalsDef.HP_TYPE) * 0.7 + (heroAllAttribute.get(GlobalsDef.PHYSICAL_DEFENCE_TYPE) + heroAllAttribute.get(GlobalsDef.MAGIC_DEFENCE_TYPE)) * 5 + heroAllAttribute.get(GlobalsDef.ATTACK_TYPE) * 10; //todo 计算装备加成 float equipAddForce =0.0f; int result = (int) (heroBaseForce + equipAddForce); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CellUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CellUtil.java index 8f109d7e2..1499fb52a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CellUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CellUtil.java @@ -1,6 +1,5 @@ package com.ljsd.jieling.util; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -113,4 +112,19 @@ public class CellUtil { } + public static boolean isContinuous(int lastXY, List cells){ + boolean first = false; + if (cells.size() > 0) { + first = checkIsNextCell(lastXY, cells.get(0)); + } + for (int i = 1; i < cells.size() - 1; i++) { + boolean other = checkIsNextCell(cells.get(i), cells.get(i + 1)); + if (!first && !other) { + return false; + } + } + return true; + } + + }