|
@@ -20,10 +20,15 @@ package com.iohao.mmo.level.action;
|
|
|
|
|
|
import com.iohao.game.action.skeleton.annotation.ActionController;
|
|
import com.iohao.game.action.skeleton.annotation.ActionController;
|
|
import com.iohao.game.action.skeleton.annotation.ActionMethod;
|
|
import com.iohao.game.action.skeleton.annotation.ActionMethod;
|
|
|
|
+import com.iohao.game.action.skeleton.core.CmdInfo;
|
|
|
|
+import com.iohao.game.action.skeleton.core.commumication.BroadcastContext;
|
|
import com.iohao.game.action.skeleton.core.exception.ActionErrorEnum;
|
|
import com.iohao.game.action.skeleton.core.exception.ActionErrorEnum;
|
|
-import com.iohao.game.action.skeleton.core.flow.FlowContext;
|
|
|
|
|
|
+import com.iohao.game.bolt.broker.core.client.BrokerClientHelper;
|
|
|
|
+import com.iohao.mmo.common.config.GameCode;
|
|
|
|
+import com.iohao.mmo.common.core.flow.MyFlowContext;
|
|
import com.iohao.mmo.level.cmd.LevelCmd;
|
|
import com.iohao.mmo.level.cmd.LevelCmd;
|
|
import com.iohao.mmo.level.entity.Level;
|
|
import com.iohao.mmo.level.entity.Level;
|
|
|
|
+import com.iohao.mmo.level.entity.PersonLevelConfig;
|
|
import com.iohao.mmo.level.mapper.LevelMapper;
|
|
import com.iohao.mmo.level.mapper.LevelMapper;
|
|
import com.iohao.mmo.level.proto.ExpMessage;
|
|
import com.iohao.mmo.level.proto.ExpMessage;
|
|
import com.iohao.mmo.level.proto.LevelMessage;
|
|
import com.iohao.mmo.level.proto.LevelMessage;
|
|
@@ -50,16 +55,32 @@ public class LevelAction {
|
|
*
|
|
*
|
|
* @param expMessage 经验值
|
|
* @param expMessage 经验值
|
|
*/
|
|
*/
|
|
- @ActionMethod(LevelCmd.addExp)
|
|
|
|
- public LevelMessage internalAddExp(ExpMessage expMessage) {
|
|
|
|
|
|
+ @ActionMethod(LevelCmd.personAddExp)
|
|
|
|
+ public void internalAddExpPerson(ExpMessage expMessage) {
|
|
// internal 打头的方法名表示内部方法,只能由内部调用
|
|
// internal 打头的方法名表示内部方法,只能由内部调用
|
|
- long id = expMessage.id;
|
|
|
|
|
|
+ long userId = expMessage.id;
|
|
int exp = expMessage.exp;
|
|
int exp = expMessage.exp;
|
|
|
|
|
|
- Level level = levelService.ofLevel(id);
|
|
|
|
|
|
+ Level level = levelService.ofLevel(userId);
|
|
level.addExp(exp);
|
|
level.addExp(exp);
|
|
levelService.save(level);
|
|
levelService.save(level);
|
|
|
|
|
|
|
|
+ // 推送经验值给玩家
|
|
|
|
+ LevelMessage levelMessage = LevelMapper.ME.convert(level);
|
|
|
|
+ BroadcastContext broadcastContext = BrokerClientHelper.getBroadcastContext();
|
|
|
|
+ CmdInfo cmdInfo = LevelCmd.getCmdInfo(LevelCmd.personAddExp);
|
|
|
|
+ broadcastContext.broadcast(cmdInfo, levelMessage, userId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 得到等级信息
|
|
|
|
+ *
|
|
|
|
+ * @param id id
|
|
|
|
+ * @return LevelMessage
|
|
|
|
+ */
|
|
|
|
+ @ActionMethod(LevelCmd.ofLevel)
|
|
|
|
+ public LevelMessage internalOfLevel(long id) {
|
|
|
|
+ Level level = levelService.ofLevel(id);
|
|
return LevelMapper.ME.convert(level);
|
|
return LevelMapper.ME.convert(level);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -85,10 +106,23 @@ public class LevelAction {
|
|
*
|
|
*
|
|
* @param flowContext flowContext
|
|
* @param flowContext flowContext
|
|
*/
|
|
*/
|
|
- @ActionMethod(LevelCmd.upLevel)
|
|
|
|
- public void upLevel(FlowContext flowContext) {
|
|
|
|
|
|
+ @ActionMethod(LevelCmd.personUpLevel)
|
|
|
|
+ public LevelMessage upLevelPerson(MyFlowContext flowContext) {
|
|
long userId = flowContext.getUserId();
|
|
long userId = flowContext.getUserId();
|
|
|
|
+
|
|
|
|
+ Level level = levelService.ofLevel(userId);
|
|
|
|
+ PersonLevelConfig personLevelConfig = levelService.getPersonLevelConfigByLevel(level.getLevel());
|
|
|
|
+
|
|
// 检测经验是否足够
|
|
// 检测经验是否足够
|
|
|
|
+ int configExp = personLevelConfig.getExp();
|
|
|
|
+ long exp = level.getExp();
|
|
|
|
+ GameCode.UP_LEVEL_ERROR.assertTrue(exp >= configExp);
|
|
|
|
|
|
|
|
+ // 达到升级条件
|
|
|
|
+ level.addExp(-configExp);
|
|
|
|
+ level.incrementLevel();
|
|
|
|
+ levelService.save(level);
|
|
|
|
+ // TODO: 将来添加恢复状态相关业务
|
|
|
|
+ return LevelMapper.ME.convert(level);
|
|
}
|
|
}
|
|
}
|
|
}
|