Inheritance: ICharacterBuilder
        public async Task HandleAsync_GivenNullResponseFromJikan_ShouldNotThrowAndCallJikan()
        {
            // Given
            const int malId               = 1;
            var       dbContext           = InMemoryDbProvider.GetDbContext();
            var       jikanServiceBuilder = new JikanServiceBuilder().WithCharacterReturned(null);

            var character = new CharacterBuilder()
                            .WithMalId(malId)
                            .Build();

            await dbContext.AddAsync(character);

            await dbContext.SaveChangesAsync();

            var handler = CreateHandler(dbContext, jikanServiceBuilder.Build());

            var command = new UpdateCharacterMessage
            {
                Id    = Guid.NewGuid(),
                MalId = malId
            };

            // When
            var action = handler.Awaiting(x => x.HandleAsync(command));

            // Then
            using (new AssertionScope())
            {
                await action.Should().NotThrowAsync();

                jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacterAsync(malId), Times.Once);
            }
        }
        public async Task HandleAsync_GivenExceptionFromJikan_ShouldThrowAndCallJikan()
        {
            // Given
            const int malId               = 1;
            var       dbContext           = InMemoryDbProvider.GetDbContext();
            var       jikanServiceBuilder = new JikanServiceBuilder().WithGetCharacterThrowing();

            var anime = new CharacterBuilder()
                        .WithMalId(malId)
                        .Build();

            await dbContext.AddAsync(anime);

            await dbContext.SaveChangesAsync();

            var handler = CreateHandler(dbContext, jikanServiceBuilder.Build());

            var command = new UpdateCharacterMessage
            {
                Id    = Guid.NewGuid(),
                MalId = malId
            };

            // When
            var action = handler.Awaiting(x => x.HandleAsync(command));

            // Then
            using (new AssertionScope())
            {
                await action.Should().ThrowExactlyAsync <JikanRequestException>();

                jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacterAsync(malId), Times.Once);
            }
        }
Beispiel #3
0
 public Character construct()
 {
     builder = characterInfo.GetClassBuilder();
     return(builder.SetName(characterInfo.GetName())
            .SetRace(characterInfo.GetRace())
            .Build());
 }
Beispiel #4
0
        public void TestBasicFight()
        {
            var attackerCharacter = new CharacterBuilder()
                                    .Attributes(new AttributesBuilder()
                                                .Health(15)
                                                .Skill(12)
                                                .Defense(2)
                                                .Special(0)
                                                .Speed(13)
                                                .Strength(7)
                                                .Build())
                                    .Weapons("Shortsword")
                                    .Build();

            var defenderCharacter = new CharacterBuilder()
                                    .Attributes(new AttributesBuilder()
                                                .Health(15)
                                                .Skill(12)
                                                .Defense(2)
                                                .Special(0)
                                                .Speed(13)
                                                .Strength(3)
                                                .Build())
                                    .Weapons("Shortsword")
                                    .Build();

            var attacker = new BaseCombatant(attackerCharacter, ArmyType.Friendly);
            var defender = new BaseCombatant(defenderCharacter, ArmyType.Friendly);

            attacker.Position = new Vector2(0, 1);
            defender.Position = new Vector2(0, 0);

            var map = new Map();

            map.AddCombatant(attacker);
            map.AddCombatant(defender);

            var skillDatabase = new SkillDatabase(map);

            var forecaster = new FightForecaster(map, skillDatabase);
            var forecast   = forecaster.Forecast(attacker, defender, SkillType.Melee);
            var finalizer  = new FightFinalizer(skillDatabase);

            var final        = finalizer.Finalize(forecast, new ConstantRandomizer(100));
            var initialPhase = final.InitialPhase;

            Assert.NotNull(initialPhase);

            var initialDamage = initialPhase.Effects.GetDefenderDamage();

            Assert.AreEqual(5, initialDamage);
            var counterPhase = final.CounterPhase;

            Assert.NotNull(counterPhase);

            var counterDamage = counterPhase.Effects.GetDefenderDamage();

            Assert.AreEqual(1, counterDamage);
        }
Beispiel #5
0
        void test()
        {
            CharacterBuilder builder = new CharacterBuilder();

            builder.Create("name1").HP(100).MP(100);

            Character myCharacter = builder.Value();
        }
