Beispiel #1
0
    void SyncPushMoveToServer(bool bStop)
    {
        ECGameSession gs = ECGameSession.Instance();
        GP_MOVE_FLAG eMoveFlags = GP_MOVE_FLAG.GP_MOVE_NONE;

        if (bStop)
        {
            eMoveFlags |= GP_MOVE_FLAG.GP_MOVE_STOP;
        }
        else
        {
            eMoveFlags |= GP_MOVE_FLAG.GP_MOVE_WALK;
        }
        Vector3 dir = m_Trans.position - m_vLastNotifyPos;
        if (dir == Vector3.zero)
            dir = m_Trans.forward;
        dir.y = 0;
        dir = Vector3.Normalize(dir);
        ushort nMoveDir = ECUtility.CompressDirH2(dir.x, dir.z);
        ushort nFaceDir = nMoveDir;
        ushort nFlags = (ushort)eMoveFlags;
        ushort nDeltaTime = (ushort)(Mathf.Ceil(1000.0f * ECHostComponentInfo.m_fSyncPushMoveTimer));
        
        //if (nDeltaTime == 0) return;

        if (!m_bIsSkillMove)
        {
            player_move cmd = new player_move();
            cmd.pos = m_Trans.position;
            if (!AutoMove.exp_GetPixel(cmd.pos.x, cmd.pos.z))
            {
                Debug.LogWarning(string.Format("发送 x = {0}, z = {1}",cmd.pos.x, cmd.pos.z));
            }
            cmd.flags = nFlags;
            cmd.timestamp = ECGame.Instance.TimeMgr.GetSeverTimeStampDelta();
            cmd.move_dir = nMoveDir;
            cmd.face_dir = nFaceDir;
            cmd.use_time = nDeltaTime;
            cmd.speed = (ushort)ECUtility.FLOATTOFIX8(m_fSpeed);
            cmd.move_stamp = ECTimeManager.MoveStampSn;
            gs.SendGameData(cmd);
        }
        else
        {
            player_skill_move cmd = new player_skill_move();
            cmd.pos = m_Trans.position;
            cmd.timestamp = ECGame.Instance.TimeMgr.GetSeverTimeStampDelta();
            cmd.flags = nFlags;
            cmd.move_dir = nMoveDir;
            cmd.use_time = nDeltaTime;
            cmd.speed = (ushort)ECUtility.FLOATTOFIX8(m_fSpeed);
            cmd.move_stamp = ECTimeManager.MoveStampSn;
            cmd.face_dir = 0;
            gs.SendGameData(cmd);
        }   

        if (!bStop)
        {
            ECHostComponentInfo.m_fSyncPushMoveTimer -= nDeltaTime * 0.001f;
        }
        else
        {
            ECHostComponentInfo.m_fSyncPushMoveTimer = 0;
//             stop_run cmdStopRun = new stop_run();
//             cmdStopRun.type = 1;
// 
//             gs.SendGameData(cmdStopRun);
        }
    }
Beispiel #2
0
    void SyncPushMoveToServer(bool bStop)
    {
        //Debug.LogWarning("ECHPMoveBehavior SyncPushMoveToServer" + bStop);

        ECGameSession gs = ECGameSession.Instance();
        GP_MOVE_FLAG eMoveFlags = GP_MOVE_FLAG.GP_MOVE_NONE;

        if (bStop)
        {
            eMoveFlags |= GP_MOVE_FLAG.GP_MOVE_STOP;
        }
        else
        {
            eMoveFlags |= GP_MOVE_FLAG.GP_MOVE_WALK;
        }

        ushort nMoveDir = ECUtility.CompressDirH2(m_vDir.x, m_vDir.z);
        ushort nFaceDir = nMoveDir;
        ushort nFlags = (ushort)eMoveFlags;
        ushort nDeltaTime = (ushort)(Mathf.Ceil(1000.0f * ECHostComponentInfo.m_fSyncPushMoveTimer));
        
        //if (nDeltaTime == 0) return;
        //if (nDeltaTime == 0)
        //{
        //    Debug.Log("out + " + m_Trans.position + nDeltaTime);
        //}

        if (!m_bIsSkillMove)
        {
            player_move cmd = new player_move();
            cmd.pos = m_Trans.position;
            cmd.flags = nFlags;
            cmd.timestamp = ECGame.Instance.TimeMgr.GetSeverTimeStampDelta();
            cmd.move_dir = nMoveDir;
            cmd.face_dir = nFaceDir;
            cmd.use_time = nDeltaTime;
            cmd.speed = (ushort)ECUtility.FLOATTOFIX8(m_fSpeed);
            cmd.move_stamp = ECTimeManager.MoveStampSn;
            gs.SendGameData(cmd);

        }
        else
        {
            player_skill_move cmd = new player_skill_move();
            cmd.pos = m_Trans.position;  
            cmd.timestamp = ECGame.Instance.TimeMgr.GetSeverTimeStampDelta();
            cmd.flags = nFlags;
            cmd.move_dir = nMoveDir; 
            cmd.use_time = nDeltaTime;
            cmd.speed = (ushort)ECUtility.FLOATTOFIX8(m_fSpeed);
            cmd.move_stamp = ECTimeManager.MoveStampSn;
            cmd.face_dir = 0;
            gs.SendGameData(cmd);
        }   

        if (!bStop)
        {
            ECHostComponentInfo.m_fSyncPushMoveTimer -= nDeltaTime * 0.001f;
        }
        else
        {
            ECHostComponentInfo.m_fSyncPushMoveTimer = 0;
//             stop_run cmdStopRun = new stop_run();
//             cmdStopRun.type = 1;
// 
//             gs.SendGameData(cmdStopRun);
        }
    }