using UnityEngine;

//////////////////////////////////////////////////////////////////
//【フルーツに力をかけて移動をさせるクラス】
// 風の力をかける、画面端で逆方向に速度を追加、地面に落下した数をカウント
//////////////////////////////////////////////////////////////////
public class FruitController : MonoBehaviour
{
    /////////////////////////////////
    // 【変数の設定】
    /////////////////////////////////

    //【Unity Editorから設定する変数】
    [SerializeField] Rigidbody2D rdBody;  // Rigidbody2Dコンポーネント

    //【このプログラム内で使用するPrivate変数】
    GameController gameController;  // GameControllerクラス


    /////////////////////////////////
    // 【関数の設定】
    /////////////////////////////////

    //【ゲーム開始時・ゲームオブジェクト生成時に１回だけ動く関数】
    //（Unityの標準関数）
    void Start()
    {
        // シーン上のゲームオブジェクトGameControllerのGameControllerクラスを取得 
        gameController =
            GameObject.Find("GameController").GetComponent<GameController>();
    }


    //【物理演算用の間隔で動くUpdate関数】
    //（Unityの標準関数）
    void FixedUpdate()
    {
        // GameControllerクラスのisFinishがtrueの場合、フルーツを削除
        if (gameController.isFinish) Destroy(gameObject);

        // フルーツにGameControllerで指定した風の強さの力をかける(右 or 左 or ０)
        rdBody.AddForce(transform.right * gameController.windPower);

        // フルーツのX座標が画面右端より右の場合
        if (transform.position.x > 4)
            // フルーツに左向きの速度を追加する
            rdBody.linearVelocity = new Vector3(-2, rdBody.linearVelocityY, 0);

        // フルーツのX座標が画面左端より左の場合
        if (transform.position.x < -4)
            // フルーツに右向きの速度を追加する
            rdBody.linearVelocity = new Vector3(2, rdBody.linearVelocityY, 0);

        // フルーツのY座標が地面より下の場合
        if (transform.position.y < -5.5)
        {
            // GameControllerのmissCountをカウントアップする
            gameController.missCount++;
            // ConsoleビューにmissCountを表示する
            Debug.Log(">>Miss:" + gameController.missCount);

            // フルーツを削除
            Destroy(gameObject);
        }
    }
}
