PRoConEvents.MULTIbalancer.UpdatePlayerModel C# (CSharp) Method

UpdatePlayerModel() private method

private UpdatePlayerModel ( String name, int team, int squad, String eaGUID, int score, int kills, int deaths, int rank, int role ) : void
name String
team int
squad int
eaGUID String
score int
kills int
deaths int
rank int
role int
return void
        private void UpdatePlayerModel(String name, int team, int squad, String eaGUID, int score, int kills, int deaths, int rank, int role)
        {
            bool known = false;
            if (!IsKnownPlayer(name)) {
            switch (fPluginState) {
            case PluginState.JustEnabled:
            case PluginState.Reconnected:
                String state = (fPluginState == PluginState.JustEnabled) ? "JustEnabled" : "Reconnected";
                if (team != 0) {
                    known = AddNewPlayer(name, team);
                    String verb = (known) ? "^6renewing^0" : "^4adding^0";
                    DebugWrite(state + " state, " + verb + " new player: ^b" + name, 4);
                } else {
                    DebugWrite(state + " state, unassigned player: ^b" + name, 4);
                    if (!fUnassigned.Contains(name)) fUnassigned.Add(name);
                    return;
                }
                break;
            case PluginState.Active:
                if (role == ROLE_PLAYER) {
                    DebugWrite("Update waiting for ^b" + name + "^n to be assigned a team", 4);
                    if (!fUnassigned.Contains(name)) fUnassigned.Add(name);
                    return;
                } else {
                    String sRole = (role == ROLE_SPECTATOR) ? "spectator" : "commander";
                    DebugWrite("Update adding " + sRole + " ^b" + name, 4);
                    AddNewPlayer(name, team); // add commanders and spectators
                }
                break;
            case PluginState.Error:
                DebugWrite("Error state, adding new player: ^b" + name, 4);
                AddNewPlayer(name, team);
                break;
            default:
                return;
            }
            }

            int unTeam = -2;
            PlayerModel m = null;

            lock (fKnownPlayers) {
            if (!fKnownPlayers.ContainsKey(name)) {
            ConsoleDebug("UpdatePlayerModel: player ^b" + name + "^n not in master table!");
            return;
            }
            m = fKnownPlayers[name];
            }

            if (m.Team != team) {
            unTeam = m.Team;
            m.Team = team;
            }
            m.Squad = squad;
            m.EAGUID = eaGUID;
            m.ScoreRound = score;
            m.KillsRound = kills;
            m.DeathsRound = deaths;
            m.Rank = rank;
            m.Role = role;

            if (m.Role != ROLE_PLAYER)
            DebugWrite("UpdatePlayerModel: " + name + " has role = " + m.Role, 8);

            m.LastSeenTimestamp = DateTime.Now;

            // Computed
            m.KDRRound = m.KillsRound / Math.Max(1, m.DeathsRound);
            double mins = (m.FirstSpawnTimestamp == DateTime.MinValue) ? 1 : Math.Max(1, DateTime.Now.Subtract(m.FirstSpawnTimestamp).TotalMinutes);
            m.SPMRound = m.ScoreRound / mins;
            m.KPMRound = m.KillsRound / mins;

            // Accumulated
            // TBD

            // Friends
            UpdatePlayerFriends(m); // Overkill, but insures that Friendex is always updated

            if (!EnableLoggingOnlyMode && unTeam != -2 && !fPendingTeamChange.ContainsKey(name)) {
            ConsoleDebug("UpdatePlayerModel:^b" + name + "^n has team " + unTeam + " but update says " + team + "!");
            }
        }
MULTIbalancer