예제 #1
0
        /// <summary>Indicates whether the current object is equal to another object of the same type.</summary>
        /// <param name="other">An object to compare with this object.</param>
        /// <returns>true if the current object is equal to the <paramref name="other">other</paramref> parameter; otherwise, false.</returns>
        public bool Equals(OasSchema other)
        {
            if (other is null) return false;
            if (ReferenceEquals(this, other)) return true;

            if (JsonType != other.JsonType) return false;
            if (Format != other.Format) return false;
            if (Options != other.Options) return false;
            if (!NumberRange.Equals(other.NumberRange)) return false;
            if (!ItemsRange.Equals(other.ItemsRange)) return false;
            if (!LengthRange.Equals(other.LengthRange)) return false;
            if (!PropertiesRange.Equals(other.PropertiesRange)) return false;
            if (!ExternalDocumentation.Equals(other.ExternalDocumentation)) return false;
            if (!StringComparer.Ordinal.Equals(Title, other.Title)) return false;
            if (!StringComparer.Ordinal.Equals(Description, other.Description)) return false;
            if (!StringComparer.Ordinal.Equals(Pattern, other.Pattern)) return false;
            if (!Enum.NullableSetEquals(other.Enum)) return false;
            if (!AllOf.NullableSetEquals(other.AllOf)) return false;
            if (!OneOf.NullableSetEquals(other.OneOf)) return false;
            if (!AnyOf.NullableSetEquals(other.AnyOf)) return false;
            if (!Not.NullableSetEquals(other.Not)) return false;
            if (Items != other.Items) return false;
            if (!Properties.NullableDictionaryEquals(other.Properties)) return false;
            if (!AdditionalProperties.NullableDictionaryEquals(other.AdditionalProperties)) return false;

            return true;
        }
    public static int TotalLevelsForPack(Pack pack)
    {
        ItemsRange range = PackLevelsRange(pack);

        // 10 - 6 = 4
        // 5 - 1 = 4
        return((range.To - range.From) + 1);
    }
    public Rank RankForPack(Pack pack)
    {
        for (int i = 0; i < TotalRanks(); i++)
        {
            Rank       r     = Ranks().GetItem(i + 1);
            ItemsRange range = RankPacksRange(r);

            if (pack.Number >= range.From && pack.Number <= range.To)
            {
                return(r);
            }
        }

        return(null);
    }
    public Pack PackForLevel(Level level)
    {
        for (int i = 0; i < TotalPacks(); i++)
        {
            Pack       p     = Packs().GetItem(i + 1);
            ItemsRange range = PackLevelsRange(p);

            if (level.Number >= range.From && level.Number <= range.To)
            {
                return(p);
            }
        }

        return(null);
    }
    public int PointsForPack(Pack pack)
    {
        ItemsRange range = PackLevelsRange(pack);

        int points = 0;

        for (int i = range.From; i < range.To + 1; i++)
        {
            Level l = GameManager.Instance.Levels.GetItem(i);

            if (l != null)
            {
                points += l.HighScore;
            }
        }

        return(points);
    }
    public bool LastLevelInPack(Level level)
    {
        Pack pack = PackForLevel(level);

        if (pack == null)
        {
            return(false);
        }

        ItemsRange range = PackLevelsRange(pack);

        if (range.To == level.Number)
        {
            return(true);
        }

        return(false);
    }
    public void UnlockPack(Pack pack)
    {
        if (pack == null)
        {
            return;
        }

        pack.IsUnlocked = true;
        pack.UpdatePlayerPrefs();

        GameManager.SafeQueueMessage(new PackUnlockedMessage(pack));
        ItemsRange range = PackLevelsRange(pack);

        // unlock first level for this pack
        UnlockLevel(range.From);

        SaveState();
    }
