Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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());
        }
    }