private FindHostSettlementResult FindBirthTournamentSettlementsForParent(MBHero parent)
        {
            var leaderResult = HeroFinder.FindFactionLeaders(parent, parent.Spouse);

            if (leaderResult.Failed)
            {
                return(FindHostSettlementResult.Failure);
            }

            var candidateSettlements = new List <MBSettlement>();

            foreach (var leader in leaderResult.AllQualifiedCandidates)
            {
                var findOwnedSettlementsResult = FindHostSettlementsOwnedByHero(leader);
                if (findOwnedSettlementsResult.Succeeded)
                {
                    candidateSettlements.AddRange(findOwnedSettlementsResult.AllQualifiedCandidates);
                }
            }

            if (candidateSettlements.IsEmpty())
            {
                return(FindHostSettlementResult.Failure);
            }

            return(FindHostSettlementResult.Success(candidateSettlements));
        }
示例#2
0
        private void PayTournamentFee(MBHero payor, MBSettlement settlement)
        {
            var tournamentCost = Settings.TournamentCost;

            payor.ChangeHeroGold(-tournamentCost);
            settlement.Town.ChangeGold(tournamentCost);
        }
示例#3
0
 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
 {
     if (e.Node != null)
     {
         int index = treeView1.Nodes.IndexOf(e.Node);
         selectedHero = heroes.Heroes[index];
         SelectHeroChanged?.Invoke(heroes.Heroes[index], index);
     }
 }
示例#4
0
 private void UcHeroList_SelectHeroChanged(MBHero selectedHero, int selectedIndex)
 {
     this.selectedHero  = selectedHero;
     this.selectedIndex = selectedIndex;
     SelectedHeroChanged?.Invoke(selectedHero, selectedIndex, state);
     if (selectedHero != null)
     {
         btnDelete.Enabled = true;
         btnModify.Enabled = true;
     }
 }
示例#5
0
        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);
        }
示例#6
0
 public void SetUp(bool isHeroActive, bool canHeroAffordCost)
 {
     _sut          = new BasicHeroHostRequirementsComparerImpl();
     _mockSettings = MockRepository.Create <Settings>();
     _mockSettings.SetupGet(settings => settings.TournamentCost)
     .Returns(Default.TournamentCost);
     _sut.Settings = _mockSettings.Object;
     _mockHero     = MockRepository.Create <MBHero>();
     _mockHero.SetupGet(hero => hero.IsActive).Returns(isHeroActive);
     _mockHero.SetupGet(hero => hero.Gold).Returns(canHeroAffordCost ? Default.TournamentCost : 0);
     _hero = _mockHero.Object;
 }
示例#7
0
        private void btnAdd_Click(object sender, EventArgs e)
        {
            state = AddEditState.Add;

            ucHeroList.Enabled = false;
            btnAdd.Enabled     = false;
            btnDelete.Enabled  = false;
            btnModify.Enabled  = false;

            MBHero hero = new MBHero();

            SelectedHeroChanged?.Invoke(hero, -1, state);
        }
示例#8
0
 public void SetUp(bool doesHeroMeetBaseRequirements, bool IsHeroFactionLeader)
 {
     _sut          = new FactionLeaderHostComparerImpl();
     _mockSettings = MockRepository.Create <Settings>();
     _mockSettings.SetupGet(settings => settings.TournamentCost)
     .Returns(Default.TournamentCost);
     _sut.Settings = _mockSettings.Object;
     _mockHero     = MockRepository.Create <MBHero>();
     _mockHero.SetupGet(hero => hero.IsFactionLeader).Returns(IsHeroFactionLeader);
     _mockHero.SetupGet(hero => hero.IsActive).Returns(doesHeroMeetBaseRequirements);
     _mockHero.SetupGet(hero => hero.Gold).Returns(Default.TournamentCost);
     _hero = _mockHero.Object;
 }
        private FindHostSettlementResult FindHostSettlementsOwnedByHero(MBHero hero)
        {
            var options = new FindHostSettlementOptions()
            {
                Candidates = hero.Clan.Settlements,
                Comparers  = new IComparer <MBSettlement>[]
                {
                    new InitiatingHeroOwnershipComparer(hero),
                }
            };

            return(Find(options));
        }
示例#10
0
 public void SetUp(bool doesHeroMeetBaseRequirements, bool isHeroInClanFaction)
 {
     _sut          = new ClanLeaderHostComparerImpl();
     _mockSettings = MockRepository.Create <Settings>();
     _mockSettings.SetupGet(settings => settings.TournamentCost)
     .Returns(Default.TournamentCost);
     _sut.Settings = _mockSettings.Object;
     _mockHero     = MockRepository.Create <MBHero>();
     _mockFaction  = MockRepository.Create <IMBFaction>();
     _mockFaction.SetupGet(faction => faction.IsClan).Returns(isHeroInClanFaction);
     _mockHero.SetupGet(hero => hero.IsFactionLeader).Returns(doesHeroMeetBaseRequirements);
     _mockHero.SetupGet(hero => hero.MapFaction).Returns(_mockFaction.Object);
     _mockHero.SetupGet(hero => hero.IsActive).Returns(true);
     _mockHero.SetupGet(hero => hero.Gold).Returns(Default.TournamentCost);
     _hero = _mockHero.Object;
 }
        public CreateTournamentResult TryCreateWeddingTournament(MBHero firstWeddedHero,
                                                                 MBHero secondWeddedHero)
        {
            var findSettlementResult = SettlementFinder.FindForWeddingTournament(firstWeddedHero, secondWeddedHero);

            if (findSettlementResult.Failed)
            {
                return(CreateTournamentResult.Failure);
            }

            var options = new CreateTournamentOptions()
            {
                Settlement = findSettlementResult.Nominee,
                Type       = TournamentType.Wedding
            };

            return(CreateTournament(options));
        }
