Exemplo n.º 1
0
        public bool Move(float deltaTime, Level level)
        {
            if (!pastPositions.Any())
                return true;

            if (currentGtc >= pastPositions.Keys.Max())
                return false;

            if ((level.CanMove(pastPositions[currentGtc], pastPositions[currentGtc + 1])))
            {
                DecisionPoint decisionPoint = null;
                if (decisionPoints.ContainsKey(currentGtc))
                    decisionPoint = decisionPoints[currentGtc];

                if (decisionPoint == null || decisionPoint.Condition())
                {
                    float delta = pastPositions[currentGtc + 1].X - pastPositions[currentGtc].X;
                    if (delta < 0)
                        Rotation = 1;
                    if (delta > 0)
                        Rotation = -1;

                    Model.AnimationPlayer.Update(TimeSpan.FromSeconds(Math.Abs(9f * delta / 25f)), true, Matrix.Identity);

                    currentFloatGtc += deltaTime * 25f;
                    currentGtc = (int)currentFloatGtc;
                }
            }

            float a = 1f - (currentFloatGtc - currentGtc);
            Position = pastPositions[currentGtc] * a + pastPositions[Math.Min(currentGtc + 1, pastPositions.Keys.Max())] * (1 - a);

            return true;
        }
Exemplo n.º 2
0
        public void Move(float delta, Level level)
        {
            if (level.CanMove(Position, delta))
            {
                Model.AnimationPlayer.Update(TimeSpan.FromSeconds(Math.Abs(delta)), true, Matrix.Identity);
                Position = Position + new Vector2(delta, 0);
            }

            level.FirePositionalTriggers(Position, delta);
        }