Пример #1
0
        public BuildingInfo()
        {
            _Meta               = new BuildingMeta();
            _Meta._PrefabName   = "Prefab Name";
            _Meta._BuildingType = eBuildingType.FERTILITY;

            _Attributes = new BuildingAttributes();
            _Attributes._TimeRequiredInBuilding = 0.0f;
            _Attributes._Capacity = 0;
        }
Пример #2
0
        public async void ConstructionOnAvailableSpotStarted()
        {
            var size               = "XXL";
            var buildingMetaId     = "Test_ConstructionOnAvailableSpotStarted";
            var buildingSpotMetaId = "Test_ConstructionOnAvailableSpotStarted";
            var playerId           = "Test_ConstructionOnAvailableSpotStarted";

            // Create test builidng meta if it doesn't exist.
            var buildingMeta = await new BuildingMeta(buildingMetaId).LoadAsync();

            if (buildingMeta == null)
            {
                buildingMeta      = new BuildingMeta(buildingMetaId);
                buildingMeta.Size = size;
                await buildingMeta.InsertAsync();
            }

            // Create test builidng spot meta if it doesn't exist.
            var buildingSpotMeta = await new BuildingSpotMeta(buildingSpotMetaId).LoadAsync();

            if (buildingSpotMeta == null)
            {
                buildingSpotMeta      = new BuildingSpotMeta(buildingSpotMetaId);
                buildingSpotMeta.Size = size;
                await buildingSpotMeta.InsertAsync();
            }

            // Create test player and building spot.
            var buildingSpot = new BuildingSpot(buildingSpotMetaId);
            var player       = await Helpers.CreateTestPlayer(playerId, buildingSpot : buildingSpot);

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(playerId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{playerId}',
                'SessionToken':'{sessionToken}',
                'BuildingSpotId':'{buildingSpot.Id}',
                'BuildingMetaId':'{buildingMetaId}',
            }}");

            // Execute controller.
            var controller    = new StartBuildingConstructionController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Make sure building construction is started.
            player = await player.LoadAsync();

            Assert.False(player.GetBuildingSpotById(buildingSpot.Id).Building.IsConstructed);
        }
Пример #3
0
        public async void FinishedConstructionIsConstructed()
        {
            var buildingMetaId           = "Test_FinishedConstructionIsConstructed";
            var buildingConstructionTime = TimeSpan.FromMilliseconds(500);
            var playerId = "Test_FinishedConstructionIsConstructed";

            // Create test builidng meta if it doesn't exist.
            var buildingMeta = await new BuildingMeta(buildingMetaId).LoadAsync();

            if (buildingMeta == null)
            {
                buildingMeta = new BuildingMeta(buildingMetaId);
                buildingMeta.ConstructionTime = buildingConstructionTime;
                await buildingMeta.InsertAsync();
            }

            // Create test player and building.
            var building = new Building(buildingMetaId);

            building.IsConstructed    = false;
            building.ConstructionTask = new TimeTask(buildingMeta.ConstructionTime);
            var player = await Helpers.CreateTestPlayer(playerId, building : building);

            // Wait for building to construct.
            Thread.Sleep(buildingConstructionTime);

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(playerId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{playerId}',
                'SessionToken':'{sessionToken}',
                'BuildingId':'{building.Id}'
            }}");

            // Execute controller.
            var controller    = new FinishBuildingConstructionController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Make sure building is constructed.
            player = await player.LoadAsync();

            Assert.True(player.GetBuildingById(building.Id).IsConstructed);
        }
Пример #4
0
        public async void UnavailableContractNotSelected()
        {
            var requiredBuildingMetaId = "Test_UnavailableContractNotSelected_Required";
            var buildingMetaId         = "Test_UnavailableContractNotSelected";
            var contractMetaId         = "Test_UnavailableContractNotSelected";
            var playerId = "Test_UnavailableContractNotSelected";

            // Create required test building meta if it doesn't exist.
            var requiredBuildingMeta = await new BuildingMeta(requiredBuildingMetaId).LoadAsync();

            if (requiredBuildingMeta == null)
            {
                requiredBuildingMeta = new BuildingMeta(requiredBuildingMetaId);
                await requiredBuildingMeta.InsertAsync();
            }

            // Create 'wrong' test building meta if it doesn't exist.
            var buildingMeta = await new BuildingMeta(buildingMetaId).LoadAsync();

            if (buildingMeta == null)
            {
                buildingMeta = new BuildingMeta(buildingMetaId);
                buildingMeta.AvailableContractMetaIds = new List <string> {
                    contractMetaId
                };
                await buildingMeta.InsertAsync();
            }

            // Create test contract meta if it doesn't exist.
            var contractMeta = await new ContractMeta(contractMetaId).LoadAsync();

            if (contractMeta == null)
            {
                contractMeta             = new ContractMeta(contractMetaId);
                contractMeta.Requirement = new Requirement()
                {
                    BuildingMetaIds = new List <string> {
                        requiredBuildingMetaId
                    }
                };
                await contractMeta.InsertAsync();
            }

            // Create test player with 'wrong' building.
            var building = new Building(buildingMetaId);

            building.IsConstructed = true;
            var player = await Helpers.CreateTestPlayer(playerId, building : building);

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(playerId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{playerId}',
                'SessionToken':'{sessionToken}',
                'BuildingId':'{building.Id}',
                'ContractMetaId':'{contractMetaId}'
            }}");

            // Execute controller.
            var controller    = new StartProductionController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is RequirementNotFulfilled.
            Assert.Equal(responseToken["Status"], JStatus.RequirementNotFulfilled.JToken["Status"]);

            // Make sure contract is not selected.
            player = await player.LoadAsync();

            Assert.Null(player.GetBuildingById(building.Id).ProductionTask);
        }
