Ejemplo n.º 1
0
        public void CreateByPrototype_SetsDefaultValuesForWorkerBuilding()
        {
            // arrange
            var prototype = new WorkerBuilding {
                Workers = 1
            };
            var player = new Player();

            // act
            var building = (WorkerBuilding)Building.CreateByPrototype(prototype, player, null, new Vector(), null);

            // assert
            Assert.AreEqual(building.Workers, 0);
        }
Ejemplo n.º 2
0
        public bool TryAddWorkers(WorkerBuilding building, int deltaWorkers)
        {
            var resultWorkers    = building.Workers + deltaWorkers;
            var resultFreePeople = building.Owner.Area[0, 0].FreePeople - deltaWorkers;

            if (!building.Finished ||
                resultWorkers < 0 ||
                resultWorkers > building.Prototype.Workers ||
                resultFreePeople < 0)
            {
                return(false);
            }

            building.Workers = resultWorkers;
            building.Owner.Area[0, 0].FreePeople = resultFreePeople;

            return(true);
        }
Ejemplo n.º 3
0
        public int AddWorkersForPlayer(WorkerBuilding prototype, int deltaWorkers, Player player)
        {
            var oldDeltaWorkers = deltaWorkers;

            foreach (var building in player.OwnBuildings.Where(b => b.Prototype == prototype).OfType <WorkerBuilding>())
            {
                var delta = deltaWorkers > 0
                    ? Math.Min(building.Prototype.Workers - building.Workers, deltaWorkers)
                    : Math.Max(-building.Workers, deltaWorkers);

                if (TryAddWorkers(building, delta))
                {
                    deltaWorkers -= delta;
                }
            }

            return(oldDeltaWorkers - deltaWorkers);
        }