コード例 #1
0
        private static int BribeCost(BaseUnitLand unitToBribe)
        {
            City capital = unitToBribe.Player.Cities.Where(c => c.HasBuilding(new Palace())).FirstOrDefault();

            int distance = capital == null ? 16 : unitToBribe.Tile.DistanceTo(capital);

            return(((unitToBribe.Player.Gold + 750) / (distance + 2)) * unitToBribe.Price);
        }
コード例 #2
0
        private static int DialogHeight(BaseUnitLand unitToBribe, short gold)
        {
            int choices = 0;

            if (CanBribe(unitToBribe, gold))
            {
                choices = 2;
            }

            return((choices * Resources.GetFontHeight(FONT_ID)) + 30);
        }
コード例 #3
0
        private static int BribeCost(BaseUnitLand unitToBribe)
        {
            City capital = unitToBribe.Player.GetCapital();

            int distance = capital == null ? 16 : unitToBribe.Tile.DistanceTo(capital);

            int cost = ((unitToBribe.Player.Gold + 750) / (distance + 2)) * unitToBribe.Price;

            // fire-eggs 20190628 barbarian cost is 50%
            return((unitToBribe.Player.Civilization is Barbarian) ? cost / 2 : cost);
        }
コード例 #4
0
        internal DiplomatBribe(BaseUnitLand unitToBribe, Diplomat diplomat) : base(100, 80, 135, DialogHeight(unitToBribe, diplomat.Player.Gold))
        {
            _unitToBribe = unitToBribe ?? throw new ArgumentNullException(nameof(unitToBribe));
            _diplomat    = diplomat ?? throw new ArgumentNullException(nameof(diplomat));

            _bribeCost = BribeCost(unitToBribe);
            _canBribe  = CanBribe(unitToBribe, diplomat.Player.Gold);

            DialogBox.DrawText($"{unitToBribe.Player.TribeName} {unitToBribe.Name}", 0, 15, 5, 5);
            DialogBox.DrawText($"will desert for ${_bribeCost}", 0, 15, 5, 5 + Resources.GetFontHeight(FONT_ID));
            DialogBox.DrawText($"Treasury ${diplomat.Player.Gold}", 0, 15, 5, 5 + (2 * Resources.GetFontHeight(FONT_ID)));
        }
コード例 #5
0
 public static Show DiplomatBribe(BaseUnitLand unitToBribe, Diplomat diplomat) => new Show(new DiplomatBribe(unitToBribe, diplomat));
コード例 #6
0
 private static bool CanBribe(BaseUnitLand unitToBribe, short gold)
 {
     return(gold >= BribeCost(unitToBribe));
 }