/// <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<System.Boolean>.</returns> public Task <bool> SaveEntityAsync(IEditableEntity entity, bool forcePostRequest = false) { if (!forcePostRequest && entity.Href != null) { return(UpdateEntityAsync(entity)); } return(AddEntityAsync(entity)); }
public static bool TryRemove <T>(this IEditableEntity entity) { if (entity.Has <T>()) { entity.Remove <T>(); return(true); } return(false); }
/// <summary> /// Adds the entity asynchronous. /// </summary> /// <param name="entity">The entity.</param> /// <returns>System.Threading.Tasks.Task<System.Boolean>.</returns> public async Task <bool> AddEntityAsync(IEditableEntity entity) { var uri = await postAsync(entity).ConfigureAwait(false); if (uri != null) { entity.PostUri = uri; } return(true); }
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); }
/// <summary> /// post as an asynchronous operation. /// </summary> /// <param name="entity">The entity.</param> /// <returns>Task<System.String>.</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)); } }
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); } }
/// <summary> /// delete as an asynchronous operation. /// </summary> /// <param name="entity">The entity.</param> /// <returns>Task<System.Boolean>.</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); }
/// <summary> /// put as an asynchronous operation. /// </summary> /// <param name="entity">The entity.</param> /// <returns>Task<System.Boolean>.</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)); } }
/// <summary> /// Adds the entity. /// </summary> /// <param name="entity">The entity.</param> /// <returns>System.Boolean.</returns> public bool AddEntity(IEditableEntity entity) { return(AddEntityAsync(entity).Result); }
/// <summary> /// Updates the entity. /// </summary> /// <param name="entity">The entity.</param> /// <returns>System.Boolean.</returns> public bool UpdateEntity(IEditableEntity entity) { return(UpdateEntityAsync(entity).Result); }
/// <summary> /// Updates the entity asynchronous. /// </summary> /// <param name="entity">The entity.</param> /// <returns>System.Threading.Tasks.Task<System.Boolean>.</returns> public Task <bool> UpdateEntityAsync(IEditableEntity entity) { return(putAsync(entity)); }
/// <summary> /// Deletes the entity. /// </summary> /// <param name="entity">The entity.</param> /// <returns>System.Boolean.</returns> public bool DeleteEntity(IEditableEntity entity) { return(DeleteEntityAsync(entity).Result); }
/// <summary> /// Deletes the entity asynchronous. /// </summary> /// <param name="entity">The entity.</param> /// <returns>System.Threading.Tasks.Task<System.Boolean>.</returns> public Task <bool> DeleteEntityAsync(IEditableEntity entity) { return(deleteAsync(entity)); }
/// <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); }
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; } }