示例#1
0
    public Species(string adjective, Sprite[] portraitRange, Gradient colorRange)
    {
        this.adjective     = adjective;
        this.portraitRange = portraitRange;
        this.colorRange    = colorRange;
        float rand = UnityEngine.Random.Range(0, 1.0f);

        if (rand < 0.85f)
        {
            genders = new Gender[] {
                Gender.Male,
                Gender.Female,
                Gender.Nonbinary,
                Gender.None
            };
        }
        else if (rand < 0.98)
        {
            genders = new Gender[] {
                Gender.Female,
                Gender.None
            };
        }
        else
        {
            genders = new Gender[] {
                Gender.Male,
                Gender.Female,
                Gender.ThirdGender,
                Gender.Nonbinary,
                Gender.None
            };
        }
        genericPortrait = LayeredSpriteGenerator.GenerateSpeciesSprite(this);
    }
示例#2
0
 public void RefreshDisplay(LayeredColoredSprite layeredColoredSprite)
 {
     imagePool.ReleaseAll();
     for (int i = 0; i < this.layeredColoredSprite.Sprites.Length; i++)
     {
         Image image = imagePool.GetGameObject().GetComponent <Image>();
         image.color          = this.layeredColoredSprite.Colors[i];
         image.overrideSprite = this.layeredColoredSprite.Sprites[i];
     }
 }
示例#3
0
    public static LayeredColoredSprite GenerateSpeciesSprite(Species s)
    {
        List <List <Sprite> > spriteLayers = new List <List <Sprite> >();

        spriteLayers.Add(new List <Sprite>(s.portraitRange));
        LayeredColoredSprite toReturn = new LayeredColoredSprite(1);

        toReturn.SetSprite(0, spriteLayers[0][Random.Range(0, spriteLayers[0].Count)]);
        toReturn.SetColor(0, s.SpeciesColor()[Random.Range(0, s.SpeciesColor().Length)]);
        return(toReturn);
    }
示例#4
0
 public void SetSpecies(Species s)
 {
     portrait = new LayeredColoredSprite(1);
     portraitDisplay.DisplayLayeredColoredSprite(portrait);
     layer1Sprites.Clear();
     layer1Sprites.AddRange(s.portraitRange);
     layerColors.Clear();
     layerColors.AddRange(s.SpeciesColor());
     layer1Index = UnityEngine.Random.Range(0, layer1Sprites.Count - 1);
     color1Index = UnityEngine.Random.Range(0, layerColors.Count - 1);
     CycleLayer();
     CycleColor();
 }
示例#5
0
 public void DisplayLayeredColoredSprite(LayeredColoredSprite layeredColoredSprite)
 {
     if (imagePool == null)
     {
         imagePool = new GameObjectPool(imagePrefab, root);
     }
     imagePool.ReleaseAll();
     if (layeredColoredSprite != null)
     {
         if (this.layeredColoredSprite != null)
         {
             this.layeredColoredSprite.OnLayeredSpriteChangeEvent -= RefreshDisplay;
         }
         this.layeredColoredSprite = layeredColoredSprite;
         RefreshDisplay(this.layeredColoredSprite);
         this.layeredColoredSprite.OnLayeredSpriteChangeEvent += RefreshDisplay;
     }
 }
示例#6
0
    private void Start()
    {
        logo = new LayeredColoredSprite(3);
        logoDisplay.DisplayLayeredColoredSprite(logo);
        layer1Sprites = SpriteLoader.GetAllSymbolParts("Back");
        layer2Sprites = SpriteLoader.GetAllSymbolParts("Mid");
        layer3Sprites = SpriteLoader.GetAllSymbolParts("Front");

        layer1Index = UnityEngine.Random.Range(0, layer1Sprites.Count - 1);
        layer2Index = UnityEngine.Random.Range(0, layer2Sprites.Count - 1);
        layer3Index = UnityEngine.Random.Range(0, layer3Sprites.Count - 1);
        color1Index = UnityEngine.Random.Range(0, layerColors.Count - 1);
        color2Index = UnityEngine.Random.Range(0, layerColors.Count - 1);
        color3Index = UnityEngine.Random.Range(0, layerColors.Count - 1);

        CycleLayer(1);
        CycleLayer(2);
        CycleLayer(3);
        CycleColor(1);
        CycleColor(2);
        CycleColor(3);
    }
示例#7
0
    public static LayeredColoredSprite[] GenerateLayeredSprites(List <string> layerNames, List <Color> layerColors, int number = 1)
    {
        List <List <Sprite> > spriteLayers = new List <List <Sprite> >();

        foreach (string s in layerNames)
        {
            List <Sprite> sprites = SpriteLoader.GetAllSymbolParts(s);
            if (sprites != null && sprites.Count > 0)
            {
                spriteLayers.Add(sprites);
            }
        }
        LayeredColoredSprite[] toReturn = new LayeredColoredSprite[number];
        for (int i = 0; i < number; i++)
        {
            toReturn[i] = new LayeredColoredSprite(spriteLayers.Count);
            for (int j = 0; j < spriteLayers.Count; j++)
            {
                toReturn[i].SetSprite(j, spriteLayers[j][Random.Range(0, spriteLayers[j].Count)]);
                toReturn[i].SetColor(j, layerColors[Random.Range(0, layerColors.Count)]);
            }
        }
        return(toReturn);
    }
示例#8
0
 public void PortraitGeneratorChange(LayeredColoredSprite portrait)
 {
     player.Portrait = portrait;
 }