예제 #1
0
 public void SendPattern(Heart.HeartPattern heartPattern, int duration, GameTime gameTime)
 {
     this.heartPattern  = heartPattern;
     patternEnabled     = true;
     patternDuration    = TimeSpan.FromMilliseconds(MathHelper.Clamp(duration, 100, 700));
     patternStartTime   = gameTime.TotalGameTime;
     patternElapsedTime = TimeSpan.FromMilliseconds(0);
 }
예제 #2
0
        private void verifyPattern(GameTime gameTime)
        {
            if (patternEnabled)
            {
                switch(heartPattern)
                {
                    case Heart.HeartPattern.Regular:
                        #region RegularPattern
                        Boolean ultimo = false;

                        if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.1f)
                        {
                            this.position.Y += moveTowards(idealPosition, idealPosition + 25, (int)(patternDuration.TotalMilliseconds * 0.1f), gameTime);
                            completeLine(this.position, ultimo);
                        }
                        else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.40f)
                        {
                            this.position.Y += moveTowards(idealPosition + 25, idealPosition - 110, (int)(patternDuration.TotalMilliseconds * 0.3f), gameTime);
                            completeLine(this.position, ultimo);
                        }
                        else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.70f)
                        {
                            this.position.Y += moveTowards(idealPosition - 110, idealPosition + 80, (int)(patternDuration.TotalMilliseconds * 0.3f), gameTime);
                            completeLine(this.position, ultimo);
                        }
                        else
                        {
                            this.position.Y += moveTowards(idealPosition + 80, idealPosition, (int)(patternDuration.TotalMilliseconds * 0.3f), gameTime);

                            ultimo = true;
                            completeLine(this.position, ultimo);
                        }

                        if ((this.position.Y <= idealPosition) && ultimo)
                        {

                            this.position.Y = idealPosition;
                            completeLine(position, false);
                            patternEnabled = false;
                            heartPattern = Heart.HeartPattern.None;

                            createParticle(this.position);
                            return;
                        }
                        break;
                        #endregion

                    case Heart.HeartPattern.Only_Systole:
                        #region OnlySystole
                        if (!onlySystoleRandomsGenerated)
                        {
                            onlySystoleRandom1 = random.Next(-20, 20);
                            onlySystoleRandom2 = random.Next(-20, 20);
                            onlySystoleRandom3 = random.Next(-20, 20);
                            onlySystoleRandomsGenerated = true;
                        }

                        if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.15f)
                        {
                            this.position.Y += moveTowards(idealPosition, idealPosition - 60 + onlySystoleRandom1, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                            completeLine(this.position, false);
                        }
                        else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.3f)
                        {
                            this.position.Y += moveTowards(idealPosition - 60 + onlySystoleRandom1, idealPosition + onlySystoleRandom2, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                            completeLine(this.position, false);
                        }
                        else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.45f)
                        {
                            completeLine(position, false);
                            this.position.Y = onlySystoleRandom2 + idealPosition;
                            drawParticles = true;
                        }
                        else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.6f)
                        {
                            drawParticles = false;
                            this.position.Y += moveTowards(onlySystoleRandom2 + idealPosition, idealPosition - 60 + onlySystoleRandom3, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                            completeLine(this.position, false);
                        }
                        else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.75f)
                        {
                            this.position.Y += moveTowards(idealPosition - 60 + onlySystoleRandom3, idealPosition, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                            completeLine(this.position, false);
                        }
                        else
                        {
                            drawParticles = true;
                        }

                        if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds > 1)
                        {
                            this.position.Y = idealPosition;
                            //completeLine(position, false);
                            patternEnabled = false;
                            heartPattern = Heart.HeartPattern.None;
                            drawParticles = false;

                        }

                        break;
                        #endregion

                    case Heart.HeartPattern.Dual_Systole:
                        #region DualSystole
                        patternElapsedTime += gameTime.ElapsedGameTime;

                        //drawParticles = true;
                        this.position.Y = idealPosition + -(float)(Math.Sin(MathHelper.ToRadians((float)patternElapsedTime.TotalMilliseconds / MathHelper.Pi)) * 70);
                        completeLine(this.position, false);

                        if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds > 0.5f)
                        {
                            if (this.position.Y > idealPosition)
                            {
                                this.position.Y = idealPosition;
                                //completeLine(position, false);
                                patternEnabled = false;
                                heartPattern = Heart.HeartPattern.None;
                                drawParticles = false;
                            }
                        }
                        break;
                        #endregion

                    case Heart.HeartPattern.Only_Diastole:
                        patternElapsedTime += gameTime.ElapsedGameTime;
                        this.position.Y = idealPosition + (float)(Math.Sin(MathHelper.ToRadians((float)patternElapsedTime.TotalMilliseconds / MathHelper.Pi)) * 70);
                        completeLine(this.position, false);

                        if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds > 1f)
                        {
                            if (this.position.Y < idealPosition)
                            {
                                this.position.Y = idealPosition;
                                //completeLine(position, false);
                                patternEnabled = false;
                                heartPattern = Heart.HeartPattern.None;
                                drawParticles = false;
                            }
                        }

                        break;
                }

            }
            else
            {
                this.position.Y = idealPosition;
            }

            lastPosition = this.position;
        }
