Exemplo n.º 1
0
        /// <summary>
        /// Check if color fits the provided PointColor
        /// </summary>
        private static bool isPixelColorFitsGameColor(Color color, PointColor pointColor)
        {
            switch (pointColor)
            {
            case PointColor.BrighterThanDark:
                return(ScreenParser.isPixelBrighterThanDark(color));

            case PointColor.BrightnessMax15:
                return(ScreenParser.isPixelMaxBrightless15(color));

            case PointColor.Black:
                return(ScreenParser.isPixelBlack(color));

            case PointColor.PitchBlack:
                return(ScreenParser.isPixelPitchBlack(color));

            case PointColor.DarkBlue:
                return(ScreenParser.isPixelVeryDarkBlue(color));

            case PointColor.DarkGrey:
                return(ScreenParser.isPixelDarkGrey(color));

            case PointColor.VeryDarkGrey:
                return(ScreenParser.isPixelVeryDarkGrey(color));

            case PointColor.DarkOrVeryDarkGrey:
                return(ScreenParser.isPixelDarkOrVeryDarkGrey(color));

            case PointColor.Red:
                return(ScreenParser.isPixelRed(color));

            case PointColor.DarkAndNotRed:
                return(ScreenParser.isPixelDarkAndNotRed(color));

            case PointColor.DbdLogoColor:
                return(ScreenParser.isPixelOfDbdLogoColor(color));

            case PointColor.White:
                return(ScreenParser.isPixelWhite(color));

            case PointColor.NotWhite:
                return(!ScreenParser.isPixelWhite(color));

            case PointColor.FontColor:
                return(ScreenParser.isPixelOfFontColor(color));

            case PointColor.NotFontColor:
                return(!ScreenParser.isPixelOfFontColor(color));

            case PointColor.Error:
            default:
                throw new Exception("Wrong color");
            }
        }
Exemplo n.º 2
0
        public static void updateEndgameScoreboardState(bool bSuppressStateDebugCheck = false)
        {
            // Only makes sense in this state
            if (!bSuppressStateDebugCheck)
            {
                Debug.Assert(getState() == State.Endgame_ScoreBoard);
            }

            // Player we are playing as (killer or survivor index)
            var selectedPlayer = ScreenParser.recognizeScoreboardSelectedPlayer(bSuppressStateDebugCheck);

            // Failed to recognize selected player this time? Leave the old value, maybe it succeeded previously
            if (selectedPlayer != PlayerIndex.Error)
            {
                scoreboardGameResult.setSelectedPlayerIndex(selectedPlayer);
            }

            // Make sure game type is save correctly, it shouldn't change here
            Dbg.assert(scoreboardGameResult.getGameType() == getGameType());


            // Recognize game result icons for all 4 survivors
            EndgameSurvivorIcon[] survivorGameResults = new EndgameSurvivorIcon[4];

            for (int surv = 0; surv <= 3; surv++)
            {
                survivorGameResults[surv] = ScreenParser.recognizeEndgameScoreboardSurvIcon((PlayerIndex)surv);

                // When we mouse-over perk description, result icons gets covered and can't be recornized
                // So, if we have an error while recognizing it, leave the last value
                if (survivorGameResults[surv] != EndgameSurvivorIcon.Error)
                {
                    scoreboardGameResult.setSurvivorIcon(surv, survivorGameResults[surv]);
                }
            }

            // Get Bloodpoints amounts
            for (int player = ( int )PlayerIndex.Survivor1; player <= ( int )PlayerIndex.Killer; player++)
            {
                int bpAmount = EndscoreBpDigitGfx.recognizePlayerBPNumber(( PlayerIndex )player);
                if (bpAmount != EndscoreBpDigitGfx.INVALID_BP_AMOUNT)
                {
                    scoreboardGameResult.setBpAmount(( PlayerIndex )player, bpAmount);
                }
            }

            // Debug
            Log.log(scoreboardGameResult.iconsToString());
        }
Exemplo n.º 3
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Log.log("Startup");

            Dbg.saveErrorImageToFile();

            Config.init();

            ScreenParser.initialize();

            Dbg.initialDiagnostics();

            Gfx.initialize();

            initPlaySoundsConfig();

            // Load stats
            StatSaver.load();

            initActions();

            // Load only after creating actions
            Config.load();

            setGuiStateFromConfigSettings();

            recalcStats();

            if (!Dbg.bDebug)
            {
                tab1.TabPages.RemoveAt(2);
            }


            //       Stats.addCurGameResult( new GameResult( PlayerIndex.Survivor1, EndgameSurvivorIcon.KilledSacrificed,
            //EndgameSurvivorIcon.KilledSacrificed, EndgameSurvivorIcon.KilledSacrificed,
            //EndgameSurvivorIcon.KilledSacrificed ) );



            wndPreview = new Preview(this);

            //var i = Image.FromFile(@"C:\temp\DBD\survivor_prelobby.jpg");
            //ScreenCapture.setScreenShot(new Bitmap(i));

            //picBox.Size = new Size(picBox.Width, picBox.Height);
            //picBox.SizeMode = PictureBoxSizeMode.Zoom;
        }
Exemplo n.º 4
0
        private static void updateSurvivorOrKillerEnteredLobbyState()
        {
            // Only makes sense in this state
            Debug.Assert(getState() == State.Lobby_SurvivorOrKiller);

            // All players have just entered lobby?
            bool bNewAllPlayersInLobby = ScreenParser.hasAllPlayersEnteredLobby();

            if (!bAllPlayersAreInTheLobby && bNewAllPlayersInLobby)
            {
                Actions.onAllPlayersEnteredGameLobby();
            }
            bAllPlayersAreInTheLobby = bNewAllPlayersInLobby;

            // All players clicked "Ready" and have red checkmarks?
            bool bNewAllPlayersReady = ScreenParser.hasAllPlayersClickedReady();

            if (!bAllPlayersClickedReady && bNewAllPlayersReady)
            {
                Actions.onAllPlayersClickedReady();
            }
            bAllPlayersClickedReady = bNewAllPlayersReady;
        }