예제 #8
0
        /// <summary>Returns the hash code for this instance.</summary>
        /// <returns>A 32-bit signed integer that is the hash code for this instance.</returns>
        public override int GetHashCode()
        {
            unchecked
            {
                var hc = 17L;

                hc = (hc * 23) + JsonType.GetHashCode();
                hc = (hc * 23) + Options.GetHashCode();
                hc = (hc * 23) + NumberRange.GetHashCode();
                hc = (hc * 23) + ItemsRange.GetHashCode();
                hc = (hc * 23) + LengthRange.GetHashCode();
                hc = (hc * 23) + PropertiesRange.GetHashCode();
                if (ExternalDocumentation != null)
                {
                    hc = (hc * 23) + ExternalDocumentation.GetHashCode();
                }
                if (Title != null)
                {
                    hc = (hc * 23) + StringComparer.Ordinal.GetHashCode(Title);
                }
                if (Format != null)
                {
                    hc = (hc * 23) + StringComparer.Ordinal.GetHashCode(Format);
                }
                if (Description != null)
                {
                    hc = (hc * 23) + StringComparer.Ordinal.GetHashCode(Description);
                }
                if (Pattern != null)
                {
                    hc = (hc * 23) + StringComparer.Ordinal.GetHashCode(Pattern);
                }
                hc = (hc * 23) + Enum.Count;
                hc = (hc * 23) + AllOf.Count;
                hc = (hc * 23) + OneOf.Count;
                hc = (hc * 23) + AnyOf.Count;
                hc = (hc * 23) + Not.Count;
                hc = (hc * 23) + Items.GetHashCode();
                hc = (hc * 23) + Properties.Count;
                hc = (hc * 23) + AdditionalProperties.Count;

                return(((int)(hc >> 32)) ^ (int)hc);
            }
        }
    public bool LastLevelInRank(Level level)
    {
        if (LastLevelInPack(level) == false)
        {
            return(false);
        }

        Pack pack = PackForLevel(level);
        Rank rank = RankForPack(pack);

        ItemsRange range = RankPacksRange(rank);

        if (range.To == pack.Number)
        {
            return(true);
        }

        return(false);
    }
    public void PackWillChange(VerticalScrollSnap scrollSnap)
    {
        return;

        // TODO
        ScrollRect scrollRect = scrollSnap.GetComponent <ScrollRect>();

        if (scrollRect == null)
        {
            return;
        }

        Transform child = scrollRect.content.GetChild(scrollSnap.CurrentPage);

        if (child == null)
        {
            return;
        }

        GameObject pageContainer = child.gameObject;
        Rank       rank          = LevelController.Ranks().GetItem(scrollSnap.CurrentPage + 1);

        ItemsRange range = LevelController.RankPacksRange(rank);

        int index = 0;

        for (int i = range.From; i < range.To + 1; i++)
        {
            GameObject newObject = pageContainer.transform.GetChild(index).gameObject;

            Pack pack = LevelController.Packs().GetItem(i);

            if (pack.JsonData == null)
            {
                pack.LoadData();
            }

            SetPackData(pack, newObject);

            index++;
        }
    }
    public void Refresh()
    {
        RankGameItemManager ranksManager = LevelController.Ranks();

        for (int r = ranksManager.Items.Length; r > 0; r--)
        {
            Rank rank = ranksManager.GetItem(r);
            rank.LoadData();

            GameObject pageObject = Instantiate(pagePrefab);
            pageObject.SetActive(false);
            pageObject.transform.SetParent(transform, false);

            Text _rankSignText = GameObjectHelper.GetChildComponentOnNamedGameObject <Text>(pageObject, "RankName", true);
            _rankSignText.text = LocaliseText.Get(rank.JsonData.GetString("name"));

            ItemsRange range = LevelController.RankPacksRange(rank);

            for (int i = range.From; i < range.To + 1; i++)
            {
                Pack pack = LevelController.Packs().GetItem(i);

                GameObject newObject = Instantiate(Prefab);
                newObject.GetComponent <PackItem>().Number = i;

                newObject.transform.SetParent(pageObject.transform, false);

                newObject.GetComponent <Button>().onClick.AddListener(() =>
                {
                    LevelsListController.Instance.OpenPackButton(pack);
                });

                buttons.Add(newObject);
            }
        }

        CustomUI_ScrollRectOcclusion _occ = GetComponent <CustomUI_ScrollRectOcclusion>();

        _occ.Init();
    }
    // mark this pack as completed
    public void PackProgressCompleted(Level level)
    {
        Pack pack = PackForLevel(level);

        if (pack == null)
        {
            return;
        }

        if (pack.JsonData == null)
        {
            pack.LoadData();
        }

        ItemsRange range = PackLevelsRange(pack);

        bool completed = true;

        for (int i = range.From; i < range.To + 1; i++)
        {
            Level l = GameManager.Instance.Levels.GetItem(i);

            if (l.ProgressBest < 1.0f)
            {
                completed = false;
            }
        }

        if (completed && pack.Progress < 1.0f)
        {
            pack.Progress = 1.0f;
            pack.UpdatePlayerPrefs();

            UnlockNextPack(pack);
        }
    }
    public void Refresh()
    {
        Pack pack = ((CustomGameManager)CustomGameManager.Instance).Packs.Selected;

        ItemsRange range = LevelController.PackLevelsRange(pack);

        for (int i = range.From; i < range.To + 1; i++)
        {
            Level level = GameManager.Instance.Levels.GetItem(i);
            level.LoadData();

            GameObject newObject = Instantiate(Prefab);
            newObject.transform.SetParent(transform, false);

            CustomLevelButton levelButton = newObject.GetComponent <CustomLevelButton>();
            levelButton.Context.Number = i;

            if (level.IsUnlocked)
            {
                CanvasGroup canvasGroup = GameObjectHelper.GetChildComponentOnNamedGameObject <CanvasGroup> (newObject, "PlayButton", true);
                canvasGroup.alpha = 1f;
            }

            Level nextLevel = GameManager.Instance.Levels.GetItem(i + 1);

            if (nextLevel != null && nextLevel.IsUnlocked == false && level.IsUnlocked)
            {
                Animator anim = GameObjectHelper.GetChildComponentOnNamedGameObject <Animator>(newObject, "PlayButton", true);
                anim.enabled = true;
            }

            if (level.ProgressBest > 0.9f)
            {
                Text statusText = GameObjectHelper.GetChildComponentOnNamedGameObject <Text>(newObject, "Status", true);
                statusText.text = LocaliseText.Get("Text.Done");
            }

            Text text = GameObjectHelper.GetChildComponentOnNamedGameObject <Text> (newObject, "Name", true);
            text.text = LocaliseText.Format("Text.LevelNumber", i);

            GameObject previewObject = GameObjectHelper.GetChildNamedGameObject(newObject, "Preview", true);
            GameObject wordsObject   = GameObjectHelper.GetChildNamedGameObject(previewObject, "Words", true);

            string preview    = level.JsonData.GetString("preview");
            char[] characters = preview.ToCharArray();

            int index = 0;
            int angle = 360 / characters.Length;

            foreach (char _char in characters)
            {
                GameObject _charObject = Instantiate(_charPrefab, wordsObject.transform);

                Vector3 pos = Vector3Utils.RandomCircle(wordsObject.transform.position, 0.2f, angle, index);
                _charObject.transform.position   = pos;
                _charObject.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);

                GameObject _text = GameObjectHelper.GetChildNamedGameObject(_charObject, "Text", true);
                _text.GetComponent <Text> ().text = _char.ToString().ToUpper();

                index++;
            }

            buttons.Add(newObject);
        }
    }