private void DrawAiming(int entity, Transform2 transform) { inputMapper.TryGet(entity).IfSome(playerInput => { spriteBatch.DrawLine(transform.Position, transform.Position + playerInput.DirectionalInputs.AimDirection * 100, Color.White); }); }
private void DrawSprite(int entityId, Transform2 transform) { if (spriteMapper.TryGet(entityId, out Sprite sprite)) { spriteBatch.Draw(sprite, transform); } }
private void RenderSprite(int entity, Sprite sprite) { var transform = transformMapper.Get(entity); // playerMapper.TryGet(entity).IfSome(player => { // sprite.Color = player.PlayerNumber switch { // 1 => new Color(128, 128, 255), // 2 => new Color(255, 128, 128), // 3 => Color.Yellow, // 4 => Color.Green, // _ => Color.White // }; // healthMapper.TryGet(entity).IfSome(health => { transform.Scale = Vector2.One * health.CurrentHealth / health.MaxHealth; }); // }); spriteBatch.Draw(sprite, transform); // spriteBatch.DrawRectangle(sprite.GetBoundingRectangle(transform), Color.Beige); movableMapper.TryGet(entity).IfSome(movable => { if (movable.LevelBoundsBehavior == LevelBoundsBehavior.Wrap) { DrawLevelWrapping(sprite, transform); } }); }
private void DrawEntity(int entityId) { if (transformMapper.TryGet(entityId, out Transform2 transform)) { DrawSprite(entityId, transform); DrawEntityText(entityId, transform); } }
public override void Draw(GameTime gameTime) { spriteBatch.GraphicsDevice.Clear(Color.Black); var elapsedSeconds = gameTime.GetElapsedSeconds(); spriteBatch.Begin(transformMatrix: camera.GetViewMatrix()); foreach (var entity in ActiveEntities) { DrawSprite(entity, elapsedSeconds); transformMapper.TryGet(entity).IfSome(transform => DrawAiming(entity, transform)); DrawEntityDebugInfo(entity); } DrawGlobalDebugInfo(gameTime); spriteBatch.End(); }
private void DrawEntityDebugInfo(int entity) { if (!sharedContext.ShowDebugInfo) { return; } solidColorMapper.TryGet(entity).IfSome(solidColor => { spriteBatch.DrawRectangle(solidColor.Bounds, solidColor.Color); }); transformMapper.TryGet(entity).IfSome(transform => { DrawCollisionBoundsAndInfo(entity, transform); DrawGravityPull(entity, transform); }); }
private void DrawSprite(int entity, float elapsedSeconds) { spriteMapper.TryGet(entity).IfSome(spriteInfo => { var sprite = spriteByEntity.GetOrAdd(entity, (id, si) => CreateSprite(si), spriteInfo); if (sprite is AnimatedSprite animatedSprite) { animatedSprite.Update(elapsedSeconds); animatedSprite.Play("running"); } RenderSprite(entity, sprite); }); }
public override void Process(GameTime gameTime, int entityId) { inputMapper.TryGet(entityId).IfSome(input => { emitterMapper.TryGet(entityId).IfSome(emitter => { var isShooting = input.PlayerKeys[PlayerKey.Fire].Pressed; emitter.IsEmitting = isShooting; emitter.EmitInterval = TimeSpan.FromSeconds(variables.Global[GlobalVariable.FiringInterval]); }); playerMapper.TryGet(entityId).IfSome(state => { if (input.PlayerKeys[PlayerKey.ToggleBrake].JustPressed) { state.IsBraking = !state.IsBraking; } state.IsBoosting = input.PlayerKeys[PlayerKey.Jump].Pressed; }); }); }
private void DrawEntityText(int entityId, Transform2 transform) { if (textMapper.TryGet(entityId, out Text text1)) { DrawText(transform, text1.RelativeCenterPosition, text1.Size.Width, text1.Size.Height, text1.RowSpacing, text1.Alignment, text1); } if (mgTextMapper.TryGet(entityId, out MGStylizedText text2)) { DrawText(transform, text2.RelativeCenterPosition, text2.Size.Width, text2.Size.Height, text2.RowSpacing, text2.Alignment, text2); } }
protected override void OnEntityAdded(int entityId) { levelMapper.TryGet(entityId).IfSome(level => Level = level); playerMapper.TryGet(entityId).IfSome(player => Player = player); }
protected override void OnEntityAdded(int entityId) { playerMapper.TryGet(entityId).IfSome(player => player.LocalPlayerIndex.IfSome(playerIndex => playerEntitiesByIndex[playerIndex] = entityId )); }
protected override void OnEntityAdded(int entityId) { levelMapper.TryGet(entityId).IfSome(level => { Level = level; }); }