public static FactionList composeFactionList(params Faction[] f) { FactionList r = new FactionList(); foreach (Faction i in f) { if (i != null) { r.Add(i); } } return r; }
public static FactionList composeFactionList(params Faction[] f) { FactionList r = new FactionList(); foreach (Faction i in f) { if (i != null) { r.Add(i); } } return(r); }
private void EditFactions() { FactionList list = new FactionList(); for (int i = 0; i < this.dgvFactions.SelectedRows.Count; i++) { list.Add(this.Factions[this.dgvFactions.SelectedRows[i].Index]); } if (list.Count > 0) { frmEditFaction faction = new frmEditFaction(); faction.Factions = list; faction.ShowDialog(); this.dgvFactions.Invalidate(); } }
public FactionList GetOtherFactions() { FactionList list = new FactionList(); foreach (Faction faction in base.Scenario.Factions) { if (faction != this) { list.Add(faction); } } return list; }
public FactionList GetHostileFactions() { FactionList list = new FactionList(); foreach (Faction faction in base.Scenario.Factions) { if (!((faction == this) || this.IsFriendly(faction))) { list.Add(faction); } } return list; }
public void CheckEncircleDiplomaticByFactionName(string EncircleFactionName) { FactionList encircleList = new FactionList(); int fc = 0; foreach (Faction f in base.Scenario.Factions) { if ((f.Name != EncircleFactionName) && (f.Leader.StrategyTendency != PersonStrategyTendency.维持现状) && ! f.IsAlien) { fc++; if (((base.Scenario.DiplomaticRelations.GetDiplomaticRelation(this.GetFactionByName(EncircleFactionName).ID, f.ID).Relation + Person.GetIdealOffset(this.GetFactionByName(EncircleFactionName).Leader, f.Leader) * 1.5) < 0 && GameObject.Chance(60)) ) { encircleList.Add(f); } } } if ((encircleList.Count * 2 > fc) && fc > 3) { this.Scenario.GameScreen.xianshishijiantupian(this.Leader, this.Leader.Name, "EncircleDiplomaticRelation", "EncircleDiplomaticRelation.jpg", "EncircleDiplomaticRelation.wav", EncircleFactionName, true); foreach (Faction i in encircleList) { foreach (Faction j in encircleList) { if (i != j) { if (this.Scenario.DiplomaticRelations.GetDiplomaticRelation(i.ID, j.ID).Truce < 90) { this.Scenario.DiplomaticRelations.GetDiplomaticRelation(i.ID, j.ID).Truce = 90; } } } } } }
private void CheckGameEnd() { FactionList noArchFaction = new FactionList(); foreach (Faction f in this.Factions) { if (f.ArchitectureCount == 0) { noArchFaction.Add(f); } } foreach (Faction f in noArchFaction) { this.Factions.Remove(f); } if (this.Factions.Count == 1) { ExtensionInterface.call("GameEnd", new Object[]{this}); if (this.CurrentPlayer != null && !this.runScenarioEnd(this.CurrentPlayer.Capital)) { this.GameScreen.GameEndWithUnite(this.Factions[0] as Faction); } } }
public static FactionList GetGameScenarioFactions(OleDbConnection DbConnection) { DbConnection.Open(); OleDbDataReader reader = new OleDbCommand("Select * From Faction", DbConnection).ExecuteReader(); FactionList list = new FactionList(); while (reader.Read()) { Faction t = new Faction(); t.ID = (short) reader["ID"]; t.LeaderID = (short) reader["LeaderID"]; t.Name = reader["FName"].ToString(); try { if (!((bool)reader["NotPlayerSelectable"])) { list.Add(t); } } catch { list.Add(t); } } DbConnection.Close(); return list; }
public void addBattleEntry(bool addYearTable, GameDate date, OngoingBattle ob, Person p, ArchitectureList architectures, Dictionary <Faction, int> factionDamages) { if (factionDamages.Count < 1) { return; } if (p.BelongedFaction == null) { return; } String allFactionStrings = ""; FactionList fl = new FactionList(); foreach (Faction f in factionDamages.Keys) { allFactionStrings += "、" + (f == null ? "贼军" : f.Name); fl.Add(f); } allFactionStrings = allFactionStrings.Substring(1); String architectureStrings = ""; if (architectures.Count > 0) { foreach (Architecture a in architectures) { architectureStrings += "、" + a.Name; } architectureStrings = architectureStrings.Substring(1); } int dayDiff = (date.Year - ob.StartYear) * 360 + (date.Month - ob.StartMonth) * 30 + (date.Day - ob.StartDay) - 5; if (dayDiff <= 0) { return; } Dictionary <Faction, int> totalDamages = new Dictionary <Faction, int>(); foreach (Faction f in factionDamages.Keys) { totalDamages.Add(f, 0); foreach (KeyValuePair <Faction, int> pair in factionDamages) { if (f != pair.Key) { totalDamages[f] += pair.Value; } } } List <KeyValuePair <Faction, int> > damageList = totalDamages.ToList(); damageList.Sort((firstPair, nextPair) => - firstPair.Value.CompareTo(nextPair.Value)); List <KeyValuePair <Faction, int> > selfDamageList = factionDamages.ToList(); selfDamageList.Sort((firstPair, nextPair) => firstPair.Value.CompareTo(nextPair.Value)); String victorDescription = ""; String selfDescription = ""; if (ob.Skirmish) { if (damageList.Count > 1) { if (damageList[0].Value > damageList[1].Value * 1.5) { victorDescription = (damageList[0].Key == null ? "贼军" : damageList[0].Key.Name) + "大胜"; } else if (damageList[0].Value > damageList[1].Value * 1.2) { victorDescription = (damageList[0].Key == null ? "贼军" : damageList[0].Key.Name) + "小胜"; } else { victorDescription = "互有胜负"; } int rank = 0; foreach (KeyValuePair <Faction, int> i in damageList) { if (i.Key == p.BelongedFaction) { if (rank == 0) { if (damageList[0].Value > damageList[1].Value * 1.5) { selfDescription = "并大胜敌人"; } else if (damageList[0].Value > damageList[1].Value * 1.2) { selfDescription = "并小胜敌人"; } else { selfDescription = "互有胜负"; } } else if (rank == damageList.Count - 1) { if (damageList[0].Value > damageList[rank].Value * 1.5) { selfDescription = "却遭到大败"; } else if (damageList[0].Value > damageList[rank].Value * 1.2) { selfDescription = "却遭遇小败"; } else { selfDescription = "互有胜负"; } } } rank++; } } } if (ob.Skirmish) { if (addYearTable) { this.addTableEntry(date, fl, String.Format(yearTableStrings["battleSkirmish"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", "", architectureStrings, "", "", dayDiff + "天", victorDescription), false); } this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleSkirmish_p"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", "", architectureStrings, "", "", dayDiff + "天", selfDescription)); } else { foreach (Architecture a in architectures) { if (a.BelongedFaction == null || (a.OldFactionName != a.BelongedFaction.Name)) { if (addYearTable) { this.addTableEntry(date, fl, String.Format(yearTableStrings["battleOccupy"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天"), false); } if (p.BelongedFaction == a.BelongedFaction) { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleOccupy_p"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天")); } else if (p.BelongedFaction.Name == a.OldFactionName) { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleOccupy_q"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天")); } else { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleOccupy_r"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天")); } } else { String offenderString = ""; if (fl.Count > 1) { foreach (Faction f in fl) { if (f != a.BelongedFaction) { offenderString += "、" + f.Name; } } offenderString = offenderString.Substring(1); } if (addYearTable) { this.addTableEntry(date, fl, String.Format(yearTableStrings["battleRetreat"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, offenderString, a.OldFactionName, dayDiff + "天"), false); } if (a.BelongedFaction == p.BelongedFaction) { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleRetreat_p"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, offenderString, a.OldFactionName, dayDiff + "天")); } else { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleRetreat_q"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, offenderString, a.OldFactionName, dayDiff + "天")); } } } } }
public void addBattleEntry(bool addYearTable, GameDate date, OngoingBattle ob, Person p, ArchitectureList architectures, Dictionary<Faction, int> factionDamages) { if (factionDamages.Count < 1) return; if (p.BelongedFaction == null) return; String allFactionStrings = ""; FactionList fl = new FactionList(); foreach (Faction f in factionDamages.Keys) { allFactionStrings += "、" + (f == null ? "贼军" : f.Name); fl.Add(f); } allFactionStrings = allFactionStrings.Substring(1); String architectureStrings = ""; if (architectures.Count > 0) { foreach (Architecture a in architectures) { architectureStrings += "、" + a.Name; } architectureStrings = architectureStrings.Substring(1); } int dayDiff = (date.Year - ob.StartYear) * 360 + (date.Month - ob.StartMonth) * 30 + (date.Day - ob.StartDay) - 5; if (dayDiff <= 0) return; Dictionary<Faction, int> totalDamages = new Dictionary<Faction, int>(); foreach (Faction f in factionDamages.Keys) { totalDamages.Add(f, 0); foreach (KeyValuePair<Faction, int> pair in factionDamages) { if (f != pair.Key) { totalDamages[f] += pair.Value; } } } List<KeyValuePair<Faction, int>> damageList = totalDamages.ToList(); damageList.Sort((firstPair, nextPair) => -firstPair.Value.CompareTo(nextPair.Value)); List<KeyValuePair<Faction, int>> selfDamageList = factionDamages.ToList(); selfDamageList.Sort((firstPair, nextPair) => firstPair.Value.CompareTo(nextPair.Value)); String victorDescription = ""; String selfDescription = ""; if (ob.Skirmish) { if (damageList.Count > 1) { if (damageList[0].Value > damageList[1].Value * 1.5) { victorDescription = (damageList[0].Key == null ? "贼军" : damageList[0].Key.Name) + "大胜"; } else if (damageList[0].Value > damageList[1].Value * 1.2) { victorDescription = (damageList[0].Key == null ? "贼军" : damageList[0].Key.Name) + "小胜"; } else { victorDescription = "互有胜负"; } int rank = 0; foreach (KeyValuePair<Faction, int> i in damageList) { if (i.Key == p.BelongedFaction) { if (rank == 0) { if (damageList[0].Value > damageList[1].Value * 1.5) { selfDescription = "并大胜敌人"; } else if (damageList[0].Value > damageList[1].Value * 1.2) { selfDescription = "并小胜敌人"; } else { selfDescription = "互有胜负"; } } else if (rank == damageList.Count - 1) { if (damageList[0].Value > damageList[rank].Value * 1.5) { selfDescription = "却遭到大败"; } else if (damageList[0].Value > damageList[rank].Value * 1.2) { selfDescription = "却遭遇小败"; } else { selfDescription = "互有胜负"; } } } rank++; } } } if (ob.Skirmish) { if (addYearTable) { this.addTableEntry(date, fl, String.Format(yearTableStrings["battleSkirmish"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", "", architectureStrings, "", "", dayDiff + "天", victorDescription), false); } this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleSkirmish_p"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", "", architectureStrings, "", "", dayDiff + "天", selfDescription)); } else { foreach (Architecture a in architectures) { if (a.BelongedFaction == null || (a.OldFactionName != a.BelongedFaction.Name)) { if (addYearTable) { this.addTableEntry(date, fl, String.Format(yearTableStrings["battleOccupy"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天"), false); } if (p.BelongedFaction == a.BelongedFaction) { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleOccupy_p"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天")); } else if (p.BelongedFaction.Name == a.OldFactionName) { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleOccupy_q"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天")); } else { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleOccupy_r"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.OldFactionName, dayDiff + "天")); } } else { String offenderString = ""; if (fl.Count > 1) { foreach (Faction f in fl) { if (f != a.BelongedFaction) { offenderString += "、" + f.Name; } } offenderString = offenderString.Substring(1); } if (addYearTable) { this.addTableEntry(date, fl, String.Format(yearTableStrings["battleRetreat"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, offenderString, a.OldFactionName, dayDiff + "天"), false); } if (a.BelongedFaction == p.BelongedFaction) { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleRetreat_p"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, offenderString, a.OldFactionName, dayDiff + "天")); } else { this.addPersonInGameBiography(p, date, String.Format(yearTableStrings["battleRetreat_q"], p.BelongedFaction == null ? "贼军" : p.BelongedFaction.Name, allFactionStrings + "之间", a.BelongedFaction == null ? "贼军" : a.BelongedFaction.Name, a.Name, offenderString, a.OldFactionName, dayDiff + "天")); } } } } }
private void 删除势力ToolStripMenuItem_Click(object sender, EventArgs e) { FactionList list = new FactionList(); for (int i = 0; i < this.dgvFactions.SelectedRows.Count; i++) { list.Add(this.Factions[this.dgvFactions.SelectedRows[i].Index]); } foreach (Faction faction in this.Scenario.Factions) { foreach (Faction faction2 in list) { this.Scenario.DiplomaticRelations.RemoveDiplomaticRelationByFactionID(faction2.ID); } } foreach (Faction faction in list) { this.Scenario.Factions.RemoveFaction(faction); } foreach (Legion legion in this.Scenario.Legions.GetList()) { if (legion.BelongedFaction == null) { this.Scenario.Legions.Remove(legion); } } foreach (Section section in this.Scenario.Sections.GetList()) { if (section.BelongedFaction == null) { this.Scenario.Sections.Remove(section); } } this.RebindDataSource(); }
private void CheckGameEnd() { FactionList noArchFaction = new FactionList(); foreach (Faction f in this.Factions) { if (f.ArchitectureCount == 0) { noArchFaction.Add(f); } } foreach (Faction f in noArchFaction) { this.Factions.Remove(f); } if (this.Factions.Count == 1) { ExtensionInterface.call("GameEnd", new Object[]{this}); this.GameScreen.GameEndWithUnite(this.Factions[0] as Faction); } }