// provides a closure around a split condition
        private static Condition CloseCondition(SplitCondition split)
        {
            return entity => {
                if (entity == null)
                {
                    return split(
                        null, null, null, null, null, null, null, null, null, null, 0, 0, 0, 0, 0, 0,
                        entity != null ? entity.Container.IsGravityFlipped : false,
                        0,
                        Game.CurrentGame.Player
                    );
                }

                PositionComponent pos = entity.GetComponent<PositionComponent>();

                float pdx = 0;
                float pdy = 0;
                float pdxAbs = 0;
                float pdyAbs = 0;
                GameEntity player = entity.Entities.GetEntityById("Player");
                if (player != null)
                {
                    var playerPos = player.GetComponent<PositionComponent>();
                    if (playerPos != null)
                    {
                        pdx = pos.X - playerPos.X;
                        pdy = pos.Y - playerPos.Y;
                        pdxAbs = Math.Abs(playerPos.X - pos.X);
                        pdyAbs = Math.Abs(playerPos.Y - pos.Y);
                    }
                }

                return split(
                    pos,
                    entity.GetComponent<MovementComponent>(),
                    entity.GetComponent<SpriteComponent>(),
                    entity.GetComponent<InputComponent>(),
                    entity.GetComponent<CollisionComponent>(),
                    entity.GetComponent<LadderComponent>(),
                    entity.GetComponent<TimerComponent>(),
                    entity.GetComponent<VarsComponent>(),
                    entity.GetComponent<HealthComponent>(),
                    entity.GetComponent<WeaponComponent>(),
                    (entity.GetComponent<StateComponent>()).StateFrames,
                    (entity.GetComponent<StateComponent>()).Lifetime,
                    pdx,
                    pdy,
                    pdxAbs,
                    pdyAbs,
                    entity.Container.IsGravityFlipped,
                    (entity.GetComponent<StateComponent>()).FrameRand,
                    Game.CurrentGame.Player
                );
            };
        }
Beispiel #2
0
        public static Condition ParseCondition(string conditionString)
        {
            LambdaExpression lambda = System.Linq.Dynamic.DynamicExpression.ParseLambda(
                new[] { posParam, moveParam, sprParam, inputParam, collParam, ladderParam, timerParam, healthParam, weaponParam, stParam, lifeParam, playerXParam, playerYParam, gravParam, randParam, playerParam },
                typeof(SplitCondition),
                typeof(bool),
                conditionString,
                dirDict);
            SplitCondition trigger   = (SplitCondition)lambda.Compile();
            Condition      condition = CloseCondition(trigger);

            return(condition);
        }
        public static string[] Split(this string @text, SplitCondition condition)
        {
            switch (condition)
            {
            case SplitCondition.R:
                return(@text.Split('\r'));

            case SplitCondition.N:
                return(@text.Split('\n'));

            case SplitCondition.Rn:
                return(@text.Split(new[] { "\r\n" }, StringSplitOptions.None));

            case SplitCondition.All:
                return(@text.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None));
            }
            return(@text.Split());
        }
Beispiel #4
0
        // provides a closure around a split condition
        private static Condition CloseCondition(SplitCondition split)
        {
            return entity =>
            {
                if (entity == null)
                {
                    return split(
                        null, null, null, null, null, null, null, null, null, 0, 0, 0, 0,
                        entity != null ? entity.Container.IsGravityFlipped : false,
                        0,
                        Game.CurrentGame.Player
                    );
                }

                PositionComponent pos = entity.GetComponent<PositionComponent>();

                float pdx = 0;
                float pdy = 0;
                GameEntity player = entity.Entities.GetEntityById("Player");
                if (player != null)
                {
                    var playerPos = player.GetComponent<PositionComponent>();
                    if (playerPos != null)
                    {
                        pdx = Math.Abs(playerPos.Position.X - pos.Position.X);
                        pdy = Math.Abs(playerPos.Position.Y - pos.Position.Y);
                    }
                }

                return split(
                    pos,
                    entity.GetComponent<MovementComponent>(),
                    entity.GetComponent<SpriteComponent>(),
                    entity.GetComponent<InputComponent>(),
                    entity.GetComponent<CollisionComponent>(),
                    entity.GetComponent<LadderComponent>(),
                    entity.GetComponent<TimerComponent>(),
                    entity.GetComponent<HealthComponent>(),
                    entity.GetComponent<WeaponComponent>(),
                    (entity.GetComponent<StateComponent>()).StateFrames,
                    (entity.GetComponent<StateComponent>()).Lifetime,
                    pdx,
                    pdy,
                    entity.Container.IsGravityFlipped,
                    (entity.GetComponent<StateComponent>()).FrameRand,
                    Game.CurrentGame.Player
                );
            };
        }