using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using CompuLogic.Workspace; namespace CompuLogic { public class GameManager : MonoBehaviour { #region Static Properties public static GameManager Instance { get { if (_instance == null) _instance = FindObjectOfType(); return _instance; } } private static GameManager _instance; #endregion #region Unity Properties [Header("Prefabs")] public Cable CablePrefab; public Gate GatePrefab; public Anchor AnchorPrefab; public Anchor BigAnchorPrefab; [Header("Groups")] public Transform GatesGroup; public Transform CablesGroup; [Header("Colors")] public Color DeadColor; public Color ActivatedColor; [Header("Gates")] public TextAsset GateBook; public List GateSprites; #endregion #region Public Properties public List GatePrefabs { get; set; } public Anchor CurrentAnchor { get; set; } public Gate CurrentGate { get; set; } public PointerManager PointerManager { get { if (_pointerManager == null) _pointerManager = GetComponent(); return _pointerManager; } } #endregion #region Private Properties private PointerManager _pointerManager; #endregion #region Unity Methods private void Start() { var factory = gameObject.AddComponent(); factory.Init(GatePrefab, AnchorPrefab, BigAnchorPrefab, GateSprites); GatePrefabs = factory.GeneratePrefabs(GateBook); } #endregion #region Public Methods public void CreateGate(Gate gatePrefab) { var gate = Instantiate(gatePrefab, GatesGroup); gate.gameObject.SetActive(true); gate.transform.position = PointerManager.MousePos - gate.Box.transform.position; PointerManager.DragGate(gate, true); } #endregion #region Private Methods #endregion } }