Пример #1
0
    virtual public void InitializeEnemy()
    {
        //creating variables to initialize the monster
        //this code is for testing purposes, final product will pull this information from the database scripts
        var headInfo     = PartFactory.GetHeadPartInfo(monsterName);
        var torsoInfo    = PartFactory.GetTorsoPartInfo(monsterName);
        var rightArmInfo = PartFactory.GetArmPartInfo(monsterName, Helper.PartType.RightArm);
        var leftArmInfo  = PartFactory.GetArmPartInfo(monsterName, Helper.PartType.LeftArm);
        var legPartInfo  = PartFactory.GetLegPartInfo(monsterName);

        rightArmInfo.equippedWeapon = equippedWeapon;

        attackDelegate  = Attack;
        abilityDelegate = Ability;

        //adding methods to be run in fixed update to the check delegate
        //this allows multiple methods that need to constantly check some status of the Enemy
        //to be run in FixedUpdate without filling it with method calls
        checkDelegate += UpdateCooldowns;
        checkDelegate += CheckLineOfSight;
        checkDelegate += CheckAggro;
        checkDelegate += FollowTarget;

        monster.InitializeMonster(headInfo, torsoInfo, rightArmInfo, leftArmInfo, legPartInfo);
        //setting the cooldown timers so that the player can use the inputs as soon as the game loads
        attackCooldownTimer  = attackCooldown;
        abilityCooldownTimer = abilityCooldown;

        SetFacingDirection(transform.localScale.x);
    }
Пример #2
0
    public void InitializePart(ArmPartInfo armPartInfo)
    {
        //this mainly is used to check whether the part is attached to the player
        PlayerController player = GetComponentInParent <PlayerController>();

        Enemy enemy = GetComponentInParent <Enemy>();

        Boss boss = GetComponentInParent <Boss>();

        if (armPartInfo != null)
        {
            partInfo = armPartInfo;

            if (player != null)
            {
                weapon = WeaponFactory.GetWeapon(partInfo.equippedWeapon, partType, "Player", weaponRenderer);
            }
            else if (enemy != null || boss != null)
            {
                weapon = WeaponFactory.GetWeapon(partInfo.equippedWeapon, partType, "Enemy", weaponRenderer);
            }

            //checking whether this part has an ability
            if (partInfo.abilityName != null && player != null)
            {
                //populating the partAbility field with the appropriate ability delegate
                ability = AbilityFactory.GetArmPartAbility(partInfo.abilityName);

                //if the type is Passive, run the delegate method to apply the buff to the player
                if (partInfo.abilityType == "Passive")
                {
                    ability(partType);
                }//if the type is Activate, set the ability to the Player action delegate
                else if (partInfo.abilityType == "Activate")
                {
                    //checking which arm to apply the ability to
                    if (partType == Helper.PartType.RightArm)
                    {
                        player.rightAttackDelegate = ability;
                    }
                    else if (partType == Helper.PartType.LeftArm)
                    {
                        player.leftAttackDelegate = ability;
                    }
                }
            }

            if (GetComponentInParent <Enemy>() == null)
            {
                //setting all of the sprite fields
                bicepSprite              = Helper.CreateSprite(partInfo.bicepSprite, Helper.BicepImporter);
                forearmSprite            = Helper.CreateSprite(partInfo.forearmSprite, Helper.ForearmImporter);
                handBackSprite           = Helper.CreateSprite(partInfo.handBackSprite, Helper.HandImporter);
                handFrontSprite          = Helper.CreateSprite(partInfo.handFrontSprite, Helper.HandImporter);
                fingersOpenBackSprite    = Helper.CreateSprite(partInfo.fingersOpenBackSprite, Helper.HandImporter);
                fingersOpenFrontSprite   = Helper.CreateSprite(partInfo.fingersOpenFrontSprite, Helper.HandImporter);
                fingersClosedBackSprite  = Helper.CreateSprite(partInfo.fingersClosedBackSprite, Helper.HandImporter);
                fingersClosedFrontSprite = Helper.CreateSprite(partInfo.fingersClosedFrontSprite, Helper.HandImporter);
            }

            if (weapon != null)
            {
                ability = weapon.AttackDelegate;

                fingersBack  = fingersClosedBackSprite;
                fingersFront = fingersClosedFrontSprite;

                weaponSprite          = weapon.WeaponSprite;
                weaponRenderer.sprite = weaponSprite;

                if (partType == Helper.PartType.RightArm)
                {
                    if (player != null)
                    {
                        player.rightAttackDelegate = ability;
                        player.RightAttackCooldown = weapon.AttackCooldown;
                    }
                    else if (boss != null)
                    {
                        boss.rightAttackDelegate = ability;
                        boss.rightAttackCooldown = weapon.AttackCooldown;
                        weapon.Damage            = boss.rightAttackDamage;
                        if (weapon.WeaponType == Helper.WeaponType.Melee)
                        {
                            boss.rightAttackRange = weapon.AttackRange - 0.8f;
                        }
                        else if (weapon.WeaponType == Helper.WeaponType.Projectile)
                        {
                            weapon.AttackRange = boss.rightAttackRange;
                        }
                    }
                    else if (enemy != null)
                    {
                        enemy.attackDelegate = ability;
                        enemy.attackCooldown = weapon.AttackCooldown;
                        weapon.Damage        = enemy.damage;
                        if (weapon.WeaponType == Helper.WeaponType.Melee)
                        {
                            enemy.attackRange = weapon.AttackRange - 0.8f;
                        }
                        else if (weapon.WeaponType == Helper.WeaponType.Projectile)
                        {
                            weapon.AttackRange = enemy.attackRange;
                        }
                    }
                }
                else if (partType == Helper.PartType.LeftArm)
                {
                    if (player != null)
                    {
                        player.leftAttackDelegate = ability;
                        player.LeftAttackCooldown = weapon.AttackCooldown;
                    }
                    else if (boss != null)
                    {
                        boss.leftAttackDelegate = ability;
                        boss.leftAttackCooldown = weapon.AttackCooldown;
                        weapon.Damage           = boss.leftAttackDamage;
                        if (weapon.WeaponType == Helper.WeaponType.Melee)
                        {
                            boss.leftAttackRange = weapon.AttackRange - 0.8f;
                        }
                        else if (weapon.WeaponType == Helper.WeaponType.Projectile)
                        {
                            weapon.AttackRange = boss.leftAttackRange;
                        }
                    }
                    else if (enemy != null)
                    {
                        enemy.attackDelegate = ability;
                        enemy.attackCooldown = weapon.AttackCooldown;
                        if (weapon.WeaponType == Helper.WeaponType.Melee)
                        {
                            enemy.attackRange = weapon.AttackRange - 0.8f;
                        }
                        else if (weapon.WeaponType == Helper.WeaponType.Projectile)
                        {
                            weapon.AttackRange = enemy.attackRange;
                        }
                        weapon.Damage = enemy.damage;
                    }
                }
            }
            else
            {
                fingersBack  = fingersOpenBackSprite;
                fingersFront = fingersOpenFrontSprite;
                weaponSprite = null;
                if (weaponRenderer != null)
                {
                    weaponRenderer.sprite = null;
                }
            }

            bicep.sprite   = bicepSprite;
            forearm.sprite = forearmSprite;

            if (partType == Helper.PartType.RightArm)
            {
                hand.sprite    = handBackSprite;
                fingers.sprite = fingersBack;
            }
            else if (partType == Helper.PartType.LeftArm)
            {
                hand.sprite    = handFrontSprite;
                fingers.sprite = fingersFront;
            }
        }
    }
