示例#1
0
        public void TestNestedStructs()
        {
            var color1 = new Color(128, 200, 64, 255);
            var color2 = new Color(230, 130, 60, 100);
            var cgroup = new ColorGroup(color1, color2);

            var root = DataNode.CreateObject("test");

            Assert.NotNull(root);

            var obj = cgroup.ToDataNode();

            Assert.IsTrue(obj.ChildCount == 2);

            root.AddNode(obj);

            Assert.IsTrue(root.ChildCount == 1);

            var xml = XMLWriter.WriteToString(root);

            Assert.IsFalse(string.IsNullOrEmpty(xml));

            root = XMLReader.ReadFromString(xml);
            Assert.NotNull(root);

            var test = root.GetNode("test");

            Assert.IsTrue("test".Equals(test.Name));

            var content = test.GetNode("colorgroup");

            Assert.NotNull(content);
            Assert.IsTrue(content.ChildCount == 2);

            var otherGroup = content.ToObject <ColorGroup>();

            Assert.IsTrue(otherGroup.foreground.Equals(cgroup.foreground));
            Assert.IsTrue(otherGroup.background.Equals(cgroup.background));
        }
示例#2
0
    private void RefreshTaskInfo()
    {
        if (null == chaseTask)
        {
            return;
        }
        RefreshChallengeTimes();

        _chaseStar?.RefreshPanel(chaseTask);
        var task = chaseTask.taskConfigInfo;

        if (task != null)
        {
            Util.SetText(_stageName, task.name);
            Util.SetText(_stageDesc, task.desc);
            Util.SetText(_energyCost, $"(     ×{task.fatigueCount})");
            Util.SetText(_recommend, Util.Format(ConfigText.GetDefalutString(TextForMatType.AssistUI, 9), task.recommend));
            _recommend.color = ColorGroup.GetColor(ColorManagerType.Recommend, modulePlayer.roleInfo.fight >= task.recommend);
            _recommend?.transform.parent.SafeSetActive(task.recommend > 0);
            var stageInfo = ConfigManager.Get <StageInfo>(task.stageId);
            var str       = stageInfo.icon.Split(';');
            if (str.Length >= 1)
            {
                UIDynamicImage.LoadImage(_taskIcon.transform, str[0]);
            }
            List <int> reward = new List <int>(stageInfo.previewRewardItemId);
            reward.RemoveAll(item =>
            {
                var prop = ConfigManager.Get <PropItemInfo>(item);
                return(!(prop && prop.proto != null && (prop.proto.Contains(CreatureVocationType.All) || prop.proto.Contains((CreatureVocationType)modulePlayer.proto))));
            });
            new DataSource <int>(reward, _rewardScrollView, OnSetItem, OnItemClick);
        }

        for (var i = 0; i < _stars.Length; i++)
        {
            _stars[i].SafeSetActive(chaseTask.star >= i + 1);
        }
    }
示例#3
0
    public void Refresh()
    {
        Util.SetText(Name, DataCache.CPetInfo.itemNameId);
        Util.SetText(LevelText, DataCache.Level.ToString());

        var isGot = Module_Pet.instance.Contains(DataCache.ID);

        Name.color = ColorGroup.GetColor(ColorManagerType.UnlockPetNameColor, isGot);
        LockMask?.SafeSetActive(!isGot);
        SelectStateMark?.SafeSetActive(false);
        TrainingMask?.SafeSetActive(DataCache.IsTraining);
        Fighting?.SafeSetActive(DataCache.ID == Module_Pet.instance.FightingPetID);
        levelBg?.SafeSetActive(isGot);
        if (levelBg != null)
        {
            levelBg.color = ColorGroup.GetColor(ColorManagerType.PetQuality, DataCache.CPetInfo.quality);
        }
        Icon?.SetGray(!isGot);
        Util.SetPetSimpleInfo(transform, DataCache);

        RefreshMood(DataCache.Mood);
    }
示例#4
0
    private void RefreshDiscardCost(PSoulAttr prevSoulAttr)
    {
        var soulInfo = ConfigManager.Get <SoulInfo>(prevSoulAttr.soulId);

        if (null == soulInfo?.discardCosts)
        {
            return;
        }
        for (var i = 0; i < soulInfo.discardCosts.Length; i++)
        {
            var prop = ConfigManager.Get <PropItemInfo>(soulInfo.discardCosts[i].itemId);
            if (prop)
            {
                AtlasHelper.SetIcons(discardCostIcon, prop.icon);
            }

            if (soulInfo.discardCosts[i].itemId == 2)
            {
                Util.SetText(discardCost, soulInfo.discardCosts[i].count.ToString());
                discardCost.color = ColorGroup.GetColor(ColorManagerType.IsMoneyEnough,
                                                        soulInfo.discardCosts[i].count <= modulePlayer.gemCount);
                return;
            }
            else if (soulInfo.discardCosts[i].itemId == 1)
            {
                Util.SetText(discardCost, soulInfo.discardCosts[i].count.ToString());
                discardCost.color = ColorGroup.GetColor(ColorManagerType.IsMoneyEnough,
                                                        soulInfo.discardCosts[i].count <= modulePlayer.coinCount);
                return;
            }
            else
            {
                Util.SetText(discardCost, soulInfo.discardCosts[i].count.ToString());
                discardCost.color = ColorGroup.GetColor(ColorManagerType.IsMatrialEnough,
                                                        soulInfo.discardCosts[i].count <= moduleEquip.GetPropCount(soulInfo.discardCosts[i].count));
            }
        }
    }
