/// <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; }
public void ResetIdle(int mTimer, GravityDirections mDirection) { mCurrentTime = mTimer; mPreviousChange = mTimer; mPreviousDirection = mDirection; }
/// <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; }