Example #1
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            if (comboBox1.SelectedItem != null)
            {
                TriadCard card = comboBox1.SelectedItem as TriadCard;

                // check modified numbers
                for (int idx = 0; idx < 4; idx++)
                {
                    if (card.Sides[idx] != cardState.sideNumber[idx])
                    {
                        ImageHashData digitPattern = new ImageHashData()
                        {
                            type = EImageHashType.CardNumber, previewBounds = cardState.sideInfo[idx].scanBox, previewContextBounds = cardState.scanBox, isKnown = true
                        };
                        digitPattern.CalculateHash(cardState.sideInfo[idx].hashValues);
                        digitPattern.ownerOb = card.Sides[idx];

                        PlayerSettingsDB.Get().RemoveKnownHash(digitPattern);

                        if (card.Sides[idx] != cardState.sideInfo[idx].matchNum)
                        {
                            PlayerSettingsDB.Get().AddKnownHash(digitPattern);
                            cardState.sideInfo[idx].hasOverride = true;
                        }

                        cardState.sideNumber[idx] = card.Sides[idx];
                        cardState.card            = card;
                        cardState.failedMatching  = false;
                        DialogResult = DialogResult.OK;
                    }
                }

                // check multicard hash
                if (comboBox1.Items.Count > 1 &&
                    cardState.cardImageHash != null &&
                    cardState.card != card)
                {
                    cardState.cardImageHash.ownerOb = card;

                    PlayerSettingsDB.Get().RemoveKnownHash(cardState.cardImageHash);
                    PlayerSettingsDB.Get().AddKnownHash(cardState.cardImageHash);

                    cardState.card = card;
                    DialogResult   = DialogResult.OK;
                }
            }

            Close();
        }
Example #2
0
        private int ParseCactpotCircle(FastBitmapHSV bitmap, Rectangle circleBox, string debugName)
        {
            float[] values = ExtractCirclePattern(bitmap, circleBox);
            int     result;

            ImageHashData pattern = new ImageHashData()
            {
                type = EImageHashType.Cactpot, previewBounds = circleBox, isKnown = true
            };

            pattern.CalculateHash(values);

            // allow overwrites in case there is a user defined value, must be exact match
            ImageHashData overridePattern = ImageHashDB.Get().FindExactMatch(pattern);

            if (overridePattern != null)
            {
                result = (int)overridePattern.ownerOb;
            }
            else
            {
                result         = classifierCactpot.Calculate(values, out float DummyPct);
                pattern.isAuto = true;
            }

            pattern.ownerOb = result;
            screenAnalyzer.AddImageHash(pattern);

            Rectangle previewBounds = new Rectangle(circleBox.X + circleBox.Width, circleBox.Y, 8, 16);

            debugHashes.Add(new ImageUtils.HashPreview()
            {
                hashValues = values, bounds = previewBounds
            });
            debugShapes.Add(GetCirclePatternBounds(circleBox));

            return(result);
        }