示例#1
0
        public void HandleCommandOnUnit(AbilityCommandRequest command, IUnit unit)
        {
            if (CanHandleCommandOnUnit(command, unit))
            {
                var unitOwner = UnitPossessionCanon.GetOwnerOfPossession(unit);

                TechCanon.AddFreeTechToCiv(unitOwner);
            }
            else
            {
                throw new InvalidOperationException("Cannot handle command");
            }
        }
        protected override void DoOnPossessionEstablished(IBuilding building, ICity newOwner)
        {
            if (newOwner == null)
            {
                return;
            }

            var cityOwner = CityPossessionCanon.GetOwnerOfPossession(newOwner);

            foreach (var resource in building.Template.ResourcesConsumed)
            {
                ResourceLockingCanon.LockCopyOfResourceForCiv(resource, cityOwner);
            }

            if (building.Template.ProvidesFreeTech)
            {
                TechCanon.AddFreeTechToCiv(cityOwner);
            }

            CitySignals.GainedBuilding.OnNext(new Tuple <ICity, IBuilding>(newOwner, building));
        }