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