Beispiel #1
0
        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();
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        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();
                }
            }
        }