예제 #3
0
 public void SendPattern(Heart.HeartPattern heartPattern, int duration, GameTime gameTime)
 {
     this.heartPattern = heartPattern;
     patternEnabled = true;
     patternDuration = TimeSpan.FromMilliseconds(MathHelper.Clamp(duration, 100, 700));
     patternStartTime = gameTime.TotalGameTime;
     patternElapsedTime = TimeSpan.FromMilliseconds(0);
 }
예제 #4
0
        private void verifyPattern(GameTime gameTime)
        {
            if (patternEnabled)
            {
                switch (heartPattern)
                {
                case Heart.HeartPattern.Regular:
                    #region RegularPattern
                    Boolean ultimo = false;


                    if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.1f)
                    {
                        this.position.Y += moveTowards(idealPosition, idealPosition + 25, (int)(patternDuration.TotalMilliseconds * 0.1f), gameTime);
                        completeLine(this.position, ultimo);
                    }
                    else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.40f)
                    {
                        this.position.Y += moveTowards(idealPosition + 25, idealPosition - 110, (int)(patternDuration.TotalMilliseconds * 0.3f), gameTime);
                        completeLine(this.position, ultimo);
                    }
                    else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.70f)
                    {
                        this.position.Y += moveTowards(idealPosition - 110, idealPosition + 80, (int)(patternDuration.TotalMilliseconds * 0.3f), gameTime);
                        completeLine(this.position, ultimo);
                    }
                    else
                    {
                        this.position.Y += moveTowards(idealPosition + 80, idealPosition, (int)(patternDuration.TotalMilliseconds * 0.3f), gameTime);

                        ultimo = true;
                        completeLine(this.position, ultimo);
                    }


                    if ((this.position.Y <= idealPosition) && ultimo)
                    {
                        this.position.Y = idealPosition;
                        completeLine(position, false);
                        patternEnabled = false;
                        heartPattern   = Heart.HeartPattern.None;

                        createParticle(this.position);
                        return;
                    }
                    break;
                    #endregion

                case Heart.HeartPattern.Only_Systole:
                    #region OnlySystole
                    if (!onlySystoleRandomsGenerated)
                    {
                        onlySystoleRandom1          = random.Next(-20, 20);
                        onlySystoleRandom2          = random.Next(-20, 20);
                        onlySystoleRandom3          = random.Next(-20, 20);
                        onlySystoleRandomsGenerated = true;
                    }



                    if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.15f)
                    {
                        this.position.Y += moveTowards(idealPosition, idealPosition - 60 + onlySystoleRandom1, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                        completeLine(this.position, false);
                    }
                    else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.3f)
                    {
                        this.position.Y += moveTowards(idealPosition - 60 + onlySystoleRandom1, idealPosition + onlySystoleRandom2, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                        completeLine(this.position, false);
                    }
                    else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.45f)
                    {
                        completeLine(position, false);
                        this.position.Y = onlySystoleRandom2 + idealPosition;
                        drawParticles   = true;
                    }
                    else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.6f)
                    {
                        drawParticles    = false;
                        this.position.Y += moveTowards(onlySystoleRandom2 + idealPosition, idealPosition - 60 + onlySystoleRandom3, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                        completeLine(this.position, false);
                    }
                    else if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds <= 0.75f)
                    {
                        this.position.Y += moveTowards(idealPosition - 60 + onlySystoleRandom3, idealPosition, (int)(patternDuration.TotalMilliseconds * 0.15f), gameTime);
                        completeLine(this.position, false);
                    }
                    else
                    {
                        drawParticles = true;
                    }



                    if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds > 1)
                    {
                        this.position.Y = idealPosition;
                        //completeLine(position, false);
                        patternEnabled = false;
                        heartPattern   = Heart.HeartPattern.None;
                        drawParticles  = false;
                    }

                    break;
                    #endregion

                case Heart.HeartPattern.Dual_Systole:
                    #region DualSystole
                    patternElapsedTime += gameTime.ElapsedGameTime;

                    //drawParticles = true;
                    this.position.Y = idealPosition + -(float)(Math.Sin(MathHelper.ToRadians((float)patternElapsedTime.TotalMilliseconds / MathHelper.Pi)) * 70);
                    completeLine(this.position, false);

                    if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds > 0.5f)
                    {
                        if (this.position.Y > idealPosition)
                        {
                            this.position.Y = idealPosition;
                            //completeLine(position, false);
                            patternEnabled = false;
                            heartPattern   = Heart.HeartPattern.None;
                            drawParticles  = false;
                        }
                    }
                    break;
                    #endregion

                case Heart.HeartPattern.Only_Diastole:
                    patternElapsedTime += gameTime.ElapsedGameTime;
                    this.position.Y     = idealPosition + (float)(Math.Sin(MathHelper.ToRadians((float)patternElapsedTime.TotalMilliseconds / MathHelper.Pi)) * 70);
                    completeLine(this.position, false);

                    if ((gameTime.TotalGameTime.TotalMilliseconds - patternStartTime.TotalMilliseconds) / patternDuration.TotalMilliseconds > 1f)
                    {
                        if (this.position.Y < idealPosition)
                        {
                            this.position.Y = idealPosition;
                            //completeLine(position, false);
                            patternEnabled = false;
                            heartPattern   = Heart.HeartPattern.None;
                            drawParticles  = false;
                        }
                    }

                    break;
                }
            }
            else
            {
                this.position.Y = idealPosition;
            }

            lastPosition = this.position;
        }