Scriptname RenWireless:RenWirelessRTTYScript extends Quest

Sound Property RenWirelessRTTYMark Auto
Sound Property RenWirelessRTTYSpace Auto

ObjectReference Property Surveillance_Radio02 Auto

String[] RTTYBuffer

int soundinstancemark
int soundinstancespace

String lastplayed

int bufferitr

Event OnInit()
	RTTYBuffer = new String[128]
	AddWord("E", "N", "C", "L", "A", "V", "E")
	Self.StartTimer(2.0, 0)
endEvent

Function AddWord(string letterone = "", string lettertwo = "", string letterthree = "", string letterfour = "", string letterfive = "", string lettersix = "", string letterseven = "", string lettereight = "", string letternine = "", string letterten = "")
	AddLetter(letterone)
	AddLetter(lettertwo)
	AddLetter(letterthree)	
	AddLetter(letterfour)	
	AddLetter(letterfive)
	AddLetter(lettersix)	
	AddLetter(letterseven)	
	AddLetter(lettereight)
	AddLetter(letternine)
	AddLetter(letterten)	
endFunction

Function AddLetter(string letter)

	if (letter == "")
		return
	endif

	int findnone = RTTYBuffer.Find("")
	if (findnone >= 0 && findnone <= 122)
		if (letter == "a")
			; 11000
			RTTYBuffer[(findnone)] = "0"
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "0"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "b")
			; 10011
			RTTYBuffer[(findnone)] = "0"			
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "1"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "c")
			; 01110
			RTTYBuffer[(findnone)] = "0"				
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "d")
			; 10010
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "e")	
			; 10000
			RTTYBuffer[(findnone)] = "0"
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "0"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "f")
			; 10110
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "g")
			; 01011
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "h")
			; 00101
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "i")
			; 01100
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "j")
			; 11010
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "k")
			; 11110
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "l")
			; 01001
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "m")
			; 00111
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "n")
			; 00110
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "o")
			; 00011
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "p")
			; 01101
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "q")
			; 11101
			RTTYBuffer[(findnone)] = "0"			
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "r")
			; 01010
			RTTYBuffer[(findnone)] = "0"			
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "s")
			; 10100
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "t")
			; 00001
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "u")
			; 11100
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "0"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "v")
			; 01111
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "1"		
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "w")
			; 11001
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "1"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "x")
			; 10111
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "1"
			RTTYBuffer[(findnone+5)] = "1"	
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		elseif (letter == "y")
			; 10101
			RTTYBuffer[(findnone)] = "0"			
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit			
		elseif (letter == "z")
			; 10001
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "1"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "0"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "1"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit			
		elseif (letter == " ")
			; 00100
			RTTYBuffer[(findnone)] = "0"		
			RTTYBuffer[(findnone+1)] = "0"
			RTTYBuffer[(findnone+2)] = "0"
			RTTYBuffer[(findnone+3)] = "1"
			RTTYBuffer[(findnone+4)] = "0"
			RTTYBuffer[(findnone+5)] = "0"
			RTTYBuffer[(findnone+6)] = "1" ; stop bit
		endif
	endif
endFunction

Event OnTimer(int timerid)
	if (Surveillance_Radio02 != none && Surveillance_Radio02.IsNearPlayer() == true && Surveillance_Radio02.IsRadioOn() == true)	
	
		if (RTTYBuffer[bufferitr] == "0")	
			if (soundinstancemark != 0)
				Sound.SetInstanceVolume(soundinstancemark, 0.0) 
			endif		
			if (soundinstancespace == 0)
				soundinstancespace = RenWirelessRTTYSpace.Play(Surveillance_Radio02)
			else
				Sound.SetInstanceVolume(soundinstancespace, 1.0) 
			endif
			lastplayed = "0"				
		elseif (RTTYBuffer[bufferitr] == "1")
			if (soundinstancespace != 0)
				Sound.SetInstanceVolume(soundinstancespace, 0.0) 
			endif			
			if (soundinstancemark == 0)
				soundinstancemark = RenWirelessRTTYMark.Play(Surveillance_Radio02)
			else
				Sound.SetInstanceVolume(soundinstancemark, 1.0) 
			endif		
			lastplayed = "1"					
		endif
		
		RTTYBuffer[bufferitr] = ""
		bufferitr += 1
		
		;/
		; need to shift the buffer by -1
		int itr = 0
		while (itr < RTTYBuffer.Length)
			if ((itr+1) < RTTYBuffer.Length)
				RTTYBuffer[itr] = RTTYBuffer[(itr+1)]
			endif
			itr += 1
		endWhile
		/;
		
		if ((RTTYBuffer[0] == "" && bufferitr >= 128) || RTTYBuffer[bufferitr] == "")
			bufferitr = 0
			AddWord("E", "N", "C", "L", "A", "V", "E")
		endif
		
		Self.StartTimer(0.045, 0)
	else
		if (Surveillance_Radio02 == none)
			Surveillance_Radio02 = Game.GetFormFromFile(0x0018F2F3, "Fallout4.esm") As ObjectReference		
		endif
		Self.StartTimer(2.0, 0)	
	endif
endEvent