Skip to content
Snippets Groups Projects
Commit 304847e1 authored by Markéta Machová's avatar Markéta Machová
Browse files

Refactor

parent 3a6b9219
No related branches found
No related tags found
No related merge requests found
Showing
with 177 additions and 248 deletions
source diff could not be displayed: it is stored in LFS. Options to address this: view the blob.
source diff could not be displayed: it is stored in LFS. Options to address this: view the blob.
......@@ -11,12 +11,17 @@ namespace Cart
{
public class CartCreator : MonoBehaviour
{
[Header("Hands")]
[SerializeField] private GameObject leftHand;
[SerializeField] private GameObject rightHand;
[SerializeField] private GameObject cartPrefab;
[SerializeField] private BaseUIController uiController;
[Header("Cart")]
[SerializeField] private Material cartMaterial;
[SerializeField] private GameObject cartPrefab;
[SerializeField] private Vector3 defaultCartPosition;
[Header("UI")]
[SerializeField] private BaseUIController uiController;
[SerializeField] private bool debug = true;
private readonly List<Renderer> _cartRendererComponents = new List<Renderer>();
......@@ -40,7 +45,7 @@ public class CartCreator : MonoBehaviour
private List<Vector3> _createdPoints = new List<Vector3>();
// private List<Vector3> rightSidePoints = new List<Vector3>();
public event Action OnCalibrationComplete;
public event Action OnCartCreatorCalibrationComplete;
private void Awake()
......@@ -57,32 +62,30 @@ private void Update()
{
var rightArrowPressed = Input.GetKeyDown(KeyCode.RightArrow);
var leftArrowPressed = Input.GetKeyDown(KeyCode.LeftArrow);
if (rightArrowPressed || leftArrowPressed)
{
_interactable = false;
if (rightArrowPressed && !_rightSideCreated)
{
Debug.Log("RIGHT index pinhing");
_currentPointPositionList.Add(new Vector3(0.485f, 1.3903f, 0.163f));
_rightSideCreated = true;
_lastPointPosition = _currentPointPositionList[_currentPointPositionList.Count - 1];
CreateCart(_lastPointPosition);
}
if (leftArrowPressed && !_leftSideCreated && _rightSideCreated)
{
Debug.Log("LEFT index pinhing");
_currentPointPositionList.Add(new Vector3(-0.2958f, 1.3903f, 0.4578f));
_leftSideCreated = true;
RotateCart(_lastPointPosition, _currentPointPositionList[_currentPointPositionList.Count - 1]);
}
_interactable = true;
}
if (Input.GetKeyDown(KeyCode.X))
{
EndCalibration();
......@@ -166,7 +169,7 @@ public void EndCalibration()
// Destroy(stand);
var networkCamera = GameObject.FindWithTag("NetworkCamera");
_cart.transform.parent = networkCamera.transform;
OnCalibrationComplete?.Invoke();
OnCartCreatorCalibrationComplete?.Invoke();
}
}
}
\ No newline at end of file
......@@ -41,10 +41,6 @@ private void InstantiatePlayer(NetworkConnection conn)
{
GameObject player = Instantiate(playerPrefab);
NetworkPlayer networkPlayer = player.GetComponent<NetworkPlayer>();
if (numPlayers > 1) //TODO asi ne
{
networkPlayer.mobile = true;
}
NetworkServer.AddPlayerForConnection(conn, player);
DontDestroyOnLoad(player);
......@@ -62,13 +58,13 @@ private void InstantiateCamera()
NetworkServer.Spawn(PlayerCamera);
var mainCamera = GameObject.FindWithTag("MainCamera");
mainCamera.transform.parent = PlayerCamera.transform;
DontDestroyOnLoad(mainCamera);
DontDestroyOnLoad(PlayerCamera);
}
public override void OnServerDisconnect(NetworkConnection conn)
{
//TODO
base.OnServerDisconnect(conn);
Debug.Log(numPlayers);
Debug.Log(conn.connectionId);
......@@ -78,6 +74,7 @@ public override void OnServerDisconnect(NetworkConnection conn)
}
else
{
OnMobileClientDisconnectAction?.Invoke();
OnClientDisconnectAction?.Invoke();
}
}
......
......@@ -27,14 +27,14 @@ public class NetworkPlayer : NetworkBehaviour
private BaseUIController _uiController;
private GameController _gameController;
private Controller _mobileController;
private VRLobbyController _vrLobbyController;
private BaseController _controller;
public event Action OnCalibrationComplete;
private void Awake()
{
_vrLobbyController = GameObject.FindObjectOfType<VRLobbyController>();
_controller = FindObjectOfType<BaseController>();
Debug.Log(_controller.name);
}
public override void OnStopClient()
......@@ -42,7 +42,7 @@ public override void OnStopClient()
base.OnStopClient();
if (mobile)
{
_mobileController.OnDisconnect();
_controller.OnDisconnect();
}
}
......@@ -59,15 +59,18 @@ public override void OnStopClient()
[TargetRpc]
public void UpdateSceneConnected()
{
_controller.AssignPlayers();
if (SceneManager.GetActiveScene().name == "AppOffline")
{
Debug.Log("update scene connected (MOBILE ONLY)");
mobile = true;
_mobileController = GameObject.FindObjectOfType<Controller>();
_mobileController.AssignPlayer(this); // mozna presunout do onstrtlocalplayer
// _mobileController = GameObject.FindObjectOfType<MobileController>();
((MobileController) _controller).AssignPlayer(this); // mozna presunout do onstrtlocalplayer
}
}
//TODO je to k necemu?
public void ChangeScene(string oldScene, string newScene)
{
DontDestroyOnLoad(this);
......@@ -76,23 +79,21 @@ public void ChangeScene(string oldScene, string newScene)
if (currentScene == "VROffline") //change scene for VR from mobile
{
Debug.Log("about to change scene in VR");
VRLobbyController vrLobbyController =
GameObject.Find("LobbyController").GetComponent<VRLobbyController>();
vrLobbyController.OnSceneSelected(chosenWorld);
_controller.OnSceneSelected(chosenWorld);
}
}
//mozna ze to coje ted v networkManager se da dat i sem jako serverova strana
[Command]
[Command] //require authority
public void CmdHandleSelectedWorld(string sceneName)
{
chosenWorld = sceneName; //changing syncvar as cmd results in server synchronising all clients
}
//volano Controllerem
[Command]
[Command] //require authority
public void CmdSetPlayerMoving(bool moving)
{
Debug.Log("CMD set player moving in Network pLayer, moving: " + moving);
......@@ -106,7 +107,6 @@ public void CmdSkipCalibration(bool skip)
Debug.Log("CMD sskip calibration in Network pLayer, skipCalibraion: " + skip);
skipCalibration = true;
}
//volano serverem na clientech
......@@ -135,15 +135,14 @@ public void SkipCalibration(bool oldValue, bool skip)
Debug.Log("set player skip calibration CALLBACK in Network pLayer, skip: " + skip);
if (!mobile)
{
_vrLobbyController.GetCartCreator().SkipCalibration();
((VRLobbyController) _controller).GetCartCreator().SkipCalibration();
}
}
private void AssignGameController()
{
_gameController = GameObject.FindWithTag("Controller").GetComponent<GameController>();
_gameController = GameObject.FindObjectOfType<GameController>();
Debug.Log(_gameController);
Debug.Log(SceneManager.GetActiveScene().name);
}
......@@ -160,14 +159,7 @@ public void ResumeCartDrive()
Debug.Log("cart resumes going");
}
// [Command]
// public void CmdSetCalibrationComplete(bool completed)
// {
// Debug.Log("CMD set calibration completed in Network pLayer, calibration completed: " + completed);
// calibrationComplete = completed;
// }
[Command(requiresAuthority = false)]
public void CmdSetCalibrationComplete(bool complete)
{
......@@ -179,12 +171,14 @@ public void CmdSetCalibrationComplete(bool complete)
private void SetCalibrationComplete(bool oldValue, bool complete)
{
Debug.Log("Set calibration complete callback nETWORK PLAYER");
OnCalibrationComplete?.Invoke(); //ma si to prevzit mobile controller (Controller)
if (mobile)
{
Debug.Log("mobile true");
_mobileController.OnCalibrationComplete();
}
OnCalibrationComplete?.Invoke(); //ma si to prevzit mobile controller (MobileController)
// //TODO je to potreba?
// if (mobile)
// {
// Debug.Log("mobile true");
// ((MobileController) _controller).OnCalibrationComplete();
// }
}
}
}
\ No newline at end of file
......@@ -3,33 +3,69 @@
using UnityEngine;
using NetworkPlayer = Network.NetworkPlayer;
using Mirror;
using Mirror.Discovery;
using Network;
using UI;
using UnityEngine.SceneManagement;
namespace Player
{
public class BaseController : MonoBehaviour
{
[SerializeField] protected NetworkDiscovery networkDiscovery;
[SerializeField] protected MyNetworkManager networkManager;
[SerializeField] protected SceneLoader sceneLoader;
[SerializeField] protected BaseUIController uiController;
protected readonly List<NetworkPlayer> Players = new List<NetworkPlayer>();
protected NetworkPlayer LocalNetworkPlayer;
public virtual void OnDisconnect()
{
uiController.DisplayError();
}
public virtual void AssignPlayers()
{
Debug.Log("assign players in BASEController called");
var playersArr = GameObject.FindGameObjectsWithTag("Player");
foreach (var networkPlayer in playersArr.Select(player => player.GetComponent<NetworkPlayer>()))
Debug.Log("assign players in BASE Controller called");
var networkPlayers = GameObject.FindObjectsOfType<NetworkPlayer>();
foreach (var networkPlayer in networkPlayers)
{
Debug.Log("NETWORK PLAYER dfkjhsdfkjhsdfkjsh");
Players.Add(networkPlayer);
if (networkPlayer.isLocalPlayer)
{
Debug.Log("found network player LOCAL");
LocalNetworkPlayer = networkPlayer;
LocalNetworkPlayer.OnCalibrationComplete += OnCalibrationComplete;
}
}
}
public virtual void OnCalibrationComplete()
{
Debug.Log("On calibration complete Base controller");
Debug.Log("base onCalibrationComplete");
}
public virtual void SetCalibrationComplete()
{
var players = GameObject.FindObjectsOfType<NetworkPlayer>();
foreach (var networkPlayer in players)
{
networkPlayer.CmdSetCalibrationComplete(true);
}
Debug.Log("SET calibration complete Base controller");
}
public virtual void OnSceneSelected(string sceneName)
{
if (SceneManager.sceneCount > 1)
{
Debug.Log("sceneCount > 1");
return;
}
LocalNetworkPlayer.CmdHandleSelectedWorld(sceneName); //message about scene loading to other players
uiController.DisplayLoader(true); //TODO je to potreba?
sceneLoader.LoadScene(sceneName, true);
}
}
}
\ No newline at end of file
......@@ -5,10 +5,9 @@
namespace Player
{
public class Controller : BaseController
public class MobileController : BaseController
{
[SerializeField] private UIControllerMobile uiControllerMobile;
[SerializeField] private MyNetworkManager networkManager;
[SerializeField] private ConnectScreenController connectController;
private bool _playing = false;
private SceneLoader _sceneLoader;
......@@ -29,14 +28,9 @@ private void OnSceneLoaded()
uiControllerMobile.ActivateExclusive("PlayerCameraButton");
}
public void HandleSceneChosen(string sceneName)
{
LocalNetworkPlayer.CmdHandleSelectedWorld(sceneName); //message about scene loading to other players
_sceneLoader.LoadScene(sceneName, true);
}
public void OnDisconnect()
public override void OnDisconnect()
{
base.OnDisconnect();
uiControllerMobile.EnablePanelExclusive("ConnectScreen");
Debug.Log("ON DISCONNECT Controller");
}
......@@ -68,23 +62,12 @@ public void EndDrive()
LocalNetworkPlayer.CmdSetPlayerMoving(false); //indicate END somehow
}
public void EndCalibration() //TODO
public void SkipCalibration() //TODO
{
Debug.Log("Mobile Controller end calibration");
LocalNetworkPlayer.CmdSkipCalibration(true); //TODO
}
// public override void AssignPlayers()
// {
// base.AssignPlayers();
// Debug.Log("Controller assign playersss");
// Debug.Log(LocalNetworkPlayer.netId);
// Debug.Log(uiControllerMobile);
// uiControllerMobile.EnableFalse("Calibration");
// uiControllerMobile.EnableTrue("SceneSelection");
// //LocalNetworkPlayer.OnCalibrationComplete += OnCalibrationComplete; TODO
// }
public void AssignPlayer(NetworkPlayer networkPlayer)
{
LocalNetworkPlayer = networkPlayer;
......@@ -99,16 +82,18 @@ public void AssignPlayer(NetworkPlayer networkPlayer)
{
Debug.Log("calibration in processs.......");
uiControllerMobile.EnableTrue("Calibration"); // display "Calibration in process message"
LocalNetworkPlayer.OnCalibrationComplete += OnCalibrationComplete; //observe calibration complete process
LocalNetworkPlayer.OnCalibrationComplete += OnCalibrationComplete; //observe calibration complete process TODO tohle mozna nebude potreba
}
}
public override void OnCalibrationComplete()
{
base.OnCalibrationComplete();
Debug.Log("HIDE CALIBRATION MOBILE CONTROLLER");
Debug.Log(uiControllerMobile);
uiControllerMobile.EnableFalse("Calibration");
uiControllerMobile.EnableTrue("SceneSelection");
}
}
}
\ No newline at end of file
......@@ -2,9 +2,6 @@
using System.Collections;
using Cart;
using Mirror;
using Mirror.Discovery;
using Network;
using UI;
using UnityEngine;
using UnityEngine.SceneManagement;
using NetworkPlayer = Network.NetworkPlayer;
......@@ -19,24 +16,20 @@ public enum World
Spring
}
public class VRLobbyController : NetworkBehaviour
public class VRLobbyController : BaseController
{
[SerializeField] private NetworkDiscovery networkDiscovery;
[SerializeField] private MyNetworkManager networkManager;
[SerializeField] private UIControllerVRLobby uiController;
[SerializeField] private SceneLoader sceneLoader;
[SerializeField] private CartCreator cartCreator;
//debug only
private bool _spacePressed = false;
[Header("Debug only")] private bool _spacePressed = false;
private bool _debug = true;
private void Awake()
{
networkManager.OnClientConnectAction += OnClientConnected;
networkManager.OnMobileClientConnectAction += OnClientMobileConnected;
networkManager.OnClientDisconnectAction += OnClientDisonnected;
networkManager.OnMobileClientDisconnectAction += OnClientMobileDisonnected;
cartCreator.OnCalibrationComplete += OnCalibrationCompleteNetwork;
networkManager.OnMobileClientDisconnectAction += OnClientMobileDisconnected;
cartCreator.OnCartCreatorCalibrationComplete += SetCalibrationComplete;
}
private IEnumerator Start()
......@@ -46,26 +39,19 @@ private IEnumerator Start()
networkDiscovery.AdvertiseServer();
}
//debug only
private void Update()
{
//debug only
if (Input.GetKey(KeyCode.Space) && !_spacePressed)
{
_spacePressed = true;
OnSceneSelected(World.MainScene.ToString());
}
}
public void OnSceneSelected(string scene)
{
if (SceneManager.sceneCount > 1)
if (_debug)
{
return;
if (Input.GetKey(KeyCode.Space) && !_spacePressed)
{
_spacePressed = true;
OnSceneSelected(World.MainScene.ToString());
}
}
uiController.DisplayLoader(true);
sceneLoader.LoadScene(scene, true);
}
private void OnClientConnected()
{
uiController.Activate("AvailabilityIndicatorVR");
......@@ -81,21 +67,22 @@ private void OnClientDisonnected()
uiController.Deactivate("AvailabilityIndicatorVR");
}
private void OnClientMobileDisonnected()
private void OnClientMobileDisconnected()
{
Debug.Log("OMCLIENTMOBILEDISCONNECT");
uiController.Deactivate("AvailabilityIndicatorMobile");
}
private void OnCalibrationCompleteNetwork()
public override void SetCalibrationComplete()
{
base.SetCalibrationComplete();
Debug.Log("SET calibration complete network vRLOBBY CONTROLLER");
}
public override void OnCalibrationComplete()
{
Debug.Log("Oncalibration complete network vRLOBBY CONTROLLER");
base.OnCalibrationComplete();
uiController.EnablePanelExclusive("SceneSelection");
var players = GameObject.FindObjectsOfType<NetworkPlayer>();
foreach (var networkPlayer in players)
{
networkPlayer.CmdSetCalibrationComplete(true);
}
Debug.Log("ON calibration complete network vRLOBBY CONTROLLER");
}
public CartCreator GetCartCreator()
......
......@@ -8,14 +8,21 @@ namespace UI
{
public class BaseUIController : MonoBehaviour
{
[SerializeField] private GameObject loadingSceneIndicator;
[Header("UI Elements")] [SerializeField]
private GameObject loadingSceneIndicator;
[SerializeField] protected List<GameObject> panels;
[FormerlySerializedAs("activables")] [SerializeField] protected List<Selectable> activableSprites;
[FormerlySerializedAs("enalables")] [SerializeField] protected List<GameObject> enalableObjects;
[SerializeField] protected MyNetworkManager networkManager;
[SerializeField] private GameObject errorPanel;
[FormerlySerializedAs("activables")] [SerializeField]
protected List<Selectable> activableSprites;
[FormerlySerializedAs("enalables")] [SerializeField]
protected List<GameObject> enalableObjects;
[SerializeField] protected MyNetworkManager networkManager;
public void DisplayLoader(bool active)
{
loadingSceneIndicator.SetActive(active);
......@@ -23,9 +30,12 @@ public void DisplayLoader(bool active)
public virtual void DisplayError()
{
errorPanel.SetActive(true);
if (errorPanel)
{
errorPanel.SetActive(true);
}
}
public void EnablePanelExclusive(string panelName)
{
panels.ForEach(panel => panel.SetActive(panel.name == panelName));
......@@ -33,20 +43,14 @@ public void EnablePanelExclusive(string panelName)
public void EnableTrue(string enalableName)
{
foreach (var enalable in enalableObjects.Where(enalable => enalable.name == enalableName))
{
enalable.SetActive(true);
}
Enable(enalableName, true);
}
public void EnableFalse(string enalableName)
{
foreach (var enalable in enalableObjects.Where(enalable => enalable.name == enalableName))
{
enalable.SetActive(false);
}
Enable(enalableName, false);
}
public void ActivateExclusive(string activableName)
{
activableSprites.ForEach(activable => activable.SetSelected(activable.name == activableName));
......@@ -54,24 +58,34 @@ public void ActivateExclusive(string activableName)
public void Activate(string activableName)
{
foreach (var selectable in activableSprites.Where(selectable => selectable.name == activableName))
{
selectable.SetSelected(true);
}
ActivateSprite(activableName, true);
}
public void Deactivate(string activableName)
{
foreach (var selectable in activableSprites.Where(selectable => selectable.name == activableName))
{
selectable.SetSelected(false);
}
ActivateSprite(activableName, false);
}
//todo mozna presunout do Controller
public void OnQuit()
{
Application.Quit();
}
private void Enable(string enalableName, bool enable)
{
foreach (var enalable in enalableObjects.Where(enalable => enalable.name == enalableName))
{
enalable.SetActive(enable);
}
}
private void ActivateSprite(string activableName, bool activate)
{
foreach (var selectable in activableSprites.Where(selectable => selectable.name == activableName))
{
selectable.SetSelected(activate);
}
}
}
}
}
\ No newline at end of file
using System;
using Player;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace UI
{
public class FinalUI : MonoBehaviour
{
private GameController _gameController;
private void Awake()
{
_gameController = GetComponent<GameController>();
}
public void OnQuit()
{
Application.Quit();
}
public void OnPlayAgain()
{
SceneManager.LoadScene("Scenes/MainScene");
}
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: d46b819aad8f4d289f619ca7fc33ef66
timeCreated: 1613686763
\ No newline at end of file
using UnityEngine;
using UnityEngine.UI;
namespace UI
{
public class NavigationController : MonoBehaviour
{
public GameObject homeScreen;
public GameObject settingsScreen;
public Sprite activeSprite;
public Sprite inactiveSprite;
private Image image;
void Start()
{
image = GetComponentInChildren<Image>();
}
public void setHomeScreen()
{
homeScreen.SetActive(true);
settingsScreen.SetActive(false);
image.sprite = activeSprite;
}
public void setSettingsScreen()
{
homeScreen.SetActive(false);
settingsScreen.SetActive(true);
image.sprite = inactiveSprite;
}
}
}
fileFormatVersion: 2
guid: 8b570fa537c634f8c9216198eed749c9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -7,33 +7,31 @@
namespace UI
{
enum WatchMode {PlayerCamera, TopCamera, Dashboard}
public class UIControllerMobile : BaseUIController
{
[Header("Runtime")]
[SerializeField] public bool portraitOriented;
[SerializeField] private bool playing = false;
[SerializeField] private bool controlsVisible;
[Header("Mobile UI Elements")]
[SerializeField] private List<GameObject> cameraViews;
[SerializeField] private GameObject controls;
[SerializeField] private Timer timer;
[SerializeField] private ProgressBar progressBar;
[Header("Special Buttons")]
[SerializeField] private Selectable playButton;
[SerializeField] private Selectable maximizeButton;
[SerializeField] private Controller controller;
private bool _controlsVisible;
private bool _playing = false;
[FormerlySerializedAs("controller")] [SerializeField] private MobileController mobileController;
private void Awake()
{
networkManager.OnClientDisconnectAction += DisplayError;
}
// public void EnablePanel(string panelName)
// {
// screenPanels.ForEach(panel => panel.SetActive(panel.name == panelName));
// }
public void EnableCameraView(string cameraViewName)
{
cameraViews.ForEach(panel => panel.SetActive(panel.name == cameraViewName));
......@@ -41,7 +39,6 @@ public void EnableCameraView(string cameraViewName)
public void OnChangeScreenOrientation()
{
Screen.orientation = portraitOriented ? ScreenOrientation.LandscapeLeft : ScreenOrientation.Portrait;
portraitOriented = !portraitOriented;
maximizeButton.SetSelected(!portraitOriented);
......@@ -50,13 +47,13 @@ public void OnChangeScreenOrientation()
public void ToggleControlsVisible()
{
_controlsVisible = !_controlsVisible;
controls.SetActive(_controlsVisible);
controlsVisible = !controlsVisible;
controls.SetActive(controlsVisible);
}
private IEnumerator HideControls()
{
while (_controlsVisible)
while (controlsVisible)
{
yield return new WaitForSecondsRealtime(5);
controls.SetActive(false);
......@@ -66,25 +63,18 @@ private IEnumerator HideControls()
public void OnPlayPressed(bool playing)
{
playButton.SetSelected(playing);
_playing = playing;
this.playing = playing;
timer.SetTimerPlaying(playing);
progressBar.SetProgressBarPlaying(playing);
}
//general controller
public void OnSceneChosen(string chosenScene)
{
controller.HandleSceneChosen(chosenScene);
mobileController.OnSceneSelected(chosenScene);
timer.ResetTimer(); //nevim
}
//general controller
// public void AssignPlayer(NetworkPlayer player)
// {
// Debug.Log("assigning player ");
// _networkPlayer = player;
// Debug.Log(_networkPlayer);
// }
}
}
\ No newline at end of file
......@@ -127,8 +127,6 @@ PlayerSettings:
bundleVersion: 0.1
preloadedAssets:
- {fileID: 0}
- {fileID: 8633852114367649641, guid: a48753007d4124b56a530c2789143f3f, type: 2}
- {fileID: 11400000, guid: 4a687ddd122a04b8d8030d30d784faca, type: 2}
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment