public void Start() { // load match info matchIDs = JsonStore.ListByTag(JsonStore.SaveTag.Score); matchIndex = 0; if (matchIDs.Length > 0) { var jsonStr = JsonStore.Load(JsonStore.SaveTag.Score, matchIDs[matchIndex]); board = MatchScoreboard.FromJson(jsonStr); ShowBoard(); } else { prevButton.gameObject.SetActive(false); nextButton.gameObject.SetActive(false); } // set back button callback prevButton.onClick.AddListener(OnPrevious); backButton.onClick.AddListener(OnBack); nextButton.onClick.AddListener(OnNext); }
IEnumerator StatePlayerSelect() { if (debug) { Debug.Log("StatePlayerSelect"); } // load panel var panelGo = Instantiate(playerSelectPanelPrefab, GetCanvas().gameObject.transform); yield return(null); // wait a frame for panel initialization string selectedPlayer = ""; bool cancelled = false; // create string event listener to listen for callback event from player select modal var listener = panelGo.AddComponent <StringEventListener>(); listener.SetEvent(playerSelected); listener.Response.AddListener((msg) => { selectedPlayer = msg; }); var geListener = panelGo.AddComponent <GameEventListener>(); geListener.SetEvent(cancelSelected); geListener.Response.AddListener(() => { cancelled = true; }); // get list of player save files, then serialize to a single string var savedPlayerNames = JsonStore.ListByTag(JsonStore.SaveTag.Player); string serializedPlayerNames = ""; if (savedPlayerNames.Length > 0) { serializedPlayerNames = string.Join(":", savedPlayerNames); } // trigger event to ask for player to be selected wantPlayerSelect.Raise(serializedPlayerNames); // wait for player to be selected yield return(new WaitUntil(() => selectedPlayer != "" || cancelled)); // clean up Destroy(panelGo); // go back to main menu if cancelled if (cancelled) { StartCoroutine(StateMainMenu()); // otherwise, advance, based on game state } else { // if player is selected from existing saved players... load that player if (System.Array.Exists(savedPlayerNames, element => element == selectedPlayer)) { var json = JsonStore.Load(JsonStore.SaveTag.Player, selectedPlayer); playerInfo = PlayerInfo.FromJson(json); // otherwise create and save new player record } else { playerInfo = new PlayerInfo(); playerInfo.name = selectedPlayer; JsonStore.Save(JsonStore.SaveTag.Player, selectedPlayer, playerInfo.ToJson()); } // transition to match select StartCoroutine(StateMatchSelect()); } }