public static void setupUI()
        {
            bool redraw = false;

            Dictionary <StatAchievement, GameObject> .Enumerator achlist = achLookup.GetEnumerator();
            while (achlist.MoveNext())
            {
                KeyValuePair <StatAchievement, GameObject> item = achlist.Current;
                item.Value.transform.Find("Image").GetComponent <Image>().sprite = SpriteLoader.getSpriteForResource(item.Key.achieveImage + (item.Key.isAchieved() ? "" : "_off"));
                if (item.Key is AchievementMulti)
                {
                    AchievementMulti mult = (AchievementMulti)item.Key;
                    int numChecked        = mult.getNumAchieved();
                    for (int j = 1; j <= mult.getNumValues(); j++)
                    {
                        Image img = item.Value.transform.Find("Check(" + j + ")").GetComponent <Image>();
                        if (j <= numChecked)
                        {
                            img.sprite = GuiManager.instance.checkOn;
                            img.color  = ColorHelper.DGREEN;
                        }
                        else
                        {
                            img.sprite = GuiManager.instance.checkOff;
                            img.color  = ColorHelper.DRED;
                        }
                    }
                    item.Value.transform.Find("Description").GetComponent <Text>().text = string.Format(Localization.translateToLocal(item.Key.description), Main.AsCurrency(mult.getNextValue(), 6));
                }
                else
                {
                    item.Value.transform.Find("Progress").GetComponent <Text>().text = item.Key.isAchieved() ? "Completed" : "In progress";
                }
                if (!item.Key.isHidden && !item.Value.activeSelf)
                {
                    redraw = true;
                }
            }
            Dictionary <IStat, GameObject> .Enumerator statlist = statLookup.GetEnumerator();
            while (statlist.MoveNext())
            {
                KeyValuePair <IStat, GameObject> item = statlist.Current;
                item.Value.transform.Find("Progress").GetComponent <Text>().text    = item.Key.getDisplay();
                item.Value.transform.Find("Description").GetComponent <Text>().text = item.Key.description;
                if (!item.Key.isHidden && !item.Value.activeSelf)
                {
                    redraw = true;
                }
            }
            if (redraw)
            {
                IEnumerator <StatAchievement> list = StatisticsTracker.getAchievementsList();
                int h = 0;
                while (list.MoveNext())
                {
                    StatAchievement item = list.Current;
                    if (!achLookup.ContainsKey(item))
                    {
                        continue;
                    }
                    GameObject obj = achLookup[item];
                    obj.transform.localPosition = new Vector3(11, -50 * h - 11, 0);
                    if (item.isHidden)
                    {
                        obj.SetActive(false);
                        continue;
                    }
                    obj.SetActive(true);
                    h++;
                }
                ((RectTransform)achievList.transform).SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 50 * h + 18);
                IEnumerator <IStat> list2 = StatisticsTracker.getStatsList();
                h = 0;
                while (list2.MoveNext())
                {
                    IStat item = list2.Current;
                    if (!statLookup.ContainsKey(item))
                    {
                        continue;
                    }
                    GameObject obj = statLookup[item];
                    obj.transform.localPosition = new Vector3(11, -50 * h - 11, 0);
                    if (item.isHidden)
                    {
                        obj.SetActive(false);
                        continue;
                    }
                    obj.SetActive(true);
                    h++;
                }
                ((RectTransform)statsList.transform).SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 50 * h + 18);
            }
        }
        public static void OneTimeSetup()
        {
            achievList = GuiManager.instance.achievementsArea.transform.Find("Achievements").GetChild(1).GetChild(0);
            statsList  = GuiManager.instance.achievementsArea.transform.Find("Statistics").GetChild(1).GetChild(0);
            IEnumerator <StatAchievement> list = StatisticsTracker.getAchievementsList();
            int h = 0;

            while (list.MoveNext())
            {
                GameObject      obj;
                StatAchievement item = list.Current;
                if (item.isHidden && !item.isSecret)
                {
                    continue;
                }
                if (item is AchievementMulti)
                {
                    obj = GameObject.Instantiate(PrefabManager.instance.ACHIEVEMENT_MULTI_LISTITEM, achievList) as GameObject;
                }
                else
                {
                    obj = GameObject.Instantiate(PrefabManager.instance.ACHIEVEMENT_LISTITEM, achievList) as GameObject;
                    obj.transform.Find("Progress").GetComponent <Text>().text = item.isAchieved() ? "Completed" : "In progress";
                }
                obj.transform.localPosition = new Vector3(11, -50 * h - 11, 0);
                obj.transform.Find("Name").GetComponent <Text>().text        = Localization.translateToLocal(item.achieveName);
                obj.transform.Find("Description").GetComponent <Text>().text = Localization.translateToLocal(item.description);
                obj.transform.Find("Image").GetComponent <Image>().sprite    = SpriteLoader.getSpriteForResource(item.achieveImage + (item.isAchieved() ? "":"_off"));
                achLookup.Add(item, obj);
                if (item.isSecret)
                {
                    obj.SetActive(false);
                    continue;
                }
                h++;
            }
            ((RectTransform)achievList.transform).SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 50 * h + 18);

            IEnumerator <IStat> list2 = StatisticsTracker.getStatsList();

            h = 0;
            while (list2.MoveNext())
            {
                IStat item = list2.Current;
                if (item.isHidden)
                {
                    continue;
                }
                GameObject obj = GameObject.Instantiate(PrefabManager.instance.ACHIEVEMENT_LISTITEM, statsList) as GameObject;
                obj.transform.localPosition = new Vector3(11, -50 * h - 11, 0);
                Transform trans;
                trans = obj.transform.Find("Name");
                trans.GetComponent <Text>().text = Localization.translateToLocal(item.statName);
                trans.localPosition -= new Vector3(35, 0, 0);
                trans = obj.transform.Find("Description");
                trans.GetComponent <Text>().text = item.description;
                trans.localPosition -= new Vector3(35, 0, 0);
                string txt = item.getDisplay();
                obj.transform.Find("Progress").GetComponent <Text>().text = txt;
                obj.transform.Find("Image").gameObject.SetActive(false);
                obj.transform.Find("BG").gameObject.SetActive(false);
                statLookup.Add(item, obj);
                h++;
            }
            ((RectTransform)statsList.transform).SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 50 * h + 18);
        }