示例#1
0
        private void initializeMovementParameters(int inchesMoving, AccelerationDirection accelerationDirection)
        {
            VelocityChangedThisMove = 0;

            AccelerationDirection = accelerationDirection;

            InchesMovingThisPhase = (int)(inchesMoving * GravityMovementBonus);
        }
示例#2
0
        public StepView(AccelerationDirection acceleration, SteeringWheel direction, ApplicationStep currentStep, double distance, int totalSteps, int step)
        {
            Distance         = distance;
            this.currentStep = currentStep;
            this.ViewModel   = new StepViewModel(acceleration, direction, currentStep, distance, totalSteps, step, this);
            BindingContext   = ViewModel;

            ConfigureScreen();
            ConfigureModals();
        }
示例#3
0
 public void MoveCharacter(int inchesMoving,
                           AccelerationDirection accelerationDirection = AccelerationDirection.Accelerate
                           )
 {
     if (IsActive)
     {
         initializeMovementParameters(inchesMoving, accelerationDirection);
         limitInchesMovingToAvailableMovementAllowance();
         move();
         updateMovementAllowanceAndNotifyMovementManueverOfCompletion();
     }
 }
示例#4
0
 private void ResetAccelerationDirection()
 {
     mCurrentAccelerationDirection = AccelerationDirection.Hold;
 }
示例#5
0
 // Use this for initialization
 void Start()
 {
     this.CurrentSpeed = 0f;
     this.mCurrentAccelerationDirection = AccelerationDirection.Forward;
 }
示例#6
0
 /// <summary>
 /// Функция ускорения, увеличивает значение текущей скорости.
 /// </summary>
 public void Accelerate()
 {
     mCurrentAccelerationDirection = AccelerationDirection.Forward;
 }
示例#7
0
 /// <summary>
 /// Функция торможения, уменьшает значение текущей скорости.
 /// </summary>
 public void Brake()
 {
     mCurrentAccelerationDirection = AccelerationDirection.Backward;
 }
示例#8
0
        public TurnDirection TurnTowards(YawHexFacing targetYaw, PitchHexFacing targetPitch = 0,
                                         AccelerationDirection accelerationDirection        = AccelerationDirection.Accelerate,
                                         int maxVelocityChangeCharacterWantsToMake          = 0)
        {
            TurnDirection combineDirection     = new TurnDirection(0, 0);
            TurnDirection yawDirectionToTurn   = new TurnDirection(0, 0);
            TurnDirection pitchDirectionToTurn = new TurnDirection(0, 0);

            if (targetYaw != 0)

            {
                int completeYaw = YawHexFacing.NorthEast - YawHexFacing.North + 1;
                int yawDelta    = yawDelta = Math.Abs(Facing.Yaw - targetYaw);
                int YawDeltaTurningOppositeDirection = 0;
                if (yawDelta > completeYaw / 2)
                {
                    YawDeltaTurningOppositeDirection = Math.Abs((int)targetYaw - yawDelta);
                }
                if (YawDeltaTurningOppositeDirection == 0)
                {
                    if (Facing.Yaw > targetYaw)
                    {
                        yawDirectionToTurn = TurnDirection.Left;
                    }
                    else
                    {
                        yawDirectionToTurn = TurnDirection.Right;
                    }
                }
                else
                {
                    if (Facing.Yaw > targetYaw)
                    {
                        yawDirectionToTurn = TurnDirection.Right;
                    }
                    else
                    {
                        yawDirectionToTurn = TurnDirection.Left;
                    }
                    ;
                }
            }


            if (targetPitch != 0)
            {
                int completePitch = PitchHexFacing.DiagonalDown - PitchHexFacing.Level + 1;
                int pitchDelta    = Math.Abs(Facing.Pitch - targetPitch);
                int PitchDeltaTurningOppositeDirection = 0;
                if (pitchDelta > completePitch / 2)
                {
                    PitchDeltaTurningOppositeDirection = Math.Abs((int)targetPitch - pitchDelta);
                }
                ;
                if (PitchDeltaTurningOppositeDirection == 0)
                {
                    if (Facing.Pitch > targetPitch)
                    {
                        pitchDirectionToTurn = TurnDirection.Down;
                    }
                    else
                    {
                        pitchDirectionToTurn = TurnDirection.Up;
                    }
                }
                else
                {
                    if (Facing.Pitch > targetPitch)
                    {
                        pitchDirectionToTurn = TurnDirection.Up;
                    }
                    else
                    {
                        pitchDirectionToTurn = TurnDirection.Down;
                    }
                    ;
                }
            }

            combineDirection = yawDirectionToTurn + pitchDirectionToTurn;
            TurnDirection originaTurnDirection = new TurnDirection(0, 0) + combineDirection;


            TurnsMade = 0;
            while (true)
            {
                if (CanTurn == false)
                {
                    MoveCharacter(TurnMode, accelerationDirection);
                }

                Turn(combineDirection);
                TurnsMade++;
                if (Facing.Yaw == targetYaw)
                {
                    combineDirection = combineDirection - yawDirectionToTurn;
                    if (Facing.Pitch == targetPitch || targetPitch == 0)
                    {
                        break;
                    }
                }
                if (Facing.Pitch == targetPitch)
                {
                    combineDirection = combineDirection - pitchDirectionToTurn;
                    if (Facing.Yaw == targetYaw || targetYaw == 0)
                    {
                        break;
                    }
                }
            }
            return(originaTurnDirection);
        }
示例#9
0
 public void MoveCharacter(int inchesMoving, AccelerationDirection accelerationDirection = AccelerationDirection.Accelerate, int maxVelocityChangeCharacterWantsToMake = 0)
 {
     ActiveMovement?.MoveCharacter(inchesMoving, accelerationDirection);
 }