private void ChangeTransparencyAccordingToHealth(IUserObject aUserObject)
        {
            Color objectColor = aUserObject.GetGameObject().GetComponent <SpriteRenderer> ().material.color;

            objectColor.a = ((float)aUserObject.GetHealth()) / aUserObject.GetInitialHealth();
            aUserObject.GetGameObject().GetComponent <SpriteRenderer> ().material.color = objectColor;
        }
        private void ResizeSprite(IUserObject aUserObject)
        {
            GameObject    gameObject    = aUserObject.GetGameObject();
            RectTransform rectTransform = gameObject.GetComponent <RectTransform> ();
            IShape        shape         = aUserObject.GetShape();
            float         newWidth      = 1f;
            float         newHeight     = 1f;

            if (typeof(IRectangle).IsAssignableFrom(aUserObject.GetShape().GetType()))
            {
                newWidth  = ((IRectangle)shape).GetWidth();
                newHeight = ((IRectangle)shape).GetHeight();
            }
            else if (typeof(ICircle).IsAssignableFrom(aUserObject.GetShape().GetType()))
            {
                newWidth  = 2 * ((ICircle)shape).GetRadius();
                newHeight = newWidth;
            }
            SpriteRenderer spriteRenderer = gameObject.GetComponent <SpriteRenderer> ();
            Vector3        localScale     = rectTransform.localScale;

            localScale.x             = newWidth / spriteRenderer.sprite.bounds.size.x;
            localScale.y             = newHeight / spriteRenderer.sprite.bounds.size.y;
            rectTransform.localScale = localScale;
        }
        private void Visit(IPoint <IUserObject> aPoint)
        {
            IUserObject currentUserObject  = aPoint.GetUserObject();
            IShape      currentShape       = currentUserObject.GetShape();
            IUserObject insertedUserObject = this.insertedPoint.GetUserObject();
            IShape      insertedShape      = insertedUserObject.GetShape();
            bool        collision          = CheckCollision(currentShape, insertedShape);

            if (collision)
            {
                insertedUserObject.TakeDamage(this.damagePoint);
                currentUserObject.TakeDamage(this.damagePoint);
                ParticleSystem particleSystem = currentUserObject.GetGameObject().GetComponent <ParticleSystem> ();
                particleSystem.Play();
                ChangeTransparencyAccordingToHealth(insertedUserObject);
                ChangeTransparencyAccordingToHealth(currentUserObject);
            }
        }
 public void PushBackDeadObject(IUserObject aUserObject)
 {
     aUserObject.GetGameObject().SetActive(false);
     this.deadObjectsPool.Enqueue(aUserObject);
 }