/// <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"); } }
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()); }
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; }
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; }
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); }