// Token: 0x0600007E RID: 126 RVA: 0x0000D42C File Offset: 0x0000B62C
        public static void DrawBlendedTextMenuEntry(TextMenu tMenu, int rowNum, int xPos, int yPos, int textHighL)
        {
            int num = tMenu.entryStart[rowNum];

            for (int i = 0; i < tMenu.entrySize[rowNum]; i++)
            {
                GraphicsSystem.DrawBlendedSprite(xPos + (i << 3), yPos, 8, 8, (int)((int)(tMenu.textData[num] & '\u000f') << 3), (int)((int)(tMenu.textData[num] >> 4) << 3) + textHighL, TextSystem.textMenuSurfaceNo);
                num++;
            }
        }
        // Token: 0x0600007B RID: 123 RVA: 0x0000D2D8 File Offset: 0x0000B4D8
        public static void EditTextMenuEntry(TextMenu tMenu, char[] inputTxt, int rowNum)
        {
            int i   = 0;
            int num = tMenu.entryStart[rowNum];

            tMenu.entrySize[rowNum] = 0;
            while (i < inputTxt.Length)
            {
                if (inputTxt[i] != '\0')
                {
                    tMenu.textData[num] = inputTxt[i];
                    num++;
                    tMenu.entrySize[rowNum]++;
                    i++;
                }
                else
                {
                    i = inputTxt.Length;
                }
            }
        }
        // Token: 0x06000079 RID: 121 RVA: 0x0000D190 File Offset: 0x0000B390
        public static void AddTextMenuEntryMapped(TextMenu tMenu, char[] inputTxt)
        {
            int i = 0;

            tMenu.entryStart[(int)tMenu.numRows] = tMenu.textDataPos;
            tMenu.entrySize[(int)tMenu.numRows]  = 0;
            while (i < inputTxt.Length)
            {
                if (inputTxt[i] != '\0')
                {
                    ushort num = (ushort)inputTxt[i];
                    int    j   = 0;
                    while (j < 1024)
                    {
                        if (TextSystem.fontCharacterList[j].id == (int)num)
                        {
                            num = (ushort)j;
                            j   = 1025;
                        }
                        else
                        {
                            j++;
                        }
                    }
                    if (j == 1024)
                    {
                        num = 0;
                    }
                    tMenu.textData[tMenu.textDataPos] = (char)num;
                    tMenu.textDataPos++;
                    tMenu.entrySize[(int)tMenu.numRows]++;
                    i++;
                }
                else
                {
                    i = inputTxt.Length;
                }
            }
            tMenu.numRows += 1;
        }
        // Token: 0x06000078 RID: 120 RVA: 0x0000D0FC File Offset: 0x0000B2FC
        public static void AddTextMenuEntry(TextMenu tMenu, char[] inputTxt)
        {
            int i = 0;

            tMenu.entryStart[(int)tMenu.numRows] = tMenu.textDataPos;
            tMenu.entrySize[(int)tMenu.numRows]  = 0;
            while (i < inputTxt.Length)
            {
                if (inputTxt[i] != '\0')
                {
                    tMenu.textData[tMenu.textDataPos] = inputTxt[i];
                    tMenu.textDataPos++;
                    tMenu.entrySize[(int)tMenu.numRows]++;
                    i++;
                }
                else
                {
                    i = inputTxt.Length;
                }
            }
            tMenu.numRows += 1;
        }
        // Token: 0x06000080 RID: 128 RVA: 0x0000D7B0 File Offset: 0x0000B9B0
        public static void LoadConfigListText(TextMenu tMenu, int listNo)
        {
            FileData fData = new FileData();

            char[] array = new char[32];
            if (FileIO.LoadFile("Data/Game/GameConfig.bin".ToCharArray(), fData))
            {
                byte b = FileIO.ReadByte();
                for (int i = 0; i < (int)b; i++)
                {
                    byte b2 = FileIO.ReadByte();
                }
                b = FileIO.ReadByte();
                for (int i = 0; i < (int)b; i++)
                {
                    byte b2 = FileIO.ReadByte();
                }
                b = FileIO.ReadByte();
                for (int i = 0; i < (int)b; i++)
                {
                    byte b2 = FileIO.ReadByte();
                }
                byte b3 = FileIO.ReadByte();
                for (int j = 0; j < (int)b3; j++)
                {
                    b = FileIO.ReadByte();
                    for (int i = 0; i < (int)b; i++)
                    {
                        byte b2 = FileIO.ReadByte();
                    }
                }
                for (int j = 0; j < (int)b3; j++)
                {
                    b = FileIO.ReadByte();
                    for (int i = 0; i < (int)b; i++)
                    {
                        byte b2 = FileIO.ReadByte();
                    }
                }
                b3 = FileIO.ReadByte();
                for (int j = 0; j < (int)b3; j++)
                {
                    b = FileIO.ReadByte();
                    byte b2;
                    for (int i = 0; i < (int)b; i++)
                    {
                        b2 = FileIO.ReadByte();
                    }
                    b2 = FileIO.ReadByte();
                    b2 = FileIO.ReadByte();
                    b2 = FileIO.ReadByte();
                    b2 = FileIO.ReadByte();
                }
                b3 = FileIO.ReadByte();
                for (int j = 0; j < (int)b3; j++)
                {
                    b = FileIO.ReadByte();
                    for (int i = 0; i < (int)b; i++)
                    {
                        byte b2 = FileIO.ReadByte();
                    }
                }
                b3 = FileIO.ReadByte();
                for (int j = 0; j < (int)b3; j++)
                {
                    b = FileIO.ReadByte();
                    int i;
                    for (i = 0; i < (int)b; i++)
                    {
                        byte b2 = FileIO.ReadByte();
                        array[i] = (char)b2;
                    }
                    array[i] = '\0';
                    if (listNo == 0)
                    {
                        TextSystem.AddTextMenuEntry(tMenu, array);
                    }
                }
                for (int k = 1; k < 5; k++)
                {
                    b3 = FileIO.ReadByte();
                    for (int j = 0; j < (int)b3; j++)
                    {
                        b = FileIO.ReadByte();
                        int  i;
                        byte b2;
                        for (i = 0; i < (int)b; i++)
                        {
                            b2 = FileIO.ReadByte();
                        }
                        b = FileIO.ReadByte();
                        for (i = 0; i < (int)b; i++)
                        {
                            b2 = FileIO.ReadByte();
                        }
                        b = FileIO.ReadByte();
                        for (i = 0; i < (int)b; i++)
                        {
                            b2       = FileIO.ReadByte();
                            array[i] = (char)b2;
                        }
                        array[i] = '\0';
                        b2       = FileIO.ReadByte();
                        if (listNo == k)
                        {
                            tMenu.entryHighlight[j] = b2;
                            TextSystem.AddTextMenuEntry(tMenu, array);
                        }
                    }
                }
                FileIO.CloseFile();
            }
        }
        // Token: 0x0600007F RID: 127 RVA: 0x0000D488 File Offset: 0x0000B688
        public static void DrawTextMenu(TextMenu tMenu, int xPos, int yPos)
        {
            int num;

            if (tMenu.numVisibleRows > 0)
            {
                num = (int)(tMenu.numVisibleRows + tMenu.visibleRowOffset);
            }
            else
            {
                tMenu.visibleRowOffset = 0;
                num = (int)tMenu.numRows;
            }
            if (tMenu.numSelections == 3)
            {
                tMenu.selection2 = -1;
                for (int i = 0; i < tMenu.selection1 + 1; i++)
                {
                    if (tMenu.entryHighlight[i] == 1)
                    {
                        tMenu.selection2 = i;
                    }
                }
            }
            switch (tMenu.alignment)
            {
            case 0:
                for (int i = (int)tMenu.visibleRowOffset; i < num; i++)
                {
                    switch (tMenu.numSelections)
                    {
                    case 1:
                        if (i == tMenu.selection1)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos, yPos, 0);
                        }
                        break;

                    case 2:
                        if (i == tMenu.selection1 || i == tMenu.selection2)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos, yPos, 0);
                        }
                        break;

                    case 3:
                        if (i == tMenu.selection1)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos, yPos, 0);
                        }
                        if (i == tMenu.selection2 && i != tMenu.selection1)
                        {
                            TextSystem.DrawStageTextEntry(tMenu, i, xPos, yPos, 128);
                        }
                        break;
                    }
                    yPos += 8;
                }
                return;

            case 1:
                for (int i = (int)tMenu.visibleRowOffset; i < num; i++)
                {
                    int xPos2 = xPos - (tMenu.entrySize[i] << 3);
                    switch (tMenu.numSelections)
                    {
                    case 1:
                        if (i == tMenu.selection1)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 0);
                        }
                        break;

                    case 2:
                        if (i == tMenu.selection1 || i == tMenu.selection2)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 0);
                        }
                        break;

                    case 3:
                        if (i == tMenu.selection1)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 0);
                        }
                        if (i == tMenu.selection2 && i != tMenu.selection1)
                        {
                            TextSystem.DrawStageTextEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        break;
                    }
                    yPos += 8;
                }
                return;

            case 2:
                for (int i = (int)tMenu.visibleRowOffset; i < num; i++)
                {
                    int xPos2 = xPos - (tMenu.entrySize[i] >> 1 << 3);
                    switch (tMenu.numSelections)
                    {
                    case 1:
                        if (i == tMenu.selection1)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 0);
                        }
                        break;

                    case 2:
                        if (i == tMenu.selection1 || i == tMenu.selection2)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 0);
                        }
                        break;

                    case 3:
                        if (i == tMenu.selection1)
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        else
                        {
                            TextSystem.DrawTextMenuEntry(tMenu, i, xPos2, yPos, 0);
                        }
                        if (i == tMenu.selection2 && i != tMenu.selection1)
                        {
                            TextSystem.DrawStageTextEntry(tMenu, i, xPos2, yPos, 128);
                        }
                        break;
                    }
                    yPos += 8;
                }
                return;

            default:
                return;
            }
        }
 // Token: 0x06000077 RID: 119 RVA: 0x0000D0E8 File Offset: 0x0000B2E8
 public static void SetupTextMenu(TextMenu tMenu, int numRows)
 {
     tMenu.textDataPos = 0;
     tMenu.numRows     = (ushort)numRows;
 }
        // Token: 0x06000075 RID: 117 RVA: 0x0000CC80 File Offset: 0x0000AE80
        public static void LoadTextFile(TextMenu tMenu, char[] fileName, byte mapCode)
        {
            bool     flag  = false;
            FileData fData = new FileData();

            if (FileIO.LoadFile(fileName, fData))
            {
                tMenu.textDataPos = 0;
                tMenu.numRows     = 0;
                tMenu.entryStart[(int)tMenu.numRows] = tMenu.textDataPos;
                tMenu.entrySize[(int)tMenu.numRows]  = 0;
                byte b = FileIO.ReadByte();
                if (b == 255)
                {
                    b = FileIO.ReadByte();
                    while (!flag)
                    {
                        b = FileIO.ReadByte();
                        ushort num = (ushort)b;
                        b    = FileIO.ReadByte();
                        num += (ushort)(b << 8);
                        ushort num2 = num;
                        if (num2 != 10)
                        {
                            if (num2 == 13)
                            {
                                tMenu.numRows += 1;
                                if (tMenu.numRows > 511)
                                {
                                    flag = true;
                                }
                                else
                                {
                                    tMenu.entryStart[(int)tMenu.numRows] = tMenu.textDataPos;
                                    tMenu.entrySize[(int)tMenu.numRows]  = 0;
                                }
                            }
                            else
                            {
                                if (mapCode == 1)
                                {
                                    int i = 0;
                                    while (i < 1024)
                                    {
                                        if (TextSystem.fontCharacterList[i].id == (int)num)
                                        {
                                            num = (ushort)i;
                                            i   = 1025;
                                        }
                                        else
                                        {
                                            i++;
                                        }
                                    }
                                    if (i == 1024)
                                    {
                                        num = 0;
                                    }
                                }
                                tMenu.textData[tMenu.textDataPos] = (char)num;
                                tMenu.textDataPos++;
                                tMenu.entrySize[(int)tMenu.numRows]++;
                            }
                        }
                        if (!flag)
                        {
                            flag = FileIO.ReachedEndOfFile();
                            if (tMenu.textDataPos >= 10240)
                            {
                                flag = true;
                            }
                        }
                    }
                }
                else
                {
                    ushort num  = (ushort)b;
                    ushort num3 = num;
                    if (num3 != 10)
                    {
                        if (num3 == 13)
                        {
                            tMenu.numRows += 1;
                            tMenu.entryStart[(int)tMenu.numRows] = tMenu.textDataPos;
                            tMenu.entrySize[(int)tMenu.numRows]  = 0;
                        }
                        else
                        {
                            if (mapCode == 1)
                            {
                                int i = 0;
                                while (i < 1024)
                                {
                                    if (TextSystem.fontCharacterList[i].id == (int)num)
                                    {
                                        num = (ushort)i;
                                        i   = 1025;
                                    }
                                    else
                                    {
                                        i++;
                                    }
                                }
                                if (i == 1024)
                                {
                                    num = 0;
                                }
                            }
                            tMenu.textData[tMenu.textDataPos] = (char)num;
                            tMenu.textDataPos++;
                            tMenu.entrySize[(int)tMenu.numRows]++;
                        }
                    }
                    while (!flag)
                    {
                        b   = FileIO.ReadByte();
                        num = (ushort)b;
                        ushort num4 = num;
                        if (num4 != 10)
                        {
                            if (num4 == 13)
                            {
                                tMenu.numRows += 1;
                                if (tMenu.numRows > 511)
                                {
                                    flag = true;
                                }
                                else
                                {
                                    tMenu.entryStart[(int)tMenu.numRows] = tMenu.textDataPos;
                                    tMenu.entrySize[(int)tMenu.numRows]  = 0;
                                }
                            }
                            else
                            {
                                if (mapCode == 1)
                                {
                                    int i = 0;
                                    while (i < 1024)
                                    {
                                        if (TextSystem.fontCharacterList[i].id == (int)num)
                                        {
                                            num = (ushort)i;
                                            i   = 1025;
                                        }
                                        else
                                        {
                                            i++;
                                        }
                                    }
                                    if (i == 1024)
                                    {
                                        num = 0;
                                    }
                                }
                                tMenu.textData[tMenu.textDataPos] = (char)num;
                                tMenu.textDataPos++;
                                tMenu.entrySize[(int)tMenu.numRows]++;
                            }
                        }
                        if (!flag)
                        {
                            flag = FileIO.ReachedEndOfFile();
                            if (tMenu.textDataPos >= 10240)
                            {
                                flag = true;
                            }
                        }
                    }
                }
                tMenu.numRows += 1;
                FileIO.CloseFile();
            }
        }