Пример #3
0
    public void InitializePlayer()
    {
        //creating variables to initialize the player monster
        //this code is for testing purposes, final product will pull this information from the database scripts

        HeadPartInfo  headInfo     = new HeadPartInfo();
        TorsoPartInfo torsoInfo    = new TorsoPartInfo();
        ArmPartInfo   rightArmInfo = new ArmPartInfo();
        ArmPartInfo   leftArmInfo  = new ArmPartInfo();
        LegPartInfo   legPartInfo  = new LegPartInfo();

        //initializing the Head
        if (head != "")
        {
            headInfo = PartFactory.GetHeadPartInfo(head);
        }
        else
        {
            headInfo = GameManager.instance.gameFile.player.headPart;
        }
        //initializing the Torso
        if (torso != "")
        {
            torsoInfo = PartFactory.GetTorsoPartInfo(torso);
        }
        else
        {
            torsoInfo = GameManager.instance.gameFile.player.torsoPart;
        }
        //initializing the RightArm
        if (rightArm != "")
        {
            rightArmInfo = PartFactory.GetArmPartInfo(rightArm, Helper.PartType.RightArm);
            rightArmInfo.equippedWeapon = rightWeapon;
        }
        else
        {
            rightArmInfo = GameManager.instance.gameFile.player.rightArmPart;
        }
        //initializing the LeftArm
        if (leftArm != "")
        {
            leftArmInfo = PartFactory.GetArmPartInfo(leftArm, Helper.PartType.LeftArm);
            leftArmInfo.equippedWeapon = leftWeapon;
        }
        else
        {
            leftArmInfo = GameManager.instance.gameFile.player.leftArmPart;
        }
        //initializing the Legs
        if (legs != "")
        {
            legPartInfo = PartFactory.GetLegPartInfo(legs);
        }
        else
        {
            legPartInfo = GameManager.instance.gameFile.player.legsPart;
        }


        moveDelegate         = Move;
        jumpDelegate         = Jump;
        rightAttackDelegate  = RightAttack;
        leftAttackDelegate   = LeftAttack;
        torsoAbilityDelegate = AbilityDefault;
        headAbilityDelegate  = AbilityDefault;

        playerCheckDelegate += UpdatePlayerDirection;
        playerCheckDelegate += UpdatePlayerInputCooldowns;
        playerCheckDelegate += CheckHitBox;

        monster.InitializeMonster(headInfo, torsoInfo, rightArmInfo, leftArmInfo, legPartInfo);

        SetPlayerCooldowns();
        //setting the cooldown timers so that the player can use the inputs as soon as the game loads
        rightAttackTimer  = RightAttackCooldown;
        leftAttackTimer   = LeftAttackCooldown;
        headAbilityTimer  = HeadAbilityCooldown;
        torsoAbilityTimer = TorsoAbilityCooldown;
        legAbilityTimer   = LegAbilityCooldown;
    }