示例#5
0
        /// <summary>
        /// 返回预定义的几种颜色
        /// </summary>
        /// <param name="colorGroup">预定义颜色</param>
        /// <returns></returns>
        private static MColor[] GetPredefinedColor(ColorGroup colorGroup)
        {
            List <MColor> retVal = new List <MColor>();

            switch (colorGroup)
            {
            case ColorGroup.W3C16:
                foreach (string[] var in ColorDefined.GetW3C16Color())
                {
                    retVal.Add(new MColor(var[1], ColorTranslator.FromHtml(var[0])));
                }
                break;

            case ColorGroup.Safe216:
                foreach (string var in ColorDefined.GetSafe216Color())
                {
                    retVal.Add(new MColor(var, ColorTranslator.FromHtml(var)));
                }
                break;

            case ColorGroup.IE4_PreNamed:
                foreach (string[] var in ColorDefined.GetIE4_PreNamedColor())
                {
                    retVal.Add(new MColor(var[1], ColorTranslator.FromHtml(var[0])));
                }
                break;

            case ColorGroup.WIN:
                foreach (string var in ColorDefined.GetWINColor())
                {
                    retVal.Add(new MColor(var, Color.FromName(var)));
                }
                break;
            }

            return(retVal.ToArray());
        }
示例#6
0
    private void RefreshCost()
    {
        var prop     = moduleFurnace.currentSoulItem?.GetPropItem();
        var soulCost = ConfigManager.Get <SoulCost>(prop?.quality ?? 0);

        if (soulCost != null)
        {
            for (var i = 0; i < soulCost.costs.Length; i++)
            {
                if (soulCost.costs[i].itemId == 1)
                {
                    Util.SetText(costCoin, soulCost.costs[i].count.ToString());
                    costCoin.color = ColorGroup.GetColor(ColorManagerType.IsMoneyEnough,
                                                         soulCost.costs[i].count <= modulePlayer.coinCount);
                }
                else
                {
                    var own = moduleEquip.GetPropCount(soulCost.costs[i].itemId);
                    Util.SetText(costItem, Util.Format(Util.GetString((int)TextForMatType.SoulUI, 17), soulCost.costs[i].count.ToString(), own));
                    costItem.color = ColorGroup.GetColor(ColorManagerType.IsMatrialEnough, soulCost.costs[i].count <= own);
                    var costProp = ConfigManager.Get <PropItemInfo>(soulCost.costs[i].itemId);
                    if (null != costProp)
                    {
                        Util.SetText(costItemName, costProp.itemName);
                        AtlasHelper.SetIcons(costItemIcon, costProp.icon);
                        costItemIcon.GetComponentDefault <Button>()?
                        .onClick.AddListener(() => moduleGlobal.UpdateGlobalTip((ushort)costProp.ID));
                    }
                }
            }
        }
        else
        {
            Util.SetText(costCoin, "0");
            Util.SetText(costItem, "0");
        }
    }
示例#7
0
    protected override void OnBecameVisible(bool oldState, bool forward)
    {
        var args = GetWindowParam(name);

        if (args != null && args.param1 is ExchangeContent)
        {
            _content = (ExchangeContent)args.param1;
        }

        var prop = ConfigManager.Get <PropItemInfo>(_content.itemId);

        Util.SetItemInfo(itemRoot, prop, 0, _content.ownCount, false);
        Util.SetText(itemRoot.GetComponent <Text>("numberdi/count"),
                     Util.Format(ConfigText.GetDefalutString(199, 8), _content.ownCount));
        Util.SetText(needCountText, Util.Format(ConfigText.GetDefalutString(199, 6), BuyCount.ToString()));
        Util.SetText(priceText, Util.Format(ConfigText.GetDefalutString(199, 7), BuyCount * prop.diamonds));
        Util.SetText(levelText, Util.Format(ConfigText.GetDefalutString(199, 10), prop.buyLevel));
        priceText.color = ColorGroup.GetColor(ColorManagerType.IsMoneyEnough, IsMoneyEnough);
        bool level = modulePlayer.level >= prop.buyLevel ? true : false;

        levelText.color = level ? Color.white : Color.red;

        exchangeButton?.SetInteractable(IsMoneyEnough && level);
    }
示例#8
0
    private void Update()
    {
        var stratRect = new Rect(0.8f, 0, 0.2f, 1);

        var mousePos = new Vector3(Input.mousePosition.x / Screen.width, Input.mousePosition.y / Screen.height, Input.mousePosition.z);

        if (stratRect.Contains(mousePos))
        {
            return;
        }

        if (Input.GetMouseButtonDown(0))
        {
            PreviousMousePosition = Input.mousePosition;
        }

        if (Input.GetMouseButtonUp(0) &&
            (PreviousMousePosition - Input.mousePosition).magnitude < 2 &&
            Pane.PaneCamera.rect.Contains(mousePos))
        {
            int hitCount = Physics.RaycastNonAlloc(Pane.PaneCamera.ScreenPointToRay(Input.mousePosition), HitResults, 150);

            ColorGroup.ResetSelection();

            if (hitCount > 0)
            {
                float distance = float.MaxValue;
                float tempDistance;

                GameObject nearest = null;

                for (int i = 0; i < hitCount; i++)
                {
                    tempDistance = (HitResults[i].point - Pane.PaneCamera.transform.position).magnitude;

                    if (tempDistance < distance)
                    {
                        distance = tempDistance;
                        nearest  = HitResults[i].collider.gameObject;
                    }
                }

                if (nearest != null)
                {
                    ColorGroup cg = nearest.GetComponent <ColorGroup>();

                    if (cg != null)
                    {
                        cg.SetGroupColor(SelectionColor);

                        foreach (int groupIndex in ColorDependancy.GetPrimaryGroupIndex(cg.GroupIndex))
                        {
                            ColorGroup.SetGroupColor(groupIndex, PrimaryColor);
                        }

                        foreach (int groupIndex in ColorDependancy.GetSecondaryGroupIndex(cg.GroupIndex))
                        {
                            ColorGroup.SetGroupColor(groupIndex, SecondaryColor);
                        }

                        foreach (int groupIndex in ColorDependancy.GetUnusedGroups(cg.GroupIndex))
                        {
                            ColorGroup.SetGroupOpacity(groupIndex, OPACITY_RATE);
                        }
                    }
                }
            }
        }
    }
