Esempio n. 1
0
 private void DrawAiming(int entity, Transform2 transform)
 {
     inputMapper.TryGet(entity).IfSome(playerInput => {
         spriteBatch.DrawLine(transform.Position,
                              transform.Position + playerInput.DirectionalInputs.AimDirection * 100, Color.White);
     });
 }
Esempio n. 2
0
 private void DrawSprite(int entityId, Transform2 transform)
 {
     if (spriteMapper.TryGet(entityId, out Sprite sprite))
     {
         spriteBatch.Draw(sprite, transform);
     }
 }
Esempio n. 3
0
    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);
            }
        });
    }
Esempio n. 4
0
 private void DrawEntity(int entityId)
 {
     if (transformMapper.TryGet(entityId, out Transform2 transform))
     {
         DrawSprite(entityId, transform);
         DrawEntityText(entityId, transform);
     }
 }
Esempio n. 5
0
    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();
    }
Esempio n. 6
0
    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);
        });
    }
Esempio n. 7
0
    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);
        });
    }
Esempio n. 8
0
 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;
         });
     });
 }
Esempio n. 9
0
        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);
            }
        }
Esempio n. 10
0
 protected override void OnEntityAdded(int entityId)
 {
     levelMapper.TryGet(entityId).IfSome(level => Level    = level);
     playerMapper.TryGet(entityId).IfSome(player => Player = player);
 }
Esempio n. 11
0
 protected override void OnEntityAdded(int entityId)
 {
     playerMapper.TryGet(entityId).IfSome(player => player.LocalPlayerIndex.IfSome(playerIndex =>
                                                                                   playerEntitiesByIndex[playerIndex] = entityId
                                                                                   ));
 }
Esempio n. 12
0
 protected override void OnEntityAdded(int entityId)
 {
     levelMapper.TryGet(entityId).IfSome(level => { Level = level; });
 }