Example #1
0
    public override void UpdateSkillActivation(ItemSkill SourceItemSkill, float CurrentActivationTime, bool StillActivating, bool ActivationIntervallReached)
    {
        if (CurrentActivationTime < ActivationTime)
        {
            return;
        }

        // Spawn and Initialize Projectile:
        SkillProjectile SpawnedProjectile = Instantiate(ProjectilePrefab, SourceItemSkill.transform.position, SourceItemSkill.GetCurrentOwner().transform.rotation);

        SpawnedProjectile.InitializeProjectile(SourceItemSkill.GetCurrentOwner(), SourceItemSkill, this);

        if (ThrowSound)
        {
            var audioSource = SourceItemSkill.GetComponent <AudioSource>();
            audioSource.clip   = ThrowSound;
            audioSource.volume = 1;
            audioSource.loop   = false;
            audioSource.Play();
        }

        // Stop Skill Activation:
        if (Cooldown > 0)
        {
            SourceItemSkill.SetCurrentCooldown(Cooldown);
        }
        RemoveActivationMovementRateModifier(SourceItemSkill, SourceItemSkill.GetCurrentOwner());
        SourceItemSkill.StoppedActivatingSkillWithHitObjects(this);
        SourceItemSkill.FinishedSkillActivation();
    }
