Esempio n. 1
0
 /// <summary>
 /// save entity as an asynchronous operation.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="forcePostRequest">if set to <c>true</c> [force post request].</param>
 /// <returns>Task&lt;System.Boolean&gt;.</returns>
 public Task <bool> SaveEntityAsync(IEditableEntity entity, bool forcePostRequest = false)
 {
     if (!forcePostRequest && entity.Href != null)
     {
         return(UpdateEntityAsync(entity));
     }
     return(AddEntityAsync(entity));
 }
Esempio n. 2
0
 public static bool TryRemove <T>(this IEditableEntity entity)
 {
     if (entity.Has <T>())
     {
         entity.Remove <T>();
         return(true);
     }
     return(false);
 }
Esempio n. 3
0
        /// <summary>
        /// Adds the entity asynchronous.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns>System.Threading.Tasks.Task&lt;System.Boolean&gt;.</returns>
        public async Task <bool> AddEntityAsync(IEditableEntity entity)
        {
            var uri = await postAsync(entity).ConfigureAwait(false);

            if (uri != null)
            {
                entity.PostUri = uri;
            }
            return(true);
        }
Esempio n. 4
0
        private bool SetAboveGroundIfNeeded(IEditableEntity entity)
        {
            var position = entity.Get <Position>();
            var height   = TextureManager.GetTexture(entity.Get <SpriteSheet>()).Height;

            if ((position.Y - height / 2) <= GroundLevel)
            {
                entity.Set(position.SetY(GroundLevel + height / 2));
                entity.Set(entity.Get <Velocity>().UpdateYVelocity(vy => vy < 0 ? 0 : vy));
                return(true);
            }
            return(false);
        }
Esempio n. 5
0
        /// <summary>
        /// post as an asynchronous operation.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns>Task&lt;System.String&gt;.</returns>
        private async Task <string> postAsync(IEditableEntity entity)
        {
            var data = RequestHandler.Serializer.Serialize(entity);

            try {
                return
                    (await RequestHandler.PostAsync(new Uri(entity.PostUri), AccessToken, data).ConfigureAwait(false));
            }
            catch (EveCrestException e) {
                await tryRefreshTokenAsync(e).ConfigureAwait(false);

                return
                    (await RequestHandler.PostAsync(new Uri(entity.PostUri), AccessToken, data).ConfigureAwait(false));
            }
        }