Exemplo n.º 5
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            // Stop spamming debug msgs on error
            if (Dbg.bErrorMsg)
            {
                return;
            }



            //ScreenCapture.setDebugImageFile( @"C:\temp\DBD\problems\Screenshot_1.jpg" );
            //var bp11 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor1 );
            //var bp22 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor2 );
            //var bp33 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor3 );
            //var bp44 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor4 );
            //var bpKiller5 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Killer );

            //var v0 =ScreenParser.hasKillerCancelButton();
            //var bHasCrossplayIcon = hasCrossplayIcon();
            //var v = ScreenParser.hasReadyGfx();
            //var v1 = ScreenParser.hasUnGfx();
            //var v2 = ScreenParser.hasShopIcon();
            //var v3 = ScreenParser.hasSurvivorLookingForMatchText();
            //var v4 = ScreenParser.isAnyPlayerInLobbyOrPrelobby();
            //var v5 = Gfx.unknownErrorMsg.recognize();
            //var v6 = Gfx.overlayDarkBlueMsg.recognize();


            //var v = hasAllPlayersClickedReady();

            //StateManager.beforeAnyStateUpdates();

            this.Text = title + " " + stopWatch.Elapsed.ToString(@"hh\:mm\:ss");

            bool bSuccess = ScreenParser.tick();


            //var b = ScreenParser.hasAllPlayersEnteredLobby();

            //var player2 = ScreenParser.getScoreboardSelectedPlayer(true);

            //var icon2 = getEndgameScoreboardSurvIcon( player2 );



            //var jpgFiles = Directory.GetFiles( @"C:\Users\temp\OneDrive\Pictures\Screenshots\Wraith",
            //    "*.png", SearchOption.TopDirectoryOnly);

            //int numScoreboardFiles = 0;
            //foreach ( var jpgFile in jpgFiles )
            //{
            //    ScreenCapture.setDebugImageFile( jpgFile );
            //    ScreenCapture.makeGameScreenshot();

            //    if ( hasEndgameScoreboard() )
            //    {
            //        numScoreboardFiles++;

            //        //if ( jpgFile == "C:\\temp\\DBD\\1080p\\End-Game\\Scoreboard\\Killer DC 1080p.jpg" )
            //        //{
            //        //    //Dbg.bTest = true;
            //        //    Debugger.Break();
            //        //}

            //        var player = ScreenParser.recognizeScoreboardSelectedPlayer( true );

            //        Dbg.assert( player != PlayerIndex.Error );

            //        //var icon1 = ScreenParser.recognizeEndgameScoreboardSurvIcon( PlayerIndex.Survivor1 );
            //        //var icon2 = ScreenParser.recognizeEndgameScoreboardSurvIcon( PlayerIndex.Survivor2 );
            //        //var icon3 = ScreenParser.recognizeEndgameScoreboardSurvIcon( PlayerIndex.Survivor3 );
            //        //var icon4 = ScreenParser.recognizeEndgameScoreboardSurvIcon( PlayerIndex.Survivor4 );

            //        var bp1 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor1 );
            //        var bp2 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor2 );
            //        var bp3 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor3 );
            //        var bp4 = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Survivor4 );
            //        var bpKiller = EndscoreBpDigitGfx.recognizePlayerBPNumber( PlayerIndex.Killer );

            //        Dbg.assert( bp1 != -1 && bp2 != -1 && bp3 != -1 && bp4 != -1 && bpKiller != -1 );

            //        Log.log( numScoreboardFiles + " (" + jpgFile + ")\nSelectedPlayer: " + player.ToString() );
            //        //Log.log( "Icons1: " + icon1.ToString() + ", icon2: " + icon2.ToString() +
            //        //    ", icon3: " + icon3.ToString() + ", icon4: " + icon4.ToString() + "\n" );

            //        Log.log( "Bp1: " + bp1.ToString() + ", Bp2: " + bp2.ToString() +
            //             ", bp3: " + bp3.ToString() + ", bp4: " + bp4.ToString() +
            //             ", killer: " + bpKiller.ToString()  + "\n" );

            //        //Debug.Assert(icon1 != EndgameSurvivorIcon.Error && icon2 != EndgameSurvivorIcon.Error &&
            //        //    icon3 != EndgameSurvivorIcon.Error && icon4 != EndgameSurvivorIcon.Error);

            //        //Log.log(numScoreboardFiles + " (" + pngFile + ")\n" + ": \nSurvivor1: " + icon1.ToString() +
            //        //    "\nSurvivor2: " + icon2.ToString() + "\nSurvivor3: " +
            //        //    icon3.ToString() + "\nSurvivor4: " + icon4.ToString() +
            //        //    "\nKiller: " + icon5.ToString() );
            //    }
            //    //else
            //    //{
            //    //    Dbg.onError( "" );
            //    //    Log.log( "Not scoreboard: " + jpgFile );
            //    //}

            //}

            managePreviewWindow();

            if (!bSuccess || (!ScreenCapture.haveGameHwnd() && !ScreenCapture.haveDebugPicture()))
            {
                return;
            }


            //ScreenParser.parseScreenshot();
            var r = ScreenParser.bHasReadyButton;

            if (r)
            {
                label1.Text = "READY";
            }
            else
            {
                label1.Text = "no ready icon";
            }

            if (ScreenParser.bHasCrossplayIcon)
            {
                label2.Text = "CROSSPLAY ICON";
            }
            else
            {
                label2.Text = "no crossplay icon";
            }

            if (ScreenParser.bKillerCancelButton)
            {
                label3.Text = "KILLER CANCEL";
            }
            else
            {
                label3.Text = "no killer cancel";
            }

            if (ScreenParser.bSurvivorCancelButton)
            {
                label4.Text = "SURVIVOR CANCEL";
            }
            else
            {
                label4.Text = "no survivor cancel";
            }

            if (ScreenParser.bHasUnTextGfx)
            {
                label5.Text = "HAS UN";
            }
            else
            {
                label5.Text = "no un";
            }

            if (ScreenParser.bHasUnreadyButton)
            {
                label6.Text = "HAS UNREADY";
            }
            else
            {
                label6.Text = "no unready";
            }

            if (ScreenParser.bHasSurvivorLookingForMatchText)
            {
                label7.Text = "LOOKING FOR MATCH";
            }
            else
            {
                label7.Text = "not looking for match";
            }

            if (ScreenParser.bHasShopIcon)
            {
                label8.Text = "SHOP ICON";
            }
            else
            {
                label8.Text = "no shop icon";
            }

            if (isDBDWindowFocused())
            {
                label10.Text = "DBD ACTIVE";
            }
            else
            {
                label10.Text = "dbd not active";
            }

            lblDbgState.Text = StateManager.getState().ToString();
            lblgameType.Text = StateManager.getGameType().ToString();

            label9.Text = "Killer: " + getPlayerLobbyStatus(PlayerIndex.Killer) +
                          ", Surv1: " + getPlayerLobbyStatus(PlayerIndex.Survivor1) +
                          ", Surv2: " + getPlayerLobbyStatus(PlayerIndex.Survivor2) +
                          ", Surv3: " + getPlayerLobbyStatus(PlayerIndex.Survivor3) +
                          ", Surv4: " + getPlayerLobbyStatus(PlayerIndex.Survivor4);
        }