internal async Task HeistPrep_ChangeState(GameLogic.Heist heist, bool sendToCaller = false) { var totalNetworth = heist.Players.Values.Sum(n => n.ProjectedNetworth); var totalBarsOverNetworth = 20f * heist.Players.Count / (totalNetworth + 1); var playerInfo = new StringBuilder(); foreach (var player in heist.Players.Values) { playerInfo.Append(player.Name); playerInfo.Append(","); var barLength = totalBarsOverNetworth * player.ProjectedNetworth; var networthBar = new string('|', (int)barLength); playerInfo.Append(networthBar); playerInfo.Append(","); playerInfo.Append(player.TimeSpentInJail); playerInfo.Append("="); } if (playerInfo.Length > 0) { playerInfo.Length = playerInfo.Length - 1; } if (sendToCaller) { await Clients.Caller.SendAsync("HeistPrep_ChangeState", playerInfo.ToString(), heist.TotalReward, heist.SnitchReward); } else { await Clients.Group(heist.Id).SendAsync("HeistPrep_ChangeState", playerInfo.ToString(), heist.TotalReward, heist.SnitchReward); } }
private Heist CreateHeist(List <HeistPlayer> eligiblePlayers, int heistCapacity) { var heistId = Utils.GenerateId(10, this.Heists); var snitchReward = this.BetrayalReward; var heist = new Heist(heistId, heistCapacity, snitchReward, this.CurrentYear, this.SnitchBlackmailWindow, this.NetworthFudgePercentage, this.BlackmailRewardPercentage, this.JailFinePercentage); for (var i = 0; i < heistCapacity; i++) { var playerToInsert = eligiblePlayers[i]; heist.AddPlayer(playerToInsert); } eligiblePlayers.RemoveRange(0, heistCapacity); this.Heists[heistId] = heist; return(heist); }