示例#1
0
 public void StartBattle(ICharacter character, ICreature enemy)
 {
     _character = character;
     _creature  = enemy;
     WriteOutput(_character.StartBattle());
     WriteOutput(_creature.StartBattle());
 }
示例#2
0
        private void SpawnDummy()
        {
            UpdateGameState(GameState.Combat);
            ICharacter character = _httpContextAccessor.HttpContext.Session.GetObject <GameSession>("GameSession").Character;

            _combatState.StartBattle(character, new TrainingDummy());
        }
示例#3
0
        private void CreateNewCharacter()
        {
            List <ICharacterClass> _allCharacterClasses = _characterClassDataAccess.GetAllCharacterClasses();

            // Check for valid input here
            if (InputIsValidCharacterClass(_allCharacterClasses))
            {
                // newCharacter.SetCharacterClass(characterClassDataAccess.GetCharacterClass(_input));
                int         characterId = _characterDataAccess.CreateCharacter(_input);
                ICharacter  character   = _characterDataAccess.GetCharacterById(characterId);
                GameSession gameSession = _httpContextAccessor.HttpContext.Session.GetObject <GameSession>("GameSession");
                gameSession.Character = character as Character;
                _httpContextAccessor.HttpContext.Session.SetObject("GameSession", gameSession);
                _outputHandler.HandleOutput("You chose: " + character.CharacterClass.ClassName);
                UpdateGameState(GameState.Exploration);
            }
            else
            {
                _outputHandler.HandleOutput("That's not a valid class.");
            }
        }
示例#4
0
 // TO BE DELETED WHEN STORED IN SESSION.
 public void Reinstantiate(ICharacter character, ICreature enemy)
 {
     _character = character;
     _creature  = enemy;
 }
示例#5
0
        public void HandleInput(string input)
        {
            _input = input;

            if (string.IsNullOrWhiteSpace(_input))
            {
                return;
            }

            _outputHandler.HandleOutput(_input);

            // CHECKS BELOW THIS COMMENT
            GameState currentState = _httpContextAccessor.HttpContext.Session.GetObject <GameSession>("GameSession").CurrentGameState;

            if (currentState == GameState.CharCreation)
            {
                // pirvate void HandleCharacterCreationInput
                if (CheckInputCaseInsensitive(_characterClassDataAccess.GetAllCharacterClasses().Select(c => c.ClassName).ToList()))
                {
                    CreateNewCharacter();
                }
                else
                {
                    _outputHandler.HandleOutput("Please insert a valid class!");
                }
            }
            else if (currentState == GameState.Exploration)
            {
                if (CheckInputCaseInsensitive("All Abilities"))
                {
                    DisplayAllAbilities();
                }
                else if (CheckInputCaseInsensitive("My Abilities"))
                {
                    DisplayAllCharacter_Abilities();
                }
                else if (CheckInputCaseInsensitive("Sit"))
                {
                    // Stuff like this goes into states where you can freely act.
                    _outputHandler.HandleOutput("You sit down.");
                }
                else if (CheckInputCaseInsensitive("Training Dummy"))
                {
                    // Stuff like this goes in other states from where combat can start.
                    SpawnDummy();
                }
            } // combat state stuff
            else if (currentState == GameState.Combat)
            {
                ReInstantiateCombat();
                if (CheckInputCaseInsensitive(_abilityDataAccess.GetAllCharacter_Abilities(_httpContextAccessor.HttpContext.Session.GetObject <GameSession>("GameSession").Character.CharacterId).Select(a => a.AbilityName).ToList()))
                {
                    IAbility   ability   = _abilityDataAccess.GetAbilityByName(_input);
                    ICharacter character = _httpContextAccessor.HttpContext.Session.GetObject <GameSession>("GameSession").Character;

                    string attackOutput = character.Attack(ability);
                    _outputHandler.HandleOutput(attackOutput);
                }
                else if (CheckInputCaseInsensitive("Forfeit") || CheckInputCaseInsensitive("Run"))
                {
                    _combatState.EndBattleDefeat();
                    UpdateGameState(GameState.Exploration);
                }
            }
            if (_outputHandler.GetOutput() == "" || _outputHandler.GetOutput() == null)
            {
                _outputHandler.HandleOutput("Nothing happened.");
            }
        }
示例#6
0
        private void ReInstantiateCombat()
        {
            ICharacter character = _httpContextAccessor.HttpContext.Session.GetObject <GameSession>("GameSession").Character;

            _combatState.Reinstantiate(character, new TrainingDummy());
        }