Пример #1
0
    public static void Purchased(string sku, string token, System.Action nextTask)
    {
        var pack = GlobalConfig.Shop.GetPackage(sku);

        if (pack == null)
        {
            nextTask?.Invoke();
            return;
        }

        Profile.EarnGems(pack.gems);
        Profile.Bombs    += pack.bombs;
        Profile.Hammers  += pack.hammers;
        Profile.Missiles += pack.missiles;

        Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, pack.gems, pack.bombs, pack.hammers, pack.missiles, true, false, nextTask);

        PurchaseSystem.Consume(pack.sku, (success, msg) =>
        {
            if (success)
            {
                GlobalAnalytics.NewBuisinessEvent(Online.Purchase.Provider.Market, pack.sku, pack.price, token);
                Online.Stats.Set(GlobalConfig.Instance.version, Profile.Gems, Profile.Skill, Profile.GetLevelsPassed(), r => { });
            }
        });

        GlobalAnalytics.SourceGem(pack.gems, pack.sku.Replace("ameza_", ""));
    }
Пример #2
0
 private void OnRewardButton(GlobalConfig.Data.League info)
 {
     if (LeagueLogics.data == null && LeagueLogics.data.end_rank > 0)
     {
         return;
     }
     Loading.Show();
     rewardButton.SetInteractable(false);
     Online.League.SetRewarded(info.id, done =>
     {
         Loading.Hide();
         if (done)
         {
             var subleague = GlobalFactory.Leagues.GetByScore(info, LeagueLogics.data.end_score);
             Profile.EarnGems(subleague.rewardGems);
             Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, subleague.rewardGems, 0, 0, 0, true, false, () => Rateus.AddJoy(2));
             LeagueLogics.data.end_score = LeagueLogics.data.end_rank = 0;
             GlobalAnalytics.SourceGem(subleague.rewardGems, "league");
         }
         else
         {
             rewardButton.SetInteractable(true);
         }
     });
 }
Пример #3
0
    // Use this for initialization
    private IEnumerator Start()
    {
        UiShowHide.ShowAll(transform);

        buyButton.onClick.AddListener(() =>
        {
            Game.SpendGems(GlobalConfig.Shop.heartPrice, () =>
            {
                Profile.Hearts += GlobalConfig.ProfilePreset.hearts;
                Back();
                GlobalAnalytics.SinkGem(GlobalConfig.Shop.heartPrice, "profile", "heart");
            });
        });


        price.SetText(GlobalConfig.Shop.heartPrice.ToString());
        var wait = new WaitForSeconds(1);

        while (true)
        {
            hearts.SetText(Profile.Hearts.ToString());
            int seconds = Online.Timer.GetRemainSeconds(GlobalConfig.Heart.timerId, GlobalConfig.Heart.interval);
            title.SetFormatedText(seconds / 60, seconds % 60);
            yield return(wait);
        }
    }
Пример #4
0
 private void BuyBooster(int count, int price, string booster, System.Action <int> onSuccess)
 {
     Game.Instance.OpenPopup <Popup_Confirm>().SetText(111003, count, price).Setup(true, true, yes =>
     {
         if (yes == false)
         {
             return;
         }
         Game.SpendGems(price, () =>
         {
             onSuccess(count);
             UpdateTexts();
             if (PlayModel.IsClassic)
             {
                 GlobalAnalytics.SinkGem(price, "classic", booster);
             }
             else if (PlayModel.IsLeague)
             {
                 GlobalAnalytics.SinkGem(price, "leagues", booster);
             }
             else if (PlayModel.IsLevels)
             {
                 GlobalAnalytics.SinkGem(price, "levels", booster);
             }
         });
     });
 }
Пример #5
0
    private static void StartSession()
    {
        data.privateData.sessions++;
        if (IsFirstSession)
        {
            EarnGems(GlobalConfig.ProfilePreset.gems);
            Hearts   = GlobalConfig.ProfilePreset.hearts;
            Bombs    = GlobalConfig.ProfilePreset.bombs;
            Hammers  = GlobalConfig.ProfilePreset.hammers;
            Missiles = GlobalConfig.ProfilePreset.missles;

            GlobalAnalytics.SourceGem(GlobalConfig.ProfilePreset.gems, "first");
        }
    }
Пример #6
0
    // Start is called before the first frame update
    private IEnumerator Start()
    {
        gemsLabel.SetFormatedText(GlobalConfig.Advertise.shopFreeGems.rewardGems);

        button.onClick.AddListener(() =>
        {
            var seconds = Online.Timer.GetRemainSeconds(GlobalConfig.Advertise.shopFreeGems.timerId, GlobalConfig.Advertise.shopFreeGems.interval);
            if (seconds > 0)
            {
                Game.Instance.OpenPopup <Popup_Confirm>().SetText(111018, TimeToString(seconds)).Setup(true, false, null);
            }
            else
            {
                Game.Instance.OpenPopup <Popup_VideoAd>().Setup(GlobalConfig.Advertise.shopFreeGems, "shopad", success =>
                {
                    if (success == false)
                    {
                        return;
                    }
                    Online.Timer.Set(GlobalConfig.Advertise.shopFreeGems.timerId, GlobalConfig.Advertise.shopFreeGems.interval);
                    Profile.EarnGems(GlobalConfig.Advertise.shopFreeGems.rewardGems);
                    Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, GlobalConfig.Advertise.shopFreeGems.rewardGems, 0, 0, 0, true);
                    GlobalAnalytics.SourceGem(GlobalConfig.Advertise.shopFreeGems.rewardGems, "shopad");
                });
            }
        });

        var wait = new WaitForSeconds(1);

        while (true)
        {
            var seconds = Online.Timer.GetRemainSeconds(GlobalConfig.Advertise.shopFreeGems.timerId, GlobalConfig.Advertise.shopFreeGems.interval);
            if (seconds > 0)
            {
                timeLabel.transform.SetActiveChild(1);
                var h = seconds / 3600;
                var m = (seconds % 3600) / 60;
                var s = seconds % 60;
                timeLabel.SetFormatedText(h, m, s);
            }
            else
            {
                timeLabel.transform.SetActiveChild(0);
            }

            yield return(wait);
        }
    }
Пример #7
0
    private void Start()
    {
        season = GlobalFactory.Seasons.Get(CurrentSeason);

        chestButton.onClick.AddListener(() =>
        {
            if (seasonState == SeasonState.CanClaimReward)
            {
                var reward = season.finalReward.GetResult();
                Profile.SetSeasonRewarded(season.id, 1);
                Profile.EarnGems(reward.gems);
                Profile.Bombs    += reward.bombs;
                Profile.Hammers  += reward.hammers;
                Profile.Missiles += reward.missiles;
                Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, reward.gems, reward.bombs, reward.hammers, reward.missiles, false, false, () => Rateus.AddJoy(4, () => nextButton.onClick.Invoke()));
                GlobalAnalytics.SourceGem(reward.gems, "season");
            }
            else
            {
                tutorial.Display(0, false, 111041, null);
            }
        });

        nextButton.onClick.AddListener(() =>
        {
            season = GlobalFactory.Seasons.Get(++CurrentSeason);
            UpdateVisual();
            DisplayLevels();
        });

        prevButton.onClick.AddListener(() =>
        {
            var prevSeason = GlobalFactory.Seasons.Get(CurrentSeason - 1);
            if (prevSeason != null)
            {
                CurrentSeason--;
                season = prevSeason;
                UpdateVisual();
                DisplayLevels();
            }
        });

        UpdateVisual();
        DisplayLevels();
        UIBackground.Show();
        UiShowHide.ShowAll(transform);
    }
Пример #8
0
    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);
    }