示例#9
0
 private void RefreshFatigueCost()
 {
     Util.SetText(energy, task.taskConfigInfo.fatigueCount.ToString());
     energy.color = ColorGroup.GetColor(ColorManagerType.IsMatrialEnough,
                                        task.taskConfigInfo.fatigueCount <= modulePlayer.roleInfo.fatigue);
 }
示例#10
0
 public ColorComboBox(ColorGroup colorGroup)
 {
     InitializeComponent();
     mColors = GetPredefinedColor(colorGroup);
 }
示例#11
0
    private void GeneratePuzzle()
    {
        if (colorGroups.Length < 1)
        {
            Debug.LogError("You need at least 1 color group to start!");
            Debug.Break();
        }

        puzzle.pieces = new Piece[puzzle.width, puzzle.height];

        if (!colorChosen)
        {
            colorGroup = colorGroups[Random.Range(0, colorGroups.Length)];
        }
        else
        {
            Random.Range(0, 1);
        }
        colorChosen = false;

        int        randomQuarter = Random.Range(0, quarterPrefabs.Length);
        GameObject quarterPrefab = quarterPrefabs[randomQuarter];

        float cameraX = puzzle.width % 2 == 0 ? puzzle.width / 2 - 0.5f : puzzle.width / 2;
        float cameraY = puzzle.height % 2 == 0 ? puzzle.height / 2 - 0.5f : puzzle.height / 2;

        Camera.main.transform.position = new Vector3(cameraX, cameraY, -10);
        int orthographicSize = Mathf.Max(puzzle.width, puzzle.height);

        Camera.main.orthographicSize = orthographicSize < 3 ? 3 : orthographicSize;

        backgroundColor = colorGroup.colors[4];

        GameManager.Instance.levelText.color = colorGroup.colors[5];
        ParticleSystem.MainModule mainModule = GameManager.Instance.levelClear.main;
        mainModule.startColor = colorGroup.colors[5];
        backToMenu.color      = colorGroup.colors[5];
        showCompleted.color   = colorGroup.colors[5];

        int[] auxValues = { 0, 0, 0, 0 };

        for (int h = 0; h < puzzle.height; ++h)
        {
            for (int w = 0; w < puzzle.width; ++w)
            {
                //Width restrictions
                if (w == 0)
                {
                    auxValues[3] = Random.Range(0, 4);
                }
                else
                {
                    auxValues[3] = puzzle.pieces[w - 1, h].values[1];
                }
                if (w == puzzle.width - 1)
                {
                    auxValues[1] = Random.Range(0, 4);
                }
                else
                {
                    auxValues[1] = Random.Range(0, 4);
                }

                //Height restrictions
                if (h == 0)
                {
                    auxValues[2] = Random.Range(0, 4);
                }
                else
                {
                    auxValues[2] = puzzle.pieces[w, h - 1].values[0];
                }
                if (h == puzzle.height - 1)
                {
                    auxValues[0] = Random.Range(0, 4);
                }
                else
                {
                    auxValues[0] = Random.Range(0, 4);
                }

                //Piece type
                GameObject piece = (GameObject)Instantiate(piecePrefab, new Vector3(w, h, 0), Quaternion.identity);

                GameObject p1 = (GameObject)Instantiate(quarterPrefab, piece.transform.position, Quaternion.Euler(0, 0, 180));
                p1.transform.parent = piece.transform;
                p1.GetComponent <SpriteRenderer>().color = colorGroup.colors[auxValues[0]];
                piece.GetComponent <Piece>().values[0]   = auxValues[0];

                GameObject p2 = (GameObject)Instantiate(quarterPrefab, piece.transform.position, Quaternion.Euler(0, 0, 90));
                p2.transform.parent = piece.transform;
                p2.GetComponent <SpriteRenderer>().color = colorGroup.colors[auxValues[1]];
                piece.GetComponent <Piece>().values[1]   = auxValues[1];

                GameObject p3 = (GameObject)Instantiate(quarterPrefab, piece.transform.position, Quaternion.Euler(0, 0, 0));
                p3.transform.parent = piece.transform;
                p3.GetComponent <SpriteRenderer>().color = colorGroup.colors[auxValues[2]];
                piece.GetComponent <Piece>().values[2]   = auxValues[2];

                GameObject p4 = (GameObject)Instantiate(quarterPrefab, piece.transform.position, Quaternion.Euler(0, 0, 270));
                p4.transform.parent = piece.transform;
                p4.GetComponent <SpriteRenderer>().color = colorGroup.colors[auxValues[3]];
                piece.GetComponent <Piece>().values[3]   = auxValues[3];


                //Rotate the piece correctly in order to count
                while (piece.GetComponent <Piece>().values[0] != auxValues[0] ||
                       piece.GetComponent <Piece>().values[1] != auxValues[1] ||
                       piece.GetComponent <Piece>().values[2] != auxValues[2] ||
                       piece.GetComponent <Piece>().values[3] != auxValues[3])
                {
                    piece.GetComponent <Piece>().RotatePiece();
                }

                puzzle.pieces[w, h] = piece.GetComponent <Piece>();
            }
        }
    }
