public void setSurvivorIcon(int survivorIndex, EndgameSurvivorIcon survIcon) { Dbg.assert(playerIconList.Count > survivorIndex); Dbg.assert(survivorIndex >= 0, "Survivor index too low"); Dbg.assert(survivorIndex <= 3, "Survivor index too high"); this.playerIconList[survivorIndex] = survIcon; }
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()); }
public GameResult(PlayerIndex selectedPlayerIndex, EndgameSurvivorIcon s1, EndgameSurvivorIcon s2, EndgameSurvivorIcon s3, EndgameSurvivorIcon s4, Stats.GameType gameType) { setSelectedPlayerIndex(selectedPlayerIndex); // Store icons setSurvivorIcon(0, s1); setSurvivorIcon(1, s2); setSurvivorIcon(2, s3); setSurvivorIcon(3, s4); // Store my bloodpoints //setMyBpAmount( myBloodpoints ); // Store game type setGameType(gameType); }
private static GameResult parseGameLine(string line) { if (line.Trim() == "") { return(null); } // "g=..." var v = line.Split(new string[] { lineNameSeparator }, 2, StringSplitOptions.RemoveEmptyEntries); if (v.Length != 2) { return(null); } var lineType = v[0].Trim(); // Not a game stat line? if (lineType != lineGameStat) { return(null); } var lineFields = v[1].Trim(); var gameLineFields = lineFields.Split(new string[] { gameFieldsSeparator }, StringSplitOptions.RemoveEmptyEntries); PlayerIndex playerIndex = PlayerIndex.Error; EndgameSurvivorIcon surv1Result = EndgameSurvivorIcon.Error; EndgameSurvivorIcon surv2Result = EndgameSurvivorIcon.Error; EndgameSurvivorIcon surv3Result = EndgameSurvivorIcon.Error; EndgameSurvivorIcon surv4Result = EndgameSurvivorIcon.Error; DateTime gameDate = DateTime.MinValue; GameType gameType = GameType.Error; int[] bloodpoints = new int[5] { EndscoreBpDigitGfx.INVALID_BP_AMOUNT, EndscoreBpDigitGfx.INVALID_BP_AMOUNT, EndscoreBpDigitGfx.INVALID_BP_AMOUNT, EndscoreBpDigitGfx.INVALID_BP_AMOUNT, EndscoreBpDigitGfx.INVALID_BP_AMOUNT }; GameResult game = null; foreach (var gameField in gameLineFields) { var fieldNameAndValue = gameField.Split(new string[] { gameFieldValueSeparator }, 2, StringSplitOptions.None); Dbg.assert(fieldNameAndValue.Length == 2, "Wrong game value format"); var fieldName = fieldNameAndValue[0].Trim(); var fieldValue = fieldNameAndValue[1].Trim(); // Player index if (fieldName.Trim() == gameLinePlayerIndexField) { playerIndex = parsePlayerIndexField(fieldValue); } else if (fieldName.Trim() == gameLineSurvivor1ResultField) { surv1Result = parsePlayerResultField(fieldValue); } else if (fieldName.Trim() == gameLineSurvivor2ResultField) { surv2Result = parsePlayerResultField(fieldValue); } else if (fieldName.Trim() == gameLineSurvivor3ResultField) { surv3Result = parsePlayerResultField(fieldValue); } else if (fieldName.Trim() == gameLineSurvivor4ResultField) { surv4Result = parsePlayerResultField(fieldValue); } else if (fieldName.Trim() == gameLineDate) { gameDate = Utils.parseDateFromDdMmYyyyString(fieldValue); } // Bloodpoints else if (fieldName.Trim() == gameLineSurvivor1BP) { rememberBP(PlayerIndex.Survivor1, fieldValue); } else if (fieldName.Trim() == gameLineSurvivor2BP) { rememberBP(PlayerIndex.Survivor2, fieldValue); } else if (fieldName.Trim() == gameLineSurvivor3BP) { rememberBP(PlayerIndex.Survivor3, fieldValue); } else if (fieldName.Trim() == gameLineSurvivor4BP) { rememberBP(PlayerIndex.Survivor4, fieldValue); } else if (fieldName.Trim() == gameLineKillerBP) { rememberBP(PlayerIndex.Killer, fieldValue); } else if (fieldName.ToLower().Trim() == gameLineGameType.ToLower()) { gameType = Stats.getGameTypeEnumFromString(fieldValue); Dbg.assert(gameType != GameType.Error, "Loaded wrong game type"); } } // Create game object game = new GameResult(playerIndex, surv1Result, surv2Result, surv3Result, surv4Result, gameType); // Set date if (gameDate != DateTime.MinValue) { game.setDate(gameDate); } // Set BP for (int player = (int)PlayerIndex.Survivor1; player <= (int)PlayerIndex.Killer; player++) { game.setBpAmount(( PlayerIndex )player, bloodpoints[player]); } void rememberBP(PlayerIndex player, string fieldValue) { bloodpoints[( int )player] = EndscoreBpDigitGfx.INVALID_BP_AMOUNT; fieldValue = fieldValue.Trim(); if (fieldValue != "") { bloodpoints[(int)player] = int.Parse(fieldValue); } } return(game); }