Пример #9
0
    private void CheckSpinEnds()
    {
        for (int i = 0; i < columns.Length; i++)
        {
            if (columns[i].done == false)
            {
                return;
            }
        }

        int[] items = new int[5] {
            0, 0, 0, 0, 0
        };

        rewards.x = rewards.x % 5;
        rewards.y = rewards.y % 5;
        rewards.z = rewards.z % 5;
        items[rewards.x]++;
        items[rewards.y]++;
        items[rewards.z]++;

        string d = "Rewards:";

        d += "Bombs[" + items[0] + "] ";
        d += "Scissors[" + items[1] + "] ";
        d += "gems[" + items[2] + "] ";
        d += "hammer[" + items[3] + "] ";
        d += "hearts[" + items[4] + "] ";
        Debug.Log(d);

        if (items[0] > 1)
        {
            var bombs = items[0];
            Profile.Bombs += bombs;
            Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, 0, bombs, 0, 0, true);
            descAgain.SetActive(false);
        }
        else if (items[1] > 1)
        {
            var missiles = items[1];
            Profile.Missiles += missiles;
            Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, 0, 0, 0, missiles, true);
            descAgain.SetActive(false);
        }
        else if (items[2] > 1)
        {
            var gems = items[2] * GlobalConfig.Luckyspin.gems;
            Profile.EarnGems(gems);
            Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, gems, 0, 0, 0, true);
            descAgain.SetActive(false);
            GlobalAnalytics.SourceGem(gems, "luckyspine");
        }
        else if (items[3] > 1)
        {
            var hammers = Mathf.Max(0, items[3] - 1);
            Profile.Hammers += hammers;
            Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, 0, 0, hammers, 0, true);
            descAgain.SetActive(false);
        }
        else if (items[4] > 1)
        {
            var hearts = items[4] - 1;
            Profile.Hearts += hearts;
            Game.Instance.OpenPopup <Popup_Confirm>().SetText(111017, hearts).Setup(true, false, null);
            descAgain.SetActive(false);
        }
        else
        {
            descStart.SetActive(false);
            descAgain.SetActive(true);
            stopButton.SetInteractable(true);
        }
    }
Пример #10
0
    // Use this for initialization
    private IEnumerator Start()
    {
        var rewards     = PlayModel.GetReward();
        int rewardStars = PlayModel.GetRewardStars();

        // verify that player has been passed this level
        if (Profile.IsLevelPassed(PlayModel.level.season, PlayModel.level.index))
        {
            rewards.gems = rewards.bombs = rewards.hammers = rewards.missiles = 0;
        }

        Profile.SetLevelStars(PlayModel.level.season, PlayModel.level.index, rewardStars);

        int totalBalls = PlayModel.result.totalBalls + PlayModel.level.startBallCount;

        desc.SetFormatedText(PlayModel.result.totalTurn.ToString(), PlayModel.result.totalBlocks.ToString(), totalBalls);

        if (rewards.exist)
        {
            continueButton.gameObject.SetActive(true);
            nextLevelButton.gameObject.SetActive(false);
            goHomeButton.gameObject.SetActive(false);
        }
        else
        {
            continueButton.gameObject.SetActive(false);
            nextLevelButton.gameObject.SetActive(true);
            goHomeButton.gameObject.SetActive(true);
        }

        nextLevelButton.onClick.AddListener(() =>
        {
            base.Back();
            nextTaskFunc?.Invoke(true);
        });

        goHomeButton.onClick.AddListener(() =>
        {
            base.Back();
            nextTaskFunc?.Invoke(false);
        });

        continueButton.onClick.AddListener(() =>
        {
            continueButton.gameObject.SetActive(false);

            Profile.EarnGems(rewards.gems);
            Profile.Bombs    += rewards.bombs;
            Profile.Hammers  += rewards.hammers;
            Profile.Missiles += rewards.missiles;
            Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, rewards.gems, rewards.bombs, rewards.hammers, rewards.missiles, true, true, () =>
            {
                continueButton.gameObject.SetActive(false);
                nextLevelButton.gameObject.SetActive(true);
                goHomeButton.gameObject.SetActive(true);
            });
            GlobalAnalytics.SourceGem(rewards.gems, "level");
        });

        UiShowHide.ShowAll(transform);
        var wait = new WaitForSeconds(0.3f);

        yield return(wait);

        yield return(wait);

        yield return(wait);

        stars[0].SetActive(rewardStars > 0);
        yield return(wait);

        stars[1].SetActive(rewardStars > 1);
        yield return(wait);

        stars[2].SetActive(rewardStars > 2);
        yield return(wait);

        // Incentive  text
        {
            var index        = BaloonIndex++ % 25;
            var incentiveStr = LocalizationService.Get(111090 + index);
            if (BaloonIndex < 25 || Random.Range(0, 100) < rewardStars * 25)
            {
                baloon.SetText(incentiveStr);
                baloon.gameObject.SetActive(true);
            }
        }
    }
