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); }
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; } } }
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; }