Ejemplo n.º 1
0
    private void LoadLayeredSpriteSets()
    {
        var spriteSetList = Resources.LoadAll <CreatureSpriteCollection>("Creatures");

        foreach (var spriteSet in spriteSetList)
        {
            MatPairStruct raceID = new MatPairStruct(-1, -1);
            //With generated creatures, the same sprite can potentially match more than one creature.
            var raceRawList = GeneratedCreatureTranslator.GetCreatureRaw(spriteSet.race);
            if (raceRawList == null)
            {
                continue;
            }
            foreach (var raceRaw in raceRawList)
            {
                raceID = new MatPairStruct(raceRaw.index, -1);
                if (!string.IsNullOrEmpty(spriteSet.caste))
                {
                    var casteRaw = raceRaw.caste.Find(x => x.caste_id == spriteSet.caste);
                    if (casteRaw == null)
                    {
                        continue;
                    }
                    raceID = new MatPairStruct(raceID.Race, casteRaw.index);
                }
                if (!spriteSets.ContainsKey(raceID.Race))
                {
                    spriteSets[raceID.Race] = new ProfessionDictionary();
                }
                if (!spriteSets[raceID.Race].ContainsKey(spriteSet.profession))
                {
                    spriteSets[raceID.Race][spriteSet.profession] = new SpecialDictionary();
                }
                if (!spriteSets[raceID.Race][spriteSet.profession].ContainsKey(spriteSet.special))
                {
                    spriteSets[raceID.Race][spriteSet.profession][spriteSet.special] = new CasteDictionary();
                }
                spriteSets[raceID.Race][spriteSet.profession][spriteSet.special][raceID.Caste] = spriteSet;
            }
        }
    }
    private IEnumerator LoadLayeredSpriteSets()
    {
        if (mainProgressBar != null)
        {
            mainProgressBar.SetProgress("Loading detailed creature sprites...");
        }
        var spriteSetList = Resources.LoadAll <CreatureSpriteCollection>("Creatures");
        var stopWatch     = System.Diagnostics.Stopwatch.StartNew();
        int spriteNum     = 0;

        foreach (var spriteSet in spriteSetList)
        {
            if (subProgressBar != null)
            {
                subProgressBar.SetProgress(spriteNum / (float)spriteSetList.Length, spriteSet.race + ":" + spriteSet.caste + ":" + spriteSet.profession + ":" + spriteSet.special);
            }
            spriteNum++;
            //Correct equipment names with missing prefixes.
            foreach (var layer in spriteSet.spriteLayers)
            {
                string token = layer.token;
                if (!token.Contains("/"))
                {
                    var tokenParts = layer.token.Split('_');
                    if (tokenParts.Length == 3 && tokenParts[0] == "ITEM")
                    {
                        token = tokenParts[1] + "/" + token;
                    }
                }
                layer.token = token;
            }

            MatPairStruct raceID = new MatPairStruct(-1, -1);
            //With generated creatures, the same sprite can potentially match more than one creature.
            var raceRawList = GeneratedCreatureTranslator.GetCreatureRaw(spriteSet.race);
            if (raceRawList == null)
            {
                continue;
            }
            foreach (var raceRaw in raceRawList)
            {
                raceID = new MatPairStruct(raceRaw.index, -1);
                if (!string.IsNullOrEmpty(spriteSet.caste))
                {
                    var casteRaw = raceRaw.caste.Find(x => x.caste_id == spriteSet.caste);
                    if (casteRaw == null)
                    {
                        continue;
                    }
                    raceID = new MatPairStruct(raceID.Race, casteRaw.index);
                }
                if (!spriteSets.ContainsKey(raceID.Race))
                {
                    spriteSets[raceID.Race] = new ProfessionDictionary();
                }
                if (!spriteSets[raceID.Race].ContainsKey(spriteSet.profession))
                {
                    spriteSets[raceID.Race][spriteSet.profession] = new SpecialDictionary();
                }
                if (!spriteSets[raceID.Race][spriteSet.profession].ContainsKey(spriteSet.special))
                {
                    spriteSets[raceID.Race][spriteSet.profession][spriteSet.special] = new CasteDictionary();
                }
                spriteSets[raceID.Race][spriteSet.profession][spriteSet.special][raceID.Caste] = spriteSet;
            }
            if (stopWatch.ElapsedMilliseconds > ContentLoader.LoadFrameTimeout)
            {
                yield return(null);

                stopWatch.Reset();
                stopWatch.Start();
            }
        }
    }