void CheckForVictory() { bool victory = true; bool allMatch = true; bool[] checkedOff = new bool[experiments.Count]; int numCheckedOff = 0; int[,] values = new int[experiments.Count, geneMap.Length]; int counter = 0; for (int i = 0; i < experiments.Count; i++) { foreach (int j in experiments[i].dna.GetGeneValues()) { values [i, counter++] = j; } counter = 0; } if (goalGeneMapping.Length == 0 && GetNumOfExps() > 0) { victory = false; } else { for (int i = 0; i < goalGeneMapping.Length; i++) { for (int j = 0; j < experiments.Count; j++) { if (checkedOff [j]) { continue; } allMatch = true; for (int k = 0; k < geneMap.Length; k++) { if (values [j, k] != goalGeneMapping [i].mapList [k]) { allMatch = false; break; } } if (allMatch) { checkedOff [j] = true; numCheckedOff++; break; } } if (numCheckedOff == i) { victory = false; break; } } } if (victory) { state = SocState.Finished; UI.ReportFinished(); } else { state = SocState.Sleeping; } //print ("Victorious: " + victory); }