Ejemplo n.º 1
0
        /// <summary>
        /// Handel on Hit.
        /// Calls ExecuteHit and informs physics, rules, visuals and
        /// generates new groups.
        /// </summary>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        public void OnGemHit(int x, int y)
        {
            if(!pause && !newLinePause){
                newLinePause = true;
                somthingChanged = ExecuteHit(new IntVector2(x,y));
                int physicsSteps = physics.PhysicsSteps();
                //Force update at the start + Physics Steps * 2 (movement + update) + CallbackStep
                IVisualStep[] steps = new IVisualStep[2 + physicsSteps * 2];
                int counter = 0;
                steps[counter++] = new LevelRefreshStep(level.GetItems(), source.ShowNewLine());
                for(int i = 0; i < physicsSteps; i++){
                    GemMove[] currentMoves = physics.DoPhysics(i,updateHorizontalArray);
                    steps[counter++] = new MoveStep(currentMoves, 1);
                    steps[counter++] = new LevelRefreshStep(level.GetItems(), source.ShowNewLine());
                }
                steps[counter] = new CallbackStep(OnGemHitEnd);

                visuals.StepsQueue(steps);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Add Steps to queue
 /// </summary>
 /// <param name="queue">steps to add to this queue</param>
 public void StepsQueue(IVisualStep[] queue)
 {
     steps.AddRange(queue);
 }