Ejemplo n.º 1
0
    public bool Equals(Object comparedObject)
    {
        SockFeature comparedFeature = (SockFeature)comparedObject;

        if (comparedFeature.SockFeatureType == SockFeatureType)
        {
            switch (SockFeatureType)
            {
            case FeatureType.single:
            {
                //TODO functionality here
                return(false);
            }

            case FeatureType.multi:
            {
                if (FeatureColor != comparedFeature.FeatureColor)
                {
                    return(false);
                }
                //if(SockFeaturePointmap.Count == comparedFeature.SockFeaturePointmap.Count)
                //{
                //    //HOW ARE YOU SORTING??
                //    /*
                //    //now this is useless because pointmaps are different for socks from the same pair
                //    SockFeaturePointmap.Sort();
                //    comparedFeature.SockFeaturePointmap.Sort();
                //    for (int i = 0; i < SockFeaturePointmap.Count; i++)
                //    {
                //        if (comparedFeature.SockFeaturePointmap[i] != SockFeaturePointmap[i]) return false;
                //    }
                //    */

                //}
                if (comparedFeature.FeatureSprite == FeatureSprite)
                {
                    return(true);
                }
                return(false);
            }

            case FeatureType.zigzag:
            {
                //TODO functionality here
                return(false);
            }

            default:
            {
                return(false);
            }
            }
        }
        return(false);
    }
Ejemplo n.º 2
0
    public GameObject[] GenerateSockPile(int N)
    {
        List <GameObject> result = new List <GameObject>();
        //List<>
        //number of unique patterns
        int PATTERNS = 1 + (int)N / 2;
        int FEATURES = 1 + (int)Mathf.Pow(N, 1 / 3);
        int COLORS   = 1 + (int)Mathf.Pow(N, 1 / 3);
        int SHAPES   = 1 + (int)Mathf.Pow(N, 1 / 3);

        for (int s = 0; s < N; s++)
        {
            //TODO select these at random
            Sprite SockShape = SockBaseList[0];

            List <Color> remaingColors = new List <Color>(ColorList);
            Color        SockColor     = remaingColors[Mathf.Clamp(Random.Range(0, COLORS), 0, remaingColors.Count - 1)];
            remaingColors.Remove(SockColor);
            Color FeatureColor = remaingColors[Mathf.Clamp(Random.Range(0, COLORS), 0, remaingColors.Count - 1)];

            Sprite  FeatureSprite = FeatureList[Mathf.Clamp(Random.Range(0, FEATURES), 0, FeatureList.Count - 1)];
            Pattern SockPattern   = PatternList[Mathf.Clamp(Random.Range(0, PATTERNS), 0, PatternList.Count - 1)];

            GameObject newSock = new GameObject();
            newSock.SetActive(false);
            newSock.transform.position = new Vector3(0, 0, 0);

            SpriteRenderer SockRenderer = newSock.AddComponent <SpriteRenderer>();
            SockRenderer.sprite          = SockShape;
            SockRenderer.color           = Color.white;
            SockRenderer.maskInteraction = SpriteMaskInteraction.None;
            SockRenderer.sortingOrder    = 1;

            Sock SockSock = newSock.AddComponent <Sock>();

            SockFeature SockSockFeature = newSock.AddComponent <SockFeature>();
            SockSockFeature.FeatureSprite = FeatureSprite;

            newSock.AddComponent <SkarpetkaController>();

            //TODO maxW i maxH
            SockSockFeature.FEATURE_NUMBER = 1;
            //TODO kiedys to sie losuje
            SockSockFeature.SockFeatureType = FeatureType.multi;
            //TODO FeatureAreaW & H
            SockSockFeature.DEFAULT_PATTERN_SIZE = 100;
            SockSockFeature.FeatureColor         = FeatureColor;

            SockSockFeature.SetSockFeaturePointmap(SockPattern.points);

            GameObject SockBase = new GameObject();
            SockBase.transform.position = new Vector3(0, 0, 0);

            SpriteRenderer SockBaseRenderer = SockBase.AddComponent <SpriteRenderer>();

            SockBase.transform.SetParent(newSock.transform);
            SockBaseRenderer.sprite = SockShape;
            SockBaseRenderer.color  = Color.white;

            SockSock.MultiFeature     = SockSockFeature;
            SockSock.SockColor        = SockColor;
            SockSock.SockBaseRenderer = SockBaseRenderer;

            //GameObject newSpriteMask = new GameObject();
            //newSpriteMask.AddComponent<SpriteMask>();
            //newSpriteMask.transform.SetParent(newSock.transform);
            //newSpriteMask.GetComponent<SpriteMask>().sprite = SockShape;

            GameObject newPairedSock = Instantiate(newSock);
            GameObject betterNewSock = Instantiate(newSock);
            Destroy(newSock);
            newSock = betterNewSock;

            newSock.transform.SetParent(SockParent.transform);
            newPairedSock.transform.SetParent(SockParent.transform);

            newSock.name       = "Sock" + (result.Count / 2 + 1) + "A";
            newPairedSock.name = "Sock" + (result.Count / 2 + 1) + "B";

            result.Add(newSock);
            result.Add(newPairedSock);
        }

        GameObject[] arr = new GameObject[2 * N];
        for (int i = 0; i < 2 * N; i++)
        {
            int j = Random.Range(0, 2 * N - i);
            arr[i] = result[j];
            result.RemoveAt(j);
        }
        return(arr);;
    }