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); }
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);; }