Beispiel #6
0
        public static void Start()
        {
            Player player = CharacterBuilder.BuildCharacter();

            LineHelpers.StoryPrint("As you enter the town you a man comes up to you and asks if you are the hero they hired. You tell them no but ask what the issue is. He tells you of creatures leaving a cave to the west and a bounty of 10000 gold on a Troll Warlord in the cave.", player);

            Town.Enter(player);
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            try
            {
                //на английской версии винды выводит ? вместо кирилицы
                //смена кодировки фиксит проблему
                Console.OutputEncoding = Encoding.UTF8;

                CharacterBuilder characterBuilder = new CharacterBuilder(25, new Operations());
                InputHelper      inputHelper      = new InputHelper();


                Console.WriteLine("Добро пожаловать в меню выбора создания персонажа!");
                Console.WriteLine("У вас есть 25 очков, которые вы можете распределить по умениям");
                Console.WriteLine("Нажмите любую клавишу чтобы продолжить...");
                Console.ReadKey();

                while (characterBuilder.AvailablePoints > 0)
                {
                    try
                    {
                        Console.Clear();

                        Console.WriteLine(characterBuilder.ToString());

                        Console.WriteLine("Какую характеристику вы хотите изменить?");
                        AbilityType abilityType = inputHelper.GetAbilityType();

                        Console.WriteLine(@"Что вы хотите сделать? +\-");
                        OperationType operationType = inputHelper.GetOperationType();

                        Console.WriteLine(@"Колличество поинтов которые следует {0}", operationType == OperationType.Add ? "прибавить" : "отнять");

                        int operandPoints = inputHelper.GetPositiveNumberWithLimit(characterBuilder.AvailablePoints);

                        characterBuilder.SpendPonts(operandPoints, operationType, abilityType);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"Ошибка при распределении очков: {e.Message}");
                    }
                }

                Console.WriteLine("Вы распределили все очки. Введите возраст персонажа:");

                Character character = characterBuilder.Build(inputHelper.GetPositiveNumber());

                Console.Clear();

                Console.WriteLine(character.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine($"Произошла ошибка: {e.Message}");
            }

            Console.ReadKey();
        }
Beispiel #8
0
    private void SpawnCustomChatacters()
    {
        CharacterBuilder builer = new CharacterBuilder(this);

        if (_ff9.fldMapNo == 102)
        {
            builer.Spawn(new MyCharacter());
        }
    }
Beispiel #9
0
 public void ConstructCharacter(CharacterBuilder builder)
 {
     builder.BuildArms();
     builder.BuildBody();
     builder.BuildHead();
     builder.BuildLegs();
     builder.BuildHair();
     builder.BuildBreasts();
 }
Beispiel #10
0
        void EnterName(string name)
        {
            var player = new CharacterBuilder()
                         .Name.Is(name)
                         .Attributes.StrenghtIs(6)
                         .Attributes.MaxHealthIs(10);
            var career = new Career(player);

            GameManager.Career = career;
            GameManager.EnterState(new Town(GameManager));
        }
Beispiel #11
0
 public Career(Character player = null)
 {
     if (player == null)
     {
         player = new CharacterBuilder()
                  .Name.IsRandom()
                  .Attributes.StrenghtIs(6)
                  .MaxHealthIs(10);
     }
     Player = player;
 }
        protected override IEnumerator CharacterBuilder_BuildCharacter()
        {
            yield return(new WaitForSeconds(0f));

            var isNetworked = false;

#if !(UNITY_4_6 || UNITY_5_0)
            isNetworked = m_IsNetworked;
#endif
            spawnedGameObject.AddComponent <AnimatorMonitor>();
            CharacterBuilder.BuildHumanoidCharacter(spawnedGameObject, m_AIAgent, isNetworked, m_MovementType, m_AnimatorController, m_MaxFrictionMaterial, m_FrictionlessMaterial);
        }
Beispiel #13
0
        public TradeEngine(MapService mapService, string dataPath)
        {
            MapService = mapService;

            var file      = new FileInfo(Path.Combine(dataPath, DataFileName));
            var converter = new XmlSerializer(typeof(TradeGoods));

            using (var stream = file.OpenRead())
                m_TradeGoods = ((TradeGoods)converter.Deserialize(stream)).TradeGood.ToImmutableList();

            m_LegalTradeGoods  = m_TradeGoods.Where(g => g.Legal).ToImmutableList();
            m_CharacterBuilder = new CharacterBuilder(dataPath);
        }
        public async Task Get_characters_query_handler_should_return_list_of_episodes()
        {
            // Arrange
            var characters   = new CharacterBuilder().Generate(10).SaveChanges(_testFixture.Context).Build();
            var queryHandler = new GetCharactersQueryHandler(_testFixture.Context, _testFixture.Mapper);

            // Act
            var response = await queryHandler.Handle(new GetCharactersQuery(), CancellationToken.None);

            // Assert
            response.ShouldBeOfType(typeof(List <GetCharacterViewModel>));
            response.Count.ShouldBe(characters.Count);
        }
