Exemple #1
0
        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());
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }