Example #1
0
 public EnemyMove(NavMeshAgent agent, BaseCharacterModel CharacterModel, Rigidbody rb)
 {
     this.agent          = agent;
     this.CharacterModel = CharacterModel;
     agent.speed         = CharacterModel.Speed;
     this.rb             = rb;
 }
Example #2
0
        public EnemyController(Transform enemyTransform, NavMeshAgent agent, MeshRenderer mesh, MeshRenderer headMesh,
                               MeshRenderer gun, MeshRenderer knife, Transform gunBarrelEnd, Rigidbody rb, CapsuleCollider enemyBorder,
                               SphereCollider enemyView, LineRenderer shootLine, EnemySpecifications spec, Vector3 homePoint,
                               GameObject player, AudioSource gunShotSound, BaseConditions conditions, EnemyHealthBarUI healthBar)
        {
            this.enemyTransform = enemyTransform;
            this.agent          = agent;
            this.mesh           = mesh;
            this.headMesh       = headMesh;
            this.enemyBorder    = enemyBorder;
            this.enemyView      = enemyView;
            this.rb             = rb;
            this.shootLine      = shootLine;
            this.gun            = gun;
            this.knife          = knife;
            this.gunBarrelEnd   = gunBarrelEnd;
            this.gunShotSound   = gunShotSound;
            this.homePoint      = homePoint;
            this.player         = player;
            this.healthBar      = healthBar;
            #region Mod

            #region Old

            //this.hp = spec.HP;
            //this.speed = spec.Speed;
            //this.runSpeed = spec.RunSpeed;
            //this.chasingTime = spec.ChasingTime;
            //this.patrolDistance = spec.PatrolDistance;
            //this.type = spec.Type;
            //this.rangeDistance = spec.RangeDistance;
            //this.rangeDamage = spec.RangeDamage;
            //this.rangeAccuracy = spec.RangeAccuracy;
            //this.shootSpeed = spec.ShootSpeed;
            //this.meleeDistance = spec.MeleeDistance;
            //this.meleeDamage = spec.MeleeDamage;
            //this.hitSpeed = spec.HitSpeed;

            #endregion

            this.spec = spec;

            MaximumHP = spec.HP;

            this.conditions = conditions;

            CharacterModel = new BaseCharacterModel(spec.HP, spec.Speed, spec.RunSpeed);

            #endregion
        }
Example #3
0
        /// <summary>
        ///     Кровотечение
        /// </summary>
        /// <param name="CharacterModel">Модель персонажа</param>
        /// <param name="deltaTime">Время</param>
        public void Bleed(BaseCharacterModel CharacterModel, ref EnemySpecifications enemySpecifications,
                          float deltaTime)
        {
            ConditionTimers["Bleeding"] += deltaTime;
            CharacterModel.Health       -= ConditionsSpecifications.BleedingDamage;

            Debug.Log(
                $"!!!BLEED!!! Health:{CharacterModel.Health.ToString("0")} Condition Time Left: {(ConditionsSpecifications.BleedingTime - ConditionTimers["Bleeding"]).ToString("0.0")}");

            if (ConditionTimers["Bleeding"] >= ConditionsSpecifications.BleedingTime)
            {
                ConditionTimers["Bleeding"] = 0;
                Conditions.ChangeConditionStatus("Bleeding", false);
                ConditionsUpdateEvent -= Bleed;
            }
        }
Example #4
0
        /// <summary>
        ///     Замедление
        /// </summary>
        /// <param name="CharacterModel">Модель персонажа</param>
        /// <param name="deltaTime">Время</param>
        public void Slowing(BaseCharacterModel CharacterModel, ref EnemySpecifications enemySpecifications,
                            float deltaTime)
        {
            ConditionTimers["Slowed"] += deltaTime;
            CharacterModel.Speed       = ConditionsSpecifications.SlowSpeed;
            CharacterModel.RunSpeed    = ConditionsSpecifications.SlowSpeed;

            //Debug.Log(
            //    $"!!!SLOW!!! Condition Time Left: {(ConditionsSpecifications.SlowingTime - ConditionTimers["Slowed"]).ToString("0.0")}");

            if (ConditionTimers["Slowed"] >= ConditionsSpecifications.SlowingTime)
            {
                ConditionTimers["Slowed"] = 0;
                Conditions.ChangeConditionStatus("Slowed", false);
                ConditionsUpdateEvent -= Slowing;

                CharacterModel.Speed    = enemySpecifications.Speed;
                CharacterModel.RunSpeed = enemySpecifications.RunSpeed;
            }
        }