示例#12
0
        /// <summary>
        /// Returns the <see cref="Color"/> for a given <see cref="ColorGroup"/> and group level.
        /// </summary>
        /// <param name="group">A <see cref="ColorGroup"/> value.</param>
        /// <param name="level">A level value within the <see cref="ColorGroup"/> and group level.</param>
        /// <returns>The <see cref="Color"/> for the given <see cref="ColorGroup"/> and group level.</returns>
        /// <exception cref="ArgumentOutOfRangeException">Thrown when the <paramref name="level"/> is out of range with respect to the current <see cref="ColorGroupSize"/> parameter.</exception>
        /// <exception cref="InvalidOperationException">Thrown when the <paramref name="group"/> and <paramref name="level"/> map to an invalid color index.</exception>
        public Color GroupToColor(ColorGroup group, int level)
        {
            int ci = GroupToColorIndex(group, level);
            if (ci < 0 || ci >= 256) {
                throw new InvalidOperationException("The specified group mapped to an invalid color index.");
            }

            return _colorIndex[ci];
        }
示例#13
0
        /// <summary>
        /// Returns the color index for a given <see cref="ColorGroup"/> and group level.
        /// </summary>
        /// <param name="group">A <see cref="ColorGroup"/> value.</param>
        /// <param name="level">A level value within the <see cref="ColorGroup"/>.</param>
        /// <returns>The color index value for the given <see cref="ColorGroup"/> and group level.</returns>
        /// <exception cref="ArgumentOutOfRangeException">Thrown when the <paramref name="level"/> is out of range with respect to the current <see cref="ColorGroupSize"/> parameter.</exception>
        public int GroupToColorIndex(ColorGroup group, int level)
        {
            if (level < 0 || level >= _groupSize) {
                throw new ArgumentOutOfRangeException("level", level, "Argument 'level' must be in range [0, " + (_groupSize - 1) + "]");
            }

            return (int)group * _groupSize + level;
        }
 public ColorComboBox(ColorGroup colorGroup)
 {
     InitializeComponent();
     mColors = GetPredefinedColor(colorGroup);
 }
示例#15
0
 /// <summary>
 /// Returns the baseline <see cref="Color"/> within a particular <see cref="ColorGroup"/>.
 /// </summary>
 /// <param name="group">A <see cref="ColorGroup"/> value.</param>
 /// <returns>The baseline (level = 0) <see cref="Color"/> for the given <see cref="ColorGroup"/>.</returns>
 public Color GroupToColor(ColorGroup group)
 {
     return(GroupToColor(group, 0));
 }