Beispiel #15
0
        public static void Main(string[] args)
        {
            MoveBuilder      mbuilder = new MoveBuilder("res/Moves/");
            CharacterBuilder cbuilder = new CharacterBuilder("res/Characters/");

            cbuilder.MoveBuilder = mbuilder;
            Character[]  pside        = new Character[] { cbuilder.buildFromXml("milly.xml", new PlayerMoveProvider()) };
            Character[]  eside        = new Character[] { cbuilder.buildFromXml("gerard.xml", new PlayerMoveProvider()) };
            TurnProvider turnProvider = new TraditionalTurnProvider();
            Battle       b            = new Battle(pside, eside, turnProvider);

            b.start();
        }
        public async Task Get_episodes_query_handler_should_return_last_page()
        {
            // Arrange
            var lastCharacter = new CharacterBuilder().Generate(20).SaveChanges(_testFixture.Context).Build().Last();
            var queryHandler  = new GetCharactersQueryHandler(_testFixture.Context, _testFixture.Mapper);

            // Act
            var response = await queryHandler.Handle(new GetCharactersQuery { PageNumber = 17, PageSize = 4 }, CancellationToken.None);

            // Assert
            response.ShouldBeOfType(typeof(List <GetCharacterViewModel>));
            response.Last().Name.ShouldBe(lastCharacter.Name);
        }
        public async Task HandleAsync_GivenManyNicknames_ShouldUpdateWithJoinedString()
        {
            // Given
            const int malId = 1;

            var nicknames = new List <string> {
                "Nickname 1", "Nickname 2", "Nickname 3"
            };

            var returnedCharacter = new Character
            {
                Nicknames = nicknames
            };

            var jikanServiceBuilder = new JikanServiceBuilder().WithCharacterReturned(returnedCharacter);

            var dbContext = InMemoryDbProvider.GetDbContext();
            var character = new CharacterBuilder()
                            .WithMalId(malId)
                            .WithName("PreUpdateName")
                            .WithAbout("PreUpdateAbout")
                            .WithKanjiName("PreUpdateJapanese")
                            .WithImageUrl("PreUpdateImageUrl")
                            .WithPopularity(0)
                            .Build();

            await dbContext.AddAsync(character);

            await dbContext.SaveChangesAsync();

            var handler = CreateHandler(dbContext, jikanServiceBuilder.Build());

            var command = new UpdateCharacterMessage
            {
                Id    = Guid.NewGuid(),
                MalId = malId
            };

            // When
            await handler.HandleAsync(command);

            // Then
            var updatedCharacter = await dbContext.AnimeCharacters.FirstAsync(x => x.MalId == malId);

            using (new AssertionScope())
            {
                updatedCharacter.Nicknames.Should().Be("Nickname 1;Nickname 2;Nickname 3");

                jikanServiceBuilder.JikanClient.Verify(x => x.GetCharacter(malId), Times.Once);
            }
        }
Beispiel #18
0
        public void TakeDamage()
        {
            var barrelCharacter = new CharacterBuilder()
                                  .Attributes(new AttributesBuilder()
                                              .Health(50)
                                              .Defense(0)
                                              .Build())
                                  .Build();
            var fuckingBarrel = new BaseCombatant(barrelCharacter, ArmyType.Other);
            var damage        = new Damage(100);

            damage.Apply(fuckingBarrel);
            Assert.AreEqual(0, fuckingBarrel.Health);
            Assert.IsFalse(fuckingBarrel.IsAlive);
        }
        /// <summary>
        /// Monster or 'enemy' entity for the game.
        /// </summary>
        /// <param name="game">Current game instance.</param>
        public Monster(Game game) : base(game)
        {
            //Initial values
            Texture = Game.Content.Load <Texture2D>("Player/blob_Characters");
            SetAnimationAtlas(CharacterBuilder.BuildCharacter("Blue"));
            SpriteTitle.Text        = "Evil Librarian";
            SpriteTitle.RenderColor = Color.OrangeRed;


            LeftCollided  += CollidedWithLeft;
            RightCollided += CollidedWithRight;

            Speed      = 4;
            JumpHeight = 6;
        }
