using UdonSharp; using UnityEngine; using VRC.SDK3.Data; using VRC.SDK3.UdonNetworkCalling; using VRC.Udon.Common.Interfaces; using VRC.SDKBase; [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class GameManagerRound2 : GameManagerBase { [SerializeField] private LocationBoard _LocationBoard; protected override void InitialiseGameMode() { base.InitialiseGameMode(); } public override void LoadQuestionData(DataToken Data) { HostCardBetweenRoundsInterface Interface = (HostCardBetweenRoundsInterface)GetHostCardInterface(QuestionType.BetweenRounds); DataDictionary DataDict = Data.DataDictionary; if (DataDict.ContainsKey("Location") && DataDict.ContainsKey("Landmarks")) { if (DataDict["Landmarks"].TokenType == TokenType.DataList && DataDict["Landmarks"].DataList.Count >= 15) { DataList Landmarks = DataDict["Landmarks"].DataList; for (int i = 0; i < Landmarks.Count; i++) { if (Landmarks[i].TokenType == TokenType.DataDictionary) { DataDictionary LandmarkEntry = Landmarks[i].DataDictionary; if (LandmarkEntry.ContainsKey("Landmark")) { _LocationBoard.LocationPanelText[i].text = LandmarkEntry["Landmark"].ToString(); } else { Debug.LogError("Malformed landmark entry. Ensure the 'Landmark' key exists."); } } else { Debug.LogError("Malformed landmark entry. Ensure each landmark is a dictionary containing a 'Landmark' key."); } } } else { Debug.LogError("Malformed landmark data. Ensure there is a list of at least 15 landmarks."); } } else { Debug.LogError("Malformed round data. Ensure Round 2 contains 'Location' and 'Landmark' keys."); } //_GameHasBegun = false; //EnableInteraction("Start Game"); } protected override HostCardInterfaceBase GetHostCardInterface(QuestionType Question) { return _HostCard.EnableHostCardDisplay(GameType.RecoverTheLoot, Question); } protected override void _HostCardUseButtonDown_Internal() { //if (!_GameHasBegun) //{ // for (int i = 0; i < _PlayerPodiums.Length; i++) // { // NetworkCalling.SendCustomNetworkEvent( // (IUdonEventReceiver)_PlayerPodiums[i], // NetworkEventTarget.All, // "DisplayScore"); // } // SendCustomNetworkEvent(NetworkEventTarget.All, nameof(PlaySFXAtPitch), SFXEventType.Ding, D6); // HostCardBetweenRoundsInterface Interface = // (HostCardBetweenRoundsInterface)GetHostCardInterface(QuestionType.BetweenRounds); // Interface.HeaderUI.text = "Upcoming Question: " + QuestionTypeToString((QuestionType)((int)_CurrentQuestion["Type"].Number)); // _GameHasBegun = true; // return; //} //AdvanceQuestion(); } }