Esempio n. 1
0
    private IEnumerator updateXpDisplay()
    {
        ProgressionService progressionService = Service.Get <ProgressionService>();

        Service.Get <EventDispatcher>().DispatchEvent(default(HudEvents.XPAdditionStart));
        state = XPHudState.addingXP;
        int   xpDelta = progressionService.MascotLevelXpDelta(currentMascotName, currentMascotLevel);
        int   mascotLevelWithOffset = ProgressionService.GetMascotLevelFromXP(currentMascotLevel);
        float additionDelay         = 2f / ((float)(targetMacotLevel - currentMascotLevel) / (float)xpDelta);
        bool  leveledUp             = false;

        while (currentMascotLevel < targetMacotLevel)
        {
            if (mascotLevelWithOffset != ProgressionService.GetMascotLevelFromXP(currentMascotLevel))
            {
                mascotLevelWithOffset = ProgressionService.GetMascotLevelFromXP(currentMascotLevel);
                ShowLevelUp(Service.Get <ProgressionService>().Level);
                leveledUp = true;
                xpDelta   = progressionService.MascotLevelXpDelta(currentMascotName, currentMascotLevel);
            }
            float percent = ProgressionService.GetMascotLevelPercentFromXP(currentMascotLevel);
            currentXpDisplay.LevelProgressImage.fillAmount = percent;
            yield return(new WaitForSeconds(additionDelay));

            currentMascotLevel += xpDelta;
        }
        if (!leveledUp && mascotLevelWithOffset != ProgressionService.GetMascotLevelFromXP(targetMacotLevel))
        {
            ShowLevelUp(Service.Get <ProgressionService>().Level);
        }
        currentXpDisplay.DisableParticleSystems();
        state = XPHudState.waitingToClose;
        Service.Get <EventDispatcher>().DispatchEvent(default(HudEvents.XPAdditionStop));
        Invoke("hideXpHud", HIDE_DELAY_TIME);
    }
Esempio n. 2
0
    private IEnumerator loadXPHudPrefab(PrefabContentKey contentKey, string mascotName)
    {
        AssetRequest <GameObject> assetRequest = Content.LoadAsync(contentKey, mascotName);

        yield return(assetRequest);

        GameObject xpGO = UnityEngine.Object.Instantiate(assetRequest.Asset);

        xpGO.transform.SetParent(XpHudParentTransform, worldPositionStays: false);
        currentXpDisplay = xpGO.GetComponent <XPHudItem>();
        currentXpDisplay.LevelProgressImage.fillAmount = ProgressionService.GetMascotLevelPercentFromXP(currentMascotLevel);
        XPHudItem xPHudItem = currentXpDisplay;

        xPHudItem.IntroAnimationCompleteAction = (System.Action)Delegate.Combine(xPHudItem.IntroAnimationCompleteAction, new System.Action(OnXPIntroAnimationComplete));
        XPHudItem xPHudItem2 = currentXpDisplay;

        xPHudItem2.OutroAnimationCompleteAction = (System.Action)Delegate.Combine(xPHudItem2.OutroAnimationCompleteAction, new System.Action(OnXPOutroAnimationComplete));
        XPLayoutElement.preferredHeight         = 130f;
        showXPHud();
    }
        public int SetUpMascotLevel(bool isLocalPlayer, ProfileData profileData = null, long mascotXPLevel = -1L)
        {
            MascotDefinition   definition         = Service.Get <MascotService>().GetMascot(MascotKey.Id).Definition;
            ProgressionService progressionService = Service.Get <ProgressionService>();
            int   result = 0;
            float num    = 0f;
            bool  flag   = false;

            if (isLocalPlayer)
            {
                if (mascotXPLevel > -1)
                {
                    result = ProgressionService.GetMascotLevelFromXP(mascotXPLevel);
                    num    = ProgressionService.GetMascotLevelPercentFromXP(mascotXPLevel);
                    flag   = progressionService.IsMascotMaxLevel(definition.name, mascotXPLevel);
                }
                else
                {
                    result = progressionService.MascotLevel(definition.name);
                    num    = progressionService.MascotLevelPercent(definition.name);
                    flag   = progressionService.IsMascotMaxLevel(definition.name);
                }
            }
            else
            {
                if (profileData == null)
                {
                    throw new ArgumentNullException("profileData", "Profile data cannot be null if we are not viewing the local player");
                }
                if (MaxLevelText != null)
                {
                    MaxLevelText.SetActive(value: false);
                }
                if (profileData.MascotXP != null && profileData.MascotXP.TryGetValue(definition.name, out var value))
                {
                    result = ProgressionService.GetMascotLevelFromXP(value);
                    num    = ProgressionService.GetMascotLevelPercentFromXP(value);
                    flag   = progressionService.IsMascotMaxLevel(definition.name, value);
                }
            }
            if (MaxLevelText != null && ProgressBarGraphic != null)
            {
                if (flag)
                {
                    MaxLevelText.SetActive(value: true);
                    ProgressBarGraphic.color = new Color(1f, 1f, 1f, 0.4f);
                }
                else
                {
                    MaxLevelText.SetActive(value: false);
                    ProgressBarGraphic.color = new Color(1f, 1f, 1f, 1f);
                }
            }
            LevelText.text = result.ToString();
            if (ExperienceProgressBar != null)
            {
                if (num >= 0.95f && num < 1f)
                {
                    ExperienceProgressBar.AnimateProgress(0.95f);
                }
                else
                {
                    ExperienceProgressBar.AnimateProgress(num);
                }
            }
            return(result);
        }