139 lines
2.7 KiB
C#
139 lines
2.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
public class simpleFireWeaponsConditionSystem : MonoBehaviour
|
|
{
|
|
[Header ("Main Settings")]
|
|
[Space]
|
|
|
|
public bool conditionCheckEnabled;
|
|
|
|
public bool checkIfCurrentWeapon;
|
|
|
|
[Space]
|
|
|
|
public bool checkIfAimingWeapon;
|
|
|
|
public bool checkIfThirdPersonActive;
|
|
public bool checkIfFirstPersonActive;
|
|
public bool checkIfFullBodyAwarenessActive;
|
|
|
|
[Space]
|
|
|
|
public bool conditionResultCompleteIfAnyConditionTrue;
|
|
|
|
[Space]
|
|
[Header ("Events Settings")]
|
|
[Space]
|
|
|
|
public UnityEvent eventOnConditionComplete;
|
|
|
|
public UnityEvent eventOnConditionNotComplete;
|
|
|
|
[Space]
|
|
[Header ("Debug")]
|
|
[Space]
|
|
|
|
public bool showDebugPrint;
|
|
|
|
[Space]
|
|
[Header ("Components")]
|
|
[Space]
|
|
|
|
public IKWeaponSystem mainIKWeaponSystem;
|
|
|
|
public void checkIfConditionComplete ()
|
|
{
|
|
if (!conditionCheckEnabled) {
|
|
return;
|
|
}
|
|
|
|
bool conditionResult = checkConditionResult ();
|
|
|
|
setConditionResult (conditionResult);
|
|
}
|
|
|
|
bool checkConditionResult ()
|
|
{
|
|
bool conditionResult = false;
|
|
|
|
bool currentConditionState = true;
|
|
|
|
if (conditionResultCompleteIfAnyConditionTrue) {
|
|
currentConditionState = false;
|
|
|
|
if (checkIfAimingWeapon) {
|
|
if (mainIKWeaponSystem.isAimingWeapon ()) {
|
|
currentConditionState = true;
|
|
}
|
|
}
|
|
|
|
if (checkIfThirdPersonActive) {
|
|
if (!mainIKWeaponSystem.isPlayerCameraFirstPersonActive ()) {
|
|
currentConditionState = true;
|
|
}
|
|
}
|
|
|
|
if (checkIfFirstPersonActive) {
|
|
if (mainIKWeaponSystem.isPlayerCameraFirstPersonActive ()) {
|
|
currentConditionState = true;
|
|
}
|
|
}
|
|
|
|
if (checkIfFullBodyAwarenessActive) {
|
|
if (mainIKWeaponSystem.isFullBodyAwarenessActive ()) {
|
|
currentConditionState = true;
|
|
}
|
|
}
|
|
} else {
|
|
if (checkIfAimingWeapon) {
|
|
if (!mainIKWeaponSystem.isAimingWeapon ()) {
|
|
currentConditionState = false;
|
|
}
|
|
}
|
|
|
|
if (checkIfThirdPersonActive) {
|
|
if (mainIKWeaponSystem.isPlayerCameraFirstPersonActive ()) {
|
|
currentConditionState = false;
|
|
}
|
|
}
|
|
|
|
if (checkIfFirstPersonActive) {
|
|
if (!mainIKWeaponSystem.isPlayerCameraFirstPersonActive ()) {
|
|
currentConditionState = false;
|
|
}
|
|
}
|
|
|
|
if (checkIfFullBodyAwarenessActive) {
|
|
if (!mainIKWeaponSystem.isFullBodyAwarenessActive ()) {
|
|
currentConditionState = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (checkIfCurrentWeapon) {
|
|
if (!mainIKWeaponSystem.isCurrentWeapon ()) {
|
|
currentConditionState = false;
|
|
}
|
|
}
|
|
|
|
conditionResult = currentConditionState;
|
|
|
|
return conditionResult;
|
|
}
|
|
|
|
public void setConditionResult (bool state)
|
|
{
|
|
if (showDebugPrint) {
|
|
print ("Condition result: " + state);
|
|
}
|
|
|
|
if (state) {
|
|
eventOnConditionComplete.Invoke ();
|
|
} else {
|
|
eventOnConditionNotComplete.Invoke ();
|
|
}
|
|
}
|
|
} |