博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
玩家移动
阅读量:6694 次
发布时间:2019-06-25

本文共 1640 字,大约阅读时间需要 5 分钟。

玩家移动//好长时间没看这些,好多都看不懂了void Map::UpdatePlayerPos(TgtPos pos, PlayerInfo* pl){//    m_pLog->Logs(eLogLevel_Warning, "人物移动");    // 检查位置包    auto& mpos = m_spBase->GetMapPos(pos.tgtPos);    if(!CheckMovePos(pos, pl))//纠正包不知干啥的        return;    pl->m_CurPos = pl->tgtPos;    pl->tgtPos = pos.tgtPos;    pl->m_fSpeed = pos.speed;    pl->mov_face = pos.mov_face;    pl->mov_mode = pos.mov_mode;    pl->dir = pos.dir;    int curPosX = pl->m_CurPos.x;    int curPosY = pl->m_CurPos.y;    int tgtPosX = pl->tgtPos.x;    int tgtPosY = pl->tgtPos.y;    //[+]设置阻挡(压测的时候取消设置)    pos2d cur_map_pos = m_spBase->GetMapPos(curPosX, curPosY);    pos2d tgt_map_pos = m_spBase->GetMapPos(tgtPosX, tgtPosY);    int id = pl->objId.id;    //标记移动    m_MoveMgr.AddMask(pl);    //没有发生位置移动    if(cur_map_pos == tgt_map_pos)        return;    m_MapCellMgr.UpdateObjPos(pl, cur_map_pos, tgt_map_pos);    //分配到指定的地图块上面(确定是否离开了所在块)    int x = pl->m_nBlockX;    int y = pl->m_nBlockY;    //更新区域    //pl->region = getRegion(tgt_map_pos);    UpdateRegionInfo(pl, tgt_map_pos);    pos2d new_block_pos = m_spBase->GetBlockPos(tgtPosX, tgtPosY);    // 火墙移动处理    FireWall(pl, pos.tgtPos);    if((x == new_block_pos.x) && (y == new_block_pos.y))        return ; //没变化    //删除原来的    ObjID plid;    plid.id = id;    plid.type = ObjID_Player;    m_MapCellMgr.m_vecRolesBlock[x][y].Del(plid);    //更新玩家附近的对象(其他玩家/怪)    pos2d olDBlockPos = {x, y};     NotifyBlock(olDBlockPos, new_block_pos, pl);    //加入新的    pl->m_nBlockX = new_block_pos.x;    pl->m_nBlockY = new_block_pos.y;    m_MapCellMgr.m_vecRolesBlock[new_block_pos.x][new_block_pos.y].Add(pl);    //eSkillId_FireWall处理    }

 

转载地址:http://eqpoo.baihongyu.com/

你可能感兴趣的文章
iOS 中多音频处理
查看>>
Java 设计模式之命令模式
查看>>
nginx配置反向代理或跳转出现400问题处理记录
查看>>
《QTP自动化测试权威指南(第二版)》—第2章2.3节搜索标签(Search Tab)
查看>>
Js针对window窗体大小设置
查看>>
dom4j的生成xml并格式化输出
查看>>
企业管理过程信息化自助开发平台架构研究与应用
查看>>
TDBadgedCell
查看>>
我的友情链接
查看>>
思科路由器配置命令一览表
查看>>
《数据库系统概念》5-连接、视图和事务
查看>>
PL/SQL使用技巧收集
查看>>
skipped when looking for precompiled header
查看>>
easymybatis中字段自动填充
查看>>
java 电子商务云平台b2b b2c o2o springmvc+mybatis+spring cloud+spring boot
查看>>
如何通过ad组策略让domain users用户可以远程桌面?
查看>>
线程池的使用
查看>>
vb的winio模拟键盘鼠标部分参考代码
查看>>
等待多个并发事件完成的模型
查看>>
如何使用 PyCharm+Docker 打造深度学习利器
查看>>