小熊1986

导航

第五天 rpg游戏移动的基础设计

rpg游戏移动的基础设计

1.增加对应的处理消息类

UserMoveToCmdHandler 增加一个移动消息处理类。

package org.cmdHandler;

import io.netty.channel.ChannelHandlerContext;
import io.netty.util.AttributeKey;
import org.joy.game.Broadcaster;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.tinygame.herostory.msg.GameMsgProtocol;

/**
 * @author joy
 * @version 1.0
 * @date 2020/5/9 15:20
 * 移动操作
 */
public class UserMoveToCmdHandler implements ICmdHandler<GameMsgProtocol.UserMoveToCmd> {
    static private Logger LOGGER = LoggerFactory.getLogger(UserMoveToCmdHandler.class);

    @Override
    public void handle(ChannelHandlerContext ctx, GameMsgProtocol.UserMoveToCmd cmd) {
        LOGGER.info("收到移动消息");
        //第一步判断数据是否为null
        if (null == ctx
                || null == cmd) {
            LOGGER.error("传入的移动数据不正确");
            return;
        }

        //获取用户id
        Integer userId = (Integer) ctx.channel().attr(AttributeKey.valueOf("userId")).get();
        if (null == userId) {
            System.out.println("userId不存在");
            return;
        }

        //创建对象
        GameMsgProtocol.UserMoveToResult.Builder resultBuilder = GameMsgProtocol.UserMoveToResult.newBuilder();
        resultBuilder.setMoveUserId(userId);
        resultBuilder.setMoveToPosX(cmd.getMoveToPosX());
        resultBuilder.setMoveToPosY(cmd.getMoveToPosY());

        //获取对应的数据
        GameMsgProtocol.UserMoveToResult newResult = resultBuilder.build();

        //发送消息
        Broadcaster.sendAllMsg(newResult);
    }
}

git地址

posted on 2020-11-23 12:15  小熊1986  阅读(40)  评论(0编辑  收藏  举报