Exemplo n.º 1
0
        public ISkill CreateSkill(SkillType skillID, ref IGetTransform shotSpawner, ref IGetTransform skillOwnerTransform)
        {
            ISkill createdSkill = null;

            switch (skillID)
            {
            case SkillType.Basic:
                createdSkill = CreateBasicSkill(ref shotSpawner);
                break;

            case SkillType.First:
                createdSkill = CreateSkillOne(ref shotSpawner);
                break;

            case SkillType.Second:
                createdSkill = CreateSkillTwo();
                break;

            case SkillType.Third:
                createdSkill = CreateSkillThree(ref skillOwnerTransform);
                break;

            case SkillType.Passive:
                createdSkill = CreateSkillPassive();
                break;
            }

            return(createdSkill);
        }
Exemplo n.º 2
0
        public void Awake()
        {
            charFactory = GetComponent <PlayableCharacterFactory>();
            //Create the character.
            _myCharacter = charFactory.CreateCharacter(AvailableCharacters.Ruyo);
            //Assign freshly created character as child of this gameobject.
            _myCharacter.CharacterInstance.transform.parent = transform;
            //Make sure that the created character is positioned in the middle of the player gameobject.
            _myCharacter.CharacterInstance.transform.localPosition = Vector3.zero;
            //Get the launcher from the character and store its script ref...
            _launcher = _myCharacter.CharacterInstance.GetComponentInChildren <ILauncher>();
            //...same with the crosshair + setup the camera script.
            _crosshair = _myCharacter.CharacterInstance.GetComponentInChildren <Crosshair>();
            _crosshair.Begin(_cameraWorks);
            _controller2D = _myCharacter.CharacterInstance.GetComponentInChildren <IController2D>();
            //Get the healthbar script for the character, if it has any healthbar.
            _myCharacter.AddHealthBarReference(GetComponentInChildren <RuyoHealthbar>());

            _skillManager.AddObserver(_crosshair);
            //Create the skills factory. Then retrieve the factory script and proper skill factory.
            GameObject factorySelector = Instantiate(_factorySelectorPrefab);

            factorySelector.transform.parent = this.gameObject.transform;
            _skillFactorySelector            = factorySelector.GetComponent <ISkillFactorySelector>();
            ISkillFactory skillFactory = _skillFactorySelector.SelectFactory(AvailableCharacters.Ruyo);
            //Using the provided skill factory, generate the skills for the character.
            IGetTransform playerTransform      = this;
            IGetTransform shotSpawnerTransform = _launcher;
            //Create and assign the skills to the skills manager and save them temporarily for the
            //skillBarManager.
            IDictionary <SkillType, Sprite> skillsIcons = new Dictionary <SkillType, Sprite>();
            //Basic skill:
            ISkill newSkill = skillFactory.CreateSkill(SkillType.Basic, ref shotSpawnerTransform, ref playerTransform);

            newSkill.GameObject.transform.parent = this.gameObject.transform;
            _skillManager.AddSkill(SkillType.Basic, newSkill);
            //First active skill:
            newSkill = skillFactory.CreateSkill(SkillType.First, ref shotSpawnerTransform, ref playerTransform);
            newSkill.GameObject.transform.parent = this.gameObject.transform;
            _skillManager.AddSkill(SkillType.First, newSkill);
            skillsIcons.Add(SkillType.First, newSkill.icon);
            //Second active skill:
            newSkill = skillFactory.CreateSkill(SkillType.Second, ref shotSpawnerTransform, ref playerTransform);
            newSkill.GameObject.transform.parent = this.gameObject.transform;
            _skillManager.AddSkill(SkillType.Second, newSkill);
            skillsIcons.Add(SkillType.Second, newSkill.icon);
            //Third active skill:
            newSkill = skillFactory.CreateSkill(SkillType.Third, ref shotSpawnerTransform, ref playerTransform);
            newSkill.GameObject.transform.parent = this.gameObject.transform;
            _skillManager.AddSkill(SkillType.Third, newSkill);
            skillsIcons.Add(SkillType.Third, newSkill.icon);

            //Initialize the skillBarManager skill icons.
            SkillsBarManager skillBarManager = _myCharacter.CharacterInstance.GetComponentInChildren <SkillsBarManager>();

            skillBarManager.InitializeSkillsIcons(skillsIcons);
            _skillManager.AddObserver(skillBarManager);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates and initializes the basic skill for Ruyo.
        /// </summary>
        /// <returns>Created skill.</returns>
        private ISkill CreateBasicSkill(ref IGetTransform shotSpawner)
        {
            GameObject    projectile = Instantiate(_skillBaseGameObject);
            RuyoSkillBase newSkill   = projectile.GetComponentInChildren <RuyoSkillBase>();

            newSkill.IsActive       = false;
            newSkill.SkillMaxCD     = basicSkillCD;
            newSkill.SkillValue     = basicProjectileDmg;
            newSkill.SkillCurrCD    = basicSkillCD;
            newSkill.SkillCrosshair = Skill1Crosshair;
            newSkill.Projectile     = _skillBaseProjectile;
            newSkill.skillType      = SkillType.Basic;
            newSkill.shotSpawner    = shotSpawner;
            newSkill.GameObject     = projectile;

            return(newSkill);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates and initializes the first skill for Ruyo. It works similar to the base skill, so we will use same base class.
        /// </summary>
        /// <returns>Created skill.</returns>
        private ISkill CreateSkillOne(ref IGetTransform shotSpawner)
        {
            GameObject    skillInstance = Instantiate(_skill1GameObject);
            RuyoSkillBase newSkill      = skillInstance.GetComponentInChildren <RuyoSkillBase>();

            newSkill.IsActive       = false;
            newSkill.SkillMaxCD     = Skill1CD;
            newSkill.SkillValue     = Skill1ProjectileDmg;
            newSkill.SkillCurrCD    = Skill1CD;
            newSkill.SkillCrosshair = Skill1Crosshair;
            newSkill.Projectile     = _skill1Projectile;
            newSkill.skillType      = SkillType.First;
            newSkill.shotSpawner    = shotSpawner;
            newSkill.GameObject     = skillInstance;

            return(newSkill);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Creates and initializes the third skill for Ruyo.
        /// </summary>
        /// <returns>Created skill.</returns>
        private ISkill CreateSkillThree(ref IGetTransform skillOwnerTransform)
        {
            GameObject     skillInstance = Instantiate(_skill3GameObject);
            RuyoSkillThree newSkill      = skillInstance.GetComponentInChildren <RuyoSkillThree>();

            newSkill.IsActive        = false;
            newSkill.SkillMaxCD      = Skill3CD;
            newSkill.SkillLifeTime   = 0.0f; //teleportation is instant
            newSkill.SkillCurrCD     = Skill3CD;
            newSkill.SkillCrosshair  = Skill3Crosshair;
            newSkill.Projectile      = null; //No projectile for teleportation
            newSkill.PlayerTransform = skillOwnerTransform;
            newSkill.skillType       = SkillType.Third;
            newSkill.TeleportRange   = TeleportationRange;
            newSkill.GameObject      = skillInstance;

            return(newSkill);
        }
Exemplo n.º 6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="shotSpawner">If the skill needs the transform of the projectile launcher,
 /// it HAS to be given at the very beggining.</param>
 public RuyoSkillBase(ref IGetTransform shotSpawner)
 {
     this.shotSpawner = shotSpawner;
 }