Steam_IsInstalled() { Return Tool_IsInstalled("steam") } Steam_CheckScheme() { static Initialized=false, Skin=false CurrentSkin := SA_Get(SteamWin, "skin") NewSkin := Tool_GetRegKey("steam", "skin", true) Result := (NewSkin != CurrentSkin) or (Initialized = false) Skin := NewSkin Initialized := true Return Result } Steam_ImportScheme(ByRef _Array, _SkinPath="") { If (Steam_IsInstalled()) { _Array := SA_Set(_Array, Skin := Tool_GetRegKey("steam", "skin", true), "skin") SkinPath := Skin ? SteamPath . "\skins\" . Skin : SteamPath _Array := SA_Set(_Array, SkinPath, "skinpath") Result := InStr(FileExist(SkinPath), "D") ? true : false } Else Result := false If FileExist(SchemeFile := SkinPath . "\resource\steamscheme.res") { Result := Steam_ImportSchemeGroup("Colors", _Array) Result := Steam_ProcessSchemeColors(_Array) Result := Steam_ImportSchemeGroup("BaseSettings", _Array) Result := Steam_ImportSchemeGroup("Controls", _Array) Result := Steam_ImportSchemeGroup("LayoutTemplates", _Array) Result := Steam_ImportSchemeGroup("Fonts", _Array) Result := Steam_ImportSchemeGroup("Appearances", _Array) } Return Result } Steam_ImportSchemeGroup(_Name, ByRef _Array) { SkinPath := SA_Get(_Array, "skinpath") If FileExist(SchemeFile := SkinPath . "\resource\steamscheme.res") { SchemeOpen := false GroupOpen := false SubArray := false Loop, Read, %SchemeFile% { Line = %A_LoopReadLine% If GroupOpen { SubArray := Steam_ImportSchemeArray(A_Index, SchemeFile) If SubArray Break } Else If SchemeOpen { If RegExMatch(Line, "^[\s]*" . _Name . "[\s]*$") GroupOpen := true } Else If RegExMatch(Line, "^[\s]*Scheme[\s]*$") { SchemeOpen := true } } If SubArray { _Array := SA_Set(_Array, SubArray, _Name) } } Return Result } Steam_ImportSchemeArray(_StartLine, _SchemeFile) { If FileExist(_SchemeFile) { SubArray := false Items := "" Loop, Read, %_SchemeFile% { If (A_Index <= _StartLine) Continue Line = %A_LoopReadLine% If (A_Index = _StartLine+1) and (Line = "{") Continue If SubArray { If (A_Index <= EndLine) Continue SubArray := false } If (Line = "}") { LastLine := A_Index Break } If RegExMatch(Line, "^\s*([""""[^""""]+""""|[A-Za-z0-9]+])\s*$", Match) and Not SubArray { FileReadLine, NextLine, %SchemeFile%,% A_Index+1 NextLine = %NextLine% If (NextLine = "{") { SubArray := Steam_ImportSchemeArray(A_Index+1, _SchemeFile) If SubArray and Match1 Items := SA_Set(Items, SubArray, Match1) EndLine := ErrorLevel } Else SubArray := false If Not SubArray { Result := RegExMatch(Line, "(""""([^""""]+)""""|([A-Za-z0-9]+))\s+([""""[^""""]+""""|[A-Za-z0-9]+])", Match) If Match1 { If Not Match2 Match2 := "" Items := SA_Set(Items, Match2, Match1) } } } } ErrorLevel := LastLine Return Items } } Steam_ProcessSchemeColors(ByRef _Array) { If Colors := SA_Get(_Array, "Colors") { Loop, SA_Len(Colors) { Color := SA_Get(Colors, A_Index) Name := SA_NameIdx(Colors, A_Index) Index := A_Index Loop { SteamNum := SA_Get(Color, "steamnum") If RegExMatch(SteamNum, "[^0-9 ]+") { Color := SA_Set(Color, SA_Get(Colors, SteamNum), "steamnum") Colors := SA_Set(Colors, Color, Name) } Else Break } } Loop, SA_Len(Colors) { Color := SA_Get(Colors, A_Index) Name := SA_NameIdx(Colors, Index) SteamNum := SA_Get(Color, "steamnum") If (Result := RegExMatch(SteamNum, "([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)", Match)) { R := Match1 G := Match2 B := Match3 A := Match4 Hex := Math_RGBtoHex(R, G, B) Color := SA_Set(Color, Hex, "hex") Color := SA_Set(Color, A, "alpha") Colors := SA_Set(Colors, Color, Name) } } _Array := SA_Set(_Array, Colors, "Colors") } Return Result }