Пример #5
0
        public async void RewardForNotCompletedContractNotCollected()
        {
            var contractMetaId = "Test_RewardForNotCompletedContractNotCollected";
            var contractReward = new Reward()
            {
                Resources = new List <int> {
                    0, 0, 111
                }
            };
            var contractProductionTime = TimeSpan.FromMinutes(10);
            var buildingMetaId         = "Test_RewardForNotCompletedContractNotCollected";
            var playerId = "Test_RewardForNotCompletedContractNotCollected";

            // Create test contract meta if it doesn't exist.
            var contractMeta = await new ContractMeta(contractMetaId).LoadAsync();

            if (contractMeta == null)
            {
                contractMeta = new ContractMeta(contractMetaId);
                contractMeta.Rewards.Add(contractReward);
                contractMeta.ProductionTime = contractProductionTime;
                await contractMeta.InsertAsync();
            }

            // Create test building meta if it doesn't exist.
            var buildingMeta = await new BuildingMeta(buildingMetaId).LoadAsync();

            if (buildingMeta == null)
            {
                buildingMeta = new BuildingMeta(buildingMetaId);
                buildingMeta.StorageLimit = 1000;
                await buildingMeta.InsertAsync();
            }

            // Create test player and building.
            var building = new Building(buildingMetaId);

            building.IsConstructed  = true;
            building.ProductionTask = new ProductionTask(contractMeta);
            var player = await Helpers.CreateTestPlayer(playerId, building : building);

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(playerId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{playerId}',
                'SessionToken':'{sessionToken}',
                'BuildingId':'{building.Id}'
            }}");

            // Execute controller.
            var controller    = new CheckProductionController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is ContractNotReady.
            Assert.Equal(responseToken["Status"], JStatus.NotReady.JToken["Status"]);

            // Make sure reward is not collected.
            var collectController = new CollectProductionRewardsController();

            responseToken = await collectController.HandleHttpRequestAsync(data);

            player = await player.LoadAsync();

            Assert.True(player.Resources.Count == 0);
        }
Пример #6
0
 public void SetMetaData(BuildingMeta meta)
 {
     _meta = meta;
 }
Пример #7
0
        public async void CitizenAbilityModifiedProduction()
        {
            var testId         = "Test_CitizenAbilityModifiedProduction";
            var contractReward = new Reward()
            {
                Resources = new List <int> {
                    0, 0, 111
                }
            };
            var contractProductionTime = TimeSpan.FromSeconds(10);

            // Create test contract meta if it doesn't exist.
            var contractMeta = await new ContractMeta(testId).LoadAsync();

            if (contractMeta == null)
            {
                contractMeta = new ContractMeta(testId);
                contractMeta.Rewards.Add(contractReward);
                contractMeta.ProductionTime = contractProductionTime;
                await contractMeta.InsertAsync();
            }

            // Create test building meta if it doesn't exist.
            var buildingMeta = await new BuildingMeta(testId).LoadAsync();

            if (buildingMeta == null)
            {
                buildingMeta = new BuildingMeta(testId);
                buildingMeta.StorageLimit = 1000;
                await buildingMeta.InsertAsync();
            }

            // Create test citizen ability meta if it doesn't exist.
            var abilityMeta = await new CitizenAbilityMeta(testId).LoadAsync();

            if (abilityMeta == null)
            {
                abilityMeta = new CitizenAbilityMeta(testId);
                abilityMeta.ReduceTaskDuration = new List <TimeSpan> {
                    TimeSpan.FromSeconds(9)
                };
                await abilityMeta.InsertAsync();
            }

            // Create test player, building and citizen.
            var building = new Building(testId);

            building.IsConstructed  = true;
            building.ProductionTask = new ProductionTask(contractMeta);
            var player = await Helpers.CreateTestPlayer(testId, building : building);

            var citizen = new Citizen();

            citizen.Abilities.Add(new CitizenAbility(testId));
            player.Citizens.Add(citizen);
            building.AssignedCitizenIds.Add(citizen.Id);
            await player.ReplaceAsync();

            // Wait for contract to complete (contractProductionTime - ReduceTaskDuration + .5f).
            Thread.Sleep(TimeSpan.FromSeconds(1.5f));

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(testId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{testId}',
                'SessionToken':'{sessionToken}',
                'BuildingId':'{building.Id}'
            }}");

            // Execute controller.
            var controller    = new CheckProductionController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Test reward collection.
            var collectController    = new CollectProductionRewardsController();
            var collectResponseToken = await collectController.HandleHttpRequestAsync(data);

            Assert.Equal(collectResponseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Make sure reward is added.
            player = await player.LoadAsync();

            Assert.True(player.Resources[2] > 0);
        }