private void Start() { SuitCombos sc = GameDatabase.Instance.GetComponent <SuitCombos>(); SuitVariants = sc.StockCombos; Debug.Log("[SuitedAndBooted]: Loaded " + sc.StockCombos.Count + " stock suit variants"); for (int i = 0; i < sc.ExtraCombos.Count; i++) { SuitVariants.Add(sc.ExtraCombos.ElementAt(i)); } Debug.Log("[SuitedAndBooted]: Loaded " + sc.ExtraCombos.Count + " modded suit variants"); ConfigNode baseNode = GameDatabase.Instance.GetConfigNode("SuitedAndBooted/SUITEDANDBOOTED"); ConfigNode[] ruleNodes = baseNode.GetNodes("RULE"); for (int i = 0; i < ruleNodes.Length; i++) { try { SuitRule sr = new SuitRule(ruleNodes.ElementAt(i)); if (Rules.ContainsKey(sr.Priority)) { Debug.Log("[SuitManager]: WARNING: Multiple rules defined with priority " + sr.Priority + " only one will be applied"); Debug.Log("[SuitManager]: Duplicate Values: " + sr.Name + " + " + Rules[sr.Priority].Name); } Rules.Add(sr.Priority, sr); } catch (Exception ex) { Debug.Log("[SuitManager]: " + ex); } } RunRules(); }
/// <summary> /// Filters this range by specific valid suit groups and includes /// only those hole cards that match the filter. /// </summary> /// <param name="suitFilter">A 16-bit mask for all possible suit /// combinations to filter for</param> public void FilterBySuits(SuitCombos suitFilter) { var validSuitCombos = new List <(int high, int low)>(); int filter = (int)suitFilter; for (int i = 0; i < 4; i++) { int row = filter & 0b1111; validSuitCombos.AddRange(Hand.Bin.GetAllBitIndices((ulong)row).Select(b => (i, b))); filter >>= 4; } _holeCards.IntersectWith(_holeCards .Select(hc => new HoleCards(hc)) .Where(hc => validSuitCombos.Any(vc => vc.high == hc.HighCard.Suit && vc.low == hc.LowCard.Suit)) .Select(hc => hc.Binary)); }
public override void SetVisible(bool newValue) { base.SetVisible(newValue); if (newValue) { // Get the suit combos suitCombos = GameDatabase.Instance.GetComponent <SuitCombos>(); List <SuitCombo> maleSuits = new List <SuitCombo>(); List <SuitCombo> femaleSuits = new List <SuitCombo>(); // Get stock suits SuitCombo suitCombo; int count = suitCombos.StockCombos.Count; for (int index = 0; index < count; index++) { suitCombo = suitCombos.StockCombos[index]; if (suitCombo.gender.ToLower() == "male") { maleSuits.Add(suitCombo); } else { femaleSuits.Add(suitCombo); } } // Get extra suits count = suitCombos.ExtraCombos.Count; for (int index = 0; index < count; index++) { suitCombo = suitCombos.ExtraCombos[index]; if (suitCombo.gender.ToLower() == "male") { maleSuits.Add(suitCombo); } else { femaleSuits.Add(suitCombo); } } maleSuitCombos = maleSuits.ToArray(); femaleSuitCombos = femaleSuits.ToArray(); // Get wardrobe icons getWardrobeIcons(); for (int index = 0; index < maleSuitCombos.Length; index++) { Debug.Log("[WBIWardrobeGUI] - " + maleSuitCombos[index].name + " " + Localizer.Format(maleSuitCombos[index].displayName)); } for (int index = 0; index < femaleSuitCombos.Length; index++) { Debug.Log("[WBIWardrobeGUI] - " + femaleSuitCombos[index].name + " " + Localizer.Format(femaleSuitCombos[index].displayName)); } // Get crew list crewList = part.protoModuleCrew; if (crewList != null && crewList.Count > 0) { selectedCrew = crewList[0]; selectedCombo = suitCombos.GetCombo(selectedCrew.ComboId); updateSuitCombos(); } } }