override public void Execute() { if (Vector2.Distance(m_pCharacter.Position, m_pTarget) <= m_pCharacter.m_pInfo.m_pInstructionData.walk_speed_x || m_pTarget.x == m_pCharacter.Position.x) { Finish(); } else { m_pCharacter.m_pInfo.m_iFacing = m_pTarget.x > m_pCharacter.Position.x ? GameDefine.FACING_RIGHT : GameDefine.FACING_LEFT; Vector2 p = m_pCharacter.GetNextWalkPoint(m_pCharacter.m_pInfo.m_iFacing); if (p == Vector2.zero || //找不到路 m_pCharacter.m_pInfo.m_iFacing == GameDefine.FACING_RIGHT && m_pCharacter.Position.x >= m_pTarget.x || //已经走过头了 m_pCharacter.m_pInfo.m_iFacing == GameDefine.FACING_LEFT && m_pCharacter.Position.x <= m_pTarget.x) //已经走过头了 { Finish(); } else { m_pCharacter.Position = p; m_pCharacter.Body.DoAction(CharacterStateType.WALK); } } }
override public void Execute() { if (Network.NetworkMode == false) { if (m_pCharacter.m_pInfo.m_iDirectionKeys != 0 && //方向键已经按下 m_pCharacter.m_pInfo.m_iMoveEnergy > 0 && //还有移动能量 m_pCharacter.m_pInfo.m_bIsInRound ) { Vector2 p = m_pCharacter.GetNextWalkPoint(m_pCharacter.m_pInfo.m_iFacing); if (p != Vector2.zero) { --m_pCharacter.m_pInfo.m_iMoveEnergy; m_pCharacter.Position = p; m_pCharacter.Body.DoAction(CharacterStateType.WALK); m_iCount++; if (m_iCount >= SEND_MSG_COUNT) { SendAction(); } } else { SendAction(); Finish(); int tx = (int)m_pCharacter.Position.x + m_pCharacter.m_pInfo.m_iFacing * m_pCharacter.m_pInfo.m_pInstructionData.walk_speed_x; if (m_pCharacter.CanMoveDirection(m_pCharacter.m_pInfo.m_iFacing) && m_pCharacter.CanStand(tx, (int)m_pCharacter.Position.y) == false) { MapManager pMap = GameGOW.Get().MapMgr; p = pMap.FindYLineNotEmptyPointUp(tx, (int)m_pCharacter.Position.y + m_pCharacter.m_pInfo.m_pInstructionData.walk_speed_y, (int)pMap.m_stBound.height); if (p != Vector2.zero) { BaseAction act = ObjectPools.CheckOut <CharacterFallingAction>(m_pCharacter, p, true, false); m_pCharacter.Act(act); } else { p = new Vector2(tx, pMap.m_stBound.yMin); BaseAction act = ObjectPools.CheckOut <CharacterFallingAction>(m_pCharacter, p, false, false); m_pCharacter.go_down = true; m_pCharacter.Act(act); } } } } else { if (m_pCharacter.m_pInfo.m_iMoveEnergy <= 0) { } SendAction(); Finish(); } } else { if (m_pCharacter.m_pInfo.m_iDirectionKeys != 0 && //方向键已经按下 m_pCharacter.m_pInfo.m_iMoveEnergy > 0 //还有移动能量 ) { Vector2 p = m_pCharacter.GetNextWalkPoint(m_pCharacter.m_pInfo.m_iFacing); if (p != Vector2.zero) { --m_pCharacter.m_pInfo.m_iMoveEnergy; m_pCharacter.Position = p; m_pCharacter.Body.DoAction(CharacterStateType.WALK); m_iCount++; if (m_iCount >= SEND_MSG_COUNT) { SendAction(); } } else if (Network.gamemode != BattleType.AI_1v1 || GameGOW.Get().BattleMgr.m_pCurrentPlayer.ID == Network.playerid) { SendAction(); Finish(); int tx = (int)m_pCharacter.Position.x + m_pCharacter.m_pInfo.m_iFacing * m_pCharacter.m_pInfo.m_pInstructionData.walk_speed_x; if (m_pCharacter.CanMoveDirection(m_pCharacter.m_pInfo.m_iFacing) && m_pCharacter.CanStand(tx, (int)m_pCharacter.Position.y) == false) { MapManager pMap = GameGOW.Get().MapMgr; p = pMap.FindYLineNotEmptyPointUp(tx, (int)m_pCharacter.Position.y + m_pCharacter.m_pInfo.m_pInstructionData.walk_speed_y, (int)pMap.m_stBound.height); if (p != Vector2.zero) { BaseAction act = ObjectPools.CheckOut <CharacterFallingAction>(m_pCharacter, p, true, false); m_pCharacter.Act(act); } else { p = new Vector2(tx, pMap.m_stBound.yMin); BaseAction act = ObjectPools.CheckOut <CharacterFallingAction>(m_pCharacter, p, false, false); m_pCharacter.go_down = true; m_pCharacter.Act(act); } } } } else { if (m_pCharacter.m_pInfo.m_iMoveEnergy <= 0) { } SendAction(); Finish(); } } }