#include <File.au3>
#include <Array.au3>
#include <String.au3>
#include <Misc.au3>

If @AutoItVersion <= "3.3.1.0" Then
	MsgBox(48, "Error", "Das Skript funktioniert ab der AutoIT Version 3.3.1.0!")
	Exit
EndIf

Opt("TrayMenuMode", 1)
Opt("TrayAutoPause", 0)
Opt("TrayOnEventMode", 1)
Opt("MustDeclareVars", 1)

TraySetToolTip("CSS-Record-Script")

Dim $aLines[10]
Global $hCheckInstance = GUICreate("Unsichtbar",1,1,0,0)
Global $sBind
Global $aAutoExec
Global $sPathSteamExe = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Valve\Steam", "InstallPath")
Global $sDate = @MDAY & "." & @MON & "." & @YEAR
Global $sSteamID = IniRead(@ScriptDir & "\Record-Script-Lite.ini", "User-Settings", "SteamID", "")
Global $bFirstStart = IniRead(@ScriptDir & "\Record-Script-Lite.ini", "Settings", "FirstStart", "True")

_Singleton("Unsichtbar")

If Execute($bFirstStart) = True Then
	_CheckSteamID()
	$sBind = InputBox("Bind-Taste eingeben", "Bitte die Taste eingeben mit der anschließend im Spiel die Aufnahme gestartet werden soll! (Ohne """")")
	If $sBind = "" Or @error Then
		MsgBox(48, "Error", "Taste ist nicht gültig!")
		Exit
	Else
		If Not FileExists("cfg/autoexec.cfg") Then _FileCreate("cfg/autoexec.cfg")
		Local $sTempAttrib
		Local $sTempWorkingDir = @WorkingDir
		FileChangeDir(@WorkingDir & "\cfg")
		$sTempAttrib = FileGetAttrib("autoexec.cfg")
		If StringInStr($sTempAttrib, "R") Then
			If MsgBox(48 + 4, "Error", "Die Datei 'autoexec.cfg' trägt das Attribut 'readonly'!" & @LF _
					 & "Trotzdem schreiben?" & @LF _
					 & "Das Attribut wird anschließend wiederhergestellt!") = 6 Then
				FileSetAttrib("autoexec.cfg", "-RA")
				_FileWriteToLine("autoexec.cfg", _FileCountLines("autoexec.cfg"), "bind """ & $sBind & """ ""exec record.cfg""")
				FileSetAttrib("autoexec.cfg", "+R")
			Else
				Exit
			EndIf
		EndIf
		_FileWriteToLine("autoexec.cfg", _FileCountLines("autoexec.cfg"), "bind """ & $sBind & """ ""exec record.cfg""")
		FileChangeDir($sTempWorkingDir)
		If @error Then
			MsgBox(48, "Error", "Ein Fehler trat auf beim Setzen des Hotkeys auf!")
			Exit
		EndIf
	EndIf
	IniWrite(@ScriptDir & "\Record-Script-Lite.ini", "Settings", "FirstStart", "False")
Else

	_CheckSteamID()

EndIf

If Not FileExists("cfg/record.cfg") Then _FileCreate("cfg/record.cfg")

TrayCreateItem("Beenden")
TrayItemSetOnEvent(-1, "_Exit")

DirCreate($sDate)
AdlibRegister("_UpdateCFG", 60500)

While 1
	Sleep(100)
WEnd

Func OnAutoItExit()
	IniWrite(@ScriptDir & "\Record-Script-Lite.ini", "User-Settings", "SteamID", $sSteamID)
EndFunc   ;==>OnAutoItExit

Func _CheckSteamID()
	Local $aSteamLog
	Local $aSplitted
	Local $sBetween
	Local $sValue = "CreateSession("

	If $sSteamID = "" Then
		If Not FileExists($sPathSteamExe & "\Steam.log") Then
			MsgBox(48, "Error", "Steam.log wurde nicht gefunden!" & @LF & "Bitte Steam mindestens einmal starten und erfolgreich einloggen!")
			Exit
		EndIf
		_FileReadToArray($sPathSteamExe & "\Steam.log", $aSteamLog)
		For $i = 1 To $aSteamLog[0]
			If StringInStr($aSteamLog[$i], $sValue, 1) Then ExitLoop
		Next
		$sBetween = _StringBetween($aSteamLog[$i], "(", ")")
		If @error Then
			MsgBox(48, "Error", "SteamID konnte nicht ausgelesen werden!" & @LF & "Bitte SteamID manuell eingeben!")
			$sSteamID = InputBox("SteamID", "Bitte SteamID eingeben!")
			If @error Or $sSteamID = "" Then
				Exit
			EndIf
		EndIf
		$aSplitted = StringSplit($sBetween[0], ",")
		$sSteamID = $aSplitted[1]
		If Not @error Then
			FileChangeDir($sPathSteamExe & "\SteamApps\" & $aSplitted[1] & "\counter-strike source\cstrike")
		Else
			MsgBox(48, "Error", "Das Arbeitsverzeichnis konnte nicht geändert werden!")
			Exit
		EndIf
	Else
		If FileChangeDir($sPathSteamExe & "\SteamApps\" & $sSteamID & "\counter-strike source\cstrike") = 0 Then
			MsgBox(48, "Error", "Das Arbeitsverzeichnis konnte nicht geändert werden!")
			Exit
		EndIf
	EndIf
EndFunc   ;==>_CheckSteamID

Func _UpdateCFG()
	If WinActive("Counter-Strike Source") Then
		Local $sTime = @HOUR & "-" & @MIN
		_FileWriteToLine("cfg/record.cfg", 1, "record " & $sDate & "/demo_" & $sTime, 1)
		TrayTip("","Config Update!",1)
		Sleep(1000)
		TrayTip("","",1)
		TraySetToolTip("CSS-Record-Script ~ Last config update: " & $sTime)
	EndIf
EndFunc   ;==>_UpdateCFG

Func _Exit()
	Exit
EndFunc   ;==>_Exit