Пример #11
0
    public Popup_Rewards Setup(int ballId, int gems, int bombs, int hammers, int missiles, bool openChest = false, bool winClaim = false, System.Action onClose = null)
    {
        onCloseFunc = onClose;
        doOpenChest = openChest;

        if (ballId > 0)
        {
            var tmp = new ProfileData.AvatarData()
            {
                angle = Profile.Avatar.Angle
            };
            tmp.ballId = ballId;
            avatar.Setup(tmp);
        }
        else
        {
            avatar.gameObject.SetActive(false);
        }

        if (gems > 0)
        {
            rgems = gems;
        }
        else
        {
            gemsLabel.gameObject.SetActive(false);
        }
        if (bombs > 0)
        {
            rbombs = bombs;
        }
        else
        {
            bombsLabel.gameObject.SetActive(false);
        }
        if (hammers > 0)
        {
            rhammers = hammers;
        }
        else
        {
            hammersLabel.gameObject.SetActive(false);
        }
        if (missiles > 0)
        {
            rmissiles = missiles;
        }
        else
        {
            missilesLabel.gameObject.SetActive(false);
        }

        boosterContent.SetActive(bombs > 0 || hammers > 0 || missiles > 0);

        winClaimButton.gameObject.SetActive(winClaim && Online.Timer.GetRemainSeconds(GlobalConfig.Advertise.winClaim.timerId, GlobalConfig.Advertise.winClaim.interval) < 1);
        winClaimButton.onClick.AddListener(() =>
        {
            Game.Instance.OpenPopup <Popup_VideoAd>().Setup(GlobalConfig.Advertise.winClaim, "winclaim", success =>
            {
                if (success == false)
                {
                    return;
                }
                rtime = 0;
                winClaimButton.gameObject.SetActive(false);
                Online.Timer.Set(GlobalConfig.Advertise.winClaim.timerId, GlobalConfig.Advertise.winClaim.interval);
                rgems += GlobalConfig.Advertise.winClaim.rewardGems;
                Profile.EarnGems(GlobalConfig.Advertise.winClaim.rewardGems);
                GlobalAnalytics.SourceGem(GlobalConfig.Advertise.winClaim.rewardGems, "winclaim");
            });
        });

        return(this);
    }
Пример #12
0
    public UIFriendItem Setup(Online.Friends.Friendship friend, int rank)
    {
        if (avatar)
        {
            avatar.Setup(friend.avatar);
        }
        if (nicknameLabel)
        {
            nicknameLabel.SetText(friend.nickname);
        }
        if (descLabel)
        {
            descLabel.SetText(friend.status);
        }
        if (levelLabel)
        {
            levelLabel.SetText(friend.level);
        }
        if (rankLabel)
        {
            rankLabel.SetText(rank.ToString());
        }
        if (cupImage && rank < 4)
        {
            cupImage.material = null;
        }
        if (background && friend.username == Profile.Username)
        {
            background.color = Color.green;
        }

        int leagueIndex = GlobalFactory.Friends.GetLeagueIndex(friend.level.ToInt());

        medalImage.sprite = GlobalFactory.Friends.GetMedalSprite(leagueIndex);

        if (friend.username == Profile.Username || Profile.IsFriendRewarded(friend.id.ToInt(), friend.level.ToInt()))
        {
            descLabel.gameObject.SetActive(true);
            medalImage.gameObject.SetActive(true);
            cupImage.gameObject.SetActive(true);
            rewardButton.transform.parent.gameObject.SetActive(false);
        }
        else if (friend.level.ToInt() < GlobalConfig.Friends.minRewardLevel)
        {
            descLabel.gameObject.SetActive(false);
            medalImage.gameObject.SetActive(false);
            cupImage.gameObject.SetActive(false);
            rewardButton.transform.parent.gameObject.SetActive(true);
            rewardButton.SetInteractable(false);
            rewardDescLabel.gameObject.SetActive(true);
            rewardDescLabel.SetFormatedText(friend.level.ToInt(), GlobalConfig.Friends.minRewardLevel);
        }
        else
        {
            descLabel.gameObject.SetActive(false);
            medalImage.gameObject.SetActive(false);
            cupImage.gameObject.SetActive(false);
            rewardButton.transform.parent.gameObject.SetActive(true);
            rewardButton.SetInteractable(true);
            rewardDescLabel.gameObject.SetActive(true);
            rewardDescLabel.SetFormatedText(friend.level.ToInt(), GlobalConfig.Friends.minRewardLevel);

            rewardButton.onClick.AddListener(() =>
            {
                rewardButton.gameObject.SetActive(false);
                Profile.EarnGems(GlobalConfig.Friends.rewardGems);
                Profile.SetFriendRewarded(friend.id.ToInt(), GlobalConfig.Friends.rewardGems);
                Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, GlobalConfig.Friends.rewardGems, 0, 0, 0, true, false, () =>
                {
                    descLabel.gameObject.SetActive(true);
                    medalImage.gameObject.SetActive(true);
                    cupImage.gameObject.SetActive(true);
                    rewardButton.transform.parent.gameObject.SetActive(false);
                });
                GlobalAnalytics.SourceGem(GlobalConfig.Friends.rewardGems, "friend");
            });
        }

        if (friend.username == Profile.Username)
        {
            return(this);
        }

        button.onClick.AddListener(() =>
        {
            Loading.Show();
            button.SetInteractable(false);
            Online.Userdata.GetPublic(friend.username, (succeed, data) =>
            {
                Loading.Hide();
                button.SetInteractable(true);
                if (succeed)
                {
                    Game.Instance.OpenPopup <Popup_ProfileInfo>().Setup(friend, data, rank);
                }
                else
                {
                    Game.Instance.OpenPopup <Popup_Confirm>().SetText(111010, friend.nickname).Setup(false, true, null);
                }
            });
        });

        return(this);
    }
