Exemple #1
0
        /// <summary>
        /// Construcs a player object, that can live in a physical realm
        /// </summary>
        /// <param name="content">Content manager for the game</param>
        /// <param name="name">Name of the image resource for the player</param>
        /// <param name="initialPosition">Initial posisition in the level</param>
        /// <param name="controlScheme">Controller scheme for the player(Controller or keyboard)</param>
        public Player(ContentManager content, ref PhysicsEnvironment environment, IControlScheme controlScheme, float friction, EntityInfo entity)
            : base(content, ref environment,friction, entity)
        {
            _mControls = controlScheme;
            SpawnPoint = MPosition;
            _mRotation = 0.0f;
            _mGoalRotation = 0.0f;

            _mFaceGoalRotation = 0.0f;
            _mFaceRotation = 0.0f;

            Id = entity.MId;

            PlayerFaces.Load(content);

            MCurrentTexture = PlayerFaces.FromString("Smile");
            MSize = new Vector2(MCurrentTexture.Width, MCurrentTexture.Height);
            _mPreviousDirection = GravityDirections.Down;
        }
        /// <summary>
        /// Reorient gravity in the given direction
        /// </summary>
        /// <param name="direction">Direction to enforce gravity on</param>
        public void ChangeGravityForceDirection(GravityDirections direction)
        {
            mResistiveForce = new Vector2(1, 1);

            if (direction == GravityDirections.Up ||
                direction == GravityDirections.Down)
                mResistiveForce.X = mEnvironment.ErosionFactor;
            else
                mResistiveForce.Y = mEnvironment.ErosionFactor;

            mGravityForce = mEnvironment.GravityForce;
        }
Exemple #3
0
 public void ResetIdle(int mTimer, GravityDirections mDirection)
 {
     mCurrentTime = mTimer;
     mPreviousChange = mTimer;
     mPreviousDirection = mDirection;
 }
Exemple #4
0
        /// <summary>
        /// Checks to see if the player is idle if it is, change his face
        /// </summary>
        public Texture2D CheckForIdle()
        {
            if (mPreviousDirection != mEnvironment.GravityDirection)
            {
                mPreviousDirection = mEnvironment.GravityDirection;
                mPreviousChange = mCurrentTime;
            }
            else
            {
                if ((mCurrentTime - mPreviousChange) > 7)
                {
                    return PlayerFaces.FromString("Sad");
                }

                if ((mCurrentTime - mPreviousChange) > 3)
                {
                    return PlayerFaces.FromString("Bored");
                }
            }

            return PlayerFaces.FromString("Smile");
        }
 public static Vector2 Recalculate2DPosition(I2DGravitableComponent component, GravityDirections direction, double acceleration)
 {
     //to do: implement 2d logic here...
     return Vector2.Zero;
 }
 /// <summary>
 /// Sets the magnitude of force in the given direction
 /// </summary>
 /// <param name="direction">The direction of gravity to change</param>
 /// <param name="magnitude">Magnitude for the given direction</param>
 public void SetDirectionalMagnifier(GravityDirections direction, float magnitude)
 {
     if (direction == GravityDirections.Up) mGravityUpMagnifier = magnitude;
     if (direction == GravityDirections.Down) mGravityDownMagnifier = magnitude;
     if (direction == GravityDirections.Left) mGravityLeftMagnifier = magnitude;
     if (direction == GravityDirections.Right) mGravityRightMagnifier = magnitude;
 }
 /// <summary>
 /// Increments the force magnitude of the given direction by .01 
 /// </summary>
 /// <param name="direction">Force Direction to increment</param>
 public void IncrementDirectionalMagnifier(GravityDirections direction)
 {
     if (direction == GravityDirections.Up) mGravityUpMagnifier += .01f;
     if (direction == GravityDirections.Down) mGravityDownMagnifier += .01f;
     if (direction == GravityDirections.Left) mGravityLeftMagnifier += .01f;
     if (direction == GravityDirections.Right) mGravityRightMagnifier += .01f;
 }
 /// <summary>
 /// Gets the gravity magnifier for the given direction
 /// </summary>
 /// <param name="direction">Magnifier that we are getting</param>
 /// <returns>The magnitude of the given direction</returns>
 public float GetGravityMagnifier(GravityDirections direction)
 {
     if (direction == GravityDirections.Up) return mGravityUpMagnifier;
     else if (direction == GravityDirections.Down) return mGravityDownMagnifier;
     else if (direction == GravityDirections.Left) return mGravityLeftMagnifier;
     else return mGravityRightMagnifier;
 }