Beispiel #20
0
        public static Character ValidateCharacter(dynamic data)
        {
            //TODO: validate and serialize data
            Character character = CharacterBuilder.Init()
                                  .WithName(JsonConvert.SerializeObject(data.name))
                                  .WithStatus(JsonConvert.SerializeObject(data.status))
                                  .SpeciesOf(JsonConvert.SerializeObject(data.species))
                                  .OfGender(JsonConvert.SerializeObject(data.gender))
                                  .From(JsonConvert.SerializeObject(data.origin))
                                  .LastSeenAt(JsonConvert.SerializeObject(data.lastSeenAt))
                                  .PlayedIn((ushort)data.episodes.Length)
                                  .Build();

            return(character);
        }
Beispiel #21
0
        /// <summary>
        /// Player object controlled by game user.
        /// </summary>
        /// <param name="game">Current game instance.</param>
        public Player(Game game) : base(game)
        {
            //Initial values
            Texture = Game.Content.Load <Texture2D>("Player/blob_Characters");
            SetAnimationAtlas(CharacterBuilder.BuildCharacter("Yellow"));
            SpriteTitle.Text        = "Tosker";
            SpriteTitle.RenderColor = Color.Green;
            IsStatic   = false;
            Width      = 64;
            Height     = 64;
            Speed      = 6;
            JumpHeight = 8;

            //Delegate game object collison events
            BottomCollided += Landed;
        }
        public void ToCharacterTableEntry_GivenEmptyCharacter_ShouldReturnEmptyCharacterTableEntryDto()
        {
            // Given
            var character = new CharacterBuilder().Build();

            // When
            var dto = character.ToCharacterTableEntry();

            // Then
            using (new AssertionScope())
            {
                dto.Should().NotBeNull();
                dto.ImageUrl.Should().BeEmpty();
                dto.Name.Should().BeEmpty();
                dto.Url.Should().NotBeEmpty();
                dto.MalId.Should().Be(default);
Beispiel #23
0
        public async Task Delete_character_command_handler_should_pass()
        {
            // Arrange
            var character = new CharacterBuilder().Generate().SaveChanges(_testFixture.Context).Build().First();
            var command   = new DeleteCharacterCommand {
                Id = character.Id
            };
            var commandHandler = new DeleteCharacterCommandHandler(_testFixture.Context);

            // Act
            var response = await commandHandler.Handle(command, CancellationToken.None);

            // Assert
            response.ShouldBe(Unit.Value);
            character.IsActive.ShouldBe(false);
        }
Beispiel #24
0
        public void TestAttackerKillsOnDouble()
        {
            var attackerCharacter = new CharacterBuilder()
                                    .Attributes(new AttributesBuilder()
                                                .Health(15)
                                                .Skill(12)
                                                .Defense(2)
                                                .Special(0)
                                                .Speed(33)
                                                .Strength(10)
                                                .Build())
                                    .Weapons("Shortsword")
                                    .Build();

            var defenderCharacter = new CharacterBuilder()
                                    .Attributes(new AttributesBuilder()
                                                .Health(15)
                                                .Skill(12)
                                                .Defense(0)
                                                .Special(0)
                                                .Speed(13)
                                                .Strength(7)
                                                .Build())
                                    .Stats(new StatsBuilder()
                                           .ParryChance(0)
                                           .Build())
                                    .Weapons("Shortsword")
                                    .Build();

            var attacker = new BaseCombatant(attackerCharacter, ArmyType.Friendly);
            var defender = new BaseCombatant(defenderCharacter, ArmyType.Friendly);

            attacker.Position = new Vector2(0, 0);
            defender.Position = new Vector2(0, 1);

            var map           = new Map();
            var skillDatabase = new SkillDatabase(map);
            var forecaster    = new FightForecaster(map, skillDatabase);
            var forecast      = forecaster.Forecast(attacker, defender, SkillType.Melee);
            var finalizer     = new FightFinalizer(skillDatabase);
            var final         = finalizer.Finalize(forecast, new ConstantRandomizer(100));

            Assert.NotNull(final.InitialPhase);
            Assert.NotNull(final.CounterPhase);
            Assert.NotNull(final.DoubleAttackPhase);
            Assert.Null(final.FlankerPhase);
        }
Beispiel #25
0
        public async Task Delete_character_command_handler_should_throw_not_found_exception()
        {
            // Arrange
            var character = new CharacterBuilder().Generate().SaveChanges(_testFixture.Context).Build().First();
            var command   = new DeleteCharacterCommand {
                Id = character.Id + 1
            };
            var commandHandler = new DeleteCharacterCommandHandler(_testFixture.Context);

            // Act
            async Task Act() => await commandHandler.Handle(command, CancellationToken.None);

            var ex = await Record.ExceptionAsync(Act);

            // Assert
            ex.ShouldBeOfType <NotFoundException>();
        }
        public async Task CountAsync_GivenSingleCharacter_ShouldReturnOne()
        {
            // Given
            var dbContext  = InMemoryDbProvider.GetDbContext();
            var repository = new CharacterRepository(dbContext);
            var character  = new CharacterBuilder().WithName("Naruto").Build();

            await dbContext.AnimeCharacters.AddAsync(character);

            await dbContext.SaveChangesAsync();

            // When
            var result = await repository.GetCountAsync();

            // Then
            result.Should().Be(1);
        }
        public async Task GetAsync_GivenExistingCharacterWithId_ShouldReturnResult()
        {
            // Given
            var dbContext  = InMemoryDbProvider.GetDbContext();
            var repository = new CharacterRepository(dbContext);
            var character  = new CharacterBuilder().WithMalId(1).Build();

            await dbContext.AnimeCharacters.AddAsync(character);

            await dbContext.SaveChangesAsync();

            // When
            var result = await repository.GetAsync(1);

            // Then
            result.Should().NotBeNull();
        }
Beispiel #28
0
        protected TradeEngine(MapService mapService, string dataPath, INameService nameService)
        {
            MapService    = mapService;
            m_NameService = nameService;
            var file      = new FileInfo(Path.Combine(dataPath, DataFileName));
            var converter = new XmlSerializer(typeof(TradeGoods));

            using (var stream = file.OpenRead())
                TradeGoods = ((TradeGoods)converter.Deserialize(stream)).TradeGood.ToImmutableList();

            LegalTradeGoods    = TradeGoods.Where(g => g.Legal).ToImmutableList();
            m_CharacterBuilder = new CharacterBuilder(dataPath);

            var personalityFile = new FileInfo(Path.Combine(dataPath, "personality.txt"));

            m_Personalities = File.ReadAllLines(personalityFile.FullName).Where(x => !string.IsNullOrEmpty(x)).Distinct().ToImmutableArray();
        }
        public async Task Get_character_query_handler_should_throw_not_found_exception()
        {
            // Arrange
            var character = new CharacterBuilder().Generate().Build().First();
            var query     = new GetCharacterQuery {
                Id = character.Id + 1
            };
            var queryHandler = new GetCharacterQueryHandler(_testFixture.Context, _testFixture.Mapper);

            // Act
            async Task Act() => await queryHandler.Handle(query, CancellationToken.None);

            var ex = await Record.ExceptionAsync(Act);

            // Assert
            ex.ShouldBeOfType <NotFoundException>();
        }
        public async Task Create_character_command_validator_should_return_unique_name_validation_error()
        {
            // Arrange
            var episode   = new EpisodeBuilder().Generate().SaveChanges(_testFixture.Context).Build().First();
            var character = new CharacterBuilder().Generate().SaveChanges(_testFixture.Context).Build().First();
            var command   = new CreateCharacterCommand
            {
                EpisodesIds = new[] { episode.Id }, Name = character.Name, FriendsIds = new int[] { }
            };
            var validator = new CreateCharacterCommandValidator(_testFixture.Context);

            // Act
            var validationResult = await validator.ValidateAsync(command);

            // Assert
            validationResult.Errors.Count.ShouldBe(1);
            validationResult.Errors.First().ErrorCode.ShouldBe("PredicateValidator");
            validationResult.Errors.First().ErrorMessage.ShouldBe("The character name has to be unique");
        }
 public void SetUp()
 {
     builder = new CharacterBuilder();
 }
        /// <summary>
        /// 登場人物Viewを初期化する
        /// </summary>
        /// <param name="view">View</param>
        public void Initialize(CharacterBuilder view)
        {
            _view = view;

            _searchWord = "";
            _view.SearchWordBox.Text = "";
            GetFilteredCollection();

            _view.BindData(this);
            if (CharacterModelCollection.Count() >= 1)
            {
                SelectingIndex = -1;
                SelectingIndex = 0;
            }
            else
            {
                SelectingIndex = -1;
            }
        }