예제 #1
0
        //TODO: Race condition here because it's possible the subsciber hasn't subscribed just yet.
        /// <inheritdoc />
        public async Task OnGameInitialized()
        {
            CharacterListResponse listResponse = await CharacterQueryable.GetCharacters(AuthTokenRepository.RetrieveWithType())
                                                 .ConfigureAwait(true);

            if (!listResponse.isSuccessful || listResponse.CharacterIds.Count == 0)
            {
                if (Logger.IsErrorEnabled)
                {
                    Logger.Error($"Failed to query character list. Recieved ResultCode: {listResponse.ResultCode}");
                }

                //We don't have character creation... Soooo, nothing we can do right now.
                return;
            }

            //TODO: Should we make this API spit out network guids?
            foreach (var characterId in listResponse.CharacterIds)
            {
                NetworkEntityGuid entityGuid = new NetworkEntityGuidBuilder()
                                               .WithType(EntityType.Player)
                                               .WithId(characterId)
                                               .Build();

                OnCharacterSelectionEntryChanged?.Invoke(this, new CharacterSelectionEntryDataChangeEventArgs(entityGuid));
            }
        }
예제 #2
0
        public async Task Test_Get_Characters_Contains_No_Characters_Added_From_Other_Account([Range(1, 20)] int count)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            List <string> names = await AddTestValuesToRepository(count, serviceProvider, 2);

            //act
            CharacterListResponse response = await controller.GetCharacters();

            //assert
            Assert.AreEqual(0, response.CharacterIds.Count, $"Expected NO characters to be provided. They're all under a different account. This is CRITICAL!");
            Assert.True(response.ResultCode == CharacterListResponseCode.NoCharactersFoundError);
            Assert.False(response.isSuccessful);
        }
예제 #3
0
        public async Task Test_Get_Characters_Contains_Same_Size_As_Characters_Added([Range(1, 20)] int count)
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            List <string> names = await AddTestValuesToRepository(count, serviceProvider);

            //act
            CharacterListResponse response = await controller.GetCharacters();

            //assert
            Assert.AreEqual(count, response.CharacterIds.Count);
            Assert.True(response.ResultCode == CharacterListResponseCode.Success);
            Assert.True(response.isSuccessful);
        }
예제 #4
0
        public async Task Test_Get_Characters_Empty_Datastore_Produces_Empty_Character_Result()
        {
            //arrange
            IServiceProvider    serviceProvider = BuildServiceProvider <CharacterController>("Test", 1);
            CharacterController controller      = serviceProvider.GetService <CharacterController>();

            //act
            CharacterListResponse response = await controller.GetCharacters();

            //assert
            Assert.NotNull(response);
            Assert.NotNull(response.CharacterIds);
            Assert.True(response.CharacterIds.Count == 0);
            Assert.True(response.ResultCode == CharacterListResponseCode.NoCharactersFoundError);
            Assert.False(response.isSuccessful);
        }