Example #5
0
        private void OnRequestedCharacters(ResponseHandlerData responseHandler, AckResponseCode responseCode, ResponseCharactersMessage response)
        {
            // Clear character list
            CacheCharacterSelectionManager.Clear();
            CacheCharacterList.HideAll();
            // Unable buttons
            buttonStart.gameObject.SetActive(false);
            buttonDelete.gameObject.SetActive(false);
            // Remove all models
            characterModelContainer.RemoveChildren();
            CharacterModelById.Clear();
            // Remove all cached data
            PlayerCharacterDataById.Clear();
            // Proceed response
            List <PlayerCharacterData> selectableCharacters = new List <PlayerCharacterData>();

            if (!responseCode.ShowUnhandledResponseMessageDialog(response.message))
            {
                // Success, so set selectable characters by response's data
                selectableCharacters = response.characters;
            }
            // Show list of created characters
            for (int i = selectableCharacters.Count - 1; i >= 0; --i)
            {
                PlayerCharacterData selectableCharacter = selectableCharacters[i];
                if (selectableCharacter == null ||
                    !GameInstance.PlayerCharacterEntities.ContainsKey(selectableCharacter.EntityId) ||
                    !GameInstance.PlayerCharacters.ContainsKey(selectableCharacter.DataId))
                {
                    // If invalid entity id or data id, remove from selectable character list
                    selectableCharacters.RemoveAt(i);
                }
            }

            if (GameInstance.Singleton.maxCharacterSaves > 0 &&
                selectableCharacters.Count >= GameInstance.Singleton.maxCharacterSaves)
            {
                eventOnNotAbleToCreateCharacter.Invoke();
            }
            else
            {
                eventOnAbleToCreateCharacter.Invoke();
            }

            // Clear selected character data, will select first in list if available
            selectedPlayerCharacterData = null;

            // Generate list entry by saved characters
            if (selectableCharacters.Count > 0)
            {
                selectableCharacters.Sort(new PlayerCharacterDataLastUpdateComparer().Desc());
                CacheCharacterList.Generate(selectableCharacters, (index, characterData, ui) =>
                {
                    // Cache player character to dictionary, we will use it later
                    PlayerCharacterDataById[characterData.Id] = characterData;
                    // Setup UIs
                    UICharacter uiCharacter = ui.GetComponent <UICharacter>();
                    uiCharacter.Data        = characterData;
                    // Select trigger when add first entry so deactivate all models is okay beacause first model will active
                    BaseCharacterModel characterModel = characterData.InstantiateModel(characterModelContainer);
                    if (characterModel != null)
                    {
                        CharacterModelById[characterData.Id] = characterModel;
                        characterModel.SetEquipWeapons(characterData.EquipWeapons);
                        characterModel.SetEquipItems(characterData.EquipItems);
                        characterModel.gameObject.SetActive(false);
                        CacheCharacterSelectionManager.Add(uiCharacter);
                    }
                });
            }
            else
            {
                eventOnNoCharacter.Invoke();
            }
        }
        private void OnRequestedCharacters(AckResponseCode responseCode, BaseAckMessage message)
        {
            ResponseCharactersMessage castedMessage = (ResponseCharactersMessage)message;

            CacheCharacterSelectionManager.Clear();
            // Unenabled buttons
            buttonStart.gameObject.SetActive(false);
            buttonDelete.gameObject.SetActive(false);
            // Remove all models
            characterModelContainer.RemoveChildren();
            CharacterModelById.Clear();
            // Remove all cached data
            PlayerCharacterDataById.Clear();

            List <PlayerCharacterData> selectableCharacters = new List <PlayerCharacterData>();

            switch (responseCode)
            {
            case AckResponseCode.Error:
                string errorMessage = string.Empty;
                switch (castedMessage.error)
                {
                case ResponseCharactersMessage.Error.NotLoggedin:
                    errorMessage = LanguageManager.GetText(UILocaleKeys.UI_ERROR_NOT_LOGGED_IN.ToString());
                    break;
                }
                UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UILocaleKeys.UI_LABEL_ERROR.ToString()), errorMessage);
                break;

            case AckResponseCode.Timeout:
                UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UILocaleKeys.UI_LABEL_ERROR.ToString()), LanguageManager.GetText(UILocaleKeys.UI_ERROR_CONNECTION_TIMEOUT.ToString()));
                break;

            default:
                selectableCharacters = castedMessage.characters;
                break;
            }

            // Show list of created characters
            for (int i = selectableCharacters.Count - 1; i >= 0; --i)
            {
                PlayerCharacterData selectableCharacter = selectableCharacters[i];
                if (selectableCharacter == null || !GameInstance.PlayerCharacters.ContainsKey(selectableCharacter.DataId))
                {
                    selectableCharacters.RemoveAt(i);
                }
            }
            selectableCharacters.Sort(new PlayerCharacterDataLastUpdateComparer().Desc());
            CacheCharacterList.Generate(selectableCharacters, (index, characterData, ui) =>
            {
                // Cache player character to dictionary, we will use it later
                PlayerCharacterDataById[characterData.Id] = characterData;
                UICharacter uiCharacter = ui.GetComponent <UICharacter>();
                uiCharacter.Data        = characterData;
                // Select trigger when add first entry so deactivate all models is okay beacause first model will active
                BaseCharacterModel characterModel = characterData.InstantiateModel(characterModelContainer);
                if (characterModel != null)
                {
                    CharacterModelById[characterData.Id] = characterModel;
                    characterModel.gameObject.SetActive(false);
                    characterModel.SetEquipWeapons(characterData.EquipWeapons);
                    characterModel.SetEquipItems(characterData.EquipItems);
                    CacheCharacterSelectionManager.Add(uiCharacter);
                }
            });
        }
        private void OnRequestedCharacters(ResponseHandlerData responseHandler, AckResponseCode responseCode, INetSerializable response)
        {
            // Clear character list
            CacheCharacterSelectionManager.Clear();
            CacheCharacterList.HideAll();
            // Unable buttons
            buttonStart.gameObject.SetActive(false);
            buttonDelete.gameObject.SetActive(false);
            // Remove all models
            characterModelContainer.RemoveChildren();
            CharacterModelById.Clear();
            // Remove all cached data
            PlayerCharacterDataById.Clear();
            // Don't make character list if timeout
            if (responseCode == AckResponseCode.Timeout)
            {
                UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UITextKeys.UI_LABEL_ERROR.ToString()), LanguageManager.GetText(UITextKeys.UI_ERROR_CONNECTION_TIMEOUT.ToString()));
                return;
            }
            // Proceed response
            ResponseCharactersMessage  castedResponse       = response as ResponseCharactersMessage;
            List <PlayerCharacterData> selectableCharacters = new List <PlayerCharacterData>();

            switch (responseCode)
            {
            case AckResponseCode.Error:
                string errorMessage = string.Empty;
                switch (castedResponse.error)
                {
                case ResponseCharactersMessage.Error.NotLoggedin:
                    errorMessage = LanguageManager.GetText(UITextKeys.UI_ERROR_NOT_LOGGED_IN.ToString());
                    break;
                }
                UISceneGlobal.Singleton.ShowMessageDialog(LanguageManager.GetText(UITextKeys.UI_LABEL_ERROR.ToString()), errorMessage);
                break;

            default:
                selectableCharacters = castedResponse.characters;
                break;
            }

            // Show list of created characters
            for (int i = selectableCharacters.Count - 1; i >= 0; --i)
            {
                PlayerCharacterData selectableCharacter = selectableCharacters[i];
                if (selectableCharacter == null ||
                    !GameInstance.PlayerCharacterEntities.ContainsKey(selectableCharacter.EntityId) ||
                    !GameInstance.PlayerCharacters.ContainsKey(selectableCharacter.DataId))
                {
                    // If invalid entity id or data id, remove from selectable character list
                    selectableCharacters.RemoveAt(i);
                }
            }

            if (GameInstance.Singleton.maxCharacterSaves > 0 &&
                selectableCharacters.Count >= GameInstance.Singleton.maxCharacterSaves)
            {
                eventOnNotAbleToCreateCharacter.Invoke();
            }
            else
            {
                eventOnAbleToCreateCharacter.Invoke();
            }

            // Clear selected character data, will select first in list if available
            selectedPlayerCharacterData = null;

            // Generate list entry by saved characters
            if (selectableCharacters.Count > 0)
            {
                selectableCharacters.Sort(new PlayerCharacterDataLastUpdateComparer().Desc());
                CacheCharacterList.Generate(selectableCharacters, (index, characterData, ui) =>
                {
                    // Cache player character to dictionary, we will use it later
                    PlayerCharacterDataById[characterData.Id] = characterData;
                    // Setup UIs
                    UICharacter uiCharacter = ui.GetComponent <UICharacter>();
                    uiCharacter.Data        = characterData;
                    // Select trigger when add first entry so deactivate all models is okay beacause first model will active
                    BaseCharacterModel characterModel = characterData.InstantiateModel(characterModelContainer);
                    if (characterModel != null)
                    {
                        CharacterModelById[characterData.Id] = characterModel;
                        characterModel.SetEquipWeapons(characterData.EquipWeapons);
                        characterModel.SetEquipItems(characterData.EquipItems);
                        characterModel.gameObject.SetActive(false);
                        CacheCharacterSelectionManager.Add(uiCharacter);
                    }
                });
            }
            else
            {
                eventOnNoCharacter.Invoke();
            }
        }
Example #8
0
 /// <summary>
 ///     Запускает выполнение всех активных статусов
 /// </summary>
 /// <param name="spec">Модель данных противника</param>
 /// <param name="deltaTime">Время</param>
 public void ConditionsUpdateStart(BaseCharacterModel CharacterModel,
                                   ref EnemySpecifications enemySpecifications, float deltaTime)
 {
     ConditionsUpdateEvent?.Invoke(CharacterModel, ref enemySpecifications, deltaTime);
 }