Пример #13
0
    private IEnumerator Start()
    {
        UIBackground.Show();
        UiShowHide.ShowAll(transform);

        onlineButton.onClick.AddListener(() =>
        {
            if (Profile.GetSeasonRewarded(0) > 0)
            {
                Game.Instance.OpenState <State_SelectLeague>();
            }
            else
            {
                tutorial.Display(0, false, 111034, null);
            }
        });

        classicButton.onClick.AddListener(() =>
        {
            if (ClassicLogics.SetPlayModel())
            {
                UIBackground.Hide();
                Game.Instance.OpenState <State_Playing>();
            }
        });

        if (Profile.IsFirstSession)
        {
            levelsButton.GetComponent <Animation>().Play();
        }
        levelsButton.onClick.AddListener(() => Game.Instance.OpenState <State_Levels>());

        luckyButton.onClick.AddListener(() =>
        {
            var seconds = Online.Timer.GetRemainSeconds(GlobalConfig.Luckyspin.timerId, GlobalConfig.Luckyspin.interval);
            if (seconds > 0)
            {
                Game.Instance.OpenPopup <Popup_Confirm>().SetText(111018, TimeToString(seconds)).Setup(true, false, null);
            }
            else
            {
                Online.Timer.Set(GlobalConfig.Luckyspin.timerId, GlobalConfig.Luckyspin.interval);
                Game.Instance.OpenPopup <Popup_LuckySpine>();
            }
        });


        if (Profile.IsFirstSession == false &&
            Profile.Version < GlobalConfig.Instance.version &&
            GlobalConfig.Update.mode == GlobalConfig.Data.Update.Mode.Null &&
            GlobalConfig.Update.rewardGems > 0)
        {
            Profile.Version = GlobalConfig.Instance.version;
            Game.Instance.OpenPopup <Popup_Confirm>().Setup(111129, true, false, ok =>
            {
                Game.Instance.OpenPopup <Popup_Rewards>().Setup(0, GlobalConfig.Update.rewardGems, 0, 0, 0, true, false, () => Profile.EarnGems(GlobalConfig.Update.rewardGems));
                GlobalAnalytics.SourceGem(GlobalConfig.Update.rewardGems, "update");
            });
        }

        var displayed = tutorial.Display(1, true, 111031, () => tutorial.Display(0, true, 111032, null));

        if (displayed == false)
        {
            tutorial.DisplayJoke(1);
        }

        var wait = new WaitForSeconds(1);

        while (true)
        {
            var seconds = Online.Timer.GetRemainSeconds(GlobalConfig.Luckyspin.timerId, GlobalConfig.Luckyspin.interval);
            if (seconds > 0)
            {
                luckyTimeLabel.transform.SetActiveChild(1);
                var h = seconds / 3600;
                var m = (seconds % 3600) / 60;
                var s = seconds % 60;
                luckyTimeLabel.SetFormatedText(h, m, s);
            }
            else
            {
                luckyTimeLabel.transform.SetActiveChild(0);
            }

            yield return(wait);
        }
    }