public void OnWeaponEquipped(WeaponItemRuntime weapon) { currentWeaponType = weapon.weaponItemData.weaponType; switch (currentWeaponType) { case WeaponType.RANGED: rangedWeaponItemRuntime = weapon as WeaponItemRuntimeRanged; break; case WeaponType.MELEE: meleeWeaponItemRuntime = weapon as WeaponItemRuntimeMelee; break; case WeaponType.THROWABLE: break; case WeaponType.FISTS: meleeWeaponItemRuntime = weapon as WeaponItemRuntimeMelee; break; } currentRuntimeWeapon = weapon; animController.SetAnimInt(animController.animData.weaponAnimID, weapon.weaponItemData.weaponAnimID); animController.PlayAnimationHash(animController.animData.getNewWeaponAnimationClass); }
private void SetupDualWieldItem(WeaponItemRuntime item) { //Place Weapon In Left Hand item.transform.SetParent(playerLeftHand); item.transform.localPosition = Vector3.zero; item.transform.localRotation = Quaternion.identity; //Get Ranged Component To Setup Left Hand Pivot WeaponItemRuntimeRanged leftHandRangedComponent = item as WeaponItemRuntimeRanged; leftHandRangedComponent.pivot.localPosition = leftHandRangedComponent.rangedData.leftHandPivotPosition; leftHandRangedComponent.pivot.localRotation = Quaternion.Euler(leftHandRangedComponent.rangedData.leftHandPivotRotation); leftHandRangedComponent.PickupWeaponPlayer(); WeaponItemRuntimeRanged rightHandRangedComponent = inventoryWeapons[currentWeaponInList] as WeaponItemRuntimeRanged; //Add Dual Wield Component To It WeaponItemRuntimeRangedDualWielded dualWieldComponent = item.gameObject.AddComponent <WeaponItemRuntimeRangedDualWielded>(); WeaponItemRanged_DualWielded dualData = leftHandRangedComponent.rangedData.dualWieldParentData; dualWieldComponent.SetupDualWield(dualData, leftHandRangedComponent, rightHandRangedComponent); //Swap Inventory To The Dual Wield Component inventoryWeapons[currentWeaponInList] = dualWieldComponent; currentWeaponItem = dualData; currentWeaponItemRuntime = dualWieldComponent; weaponController.OnWeaponEquipped(currentWeaponItemRuntime); }
public void EquipExistingWeapon(WeaponItemRuntime weapon) { weapon.transform.SetParent(rightHandTrans); weapon.transform.localPosition = Vector3.zero; weapon.transform.localRotation = Quaternion.identity; currentWeaponRuntime = weapon; currentInHandWeaponData = weapon.weaponItemData; weapon.PickupWeaponPlayer(); weapon.DisableCollisionColliders(); animController.SetAnimInt(animController.animData.weaponAnimID, currentWeaponRuntime.weaponItemData.weaponAnimID); animController.PlayAnimationHash(animController.animData.getNewWeaponAnimationClass); switch (currentInHandWeaponData.weaponType) { case WeaponType.RANGED: EquipRangedWeapon(); break; case WeaponType.MELEE: EquipMeleeWeapon(); break; } }
public void ApplyKnockdown() { if (isKnockedDown) { return; } isKnockedDown = true; StartCoroutine(KnockdownTimer()); animController.SetAnimBool(animController.animData.isKnockedDown, true); animController.PlayAnimationHash(animController.animData.knockDownAnimationClass); limbsController.EnableEntireRagdoll(); hitboxController.DisableHitboxes(); healthController.doorCollider.SetActive(false); healthController.notificationCollider.SetActive(false); if (inventoryController.currentWeaponRuntime != null) { droppedWeapon = inventoryController.currentWeaponRuntime; } inventoryController.DropCurrentInHandWeapon(false); StartCoroutine(DisableAnimatorTimer()); knockDownNotificationCollider.enabled = true; stateController.ChangeState(AIStateType.KNOCKEDDOWN); }
public void EquipNewWeaponToInventory(WeaponItemRuntime itemRuntime) { bool canBeDualWielded = false; if (itemRuntime.weaponItemData.weaponType == WeaponType.RANGED) { WeaponItemRuntimeRanged rangedItem = itemRuntime as WeaponItemRuntimeRanged; if (rangedItem.rangedData.canBeDualWielded == true) { //Check Inventory to see if we have the same item type bool hasExistingWeaponInInventory = false; int wpnInList = 0; for (int i = 0; i < inventoryWeapons.Count; i++) { if (inventoryWeapons[i].weaponItemData == itemRuntime.weaponItemData) { hasExistingWeaponInInventory = true; wpnInList = i; break; } } if (hasExistingWeaponInInventory == true) { canBeDualWielded = true; //If Reloading During Pickup Cancel if (isPlayerReloading.value) { reloadController.ReloadCancelled(); } //Change Our In Hand Weapon To That If We Have Not Got It (But Don't Execute usual logic) if (currentWeaponItemRuntime != itemRuntime) { if (currentWeaponItemRuntime != null) { currentWeaponItemRuntime.gameObject.SetActive(false); } currentWeaponInList = wpnInList; EquipWeaponExistingInInventory(inventoryWeapons[wpnInList]); } SetupDualWieldItem(itemRuntime); } } } if (canBeDualWielded == false) //If Not Dual Wieldable We can pickup weapons normally { if (inventoryWeapons.Count == playerInventoryData.maxInventoryWeaponsAmount) { DropWeaponToGround(false, currentWeaponItemRuntime); } else { DisableInHandWeapon(); } NewWeaponEquipped(itemRuntime.weaponItemData.weaponType, itemRuntime); } }
public void NewWeaponEquipped(WeaponType newWeapon, WeaponItemRuntime itemRuntime) { itemRuntime.transform.SetParent(playerRightHand); itemRuntime.transform.localPosition = Vector3.zero; itemRuntime.transform.localRotation = Quaternion.identity; itemRuntime.canAttack = true; itemRuntime.PickupWeaponPlayer(); inventoryWeapons.Add(itemRuntime); ChangeCurrentInHandWeapon(itemRuntime); }
void EndKnockDownAfterWeaponFound() { isRecoveringFromKnockDown = false; droppedWeapon.GetComponentInParent <WorldInteractionController>().DestroyInteractionOnly(droppedWeapon.gameObject); inventoryController.EquipExistingWeapon(droppedWeapon); droppedWeapon = null; stateController.ChangeState(AIStateType.COMBAT); stateController.combatState.target = FindObjectOfType <HealthControllerPlayer>(); }
bool CheckIfExistingWeaponIsSameType(WeaponItem weapon) { WeaponItemRuntime runtimeItem = GetComponentInChildren <WeaponItemRuntime>(); if (runtimeItem.weaponItemData.weaponName == weapon.weaponName) { return(true); } else { return(false); } }
public void Init(AIStateController stateCon) { stateController = stateCon; fieldOfViewController = stateCon.GetComponentInChildren <FieldOfViewController>(); inventoryController = stateCon.GetComponent <AIInventoryController>(); movementController = stateCon.GetComponent <AIMovementController>(); animController = stateCon.GetComponent <AnimationController>(); lineOfSightObstaclesLayerMask = Resources.Load("LayerMasks/LayerMask_AI_Line Of Sight Obstacles") as ScriptableLayerMask; deltaTime = GetResource.DeltaTimer(); runtimeWeaponInHand = inventoryController.currentWeaponRuntime; inventoryController.currentWeaponRuntime.AttackCooldownEnd(); inventoryController.rangedWeaponRuntime.currentAmmoInMagazine = inventoryController.rangedWeaponRuntime.rangedData.maxMagazineAmmoAmount; }
public override void Init() { aiController = GetComponent <AIController>(); worldInteractionParentGroup = WorldInteractionsManager.singleton.transform; animController = GetComponent <AnimationController>(); rightHandTrans = GetComponentInChildren <RightHandIdentifier>().transform; currentWeaponRuntime = GetComponentInChildren <WeaponItemRuntime>(); currentInHandWeaponData = currentWeaponRuntime.weaponItemData; currentWeaponRuntime.animController = animController; if (currentInHandWeaponData != null) { EquipWeaponOnGameStart(); } }
void EquipWeaponExistingInInventory(WeaponItemRuntime weapon) { currentWeaponItemRuntime = weapon; currentWeaponItem = weapon.weaponItemData; WeaponItemRuntimeRangedDualWielded dualWield = weapon as WeaponItemRuntimeRangedDualWielded; if (dualWield == null) { weapon.gameObject.SetActive(true); } else { dualWield.OnWeaponEquipped(); } weaponController.OnWeaponEquipped(currentWeaponItemRuntime); }
public void DropCurrentInHandWeapon(bool dropWithForce) { if (currentWeaponRuntime == null) //Has No Weapon to Drop { return; } WorldInteractionEvent_PickupWeaponRuntime pickupWeaponInteraction = WeaponStaticUtils.DropWeaponToGround(currentWeaponRuntime, worldInteractionParentGroup, aiController.aiData.worldInteractionPrefab); if (dropWithForce) { WeaponStaticUtils.ThrowWeaponWithForce(pickupWeaponInteraction, currentInHandWeaponData.throwDistanceForce, transform.forward); } currentWeaponRuntime = null; }
void SpawnWeapon() { WeaponItem weaponToSpawn = null; if (useDefaultWeapon == true) { weaponToSpawn = troopData.defaultWeaponToSpawnWith; } else { weaponToSpawn = weaponToSpawnWith; } bool HasExistingWeapon = CheckForExistingWeapon(); if (HasExistingWeapon == true) { bool isSameType = CheckIfExistingWeaponIsSameType(weaponToSpawn); if (isSameType == true) { return; } else { WeaponItemRuntime currentWeapon = GetComponentInChildren <WeaponItemRuntime>(); if (currentWeapon != null) { if (currentWeapon.weaponItemData != weaponToSpawn) { DestroyImmediate(currentWeapon.gameObject); currentWeapon = null; } } } } GameObject createdGEO = PrefabUtility.InstantiatePrefab(weaponToSpawn.weaponPrefab) as GameObject; RightHandIdentifier rightHand = GetComponentInChildren <RightHandIdentifier>(); // Debug.Log(rightHand); // Debug.Log(createdGEO); createdGEO.transform.parent = rightHand.transform; createdGEO.transform.localPosition = Vector3.zero; createdGEO.transform.localRotation = Quaternion.identity; }
public void ChangeCurrentInHandWeapon(WeaponItemRuntime itemRuntime) { DisableInHandWeapon(); currentWeaponItemRuntime = itemRuntime; currentWeaponItem = itemRuntime.weaponItemData; WeaponItemRuntimeRangedDualWielded dualWield = itemRuntime as WeaponItemRuntimeRangedDualWielded; if (dualWield == null) { itemRuntime.gameObject.SetActive(true); } else { dualWield.OnWeaponEquipped(); } weaponController.OnWeaponEquipped(currentWeaponItemRuntime); }
IEnumerator FetchWeaponAfterGetUpTimer() { Debug.Log(gameObject.name); yield return(new WaitForSeconds(1.8f)); if (droppedWeapon.isPlayerWeapon == true) { droppedWeapon = null; Debug.Log("Player Took Weapon From " + gameObject.name); } else { targetPositionForWeaponPickup = GetNearestNavMeshPoint.GetClosestNavMeshPoint(droppedWeapon.transform.position); movementController.SetAgentDestination(targetPositionForWeaponPickup); animController.SetAnimBool(animController.animData.isIdleBool, true); animController.SetAnimFloat(animController.animData.verticalFloat, 1); } }
public void DropWeaponToGround(bool throwWeaponForce, WeaponItemRuntime weaponToDrop) { bool isDualWielded = false; if (weaponToDrop.weaponItemData.weaponType == WeaponType.RANGED) { WeaponItemRuntimeRanged rangedComponent = weaponToDrop as WeaponItemRuntimeRanged; if (rangedComponent.isDualWielded == true) { isDualWielded = true; } } if (isDualWielded == false) { if (throwWeaponForce) { WorldInteractionEvent_PickupWeaponRuntime pickupWeaponInteraction = WeaponStaticUtils.DropWeaponToGround(weaponToDrop, worldInteractionParentGroup, searcherController.controllerData.worldInteractionPrefab); currentWeaponItemRuntime.OnDropWeaponToGround(); WeaponStaticUtils.ThrowWeaponWithForce(pickupWeaponInteraction, weaponToDrop.weaponItemData.throwDistanceForce, transform.forward); } } else { WeaponItemRuntimeRangedDualWielded dualWieldComponent = weaponToDrop as WeaponItemRuntimeRangedDualWielded; dualWieldComponent.DestroyDualWield(); } inventoryWeapons.Remove(weaponToDrop); currentWeaponItemRuntime = null; currentWeaponItem = null; if (playerHealthController.isDead == false) { WeaponToggle(); } }
void SpawnFreshWeapon(WeaponItem item) { WeaponItemRanged_DualWielded dualItem = item as WeaponItemRanged_DualWielded; if (dualItem != null) { SpawnDualWieldItem(dualItem); return; } GameObject weaponGeo = Instantiate(item.weaponPrefab, playerRightHand); weaponGeo.transform.localPosition = Vector3.zero; weaponGeo.transform.localRotation = Quaternion.identity; weaponGeo.SetActive(false); WeaponItemRuntime runtimeComponent = weaponGeo.GetComponent <WeaponItemRuntime>(); runtimeComponent.FreshSpawnWeapon(); runtimeComponent.PickupWeaponPlayer(); runtimeComponent.Init(); inventoryWeapons.Add(runtimeComponent); }
public void SwitchToFists() { currentWeaponItemRuntime = fistsWeaponRuntime; weaponController.OnWeaponEquipped(currentWeaponItemRuntime); }
public void GetRuntimeWeapon() { runtimeWeapon = GetComponentInChildren <WeaponItemRuntime>(); }