public IEnumerator GetPlayerName() { Debug.Log($"Trying get Player name . . . "); GameObject EnterNamePanel = transform.Find("EnterNamePanel").gameObject; EnterNamePanel.SetActive(true); MainCanvas.FreezeCamera = true; NameInputState state = default; string name = ""; InputField inputField = EnterNamePanel.GetComponentInChildren <InputField>(); EnterNamePanel.GetComponentInChildren <Button>().onClick.AddListener(() => { name = inputField.text; state = CheckValidName(name); }); while (state != NameInputState.Valid) { yield return(null); } Debug.Log($"Set Player name to {name}"); LoadManager.Instance.playerData.name = name; EnterNamePanel.SetActive(false); MainCanvas.FreezeCamera = false; }
void SetNameInputStateText(NameInputState state) { Text statusText = transform.Find("EnterNamePanel/StatusText").GetComponent <Text>(); switch (state) { case NameInputState.Empty: { statusText.text = "Please enter your name"; break; } case NameInputState.ExceedMaximum: { statusText.text = "Characters must not longer than 10."; break; } case NameInputState.NotReachMinimum: { statusText.text = "Characters must more than 1."; break; } default: { statusText.text = ""; break; } } }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. _spriteBatch = new SpriteBatch(GraphicsDevice); // Load textures and fonts _font = Content.Load <SpriteFont>("BlackChancery"); _buttonTexture = Content.Load <Texture2D>("WoodButton"); var squirrel1 = Content.Load <Texture2D>("squirrel1"); var gateLevel = Content.Load <Texture2D>("gate_level"); var upgradeBar = new Texture2D(GraphicsDevice, GraphicsDevice.PresentationParameters.Bounds.Width, 100); var colorData = new Color[100 * GraphicsDevice.PresentationParameters.Bounds.Width]; for (int i = 0; i < 100 * GraphicsDevice.PresentationParameters.Bounds.Width; i++) { colorData[i] = Color.DarkSlateGray; } upgradeBar.SetData(colorData); var stone = new Texture2D(GraphicsDevice, 10, 10); var stoneColors = new Color[100]; for (int i = 0; i < 100; i++) { stoneColors[i] = Color.Black; } stone.SetData(stoneColors); // Create Objects var gate = new Gate(); // Create factories var buttonFactory = new ButtonFactory(_buttonTexture, _font, _postOffice); var textFactory = new TextFactory(_font); var squirrelFactory = new SquirrelFactory(squirrel1, gate); // Create Managers var leaderboardManager = new LeaderboardManager(); var playerMetaDataManager = new PlayerMetaDataManager(_postOffice); var moneyManager = new MoneyManager(_postOffice); var statsManager = new StatsManager(_postOffice, moneyManager); // Register states to the state manager _stateManager.RegisterState(new MenuState(buttonFactory, textFactory)); var nameInputState = new NameInputState(buttonFactory, textFactory, _postOffice, GraphicsDevice.PresentationParameters.Bounds); _stateManager.RegisterState(nameInputState); _stateManager.RegisterState(new LeaderboardState(buttonFactory, textFactory, leaderboardManager)); _stateManager.RegisterState(new ExitState(this)); var playState = new PlayState(_postOffice, squirrelFactory, buttonFactory, textFactory, statsManager, moneyManager, gateLevel, GraphicsDevice.PresentationParameters.Bounds, upgradeBar, stone, gate); _stateManager.RegisterState(playState); var loseState = new LoseState(buttonFactory, textFactory, _postOffice, leaderboardManager); _stateManager.RegisterState(loseState); var flavourText = new FlavourTextState(buttonFactory, textFactory); _stateManager.RegisterState(flavourText); // Register clients to the post office _postOffice.RegisterClient((ILetterbox)_stateManager, "StateManager"); _postOffice.RegisterClient((ILetterbox)playerMetaDataManager, playerMetaDataManager.LetterboxName); _postOffice.RegisterClient((ILetterbox)nameInputState, nameInputState.StateRegisterName); _postOffice.RegisterClient((ILetterbox)statsManager, statsManager.LetterboxName); _postOffice.RegisterClient((ILetterbox)playState, playState.LetterboxName); _postOffice.RegisterClient((ILetterbox)moneyManager, moneyManager.LetterboxName); _postOffice.RegisterClient((ILetterbox)gate, "Gate"); _postOffice.RegisterClient((ILetterbox)loseState, loseState.StateRegisterName); // Set the initial state to the menu _postOffice.SendMail("Null", new PostOfficeEventArgs() { SendAddress = "StateManager", MessageName = "SetInitialState", Data = Encoding.ASCII.GetBytes("Menu") }); // TODO: use this.Content to load your game content here }