Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- using System.Diagnostics;
- using Assets.Scripts;
- using System.Collections.Generic;
- using Photon;
- using XInputDotNetPure;
- using UnityEngine.UI;
- public class ObjectInteractor : PunBehaviour {
- public AudioSource lazer;
- public GameObject focalObject;
- public FactionManager player;
- public Light _flashLight;
- public LineRenderer[] linerRenderer;
- private SecurityCamera securityCamera;
- private Television television;
- public int timeSensitivity;
- private bool holdingObject;
- private bool flashLightOn;
- private Vector3 _lastRaycastHit;
- Stopwatch timeSinceLastSwitch;
- Stopwatch keyHeld;
- PlacableObject placeableObject;
- public Slider powerMeter;
- public float power = 1;
- public List<InventoryHandler> _inventory;
- public bool lockInventory;
- public InventoryItem currentItem;
- private PlayerController controller;
- public int lazerPoints;
- private bool triggered;
- Stopwatch wallSpawnTimer;
- Stopwatch grenadeTimer;
- Stopwatch falseInputTimer;
- public bool resetLazerPower;
- bool ignoredFalseCommand;
- private bool triggered2;
- private bool triggered3;
- private Stopwatch teleporterTimer;
- public Text[] text;
- // Use this for initialization
- void Start() {
- timeSinceLastSwitch = Stopwatch.StartNew();
- keyHeld = new Stopwatch();
- wallSpawnTimer = new Stopwatch();
- controller = player.GetComponent<PlayerController>();
- grenadeTimer = new Stopwatch();
- teleporterTimer = new Stopwatch();
- falseInputTimer = Stopwatch.StartNew();
- }
- [PunRPC]
- void RpcStunEffect(float x, float y, float z) {
- if (!lazer.isPlaying) {
- lazer.Play();
- }
- for (int i = 0; i < linerRenderer.Length; i++) {
- linerRenderer[i].SetVertexCount(lazerPoints);
- linerRenderer[i].SetPosition(0, linerRenderer[i].transform.position);
- linerRenderer[i].useWorldSpace = false;
- for (int j = 1; j < lazerPoints - 1; j++) {
- linerRenderer[i].SetPosition(j, (Vector3.Lerp(linerRenderer[i].transform.position,
- focalObject.transform.position, (float)(1f / ((float)lazerPoints - (float)2)) * j)
- + new Vector3(Random.Range(0, 0.1f), Random.Range(0, 0.1f), Random.Range(0, 0.1f))));
- }
- linerRenderer[i].useWorldSpace = true;
- linerRenderer[i].SetPosition(lazerPoints - 1, focalObject.transform.position);
- linerRenderer[i].SetColors(player.color, player.color);
- }
- }
- [PunRPC]
- void RpcResetStunEffect() {
- lazer.Stop();
- for (int i = 0; i < linerRenderer.Length; i++) {
- for (int z = 0; z < lazerPoints; z++) {
- linerRenderer[i].SetVertexCount(0);
- }
- }
- }
- // Update is called once per frame
- void FixedUpdate() {
- if (grenadeTimer == null) {
- grenadeTimer = new Stopwatch();
- }
- if (teleporterTimer == null) {
- teleporterTimer = new Stopwatch();
- }
- if (wallSpawnTimer == null) {
- teleporterTimer = new Stopwatch();
- }
- text[0].text = grenadeTimer.ElapsedMilliseconds >= 20000 || !grenadeTimer.IsRunning ? "EMP Ready" : (20000 - grenadeTimer.ElapsedMilliseconds + "ms for EMP");
- text[1].text = teleporterTimer.ElapsedMilliseconds >= 20000 || !teleporterTimer.IsRunning ? "Relocator Ready" : (20000 - teleporterTimer.ElapsedMilliseconds + "ms for Relocator");
- text[2].text = wallSpawnTimer.ElapsedMilliseconds >= 10000 || !wallSpawnTimer.IsRunning ? "Wall Ready" : (10000 - wallSpawnTimer.ElapsedMilliseconds + "ms for Wall");
- bool isMouseAndKeyboard = controller.controllerPriority[controller.localPlayerNumber] == "mk";
- if (controller.stunned) {
- power = 0;
- }
- if (photonView.isMine) {
- if (timeSinceLastSwitch.ElapsedMilliseconds >= timeSensitivity) {
- Ray ray = new Ray(transform.position, transform.forward);
- RaycastHit hit = new RaycastHit();
- Physics.Raycast(ray, out hit, 100f);
- if (hit.transform != null) {
- _lastRaycastHit = hit.point;
- }
- }
- } else {
- GetComponent<AudioListener>().enabled = false;
- }
- if (photonView.isMine) {
- if (isMouseAndKeyboard ?
- Input.GetButtonUp("Fire3") : (controller.prevState.Triggers.Left > 0.00)) {
- if (grenadeTimer.ElapsedMilliseconds >= 20000) {
- grenadeTimer.Reset();
- }
- if (!grenadeTimer.IsRunning) {
- photonView.RPC("RpcStunEffect", PhotonTargets.AllBuffered,
- focalObject.transform.position.x,
- focalObject.transform.position.y,
- focalObject.transform.position.z);
- PhotonNetwork.Instantiate("Grenade", focalObject.transform.position,
- Quaternion.identity, 0).GetComponent<FactionManager>().color = player.color;
- grenadeTimer.Start();
- triggered2 = true;
- }
- } else {
- if (triggered2) {
- triggered2 = false;
- photonView.RPC("RpcResetStunEffect", PhotonTargets.AllBuffered);
- }
- }
- if (!resetLazerPower) {
- if ((isMouseAndKeyboard ?
- Input.GetButton("Fire1")
- : (controller.prevState.Triggers.Right > 0.00)) && power > 0f) {
- triggered = true;
- photonView.RPC("RpcStunEffect", PhotonTargets.AllBuffered,
- focalObject.transform.position.x,
- focalObject.transform.position.y,
- focalObject.transform.position.z);
- power -= 0.02f;
- Ray ray = new Ray(transform.position, transform.forward);
- RaycastHit hit = new RaycastHit();
- Physics.Raycast(ray, out hit, 100f);
- if (hit.transform != null) {
- if (hit.rigidbody != null) {
- PlayerController playerController = hit.rigidbody.GetComponent<PlayerController>();
- if (playerController != null) {
- if (!playerController.stunned) {
- if (playerController != controller) {
- // Send the stun command to the server
- playerController.Stun();
- }
- }
- }
- }
- }
- if (!isMouseAndKeyboard) {
- GamePad.SetVibration(controller.playerIndex, 0f, 0.3f);
- }
- } else {
- if (power <= 0.0f) {
- triggered = true;
- resetLazerPower = true;
- }
- if (triggered) {
- photonView.RPC("RpcResetStunEffect", PhotonTargets.AllBuffered);
- triggered = false;
- GamePad.SetVibration(controller.playerIndex, 0f, 0f);
- }
- }
- } else {
- if (!controller.stunned) {
- if (power < 1f) {
- power += 0.01f;
- if (!isMouseAndKeyboard) {
- GamePad.SetVibration(controller.playerIndex, 1f, 1f);
- }
- } else {
- resetLazerPower = false;
- if (!isMouseAndKeyboard) {
- GamePad.SetVibration(controller.playerIndex, 0f, 0f);
- }
- }
- }
- }
- powerMeter.value = power;
- lazer.volume = power;
- lazer.pitch = 1 + (1 - power);
- if ((isMouseAndKeyboard ?
- Input.GetButtonDown("Fire2") :
- (controller.prevState.Buttons.A == ButtonState.Pressed
- && controller.state.Buttons.A == ButtonState.Released))) {
- if (ignoredFalseCommand) {
- if (wallSpawnTimer.ElapsedMilliseconds >= 10000) {
- wallSpawnTimer.Stop();
- wallSpawnTimer.Reset();
- }
- if (!wallSpawnTimer.IsRunning) {
- wallSpawnTimer.Start();
- GameObject wall = PhotonNetwork.Instantiate("TempWall", focalObject.transform.position,
- Quaternion.Euler(0, transform.eulerAngles.y + 90, 0), 0);
- wall.GetComponent<FactionManager>().photonView.RPC("SetColor", PhotonTargets.AllBufferedViaServer,
- player.color.r, player.color.g, player.color.b);
- }
- } else {
- }
- }
- if ((isMouseAndKeyboard ? Input.GetButtonDown("Fire4") : (controller.prevState.Buttons.RightShoulder == ButtonState.Pressed
- && controller.state.Buttons.RightShoulder == ButtonState.Released))) {
- int id = currentItem.GetComponent<TeleporterItem>().id;
- if (teleporterTimer.ElapsedMilliseconds >= 20000) {
- teleporterTimer.Reset();
- }
- if (!teleporterTimer.IsRunning) {
- if (ignoredFalseCommand) {
- if (id == 0) {
- currentItem.Use();
- } else {
- RaycastHit hit = GetObject();
- if (hit.transform != null) {
- PlayerController hitPlayer = hit.transform.GetComponent<PlayerController>();
- if (hitPlayer != null) {
- foreach (Teleporter teleporter in FindObjectsOfType<Teleporter>()) {
- if (hitPlayer != controller) {
- if (teleporter.id == id) {
- Vector3 pos = teleporter.transform.position + new Vector3(0, 2, 0);
- photonView.RPC("RpcStunEffect", PhotonTargets.AllBuffered,
- focalObject.transform.position.x,
- focalObject.transform.position.y,
- focalObject.transform.position.z);
- hitPlayer.photonView.RPC("Teleport", PhotonTargets.AllBuffered, pos.x, pos.y, pos.z);
- PhotonNetwork.Destroy(teleporter.GetComponent<PhotonView>());
- currentItem.GetComponent<TeleporterItem>().count--;
- currentItem.GetComponent<TeleporterItem>().id = 0;
- teleporterTimer.Reset();
- teleporterTimer.Start();
- triggered3 = true;
- }
- }
- }
- }
- }
- }
- }
- }
- } else {
- if (triggered3) {
- photonView.RPC("RpcResetStunEffect", PhotonTargets.AllBuffered);
- triggered3 = false;
- }
- }
- if (falseInputTimer.ElapsedMilliseconds >= 1000) {
- ignoredFalseCommand = true;
- }
- focalObject.transform.position = Vector3.Lerp(focalObject.transform.position, _lastRaycastHit, 0.2f);
- if (timeSinceLastSwitch.ElapsedMilliseconds >= timeSensitivity) {
- CheckForFlashLightChange();
- if (Input.GetKeyUp(KeyCode.E)) {
- if (keyHeld.ElapsedMilliseconds <= 500) {
- if (!holdingObject) {
- RaycastHit hit = GetObject();
- if (hit.transform != null) {
- placeableObject = hit.transform.gameObject.GetComponent<PlacableObject>();
- if (placeableObject != null) {
- placeableObject.Interact();
- }
- }
- }
- } else {
- if (!holdingObject) {
- RaycastHit hit = GetObject();
- if (hit.transform != null) {
- placeableObject = hit.transform.gameObject.GetComponent<PlacableObject>();
- if (placeableObject != null) {
- placeableObject._isBeingHeld = true;
- holdingObject = true;
- }
- }
- } else {
- ResetHold();
- }
- }
- keyHeld.Stop();
- keyHeld.Reset();
- }
- if (Input.GetKeyDown(KeyCode.E)) {
- if (!keyHeld.IsRunning) {
- keyHeld.Start();
- }
- }
- if (!lockInventory) {
- //if (Input.GetKeyUp(KeyCode.Space)) {
- // if (currentItem != null) {
- // //currentItem.Use();
- // }
- //}
- //if (Input.GetKeyUp(KeyCode.P)) {
- // RaycastHit hit = GetObject();
- // if (hit.transform != null) {
- // InventoryItem newItem = hit.transform.gameObject.GetComponent<InventoryItem>();
- // if (newItem.CanBeAddedToInventory) {
- // switch (newItem.Type) {
- // case InventoryItem.CategoryType.Equipment:
- // newItem.AddToInventory(_inventory[0]._inventory);
- // _inventory[0].Refresh();
- // break;
- // case InventoryItem.CategoryType.Paper:
- // newItem.AddToInventory(_inventory[1]._inventory);
- // break;
- // case InventoryItem.CategoryType.Item:
- // newItem.AddToInventory(_inventory[2]._inventory);
- // break;
- // }
- // }
- // }
- //}
- }
- }
- //if (Input.GetKeyUp(KeyCode.I)) {
- // FindObjectOfType<Canvas>().enabled = !FindObjectOfType<Canvas>().enabled;
- // lockInventory = FindObjectOfType<Canvas>().enabled;
- //}
- } else {
- if (placeableObject != null) {
- ResetHold();
- }
- }
- }
- private RaycastHit GetObject() {
- Ray ray = new Ray(transform.position, transform.forward);
- RaycastHit hit = new RaycastHit();
- Physics.Raycast(ray, out hit, 20f);
- return hit;
- }
- private void CheckForFlashLightChange() {
- if (Input.GetKeyDown(KeyCode.F)) {
- flashLightOn = !flashLightOn;
- if (flashLightOn) {
- _flashLight.intensity = 2;
- } else {
- _flashLight.intensity = 0;
- }
- }
- }
- private void ResetHold() {
- placeableObject._isBeingHeld = false;
- placeableObject = null;
- holdingObject = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment