// 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 ); }; }
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()); }
// 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 ); }; }