SemlerPDX icon

AVCS Ready or Not Key Bindings File Parser v4

SemlerPDX | PRO | 01/17/22 04:33:51 AM UTC (Edited) | 0 ⭐ | 680 👁️ | Never ⏰ | []
VB.NET |

4.82 KB

|

None

|

0 👍

/

0 👎

' Ready Or Not - Key Binds File Parsing System v4
'  by SemlerPDX Dec2021
'  VETERANS-GAMING.COM
' --Loads Keys from user input game settings file into VoiceAttack Global Keypress Variables
 
 
Imports Microsoft.VisualBasic
Imports System
Imports System.Linq
Imports System.Collections
Imports System.Collections.Generic
 
Public Class VAInline
    
    dim NumbersArray() as string = {
        "Zero",
        "One",
        "Two",
        "Three",
        "Four",
        "Five",
        "Six",
        "Seven",
        "Eight",
        "Nine"
    }
    dim NumPadArray() as string = {
        "NumPadZero",
        "NumPadOne",
        "NumPadTwo",
        "NumPadThree",
        "NumPadFour",
        "NumPadFive",
        "NumPadSix",
        "NumPadSeven",
        "NumPadEight",
        "NumPadNine"
    }
    dim FunctionKeysArray() as string = {
        "F1",
        "F2",
        "F3",
        "F4",
        "F5",
        "F6",
        "F7",
        "F8",
        "F9",
        "F10",
        "F11",
        "F12"
    }
    dim keyID as string = ""
    dim keyLabel as string = ""
    dim keyData() as string
    dim contents() as string
    dim actionMapping() as string
    dim setMouse as boolean = false
    dim labelsFinal as new list(of string) ()
    
    Private Function ProcessKeyboardKey(ByVal thisKey as string, ByVal thisLabel as string)
        if not(thisKey.Contains("Gamepad"))
            select case thisKey
                case "SpaceBar"
                    thisKey = "[SPACE]"
                case "Decimal"
                    thisKey = "[NUM.]"
                case "Subtract"
                    thisKey = "[NUM-]"
                case "Add"
                    thisKey = "[NUM+]"
                case "Multiply"
                    thisKey = "[NUM*]"
                case "Divide"
                    thisKey = "[NUM/]"
                case "Up"
                    thisKey = "[ARROWU]"
                case "Down"
                    thisKey = "[ARROWD]"
                case "Left"
                    thisKey = "[ARROWL]"
                case "Right"
                    thisKey = "[ARROWR]"
                case "LeftShift"
                    thisKey = "[LSHIFT]"
                case "RightShift"
                    thisKey = "[RSHIFT]"
                case "LeftControl"
                    thisKey = "[LCTRL]"
                case "RightControl"
                    thisKey = "[RCTRL]"
                case "LeftCommand"
                    thisKey = "[LWIN]"
                case "RightCommand"
                    thisKey = "[RWIN]"
                case "Tilde"
                    thisKey = "`"
                case "Comma"
                    thisKey = ","
                case "Period"
                    thisKey = "."
                case "Slash"
                    thisKey = "/"
                case "Semicolon"
                    thisKey = ";"
                case "Apostrophe"
                    thisKey = "'"
                case "Backslash"
                    thisKey = "\"
                case "Pause"
                    thisKey = "[BREAK]"
                case else
                    if (NumbersArray.Contains(thisKey))
                        for i as integer = 0 to 9
                            if (NumbersArray(i) = thisKey)
                                thisKey = i.ToString()
                            end if
                        next
                    else if (NumPadArray.Contains(thisKey))
                        for i as integer = 0 to 9
                            if (NumPadArray(i) = thisKey)
                                thisKey = "[NUM" + i.ToString() + "]"
                            end if
                        next
                    else if (FunctionKeysArray.Contains(thisKey))
                        for i as integer = 0 to 11
                            if (FunctionKeysArray(i) = thisKey)
                                thisKey = "[" + FunctionKeysArray(i) + "]"
                            end if
                        next
                    else if (thisKey.Contains("Mouse"))
                        setMouse = false
                        select case thisLabel
                            case "Fire"
                                if (thisKey = "LeftMouseButton")
                                    setMouse = true
                                end if
                            case "ToggleADS"
                                if (thisKey = "RightMouseButton")
                                    setMouse = true
                                end if
                            case "OpenSwatCommand"
                                if (thisKey = "MiddleMouseButton")
                                    setMouse = true
                                end if
                            case "CycleSwatElementNext"
                                if (thisKey = "MouseScrollUp")
                                    setMouse = true
                                end if
                            case "CycleSwatElementPrevious"
                                if (thisKey = "MouseScrollDown")
                                    setMouse = true
                                end if
                            case else
                                setMouse = false
                        end select
                        thisKey = "NONE"
                        if (setMouse)
                            VA.SetBoolean("AVCS_RON_Mouse_" + thisLabel, true)
                        end if
                    else
                        thisKey = "[" + thisKey.ToUpper() + "]"
                    end if
            end select
        else
            thisKey = "NONE"
        end if
        return thisKey
    end function
    
    Public Sub Main()
        
        if (VA.GetText("~key_file") isNot nothing)
            contents = VA.GetText("~key_file").Split(new string() {Environment.NewLine},StringSplitOptions.None)
            for each line as string in contents
                if (line <> "")
                    'Example:
                    'ActionMappings=(ActionName="DrawSting",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=NumPadZero)
                    if (line.StartsWith("ActionMappings"))
                        actionMapping = line.Split("(")
                        keyData = actionMapping(1).Split(",")
                        keyLabel = keyData(0).Substring(12).TrimEnd("""")
                        keyID = keyData(5).Substring(4).TrimEnd(")")
                        if not((keyLabel = "") or (labelsFinal.Contains(keyLabel)))
                            keyID = ProcessKeyboardKey(keyID, keyLabel)
                            if (keyID <> "NONE")
                                labelsFinal.Add(keyLabel)
                                VA.SetText("AVCS_RON_KEY_" + keyLabel, keyID)
                            end if
                        end if
                    end if
                end if
            next
            VA.WriteToLog("AVCS4 RoN - Keyboard Settings File loaded into Keypress Variables", "gray")
        end if
        
    End Sub
End Class

Comments