public void Destroy()
 {
     CoroutineRunner.StopAllForOwner(this);
     if (cannon != null)
     {
         FishBucketCannon fishBucketCannon = cannon;
         fishBucketCannon.ShotCompleteAction = (Action <long, GameObject, int>)Delegate.Remove(fishBucketCannon.ShotCompleteAction, new Action <long, GameObject, int>(onCannonShotComplete));
     }
 }
    public void SetCannon(GameObject cannon)
    {
        this.cannon = cannon.GetComponentInChildren <FishBucketCannon>();
        FishBucketCannon fishBucketCannon = this.cannon;

        fishBucketCannon.ShotCompleteAction = (Action <long, GameObject, int>)Delegate.Combine(fishBucketCannon.ShotCompleteAction, new Action <long, GameObject, int>(onCannonShotComplete));
        FishBucketCannon fishBucketCannon2 = this.cannon;

        fishBucketCannon2.RotationCompleteAction = (Action)Delegate.Combine(fishBucketCannon2.RotationCompleteAction, new Action(onCannonRotationComplete));
    }