Esempio n. 6
0
        public void Update(IEditableEntity entity, long frame)
        {
            var sheet    = entity.Get <SpriteSheet>();
            var animated = entity.Get <Animated>();

            if (frame % animated.AnimationSpeed == 0)
            {
                animated = animated.SetCurrentFrame(animated.CurrentFrame + 1);
                if (animated.CurrentFrame >= sheet.FrameCount)
                {
                    animated = animated.SetCurrentFrame(0);
                }
                entity.Set(animated);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// delete as an asynchronous operation.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns>Task&lt;System.Boolean&gt;.</returns>
        private async Task <bool> deleteAsync(IEditableEntity entity)
        {
            if (string.IsNullOrEmpty(entity.Href))
            {
                return(await Task.FromResult(false));
            }
            bool ret;

            try {
                ret = await RequestHandler.DeleteAsync(new Uri(entity.Href), AccessToken).ConfigureAwait(false);
            }
            catch (EveCrestException e) {
                await tryRefreshTokenAsync(e).ConfigureAwait(false);

                ret = await RequestHandler.DeleteAsync(new Uri(entity.Href), AccessToken).ConfigureAwait(false);
            }
            entity.Href = null;
            return(ret);
        }
Esempio n. 8
0
        /// <summary>
        /// put as an asynchronous operation.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <returns>Task&lt;System.Boolean&gt;.</returns>
        private async Task <bool> putAsync(IEditableEntity entity)
        {
            if (string.IsNullOrEmpty(entity.Href))
            {
                return(await Task.FromResult(false));
            }
            var data = RequestHandler.Serializer.Serialize(entity);

            try {
                return
                    (await RequestHandler.PutAsync(new Uri(entity.Href), AccessToken, data).ConfigureAwait(false));
            }
            catch (EveCrestException e) {
                await tryRefreshTokenAsync(e).ConfigureAwait(false);

                return
                    (await RequestHandler.PutAsync(new Uri(entity.Href), AccessToken, data).ConfigureAwait(false));
            }
        }
Esempio n. 9
0
 /// <summary>
 /// Adds the entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns>System.Boolean.</returns>
 public bool AddEntity(IEditableEntity entity)
 {
     return(AddEntityAsync(entity).Result);
 }
Esempio n. 10
0
 /// <summary>
 /// Updates the entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns>System.Boolean.</returns>
 public bool UpdateEntity(IEditableEntity entity)
 {
     return(UpdateEntityAsync(entity).Result);
 }
Esempio n. 11
0
 /// <summary>
 /// Updates the entity asynchronous.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns>System.Threading.Tasks.Task&lt;System.Boolean&gt;.</returns>
 public Task <bool> UpdateEntityAsync(IEditableEntity entity)
 {
     return(putAsync(entity));
 }
Esempio n. 12
0
 /// <summary>
 /// Deletes the entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns>System.Boolean.</returns>
 public bool DeleteEntity(IEditableEntity entity)
 {
     return(DeleteEntityAsync(entity).Result);
 }
Esempio n. 13
0
 /// <summary>
 /// Deletes the entity asynchronous.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns>System.Threading.Tasks.Task&lt;System.Boolean&gt;.</returns>
 public Task <bool> DeleteEntityAsync(IEditableEntity entity)
 {
     return(deleteAsync(entity));
 }
Esempio n. 14
0
 /// <summary>
 /// Saves the entity.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <param name="forcePostRequest">if set to <c>true</c> [force post request].</param>
 /// <returns>System.Boolean.</returns>
 public bool SaveEntity(IEditableEntity entity, bool forcePostRequest = false)
 {
     return(SaveEntityAsync(entity, forcePostRequest).Result);
 }
Esempio n. 15
0
        public void Update(IEditableEntity entity, long frame)
        {
            var player     = entity.Get <Player>();
            var inputState = InputManager.GetInputState(player.PlayerID, frame);
            var position   = entity.Get <Position>();
            var velocity   = entity.Get <Velocity>();

            position = entity.Set(position + velocity);

            bool onGround = SetAboveGroundIfNeeded(entity);

            velocity = entity.Set(velocity.UpdateXVelocity(vx => vx * (onGround ? GroundFriction : AirFriction)));
            if (velocity.X != 0)
            {
                entity.Set(entity.Get <Animated>().SetFlipped(velocity.X < 0));
            }

            switch (player.CurrentState)
            {
            case PlayerState.Idle:
                entity.Set(Idle);
                if (inputState.Up.IsDown() || !onGround)
                {
                    entity.Set(player.SetState(PlayerState.Falling));
                    if (onGround)
                    {
                        entity.Set(velocity.SetYVelocity(JumpSpeed));
                    }
                }
                else
                {
                    if (inputState.Left.IsDown() && inputState.Right.IsUp())
                    {
                        entity.Set(player.SetState(PlayerState.WalkingLeft));
                    }

                    if (inputState.Right.IsDown() && inputState.Left.IsUp())
                    {
                        entity.Set(player.SetState(PlayerState.WalkingRight));
                    }
                }
                break;

            case PlayerState.Falling:
                entity.Set(Falling);

                if (onGround)
                {
                    entity.Set(player.SetState(PlayerState.Idle));
                    entity.Set(velocity.SetYVelocity(0));
                }
                else
                {
                    entity.Set(velocity.UpdateYVelocity(vy => vy - GravityAcceleration));
                }
                break;

            case PlayerState.WalkingLeft:
                entity.Set(Run);
                entity.Set(entity.Get <Animated>().SetFlipped(true));
                entity.Set(velocity.UpdateXVelocity(vx => vx - RunSpeed));

                if (inputState.Left.IsUp() || inputState.Right.IsDown() || inputState.Up.IsDown())
                {
                    entity.Set(player.SetState(PlayerState.Idle));
                }
                break;

            case PlayerState.WalkingRight:
                entity.Set(Run);
                entity.Set(entity.Get <Animated>().SetFlipped(false));
                entity.Set(velocity.UpdateXVelocity(vx => vx + RunSpeed));

                if (inputState.Right.IsUp() || inputState.Left.IsDown() || inputState.Up.IsDown())
                {
                    entity.Set(player.SetState(PlayerState.Idle));
                }
                break;
            }
        }