示例#12
0
        public CreateTournamentResult TryMakeBirthTournament(MBHero mother)
        {
            var findSettlementResult = SettlementFinder.FindForBirthTournament(mother);

            if (findSettlementResult.Failed)
            {
                return(CreateTournamentResult.Failure);
            }

            var createTournamentOptions = new CreateTournamentOptions()
            {
                InitiatingHero = findSettlementResult.InitiatingHero,
                Settlement     = findSettlementResult.Nominee,
                Type           = TournamentType.Peace
            };

            return(CreateTournament(createTournamentOptions));
        }
        public FindHostSettlementResult FindForWeddingTournament(MBHero firstWeddedHero, MBHero secondWeddedHero)
        {
            var failureResult      = FindHostSettlementResult.Failure;
            var findHostHeroResult = HeroFinder.FindHostsFromWeddedHeroes(firstWeddedHero, secondWeddedHero);

            if (findHostHeroResult.Failed)
            {
                return(failureResult);
            }

            var result = FindForFactionLeaderWedding(findHostHeroResult.Nominee);

            if (result.Failed && findHostHeroResult.HasRunnerUp)
            {
                result = FindForFactionLeaderWedding(findHostHeroResult.RunnerUp);
            }

            return(result);
        }
        public FindHostSettlementResult FindForBirthTournament(MBHero mother)
        {
            var findCandidateSettlementResults = FindBirthTournamentSettlementsForParent(mother);

            if (findCandidateSettlementResults.Failed)
            {
                return(FindHostSettlementResult.Failure);
            }

            var options = new FindHostSettlementOptions()
            {
                Candidates = findCandidateSettlementResults.AllQualifiedCandidates,
                Comparers  = new IComparer <MBSettlement>[]
                {
                    ProsperityComparer.Instance
                },
            };

            return(Find(options));
        }
示例#15
0
 private void UcCultureList_SelectHeroChanged(ModdingFiles.MBHero hero, int index)
 {
     SelectedHero = hero;
 }
示例#16
0
 protected SettlementComparerBase(MBHero initiatingHero = null) : base(initiatingHero)
 {
 }
示例#17
0
 protected ComparerBase(MBHero initiatingHero = null)
 {
     InitiatingHero = initiatingHero ?? MBHero.Null;
 }
 public virtual bool IsWorthyTournamentPrizeForMainHero()
 {
     return(IsTournamentPrize() && UnwrappedObject.Tier == MBHero.GetMainHeroTournamentRewardTier());
 }
 protected override bool MeetsRequirements(MBHero hero) =>
 base.MeetsRequirements(hero) &&
 hero.MapFaction.IsClan;
 protected ExistingTournamentComparer(bool canOverrideExisting = false, MBHero initiatingHero = null) : base(initiatingHero)
 {
     CanOverrideExisting = canOverrideExisting;
 }
示例#21
0
 protected ProsperityComparer(bool hasProsperityRequirement = false,
                              bool canOverrideExisting      = false,
                              MBHero initiatingHero         = null) : base(canOverrideExisting, initiatingHero)
 {
     RequireMinProsperity = hasProsperityRequirement;
 }
示例#22
0
 public new bool MeetsRequirements(MBHero Hero) => base.MeetsRequirements(Hero);
 protected override bool MeetsRequirements(MBHero hero) =>
 hero.IsActive &&
 hero.Gold >= Settings.TournamentCost;
示例#24
0
 public new static FindHostSettlementResult Success(List <MBSettlement> nominees, MBHero initiatingHero) =>
 new FindHostSettlementResult()
 {
     Status = ResultStatus.Success,
     AllQualifiedCandidates = nominees,
     InitiatingHero         = initiatingHero
 };
 protected BasicKingdomHostRequirementsComparer(MBHero initiatingHero = null) : base(initiatingHero)
 {
 }
示例#26
0
 protected FactionLeaderHostComparer(MBHero initiatingHero = null) : base(initiatingHero)
 {
 }
示例#27
0
 protected override bool MeetsRequirements(MBHero hero) =>
 base.MeetsRequirements(hero) &&
 hero.IsFactionLeader;
 protected KingdomComparerBase(MBHero initiatingHero = null)
     : base(initiatingHero)
 {
 }
        private bool PayorMeetsRequirements(MBHero payor)
        {
            var result = HeroFinder.FindHostsThatMeetBasicRequirements(payor);

            return(result.Succeeded);
        }
示例#30
0
 protected ClanComparerBase(MBHero initiatingHero = null) : base(initiatingHero)
 {
 }