private async Task PayCasualty() { if (Deck.Count > 0) { Deck[0].FaceUP = true; Casualties.Add(Deck[0]); Log += $"You lost {Deck[0].GetValueStringLog()} as a casualty\n"; Deck.RemoveAt(0); OnPropertyChanged("CasualtyCard"); } await Task.Delay(2000); if (OpponentDeck.Count > 0) { OpponentDeck[0].FaceUP = true; Casualties.Add(OpponentDeck[0]); Log += $"Opponent lost {OpponentDeck[0].GetValueStringLog()} as a casualty\n"; OpponentDeck.RemoveAt(0); OnPropertyChanged("CasualtyCard"); } OnPropertyChanged("DeckCount"); OnPropertyChanged("OpponentDeckCount"); }
public CasualtiesUI(Condition cond) { InitializeComponent(); condition = cond as Casualties; casualtyThresholdTextBox.Text = condition.CasualtyThreshold.ToString(CultureInfo.InvariantCulture); unknownC1TextBox.Text = condition.Unknown1.ToString(CultureInfo.InvariantCulture); unknownC2TextBox.Text = condition.Unknown2.ToString(CultureInfo.InvariantCulture); sideComboBox.SelectedIndex = condition.FactionIndex; }
private void RegisterLicenseFrom_FormClosing(object sender, FormClosingEventArgs e) { if (DialogResult != DialogResult.OK) { return; } Logger.Write("Registering licesnse"); var name = textBoxName.Text; var email = textBoxEmail.Text; ThreadPool.QueueUserWorkItem((m) => { var validator = new RhinoValidator(_appData); validator.Register(name, email); if (validator.IsValid && passesTestQuestion(validator)) { Casualties.ReportCasualty(string.Format("License registered{0}{1}{0}{2}", Environment.NewLine, name, email)); } }, null); }
public void DealCards() { List <Card> AllCards = new List <Card>(); CardSuit[] Suits = (CardSuit[])Enum.GetValues(typeof(CardSuit)); CardValue[] Vals = (CardValue[])Enum.GetValues(typeof(CardValue)); Deck.Clear(); OpponentDeck.Clear(); Casualties.Clear(); //create cards foreach (var suit in Suits) { foreach (var v in Vals) { Card c = new Card(); c.Suit = suit; c.Value = v; c.FaceUP = false; if (c.Value != CardValue.Joker) { AllCards.Add(c); } } } //Add 2 Jokers Card c3 = new Card(); c3.Value = CardValue.Joker; c3.FaceUP = false; Card c2 = new Card(); c2.Value = CardValue.Joker; c2.FaceUP = false; AllCards.Add(c3); AllCards.Add(c2); //Shuffle the deck int n = AllCards.Count; while (n > 1) { n--; int k = rng.Next(n + 1); Card c = AllCards[k]; AllCards[k] = AllCards[n]; AllCards[n] = c; } //Deal int i = 0; foreach (Card c in AllCards) { if (i % 2 == 0) { Deck.Add(c); } else { OpponentDeck.Add(c); } i++; } Log += "Cards have been dealt.\n"; }
public override void ResolveBattle() { // Calculate amount of troops for each player Dictionary <Player, int> remainingTroops = new Dictionary <Player, int>(); foreach (Army army in Armies) { if (!remainingTroops.ContainsKey(army.SourcePlayer)) { remainingTroops.Add(army.SourcePlayer, army.NumTroops); } else { remainingTroops[army.SourcePlayer] += army.NumTroops; } } List <Player> remainingPlayers = remainingTroops.Where(x => x.Value > 0).Select(x => x.Key).ToList(); // Calculate strength of each player (weighted average of all armies of that player) Dictionary <Player, float> playerStrength = new Dictionary <Player, float>(); foreach (Player p in remainingPlayers) { Casualties.Add(p, 0); List <Army> playerArmies = Armies.Where(x => x.SourcePlayer == p).ToList(); int totalTroops = remainingTroops[p]; float totalStrength = 0; foreach (Army army in playerArmies) { totalStrength += (army.NumTroops * army.Strength); } float strength = totalStrength / totalTroops; playerStrength.Add(p, strength); //Debug.Log("Player " + p.Name + " Strength: " + strength); } // Fight until only one player has armies left while (remainingPlayers.Count > 1) { float totalStrength = 0f; foreach (Player p in remainingPlayers) { totalStrength += playerStrength[p]; } float rng = Random.Range(0, totalStrength); float tmp = 0f; int c = 0; Player winner = null; while (winner == null) { tmp += playerStrength[remainingPlayers[c]]; if (tmp >= rng) { winner = remainingPlayers[c]; } c++; } foreach (Player p in remainingPlayers) { if (p != winner) { remainingTroops[p]--; Casualties[p]++; } } remainingPlayers = remainingTroops.Where(x => x.Value > 0).Select(x => x.Key).ToList(); } // Set post-battle values Winner = remainingPlayers[0]; Losers = Players.Where(x => x != Winner).ToList(); WinnerSourceTerritory = Armies.First(x => x.SourcePlayer == Winner).SourceTerritory; WinnerTargetTerritory = Armies.First(x => x.SourcePlayer == Winner).TargetTerritory; WinnerTroopsRemaining = remainingTroops[Winner]; }