using ExitGames.Client.Photon; using Photon.Pun; using Photon.Realtime; using System.Collections.Generic; using UnityEngine; public class Selection : MonoBehaviour { public static Selection Instance { get; set; } public float selectionTime; [Header("Costs")] public int maxPoints; public List circuitCosts; public bool HasStarted; private List circuitAmounts; public int CurrentPoints { get { int currentSummedCost = 0; foreach (CircuitAmount circuitAmount in circuitAmounts) { int individualCost = circuitCosts.Find(x => x.type.Equals(circuitAmount.type)).cost; int circuitAmountCost = individualCost * circuitAmount.amount; currentSummedCost += circuitAmountCost; } return maxPoints - currentSummedCost; } } void Awake() { Instance = this; circuitAmounts = new List() { new CircuitAmount(CircuitType.Basic, 0), new CircuitAmount(CircuitType.Capacitor, 0), new CircuitAmount(CircuitType.Generator, 0), new CircuitAmount(CircuitType.Speeder, 0) }; if (!PhotonNetwork.IsConnected) { PhotonNetwork.OfflineMode = true; PhotonNetwork.CreateRoom("development"); PhotonNetwork.LocalPlayer.SetCustomProperties(new Hashtable() { ["IsReady"] = true, ["ColorIndex"] = Random.Range(1, 9) }); StartSelection(); } } void Update() { if (HasStarted) { selectionTime -= Time.deltaTime; if (selectionTime <= 0) SelectionDone(); } } public bool CanAdd(CircuitType type) { return CurrentPoints >= circuitCosts.Find(c => c.type.Equals(type)).cost; } public bool AddCircuitToSelection(CircuitType type, out int newCount) { int cost = circuitCosts.Find(x => x.type.Equals(type)).cost; newCount = 0; if (CurrentPoints - cost < 0) { //No return false; } else { //Yes CircuitAmount circuitAmount = circuitAmounts.Find(x => x.type.Equals(type)); circuitAmount.amount++; newCount = circuitAmount.amount; Debug.Log("Added circuit to selection. Current Points: " + CurrentPoints); return true; } } public bool RemoveCircuitFromSelection(CircuitType type, out int newCount) { CircuitAmount circuitAmount = circuitAmounts.Find(x => x.type.Equals(type)); newCount = 0; if (circuitAmount.amount == 0) { //No return false; } else { //Yes circuitAmount.amount--; newCount = circuitAmount.amount; Debug.Log("Removed circuit from selection. Current Points: " + CurrentPoints); return true; } } //Entry point public void StartSelection() { Debug.Log("Selection countdown has started!"); HasStarted = true; } public void SelectionDone() { HasStarted = false; GameManager manager = GameManager.Instance; manager.circuitAmounts = circuitAmounts; manager.restPoints = CurrentPoints; PhotonNetwork.LoadLevel(2); } }