protected virtual void SetUpCompare( bool requiresMinProsperity, float xProsperity, float yProsperity, bool xMeetsBaseRequirements, bool yMeetsBaseRequirements ) { SetUp(xMeetsBaseRequirements, requiresMinProsperity); _mockSettlementX = _mockSettlement; _mockSettlementX.SetupGet(settlement => settlement.IsNull) .Returns(!xMeetsBaseRequirements); if (xMeetsBaseRequirements) { _mockSettlementX.SetupGet(settlement => settlement.Prosperity).Returns(xProsperity); } _mockSettlementY = CreateMockSettlement(true, ExactlyEnoughFood).mockSettlement; SetUpContainsSettlement(_mockSettlementY, NoExistingTournament); _mockSettlementY.SetupGet(settlement => settlement.IsNull).Returns(!yMeetsBaseRequirements); if (yMeetsBaseRequirements) { _mockSettlementY.SetupGet(settlement => settlement.Prosperity).Returns(yProsperity); } _settlementX = _mockSettlementX.Object; _settlementY = _mockSettlementY.Object; _mockSettings.SetupGet(settings => settings.MinProsperityRequirement) .Returns(requiresMinProsperity ? Constants.Settings.Default.MinProsperityRequirement : 0); }
private void PayTournamentFee(MBHero payor, MBSettlement settlement) { var tournamentCost = Settings.TournamentCost; payor.ChangeHeroGold(-tournamentCost); settlement.Town.ChangeGold(tournamentCost); }
protected virtual bool CompareProsperity(MBSettlement x, MBSettlement y, out int result) { var xIsMoreProsperous = x.Prosperity > y.Prosperity; var xIsLessProsperous = x.Prosperity < y.Prosperity; result = xIsMoreProsperous ? Constants.Comparer.XOutranksY : xIsLessProsperous ? Constants.Comparer.YOutranksX : Constants.Comparer.BothEqualRank; return(true); }
public override int Compare(MBSettlement x, MBSettlement y) { var result = 0; if (!TryComparePreconditions(x, y, ref result)) { CompareProsperity(x, y, out result); } return(result); }
private void AddOrUpdateTournamentRecord(MBSettlement settlement, MBHero initiatingHero, TournamentType type) { var record = new TournamentRecord() { hostSettlementStringId = settlement.StringId, initiatingHeroStringId = initiatingHero.IsNull ? null : initiatingHero.StringId, tournamentType = type }; ModState.TournamentRecords.AddOrUpdate(record); }
private void ApplyHostingEffects(TournamentType type, MBSettlement settlement) { if (type == TournamentType.Initial) { return; } settlement.Prosperity += Settings.ProsperityIncrease; settlement.Town.Loyalty += Settings.LoyaltyIncrease; settlement.Town.Security += Settings.SecurityIncrease; settlement.Town.FoodStocks -= Settings.FoodStocksDecrease; if (settlement.Town.MapFaction.Leader.IsHumanPlayerCharacter && Settings.SettlementStatNotification) { MBInformationManagerFacade.DisplayAsLogEntry($"{settlement.Name}'s prosperity, loyalty and security have increased and food stocks have decreased"); } }
public virtual TournamentRecord this[MBSettlement settlement] { get { var settlementId = settlement.StringId; return(ContainsKey(settlementId) ? this[settlementId] : default(TournamentRecord)); } set { if (settlement == MBSettlement.Null) { return; } this[settlement.StringId] = value; } }
protected virtual void SetUp(bool isTown, float foodStockValue = 0) { base.SetUp(); CreateMockSettlementResults results = CreateMockSettlement(isTown, foodStockValue); _mockSettlement = results.mockSettlement; _settlement = _mockSettlement.Object; _mockTown = results.mockTown; _mockSettings = MockRepository.Create <Settings>(); _mockSettings.SetupGet(settings => settings.FoodStocksDecrease) .Returns(Default.FoodStocksDecrease); _mockSettlement.SetupGet(settlement => settlement.IsTown).Returns(isTown); if (isTown) { _mockSettlement.SetupGet(settlement => settlement.Town).Returns(_mockTown.Object); _mockTown.SetupGet(town => town.FoodStocks).Returns(foodStockValue); } }
private void ApplyRelationsGain(TournamentType type, MBSettlement settlement) { if (type != TournamentType.PlayerInitiated) { return; } var mainHero = MBHero.MainHero; int newRelation; foreach (var notable in settlement.Notables) { if (notable == mainHero) { continue; } newRelation = notable.GetBaseHeroRelation(mainHero) + Settings.NoblesRelationIncrease; notable.SetPersonalRelation(mainHero, newRelation); } MBInformationManagerFacade.DisplayAsQuickBanner($"Your relationship with local notables at {settlement.Name} has improved"); }
protected override bool MeetsRequirements(MBSettlement settlement) => settlement.IsTown && settlement.Town.FoodStocks >= Settings.FoodStocksDecrease;
protected override bool MeetsRequirements(MBSettlement settlement) => base.MeetsRequirements(settlement) && (CanOverrideExisting || !ModState.TournamentRecords.ContainsSettlement(settlement));
protected override bool MeetsRequirements(MBSettlement settlement) => base.MeetsRequirements(settlement) && (!RequireMinProsperity || settlement.Prosperity >= Settings.MinProsperityRequirement);
public virtual void Remove(MBSettlement settlement) => Remove(settlement.StringId);
public virtual bool ContainsSettlement(MBSettlement settlement) => ContainsKey(settlement.StringId);
private void InstantiateTournament(MBSettlement settlement) { var tournament = new MBFightTournamentGame(ModState.IsProduction, settlement.Town); MBCampaign.Current.TournamentManager.AddTournament(tournament); }
public new static CreateTournamentResult Success(TournamentType tournamentType, bool hadExistingTournament, MBSettlement settlement) { var isInitialTournament = tournamentType == TournamentType.Initial; return(new CreateTournamentResult() { HadExistingTournament = hadExistingTournament, Status = ResultStatus.Success, Payor = isInitialTournament ? MBHero.Null : settlement.OwnerClan.Leader, HostSettlement = settlement }); }