public UiProfileBallItem Setup(int ballId) { id = ballId; ballImage.sprite = GlobalFactory.Balls.GetSprite(ballId); UpdateState(); button.onClick.AddListener(() => { switch (currState) { case State.Owned: { Profile.Avatar.BallId = ballId; transform.root.Broadcast(Messages.Type.AvatarChanged, Profile.Avatar.Current); } break; case State.Enabled: { var price = GlobalFactory.Balls.GetPrice(ballId); Game.SpendGems(price, () => { Profile.AddBall(ballId); Profile.Avatar.BallId = ballId; Game.Instance.OpenPopup <Popup_Rewards>().Setup(ballId, 0, 0, 0, 0, true, false, () => { transform.parent.Broadcast(Messages.Type.BallPurchased); transform.root.Broadcast(Messages.Type.AvatarChanged, Profile.Avatar.Current); }); GlobalAnalytics.SinkGem(price, "profile", "ball"); }); } break; case State.Disabled: break; } }); return(this); }