Incantation.OnGUI C# (CSharp) Method

OnGUI() public method

public OnGUI ( ) : void
return void
    void OnGUI()
    {
        GUI.matrix = Matrix4x4.TRS(new Vector3(0, 400 * CameraMotion.PanFactor, 0), Quaternion.identity, Vector3.one);

        var textureHeight = containerStyle.normal.background.height;

        GUILayout.BeginArea(new Rect(0, Screen.height - textureHeight, containerStyle.normal.background.width, textureHeight), containerStyle);
        GUILayout.EndArea();

        GUILayout.BeginArea(new Rect(291, Screen.height - 140, 414-48, 162));
        GUILayout.BeginHorizontal(textBoxStyle);

        string[] words = text.Split(' ');
        for(int i = 0; i < words.Length; i++)
        {
            string word = words[i];

            if(AnimalDatabase.Get(word) == null)
                GUI.color = errorTint;
            else
                GUI.color = successTint;

            GUILayout.Label(word, textStyle);
            GUI.color = Color.white;

            if(i < words.Length-1)
                GUILayout.Space(11);
            else
                GUILayout.Label("|", textStyle);
        }

        var thisSummoner = TerrainGrid.Instance.Summoners[Network.isServer ? TerrainGrid.ServerPlayerId : TerrainGrid.ClientPlayerId];
        var enemySummoner = TerrainGrid.Instance.Summoners[Network.isServer ? TerrainGrid.ClientPlayerId : TerrainGrid.ServerPlayerId];

        GUILayout.EndHorizontal();
        {
            ShowHealthBar(thisSummoner, hpGoodColor, hpBadColor);
        }
        GUILayout.EndArea();

        GUI.matrix = Matrix4x4.TRS(new Vector3(0, -100 * CameraMotion.PanFactor, 0), Quaternion.identity, Vector3.one);

        GUILayout.BeginArea(new Rect(Screen.width-414+48-20, 20, 414-48, 162));
        {
            ShowHealthBar(enemySummoner, hpEnemyGoodColor, hpEnemyBadColor);
        }
        GUILayout.EndArea();

        GUI.matrix = Matrix4x4.TRS(new Vector3(0, 400 * CameraMotion.PanFactor, 0), Quaternion.identity, Vector3.one);

        //GUILayout.BeginArea(new Rect(300 - 48, Screen.height - 45, 410, 25));
        //GUILayout.BeginHorizontal(hpTextStyle);

        //GUILayout.EndHorizontal();
        //GUILayout.EndArea();

        // idle : 2/3f
        // hurt : 0/3f
        // fail : 1/3f

        var offset = thisSummoner.HasTakenDamage ? 0 : thisSummoner.HasFailed ? 1 / 3f : 2 / 3f;

        GUI.DrawTextureWithTexCoords(new Rect(0, Screen.height - portraits.height, 512, portraits.height),
                                     portraits, new Rect(offset, 0, 1 / 3f, 1));

        GUI.matrix = Matrix4x4.identity;

        if (GameFlow.State == GameState.Gameplay)
        {
            // handle text entry
            Event e = Event.current;
            if (e.type == EventType.KeyDown)
            {
                if (char.IsLetter(e.character) || (e.character == ' ' && words.Length < 3 && words.Length > 0 && words[0].Trim().Length > 0))
                {
                    text += char.ToUpper(e.character);
                }
                else if (e.character == '\n')
                {
                    var validWords = words.Where(x => AnimalDatabase.Get(x) != null).Distinct(StringComparer.InvariantCultureIgnoreCase).ToList();

                    foreach (var w in validWords.ToArray())
                    {
                        foreach (var t in TerrainGrid.Instance.Totems.Values.SelectMany(x => x))
                            if (t.AnimalData.Any(x => x.name.Equals(w, StringComparison.InvariantCultureIgnoreCase)))
                                validWords.Remove(w);
                    }

                    if (words.Length != validWords.Count)
                    {
                        thisSummoner.HasFailed = true;
                        TaskManager.Instance.WaitFor(0.5f).Then(() => { thisSummoner.HasFailed = false; });
                        audio.PlayOneShot(mistakeSound);
                    }
                    else if (validWords.Count > 0)
                    {
                        audio.PlayOneShot(enterSound);
                    }

                    if (validWords.Count > 0)
                        thisSummoner.TrySpawnOnServer(validWords.ToArray());

                    //foreach(string word in words)
                    //{
                    //    if(AnimalDatabase.Get(word) != null)
                    //    {
                    //        print("awesoem word: " + word);
                    //    }
                    //}
                    text = "";
                }
                else if (e.keyCode == KeyCode.Backspace && text.Length > 0)
                {
                    text = text.Remove(text.Length - 1);
                }
            }
        }
    }