public void DestroyScreen(InGameScreens screenName)
 {
     for (int i = 0; i < inGameActiveScreens.Count; i++)
     {
         if (inGameActiveScreens[i].screenName == screenName)
         {
             Destroy(inGameActiveScreens[i].screenObject);
             inGameActiveScreens.RemoveAt(i);
         }
     }
 }
    private bool IsScreenActive(InGameScreens screenName)
    {
        for (int i = 0; i < inGameActiveScreens.Count; i++)
        {
            if (inGameActiveScreens[i].screenName == screenName)
            {
                return(true);
            }
        }

        return(false);
    }
    private ScreenLayer GetScreenLayer(InGameScreens screenName)
    {
        switch (screenName)
        {
        case InGameScreens.Message:
            return(ScreenLayer.LAYER2);

        case InGameScreens.Reconnecting:
            return(ScreenLayer.LAYER3);

        case InGameScreens.Loading:
            return(ScreenLayer.LAYER4);

        default:
            return(ScreenLayer.LAYER1);
        }
    }
    public void ShowScreen(InGameScreens screenName, object[] parameter = null)
    {
        int layer = (int)GetScreenLayer(screenName);

        for (int i = layer + 1; i < screenLayers.Length; i++)
        {
            DestroyScreen((ScreenLayer)i);
        }

        if (!IsScreenActive(screenName))
        {
            DestroyScreen(GetScreenLayer(screenName));

            InGameActiveScreens mainMenuScreen = new InGameActiveScreens();
            mainMenuScreen.screenName  = screenName;
            mainMenuScreen.screenLayer = GetScreenLayer(screenName);

            GameObject gm = Instantiate(screens[(int)screenName], screenLayers[(int)mainMenuScreen.screenLayer]) as GameObject;
            mainMenuScreen.screenObject = gm;
            inGameActiveScreens.Add(mainMenuScreen);


            switch (screenName)
            {
            case InGameScreens.TopUp:
            {
                gm.GetComponent <TopUpScript>().Init((float)parameter[0]);
            }
            break;

            case InGameScreens.EmojiScreen:
            {
                gm.GetComponent <EmojiUIScreenManager>().containerVal = emojiContainerVal;
            }
            break;

            default:
                break;
            }
        }
    }