示例#16
0
    private static void InitializeResources(ExperienceType experienceType, ResourceType resourceType, string category)
    {
        m_resources = null;
        switch (experienceType)
        {
        case ExperienceType.NATURE:
            if (resourceType == ResourceType.LOCATION)
            {
                ExperienceGroup group = Array.Find(m_assetDb.NatureLocationsGroups, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }

            if (resourceType == ResourceType.MUSIC)
            {
                AudioGroup group = Array.Find(m_assetDb.NatureMusic, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }
            break;

        case ExperienceType.MANDALA:
            if (resourceType == ResourceType.COLOR)
            {
                ColorGroup group = Array.Find(m_assetDb.ColorGroups, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }

            if (resourceType == ResourceType.MUSIC)
            {
                AudioGroup group = Array.Find(m_assetDb.MandalaMusic, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }
            break;

        case ExperienceType.ABSTRACT:
            if (resourceType == ResourceType.LOCATION)
            {
                ExperienceGroup group = Array.Find(m_assetDb.AbstractLocationsGroups, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }

            if (resourceType == ResourceType.MUSIC)
            {
                AudioGroup group = Array.Find(m_assetDb.AbstractMusic, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }
            break;

        case ExperienceType.GLOBAL:
            if (resourceType == ResourceType.GUIDE_AUDIO)
            {
                GuideAudioGroup group = Array.Find(m_assetDb.GuideAudioGroups, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }

            if (resourceType == ResourceType.AUDIO)
            {
                AudioGroup group = Array.Find(m_assetDb.AudioGroups, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }

            if (resourceType == ResourceType.OBJECT)
            {
                ObjectGroup group = Array.Find(m_assetDb.ObjectGroups, item => item.Name == category);
                if (group != null)
                {
                    m_resources = group.Resources;
                }
            }
            break;

        default:
            break;
        }

        if (m_resources == null)
        {
            return;
        }

        m_name        = new string[m_resources.Length];
        m_color       = new Color[m_resources.Length];
        m_description = new string[m_resources.Length];
        m_sprite      = new Sprite[m_resources.Length];
        m_clip        = new AudioClip[m_resources.Length];
    }
示例#17
0
    public void CreatePuzzle(int level, int width, int height, bool showingCompleted)
    {
        Random.InitState(level);
        puzzle.width  = width;
        puzzle.height = height;

        if (level != 0)
        {
            if (puzzle.width <= 0 || puzzle.height <= 0)
            {
                Debug.LogError("Please set the dimensions!");
                Debug.Break();
            }

            GeneratePuzzle();
        }
        else
        {
            if (!colorChosen)
            {
                colorGroup = tutorialColorGroup;
            }

            colorChosen = false;

            float cameraX = puzzle.width % 2 == 0 ? puzzle.width / 2 - 0.5f : puzzle.width / 2;
            float cameraY = puzzle.height % 2 == 0 ? puzzle.height / 2 - 0.5f : puzzle.height / 2;
            Camera.main.transform.position = new Vector3(cameraX, cameraY, -10);
            int orthographicSize = Mathf.Max(puzzle.width, puzzle.height);
            Camera.main.orthographicSize = orthographicSize < 3 ? 3 : orthographicSize;
            Camera.main.backgroundColor  = colorGroup.colors[4];

            backgroundColor             = colorGroup.colors[4];
            Camera.main.backgroundColor = colorGroup.colors[4];

            GameManager.Instance.levelText.color = colorGroup.colors[5];
            ParticleSystem.MainModule mainModule = GameManager.Instance.levelClear.main;
            mainModule.startColor = colorGroup.colors[5];
            backToMenu.color      = colorGroup.colors[5];
            showCompleted.color   = colorGroup.colors[5];

            Vector2 dimensions = CheckDimensions();

            puzzle.width  = (int)dimensions.x;
            puzzle.height = (int)dimensions.y;

            puzzle.pieces = new Piece[puzzle.width, puzzle.height];

            foreach (var piece in GameObject.FindGameObjectsWithTag("Piece"))
            {
                puzzle.pieces[(int)piece.transform.position.x, (int)piece.transform.position.y] = piece.GetComponent <Piece>();
            }
        }

        puzzle.winValue = GetWinValue();

        if (level != 0 && !showingCompleted)
        {
            Shuffle();
        }

        puzzle.curValue = Sweep();

        generated = true;

        if (level != 0 && puzzle.curValue == puzzle.winValue)
        {
            GameManager.Instance.Win(showingCompleted);
        }
    }
示例#18
0
        //--------------------------------------------------------------------------------------
        public void DefineColorPartition()
        {
            if (fSourceImage != null)
            {
                List <Color> lData = new List <Color>(fSourceImage.Height * fSourceImage.Width);
                for (int i = 0; i < fSourceImage.Width; i++)
                {
                    for (int j = 0; j < fSourceImage.Height; j++)
                    {
                        lData.Add(fSourceImage.GetPixel(i, j));
                    }
                }

                var queryGroupColorRed = from ColorVal in lData
                                         group ColorVal by ColorVal.R into ColorGroup
                                         orderby ColorGroup.Key
                                         select new
                {
                    ColorLevel  = ColorGroup.Key,
                    ColorWeight = ColorGroup.Count()
                };
                var queryGroupColorGreen = from ColorVal in lData
                                           group ColorVal by ColorVal.G into ColorGroup
                                           orderby ColorGroup.Key
                                           select new
                {
                    ColorLevel  = ColorGroup.Key,
                    ColorWeight = ColorGroup.Count()
                };
                var queryGroupColorBlue = from ColorVal in lData
                                          group ColorVal by ColorVal.B into ColorGroup
                                          orderby ColorGroup.Key
                                          select new
                {
                    ColorLevel  = ColorGroup.Key,
                    ColorWeight = ColorGroup.Count()
                };
                var queryGroupColorSumma = from ColorVal in lData
                                           group ColorVal by(int) ColorVal.B + (int)ColorVal.G + (int)ColorVal.R into ColorGroup
                                           orderby ColorGroup.Key
                                           select new
                {
                    ColorLevel  = ColorGroup.Key,
                    ColorWeight = ColorGroup.Count()
                };
                var lArrGroupColorRed   = queryGroupColorRed.ToArray();
                var lArrGroupColorGreen = queryGroupColorGreen.ToArray();
                var lArrGroupColorBlue  = queryGroupColorBlue.ToArray();
                var lArrGroupColorSumma = queryGroupColorSumma.ToArray();
                fRedPartition   = new int[lArrGroupColorRed.Length][];
                fGreenPartition = new int[lArrGroupColorGreen.Length][];
                fBluePartition  = new int[lArrGroupColorBlue.Length][];
                fSummaPartition = new int[lArrGroupColorSumma.Length][];
                int k = 0;
                foreach (var lColorPart in lArrGroupColorRed)
                {
                    fMainTextRed      += lColorPart.ColorLevel.ToString() + ", ";
                    fAddTextRed       += lColorPart.ColorLevel.ToString("D3") + " : " + lColorPart.ColorWeight.ToString() + Environment.NewLine;
                    fRedPartition[k++] = new int[] { lColorPart.ColorLevel, lColorPart.ColorWeight };
                }
                k = 0;
                foreach (var lColorPart in lArrGroupColorGreen)
                {
                    fMainTextGreen      += lColorPart.ColorLevel.ToString() + ", ";
                    fAddTextGreen       += lColorPart.ColorLevel.ToString("D3") + " : " + lColorPart.ColorWeight.ToString() + Environment.NewLine;
                    fGreenPartition[k++] = new int[] { lColorPart.ColorLevel, lColorPart.ColorWeight };
                }
                k = 0;
                foreach (var lColorPart in lArrGroupColorBlue)
                {
                    fMainTextBlue      += lColorPart.ColorLevel.ToString() + ", ";
                    fAddTextBlue       += lColorPart.ColorLevel.ToString("D3") + " : " + lColorPart.ColorWeight.ToString() + Environment.NewLine;
                    fBluePartition[k++] = new int[] { lColorPart.ColorLevel, lColorPart.ColorWeight };
                }
                k = 0;
                foreach (var lColorPart in lArrGroupColorSumma)
                {
                    fMainTextSumma      += lColorPart.ColorLevel.ToString() + ", ";
                    fAddTextSumma       += lColorPart.ColorLevel.ToString("D3") + " : " + lColorPart.ColorWeight.ToString() + Environment.NewLine;
                    fSummaPartition[k++] = new int[] { lColorPart.ColorLevel, lColorPart.ColorWeight };
                }
            }
        }
示例#19
0
    private void DrawColorManagerToolbar()
    {
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(rangeGUI, EditorStyles.toolbarButton))
        {
            colorGroups = colorGroups.OrderBy(g => g.Color.grayscale).ToArray();
            colorGroups = colorGroups.OrderBy(g => g.Name).ToArray();
        }

        if (GUILayout.Button(refreshGUI, EditorStyles.toolbarButton))
        {
            LoadSprites();
        }

        GUILayout.Space(15);

        // Reset
        if (GUILayout.Button(resetGUI, EditorStyles.toolbarButton) && EditorUtility.DisplayDialog(confirmDialogTitle, resetMessage, confirmDialogOK, confirmDialogCancel))
        {
            colorGroups = new ColorGroup[] { };
            LoadSprites();
            Repaint();
        }

        GUILayout.Space(10);

        // Load
        if (GUILayout.Button(loadGUI, EditorStyles.toolbarButton) && EditorUtility.DisplayDialog(confirmDialogTitle, loadMessage, confirmDialogOK, confirmDialogCancel))
        {
            string _sceneName = EditorSceneManager.GetActiveScene().name;
            for (int _i = 0; _i < sceneGroupsName.Count; _i++)
            {
                if (sceneGroupsName[_i] == _sceneName)
                {
                    string[] _groups     = sceneGroups[_i].Split('\n');
                    string[] _groupColor = new string[] { };
                    string   _groupName  = string.Empty;

                    colorGroups = new ColorGroup[_groups.Length - 1];

                    for (int _j = 0; _j < _groups.Length - 1; _j++)
                    {
                        _groupName  = _groups[_j].Split('|')[0];
                        _groupColor = _groups[_j].Split('|')[1].Split('#');

                        colorGroups[_j] = new ColorGroup(new Color(float.Parse(_groupColor[0]), float.Parse(_groupColor[1]), float.Parse(_groupColor[2]), float.Parse(_groupColor[3])), _groupName);
                    }

                    LoadSprites();
                    break;
                }
            }
        }

        // Save
        if (GUILayout.Button(saveGUI, EditorStyles.toolbarButton))
        {
            string _file = string.Empty;
            foreach (ColorGroup _group in colorGroups)
            {
                _file += $"{_group.Name}|{_group.Color.r}#{_group.Color.g}#{_group.Color.b}#{_group.Color.a}\n";
            }

            bool   _isSaved   = false;
            string _sceneName = EditorSceneManager.GetActiveScene().name;
            for (int _i = 0; _i < sceneGroupsName.Count; _i++)
            {
                if (sceneGroupsName[_i] == _sceneName)
                {
                    sceneGroups[_i] = _file;
                    _isSaved        = true;
                    break;
                }
            }

            if (!_isSaved)
            {
                sceneGroupsName.Add(_sceneName);
                sceneGroups.Add(_file);
            }
        }
    }
示例#20
0
 public override void onSet(string s)
 {
     value = SettingsManager.GetColourGroup(s);
     GetComponent <UnityEngine.UI.Image>().color = value.Colour;
     base.onSet(s);
 }
        /// <summary>
        /// 返回预定义的几种颜色
        /// </summary>
        /// <param name="colorGroup">预定义颜色</param>
        /// <returns></returns>
        private static MColor[] GetPredefinedColor(ColorGroup colorGroup)
        {
            List<MColor> retVal = new List<MColor>();

            switch (colorGroup)
            {
                case ColorGroup.W3C16:
                    foreach (string[] var in ColorDefined.GetW3C16Color())
                    {
                        retVal.Add(new MColor(var[1], ColorTranslator.FromHtml(var[0])));
                    }
                    break;
                case ColorGroup.Safe216:
                    foreach (string var in ColorDefined.GetSafe216Color())
                    {
                        retVal.Add(new MColor(var, ColorTranslator.FromHtml(var)));
                    }
                    break;
                case ColorGroup.IE4_PreNamed:
                    foreach (string[] var in ColorDefined.GetIE4_PreNamedColor())
                    {
                        retVal.Add(new MColor(var[1], ColorTranslator.FromHtml(var[0])));
                    }
                    break;
                case ColorGroup.WIN:
                    foreach (string var in ColorDefined.GetWINColor())
                    {
                        retVal.Add(new MColor(var, Color.FromName(var)));
                    }
                    break;
            }

            return retVal.ToArray();
        }
示例#22
0
    public void Init(int suitId,
                     int num,
                     bool isDressOn,
                     bool breath = false)
    {
        if (!isDressOn)
        {
            num = 0;
        }

        for (var i = 0; i < activePoints.Length; i++)
        {
            activePoints[i].SafeSetActive(i < num);
        }

        foreach (var go in attributeList)
        {
            GameObject.Destroy(go);
        }

        attributeList.Clear();

        if (suitId <= 0)
        {
            Root.SafeSetActive(false);
            return;
        }

        var suitInfo = ConfigManager.Get <SuitInfo>(suitId);

        if (null == suitInfo)
        {
            Root.SafeSetActive(false);
            return;
        }
        Root.SafeSetActive(true);

        Util.SetText(suitName, $"{ConfigText.GetDefalutString(suitInfo.nameId)}({num}/3)");

        for (var i = 0; i < suitInfo.effectDescs.Length; i++)
        {
            var t = group.AddNewChild(templete);
            t.SafeSetActive(true);
            attributeList.Add(t.gameObject);
            var text = t?.GetComponent <Text>("content");
            Util.SetText(text, suitInfo.effectDescs[i]);
            if (text)
            {
                text.color = ColorGroup.GetColor(ColorManagerType.SuitActive, i < num && isDressOn);
            }

            Util.SetText(t?.GetComponent <Text>("type"),
                         Util.Format(ConfigText.GetDefalutString(TextForMatType.SublimationUI, 0), i + 1));

            var skillIconRoot = t?.GetComponent <Transform>("skill");
            if (null != skillIconRoot)
            {
                //不显示技能图标了
                skillIconRoot.SafeSetActive(false /*suitInfo.skillEffects[i].Length > 0*/);
                if (skillIconRoot.gameObject.activeInHierarchy)
                {
                    var skillInfo = ConfigManager.Get <SkillInfo>(suitInfo.skillEffects[i][0].skillId);
                    AtlasHelper.SetSkillIcon(skillIconRoot.GetComponent <Transform>("frame/icon"), skillInfo?.skillIcon);
                }
            }

            if (!isDressOn)
            {
                continue;
            }

            var tweens = t.GetComponentsInChildren <TweenBase>();
            if (null == tweens || tweens.Length == 0)
            {
                continue;
            }
            if (i == num - 1 && breath)
            {
                for (var index = 0; index < tweens.Length; index++)
                {
                    tweens[index].enabled = true;
                    tweens[index].Play();
                }
            }
            else
            {
                for (var index = 0; index < tweens.Length; index++)
                {
                    tweens[index].enabled = false;
                }
            }
        }
    }
示例#23
0
 /// <summary>
 /// Returns the baseline color index within a particular <see cref="ColorGroup"/>.
 /// </summary>
 /// <param name="group">A <see cref="ColorGroup"/> value.</param>
 /// <returns>The baseline (level = 0) color index value for the given <see cref="ColorGroup"/>.</returns>
 public int GroupToColorIndex(ColorGroup group)
 {
     return(GroupToColorIndex(group, 0));
 }
示例#24
0
 public void RemoveTransformFromColorGroup(ColorGroup group, RectTransform transToRemove) {
     switch (group) {
         case ColorGroup.Primary:
             if (!PrimaryColorObjects.Remove(transToRemove))
                 Debug.Log("Didn't Find Primary! " + transToRemove);
             break;
         case ColorGroup.Secondary:
             if (!SecondaryColorObjects.Remove(transToRemove))
                 Debug.Log("Didn't Find Secondary! " + transToRemove);
             break;
         case ColorGroup.Tertiary:
             TertiaryColorObjects.Remove(transToRemove);
             break;
         case ColorGroup.WarmSupport:
             WarmSupportObjects.Remove(transToRemove);
             break;
         case ColorGroup.CoolSupport:
             CoolSupportObjects.Remove(transToRemove);
             break;
         default:
             Debug.Log("ERROR - Not a valid color group!");
             return;
     }
 }
示例#25
0
 /// <summary>
 /// Returns the baseline <see cref="Color"/> within a particular <see cref="ColorGroup"/>.
 /// </summary>
 /// <param name="group">A <see cref="ColorGroup"/> value.</param>
 /// <returns>The baseline (level = 0) <see cref="Color"/> for the given <see cref="ColorGroup"/>.</returns>
 public Color GroupToColor(ColorGroup group)
 {
     return GroupToColor(group, 0);
 }
示例#26
0
    public void AddRectTransformToColorGroup(ColorGroup group, RectTransform transToAdd) {
        int color = 0;
        switch (group) {
            case ColorGroup.Primary:
                PrimaryColorObjects.Add(transToAdd);
                color = 0;
                break;
            case ColorGroup.Secondary:
                SecondaryColorObjects.Add(transToAdd);
                color = 1;
                break;
            case ColorGroup.Tertiary:
                TertiaryColorObjects.Add(transToAdd);
                color = 2;
                break;
            case ColorGroup.WarmSupport:
                WarmSupportObjects.Add(transToAdd);
                color = 3;
                break;
            case ColorGroup.CoolSupport:
                CoolSupportObjects.Add(transToAdd);
                color = 4;
                break;
            default:
                return;
        }

        if(transToAdd.GetComponent<Image>())
        	transToAdd.GetComponent<Image>().color = new Color(Colors[currentColorGroup][color].r,Colors[currentColorGroup][color].g,Colors[currentColorGroup][color].b,transToAdd.GetComponent<Image>().color.a);
        else if (transToAdd.GetComponent<Text>())
        	transToAdd.GetComponent<Text>().color = new Color(Colors[currentColorGroup][color].r,Colors[currentColorGroup][color].g,Colors[currentColorGroup][color].b,transToAdd.GetComponent<Text>().color.a);
    }
示例#27
0
 /// <summary>
 /// Returns the baseline color index within a particular <see cref="ColorGroup"/>.
 /// </summary>
 /// <param name="group">A <see cref="ColorGroup"/> value.</param>
 /// <returns>The baseline (level = 0) color index value for the given <see cref="ColorGroup"/>.</returns>
 public int GroupToColorIndex(ColorGroup group)
 {
     return GroupToColorIndex(group, 0);
 }
示例#28
0
    public void Split()
    {
        Color    originalColor = Color.white;
        Renderer originalRend  = this.GetComponent <Renderer>();

        if (originalRend != null)
        {
            originalColor = originalRend.material.color;
        }



        //0-R, 1-B, 2-G
        string     colorName = "";
        ColorGroup group     = ColorGroup.RED;

        for (int i = 0; i < 3; i++)
        {
            Color splitColor = originalColor;
            switch (i)
            {
            case 0:
                colorName = "Red";
                if (originalColor.r == 0)
                {
                    continue;
                }
                splitColor.b = 0;
                splitColor.g = 0;
                group        = ColorGroup.RED;
                break;

            case 1:
                colorName = "Green";
                if (originalColor.g == 0)
                {
                    continue;
                }
                splitColor.b = 0;
                splitColor.r = 0;
                group        = ColorGroup.GREEN;
                break;

            case 2:
                colorName = "Blue";
                if (originalColor.b == 0)
                {
                    continue;
                }
                splitColor.r = 0;
                splitColor.g = 0;
                group        = ColorGroup.BLUE;
                break;
            }
            GameObject fragment = CreateFragment(splitColor, LayerMask.NameToLayer(colorName), colorName);

            ConvergenceManager.Instance.RegisterObject(fragment, group);
        }

        originalRend.enabled = false;
    }
 public void Assign(ColorGroup c)
 {
     cG = c;
     image.color = cG.Colour;
     ifield.text = cG.Name;
 }
示例#30
0
    public void Refresh()
    {
        if (Task.Task == null)
        {
            return;
        }

        var ct = ConfigManager.Get <ConfigText>((int)TextForMatType.PetTrainText);

        Util.SetText(title, Task.Task.name);
        if (Task.LimitCount == 0)
        {
            Util.SetText(count, ConfigText.GetDefalutString(TextForMatType.PetTrainText, 24));
        }
        else
        {
            Util.SetText(count, Util.Format(ct[8], $"{Task.LimitCount - Task.Count}/{Task.LimitCount}"));
        }
        count.color = ColorGroup.GetColor(ColorManagerType.TimesUseUp, Task.TimesUseUp);
        Util.SetText(levelLimit, Util.Format(ct[7], Task.Task.minlv));
        AtlasHelper.SetPetMission(taskIcon, Task.Task.icon);
        Util.ClearChildren(itemGroup);
        for (var i = 0; i < Task.Task.previewRewardItemId.Length; i++)
        {
            var itemData = Task.Task.previewRewardItemId[i];
            var propInfo = ConfigManager.Get <PropItemInfo>(itemData);
            if (propInfo == null)
            {
                continue;
            }
            var t = itemGroup.AddNewChild(item);
            t.SafeSetActive(true);
            Util.SetItemInfoSimple(t, propInfo);

            var button = t.GetComponent <Button>();
            if (button)
            {
                button.onClick.AddListener(() => Module_Global.instance.UpdateGlobalTip((ushort)itemData, true));
            }
        }

        speedUp.SafeSetActive(Task.State == (int)PetTaskState.Training);
        cancel.SafeSetActive(Task.State == (int)PetTaskState.Training);
        hourglass.SafeSetActive(Task.State == (int)PetTaskState.Training);
        gotAward.SafeSetActive(Task.State == (int)PetTaskState.Success || Task.State == (int)PetTaskState.Defeat);
        startTrain.SafeSetActive(Task.State == (int)PetTaskState.None && !Task.TimesUseUp);
        completeImage.SafeSetActive(Task.State == (int)PetTaskState.Success);
        defeatImage.SafeSetActive(Task.State == (int)PetTaskState.Defeat);
        over.SafeSetActive(Task.TimesUseUp && Task.State == (int)PetTaskState.None);

        if (over.gameObject.activeInHierarchy)
        {
            Util.SetText(overText, ConfigText.GetDefalutString(TextForMatType.PetTrainText, Task.IsWeekTask ? 29 : 26));
        }

        if (Task.State == (int)PetTaskState.None && !Task.TimesUseUp)
        {
            var a = Task.Task.costTime;
            var t = new TimeSpan(a * TimeSpan.TicksPerMinute);
            Util.SetText(timeremaining, Util.Format(ct[6], $"{(int)t.TotalHours:00}:{t.Minutes:00}:{t.Seconds:00}"));
        }
        else
        {
            Util.SetText(timeremaining, string.Empty);
        }

        prtListRoot.SafeSetActive(Task.GetTrainingPetCount() > 0);
        for (var i = 0; i < petList.Length; i++)
        {
            var petId   = Task.GetTrainingPet(i);
            var petInfo = petId != 0 ? Module_Pet.instance.GetPet(petId) : null;
            if (petId == 0 || petInfo == null)
            {
                petList[i].SafeSetActive(false);
            }
            else
            {
                AtlasHelper.SetPetIcon(petList[i], petInfo.UpGradeInfo.icon);
                petList[i].SafeSetActive(true);
            }
        }

        taskTypeColor.color = ColorGroup.GetColor(ColorManagerType.TaskType, Task.Task.type);
    }