Exemple #1
0
        public void Update(UpdateEvent ev)
        {
            const float openTime = .005f,
                        pureTime = .1f,
                        fadeTime = .1f;

            if (timeSinceSnap < openTime && timeSinceSnap + ev.DeltaTime >= openTime)
            {
                Cut();

                if (oldSnap != null)
                {
                    oldSnap.Paste();
                    if (!player.IsFree(new Vector2(0f, 0f)))
                    {
                        int move = 1;
                        for (; ;)
                        {
                            if (player.IsFree(new Vector2(move, 0f)))
                            {
                                player.LocalCoord += new Vector2(move, 0f);
                                break;
                            }
                            if (player.IsFree(new Vector2(-move, 0f)))
                            {
                                player.LocalCoord += new Vector2(-move, 0f);
                                break;
                            }
                            move++;
                        }
                    }
                }
            }

            timeSinceSnap += ev.DeltaTime;
            if (timeSinceSnap < openTime)
            {
                Sprite.Color.A = (int)(255f * Mathf.Sin(timeSinceSnap * 4f * Mathf.HalfPi));
            }
            else if (timeSinceSnap < openTime + pureTime)
            {
                Sprite.Color.A = 255;
            }
            else if (timeSinceSnap < openTime + pureTime + fadeTime)
            {
                Sprite.Color.A = 255 - (int)(255f * Mathf.Sin((timeSinceSnap - openTime - pureTime) * (1f / fadeTime) * Mathf.HalfPi));
            }
            else if (Sprite != null)
            {
                Sprite.Remove();
            }
        }