Example #2
0
        // private bool CastAreaBottomSkill(Mage mage, LayerMask IgnorePlayerSpell, LayerMask FloorMask, Vector3 mousePosition, bool isAnimation){
        private bool CastAreaBottomSkill(Mage mage, LayerMask FloorMask, Vector3 mousePosition)
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit floorHit;
            RaycastHit uiHit;

            // if ( isAnimation ){
            //  Vector3 vec = new Vector3(Random.Range(-40,40), 50, 10f+Random.Range(-40,40));
            //  SkillProjectile projectile = AreaBotSkillProjectile.Clone(ElementController.Instance.GetSkillProjectile(mage.Data.GetElement()), mage, vec, new Vector3(vec.x, 0, vec.z),isAnimation);
            //  _animationList.Add(projectile);
            //  return true;
            // }

            // if (!Physics.Raycast(ray, out uiHit, Mathf.Infinity, IgnorePlayerSpell) &&
            //     Physics.Raycast(ray, out floorHit, Mathf.Infinity, FloorMask) &&
            //  !isAnimation)
            if (!Physics.Raycast(ray, out uiHit, Mathf.Infinity, IgnoreSkill) &&
                Physics.Raycast(ray, out floorHit, Mathf.Infinity, FloorMask))
            {
                // SkillProjectile projectile = AreaBotSkillProjectile.Clone(ElementController.Instance.GetSkillProjectile(mage.Data.GetElement()), mage, new Vector3(floorHit.point.x, 0, floorHit.point.z), new Vector3(floorHit.point.x, 0, floorHit.point.z),isAnimation);
                SkillProjectile.Clone <AreaBotSkillProjectile>(GetSkillProjectile(mage.Data.GetElement()), mage,
                                                               new Vector3(floorHit.point.x, 0, floorHit.point.z), null, new Vector3(floorHit.point.x, 0, floorHit.point.z));
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public uint CreateSkillProjectile(SkillType skillP, Facing facing, Position position, int rankP, int speed)
        {
            SkillProjectile skillProjectile;
            Movement        movement;
            Sprite          sprite;
            Collideable     collideable;
            uint            eid       = Entity.NextEntity();
            Vector2         direction = getDirectionFromFacing(facing);

            position.EntityID = eid;
            position.Center  += direction * 70;

            switch (skillP)
            {
            case SkillType.BenignParasite:
                skillProjectile = new SkillProjectile()
                {
                    EntityID = eid,
                    skill    = skillP,
                    maxRange = 1,
                    rank     = rankP,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/BlueBullet"),
                    SpriteBounds = new Rectangle(0, 0, 10, 10),
                };
                position.Radius = 5;
                break;

            default:
                throw new Exception("Not a projectile skill");
            }

            collideable = new Collideable()
            {
                EntityID = eid,
                RoomID   = position.RoomID,
                Bounds   = new CircleBounds(position.Center, position.Radius),
            };

            game.SkillProjectileComponent.Add(eid, skillProjectile);
            game.MovementComponent.Add(eid, movement);
            game.PositionComponent.Add(eid, position);
            game.SpriteComponent.Add(eid, sprite);
            game.CollisionComponent.Add(eid, collideable);
            return(eid);
        }
Example #4
0
        // public static PathFollowerSkillProjectile Clone(SkillProjectile skillPrefab, Mage mage, Waypoint EndWaypoint, bool isAnimation)
        public static PathFollowerSkillProjectile Clone(SkillProjectile skillPrefab, Mage mage, Waypoint EndWaypoint)
        {
            Vector3 pos             = new Vector3(EndWaypoint.transform.position.x, EndWaypoint.transform.position.y, EndWaypoint.transform.position.z);
            var     skillProjectile = (PathFollowerSkillProjectile)GetPoolable(skillPrefab);

            skillProjectile.transform.position = pos;
            skillProjectile.transform.rotation = Quaternion.identity;
            skillProjectile.transform.LookAt(EndWaypoint.Previous.transform);
            skillProjectile._data   = mage.Data.GetSkillData();
            skillProjectile._player = mage.Player;
            // skillProjectile._isAnimation = isAnimation;
            return(skillProjectile);
        }
Example #5
0
        // private bool CastAllMinionsSkill(Mage mage, LayerMask IgnorePlayerSpell, LayerMask FloorMask, Vector3 mousePosition, bool isAnimation){
        private bool CastAllMinionsSkill(Mage mage, LayerMask FloorMask, Vector3 mousePosition)
        {
            mage.Player.WaveManager.GetMinionList().ForEach((Minion minion) =>
            {
                // SkillProjectile projectile = AllMinionsSkillProjectile.Clone(ElementController.Instance.GetSkillProjectile(mage.Data.GetElement()), mage, new Vector3(minion.transform.position.x, 50, minion.transform.position.z), minion.gameObject,isAnimation);

                SkillProjectile.Clone <AllMinionsSkillProjectile>(GetSkillProjectile(mage.Data.GetElement()), mage,
                                                                  new Vector3(minion.transform.position.x, 50, minion.transform.position.z), minion.gameObject, new Vector3());
                // if (isAnimation){
                //  _animationList.Add(projectile);
                // }
            });
            return(true);
        }
Example #6
0
 // private bool CastAllTowersSkill(Mage mage, LayerMask IgnorePlayerSpell, LayerMask FloorMask, Vector3 mousePosition, bool isAnimation){
 private bool CastAllTowersSkill(Mage mage, LayerMask FloorMask, Vector3 mousePosition)
 {
     mage.Player.Data.GetMages().ToList().ForEach((Mage thisMage) =>
     {
         if (thisMage.GetBuilding() != null && thisMage.GetBuilding() is Tower)
         {
             Tower tower = thisMage.GetBuilding() as Tower;
             // SkillProjectile projectile = AllTowersSkillProjectile.Clone(ElementController.Instance.GetSkillProjectile(mage.Data.GetElement()), mage, new Vector3(tower.gameObject.transform.position.x, 50, tower.gameObject.transform.position.z), tower.gameObject,isAnimation);
             SkillProjectile.Clone <AllTowersSkillProjectile>(GetSkillProjectile(mage.Data.GetElement()), mage,
                                                              new Vector3(tower.gameObject.transform.position.x, 50, tower.gameObject.transform.position.z), tower.gameObject, new Vector3());
             // if (isAnimation){
             //  _animationList.Add(projectile);
             // }
         }
     });
     return(true);
 }
        private void SkillProjectileCollision(uint p, uint p_2, bool friendly)
        {
            uint skillId, oId;

            if (_game.SkillProjectileComponent.Contains(p))
            {
                skillId = p;
                oId     = p_2;
            }
            else
            {
                skillId = p_2;
                oId     = p;
            }
            SkillProjectile skill = _game.SkillProjectileComponent[skillId];

            _game.SkillSystem.TriggerEffect(skill.skill, skill.rank, friendly, oId);
        }
Example #8
0
    public virtual IEnumerator Fire(Character caster, Vector2Int direction, DungeonManager dungeonManager)
    {
        int index = 0;

        while (index < arrows)
        {
            Vector3         spawnPosition   = caster.transform.position + new Vector3(direction.x, direction.y) * castRange;
            GameObject      projectile      = Instantiate(skillProjectilePrefab.gameObject, spawnPosition, skillProjectilePrefab.gameObject.transform.rotation);
            SkillProjectile skillProjectile = projectile.GetComponent <SkillProjectile>();
            skillProjectile.Initialize(caster, this, dungeonManager.dungeonGenerator.DungeonTerrainTiles, dungeonManager.dungeonGenerator.grid);

            Grid    grid   = dungeonManager.dungeonGenerator.grid;
            Vector3 target = caster.transform.position + new Vector3Int(direction.x, direction.y, 0) * (int)skillProjectile.range;
            skillProjectile.SetNextTile(grid.WorldToCell(target));

            index++;
            yield return(new WaitForSeconds(0.1f));
        }
    }
        /// <summary>
        /// For using basic projectile: rank is damage, use last parameter for spritesheet
        /// </summary>
        /// <param name="skillP"></param>
        /// <param name="direction"></param>
        /// <param name="position"></param>
        /// <param name="rankP"></param>
        /// <param name="speed"></param>
        /// <param name="owner"></param>
        /// <param name="canHitPlayers"></param>
        /// <param name="canHitEnemies"></param>
        /// <param name="spriteSheet"></param>
        /// <returns></returns>
        public uint CreateSkillProjectile(SkillType skillP, Vector2 direction, Position position, int rankP, int speed, uint owner, bool canHitPlayers = false, bool canHitEnemies = true, string spriteSheet = null, Rectangle spriteBounds = new Rectangle())
        {
            SkillProjectile skillProjectile;
            Movement movement;
            Sprite sprite;
            Collideable collideable;
            uint eid = Entity.NextEntity();

            direction = Vector2.Normalize(direction);

            position.EntityID = eid;
            position.Center += direction * 40;

            switch (skillP)
            {
                #region Vermis Projectiles
                case SkillType.ThrownBlades:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 1,
                        rank = rankP,
                        CanHitEnemies = canHitEnemies,
                        CanHitPlayers = canHitPlayers,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = speed,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                        SpriteBounds = new Rectangle(0, 250, 50, 50),
                    };
                    position.Radius = 10;
                    break;
                case SkillType.MaliciousParasite:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 1,
                        rank = rankP,
                        CanHitEnemies = canHitEnemies,
                        CanHitPlayers = canHitPlayers,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = speed,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                        SpriteBounds = new Rectangle(300, 150, 50, 50),
                    };
                    position.Radius = 10;
                    break;
                case SkillType.MindlessParasites:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 1,
                        rank = rankP,
                        CanHitEnemies = canHitEnemies,
                        CanHitPlayers = canHitPlayers,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = speed,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                        SpriteBounds = new Rectangle(250, 50, 50, 50),
                    };
                    position.Radius = 10;
                    break;
                case SkillType.BenignParasite:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 1,
                        rank = rankP,
                        CanHitEnemies = canHitEnemies,
                        CanHitPlayers = canHitPlayers,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = speed,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                        SpriteBounds = new Rectangle(100, 0, 50, 50),
                    };
                    position.Radius = 10;
                    break;
                #endregion

                #region Cultist Projectiles

                #region Psionic Spear

                case SkillType.PsionicSpear:
                    {
                        skillProjectile = new SkillProjectile()
                        {
                            EntityID = eid,
                            skill = skillP,
                            maxRange = 1,
                            rank = rankP,
                            OwnerID = owner,
                        };

                        movement = new Movement()
                        {
                            EntityID = eid,
                            Direction = direction,
                            Speed = speed,
                        };

                        sprite = new Sprite()
                        {
                            EntityID = eid,
                            SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                            SpriteBounds = new Rectangle(100, 0, 50, 50),
                        };
                        position.Radius = 10;
                        break;
                    }

                #endregion

                #region Enslave

                case SkillType.Enslave:
                    {
                        skillProjectile = new SkillProjectile()
                        {
                            EntityID = eid,
                            skill = skillP,
                            maxRange = 1,
                            rank = rankP,
                            OwnerID = owner,
                        };

                        movement = new Movement()
                        {
                            EntityID = eid,
                            Direction = direction,
                            Speed = speed,
                        };

                        sprite = new Sprite()
                        {
                            EntityID = eid,
                            SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                            SpriteBounds = new Rectangle(100, 0, 50, 50),
                        };
                        position.Radius = 10;
                        break;
                    }

                #endregion

                #region Taint
                case SkillType.Taint:
                    {
                        skillProjectile = new SkillProjectile()
                        {
                            EntityID = eid,
                            skill = skillP,
                            maxRange = 1,
                            rank = rankP,
                            OwnerID = owner,
                        };

                        movement = new Movement()
                        {
                            EntityID = eid,
                            Direction = direction,
                            Speed = speed,
                        };

                        sprite = new Sprite()
                        {
                            EntityID = eid,
                            SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                            SpriteBounds = new Rectangle(100, 0, 50, 50),
                        };
                        position.Radius = 10;
                        break;
                    }
                #endregion

                #region Rot
                case SkillType.Rot:
                    {
                        skillProjectile = new SkillProjectile()
                        {
                            EntityID = eid,
                            skill = skillP,
                            maxRange = 1,
                            rank = rankP,
                            OwnerID = owner,
                        };

                        movement = new Movement()
                        {
                            EntityID = eid,
                            Direction = direction,
                            Speed = speed,
                        };

                        sprite = new Sprite()
                        {
                            EntityID = eid,
                            SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                            SpriteBounds = new Rectangle(100, 0, 50, 50),
                        };
                        position.Radius = 10;
                        break;
                    }
            #endregion

                #endregion

                case SkillType.SniperShot:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 800,
                        rank = rankP,
                        CanHitEnemies = canHitEnemies,
                        CanHitPlayers = canHitPlayers,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = speed,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/Skills/Effects/AlienOrb"),
                        SpriteBounds = new Rectangle(0, 0, 20, 20),
                    };
                    position.Radius = 10;
                    break;

                case SkillType.BasicRangedAttack:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 800,
                        rank = rankP,
                        CanHitEnemies = canHitEnemies,
                        CanHitPlayers = canHitPlayers,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = speed,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>(spriteSheet),
                        SpriteBounds = spriteBounds,
                    };
                    position.Radius = 10;
                    break;
                default:
                    throw new Exception("Not a projectile skill");
            }
            collideable = new Collideable()
            {
                EntityID = eid,
                RoomID = position.RoomID,
                Bounds = new CircleBounds(position.Center, position.Radius),
            };

            game.SkillProjectileComponent.Add(eid, skillProjectile);
            game.MovementComponent.Add(eid, movement);
            game.PositionComponent.Add(eid, position);
            game.SpriteComponent.Add(eid, sprite);
            game.CollisionComponent.Add(eid, collideable);
            return eid;
        }
        public uint CreateSkillProjectile(Skills skillP, Facing facing, Position position)
        {
            SkillProjectile skillProjectile;
            Movement movement;
            Sprite sprite;
            Collideable collideable;
            uint eid = Entity.NextEntity();
            Vector2 direction = getDirectionFromFacing(facing);

            position.EntityID = eid;
            position.Center += direction * 70;

            switch (skillP)
            {
                case Skills.benignParasite:
                    skillProjectile = new SkillProjectile()
                    {
                        EntityID = eid,
                        skill = skillP,
                        maxRange = 1,
                    };
                    movement = new Movement()
                    {
                        EntityID = eid,
                        Direction = direction,
                        Speed = 300,
                    };
                    sprite = new Sprite()
                    {
                        EntityID = eid,
                        SpriteSheet = game.Content.Load<Texture2D>("Spritesheets/BlueBullet"),
                        SpriteBounds = new Rectangle(0, 0, 10, 10),
                    };
                    position.Radius = 5;
                    break;
                default:
                    throw new Exception("Not a projectile skill");
            }

            collideable = new Collideable()
            {
                EntityID = eid,
                RoomID = position.RoomID,
                Bounds = new CircleBounds(position.Center, position.Radius),
            };

            game.SkillProjectileComponent.Add(eid, skillProjectile);
            game.MovementComponent.Add(eid, movement);
            game.PositionComponent.Add(eid, position);
            game.SpriteComponent.Add(eid, sprite);
            game.CollisionComponent.Add(eid, collideable);
            return eid;
        }
        /// <summary>
        /// For using basic projectile: rank is damage, use last parameter for spritesheet
        /// </summary>
        /// <param name="skillP"></param>
        /// <param name="direction"></param>
        /// <param name="position"></param>
        /// <param name="rankP"></param>
        /// <param name="speed"></param>
        /// <param name="owner"></param>
        /// <param name="canHitPlayers"></param>
        /// <param name="canHitEnemies"></param>
        /// <param name="spriteSheet"></param>
        /// <returns></returns>
        public uint CreateSkillProjectile(SkillType skillP, Vector2 direction, Position position, int rankP, int speed, uint owner, bool canHitPlayers = false, bool canHitEnemies = true, string spriteSheet = null, Rectangle spriteBounds = new Rectangle())
        {
            SkillProjectile skillProjectile;
            Movement        movement;
            Sprite          sprite;
            Collideable     collideable;
            uint            eid = Entity.NextEntity();

            direction = Vector2.Normalize(direction);

            position.EntityID = eid;
            position.Center  += direction * 40;

            switch (skillP)
            {
                #region Vermis Projectiles
            case SkillType.ThrownBlades:
                skillProjectile = new SkillProjectile()
                {
                    EntityID      = eid,
                    skill         = skillP,
                    maxRange      = 1,
                    rank          = rankP,
                    CanHitEnemies = canHitEnemies,
                    CanHitPlayers = canHitPlayers,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(0, 250, 50, 50),
                };
                position.Radius = 10;
                break;

            case SkillType.MaliciousParasite:
                skillProjectile = new SkillProjectile()
                {
                    EntityID      = eid,
                    skill         = skillP,
                    maxRange      = 1,
                    rank          = rankP,
                    CanHitEnemies = canHitEnemies,
                    CanHitPlayers = canHitPlayers,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(300, 150, 50, 50),
                };
                position.Radius = 10;
                break;

            case SkillType.MindlessParasites:
                skillProjectile = new SkillProjectile()
                {
                    EntityID      = eid,
                    skill         = skillP,
                    maxRange      = 1,
                    rank          = rankP,
                    CanHitEnemies = canHitEnemies,
                    CanHitPlayers = canHitPlayers,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(250, 50, 50, 50),
                };
                position.Radius = 10;
                break;

            case SkillType.BenignParasite:
                skillProjectile = new SkillProjectile()
                {
                    EntityID      = eid,
                    skill         = skillP,
                    maxRange      = 1,
                    rank          = rankP,
                    CanHitEnemies = canHitEnemies,
                    CanHitPlayers = canHitPlayers,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(100, 0, 50, 50),
                };
                position.Radius = 10;
                break;
                #endregion

                #region Cultist Projectiles

                #region Psionic Spear

            case SkillType.PsionicSpear:
            {
                skillProjectile = new SkillProjectile()
                {
                    EntityID = eid,
                    skill    = skillP,
                    maxRange = 1,
                    rank     = rankP,
                    OwnerID  = owner,
                };

                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };

                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(100, 0, 50, 50),
                };
                position.Radius = 10;
                break;
            }

                #endregion

                #region Enslave

            case SkillType.Enslave:
            {
                skillProjectile = new SkillProjectile()
                {
                    EntityID = eid,
                    skill    = skillP,
                    maxRange = 1,
                    rank     = rankP,
                    OwnerID  = owner,
                };

                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };

                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(100, 0, 50, 50),
                };
                position.Radius = 10;
                break;
            }

                #endregion

                #region Taint
            case SkillType.Taint:
            {
                skillProjectile = new SkillProjectile()
                {
                    EntityID = eid,
                    skill    = skillP,
                    maxRange = 1,
                    rank     = rankP,
                    OwnerID  = owner,
                };

                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };

                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(100, 0, 50, 50),
                };
                position.Radius = 10;
                break;
            }
                #endregion

                #region Rot
            case SkillType.Rot:
            {
                skillProjectile = new SkillProjectile()
                {
                    EntityID = eid,
                    skill    = skillP,
                    maxRange = 1,
                    rank     = rankP,
                    OwnerID  = owner,
                };

                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };

                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/skillPlaceHolder2"),
                    SpriteBounds = new Rectangle(100, 0, 50, 50),
                };
                position.Radius = 10;
                break;
            }
                #endregion

                #endregion

            case SkillType.SniperShot:
                skillProjectile = new SkillProjectile()
                {
                    EntityID      = eid,
                    skill         = skillP,
                    maxRange      = 800,
                    rank          = rankP,
                    CanHitEnemies = canHitEnemies,
                    CanHitPlayers = canHitPlayers,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>("Spritesheets/Skills/Effects/AlienOrb"),
                    SpriteBounds = new Rectangle(0, 0, 20, 20),
                };
                position.Radius = 10;
                break;

            case SkillType.BasicRangedAttack:
                skillProjectile = new SkillProjectile()
                {
                    EntityID      = eid,
                    skill         = skillP,
                    maxRange      = 800,
                    rank          = rankP,
                    CanHitEnemies = canHitEnemies,
                    CanHitPlayers = canHitPlayers,
                };
                movement = new Movement()
                {
                    EntityID  = eid,
                    Direction = direction,
                    Speed     = speed,
                };
                sprite = new Sprite()
                {
                    EntityID     = eid,
                    SpriteSheet  = game.Content.Load <Texture2D>(spriteSheet),
                    SpriteBounds = spriteBounds,
                };
                position.Radius = 10;
                break;

            default:
                throw new Exception("Not a projectile skill");
            }
            collideable = new Collideable()
            {
                EntityID = eid,
                RoomID   = position.RoomID,
                Bounds   = new CircleBounds(position.Center, position.Radius),
            };

            game.SkillProjectileComponent.Add(eid, skillProjectile);
            game.MovementComponent.Add(eid, movement);
            game.PositionComponent.Add(eid, position);
            game.SpriteComponent.Add(eid, sprite);
            game.CollisionComponent.Add(eid, collideable);
            return(eid);
        }
Example #12
0
 public void DeleteAnimation(SkillProjectile item)
 {
     //Debug.Log("Deleted Animation");
     _animationList.Remove(item);
 }