ErrorMessage

Scripts

14 years
edited 8 years
Code (jass) Select
1
library ErrorMessage /* v1.0.1.4
2
*************************************************************************************
3
*
4
*	Issue Compliant Error Messages
5
*
6
************************************************************************************
7
*
8
*	debug function ThrowError takes boolean expression, string libraryName, string functionName, string objectName, integer objectInstance, string description returns nothing
9
*		-	In the event of an error the game will be permanently paused
10
*
11
*	debug function ThrowWarning takes boolean expression, string libraryName, string functionName, string objectName, integer objectInstance, string description returns nothing
12
*
13
************************************************************************************/
14
	static if DEBUG_MODE then
15
		private struct Fields extends array
16
			static constant string COLOR_RED = "|cffff0000"
17
			static constant string COLOR_YELLOW = "|cffffff00"
18
			static string lastError = null
19
		endstruct
20
		
21
		private function Pause takes nothing returns nothing
22
			call PauseGame(true)
23
		endfunction
24
		
25
		private function ThrowMessage takes string libraryName, string functionName, string objectName, integer objectInstance, string description, string errorType, string color returns nothing
26
			local string str
27
			
28
			local string color_braces = "|cff66FF99"
29
			local string orange = "|cffff6600"
30
			
31
			set str = "->\n-> " + color_braces + "{|r " + "Library" + color_braces + "(" + orange + libraryName + color_braces + ")"
32
			if (objectName != null) then
33
				if (objectInstance > 0) then
34
					set str = str + "|r.Object" + color_braces + "(" + orange + objectName + color_braces + " (|rinstance = " + orange + I2S(objectInstance) + color_braces + ") )" + "|r." + "Method" + color_braces + "(" + orange + functionName + color_braces + ")"
35
				else
36
					set str = str + "|r.Object" + color_braces + "(" + orange + objectName + color_braces + ")|r." + "Method" + color_braces + "(" + orange + functionName + color_braces + ")"
37
				endif
38
			else
39
				set str = str + "|r." + "Function" + color_braces + "(" + orange + functionName + color_braces + ")"
40
			endif
41
			
42
			set str = str + color_braces + " }|r " + "has thrown an exception of type " + color_braces + "(" + color + errorType + color_braces + ")|r."
43
			
44
			set Fields.lastError = str + "\n->\n" + "->	" + color + description + "|r\n->"
45
		endfunction
46
		
47
		function ThrowError takes boolean expression, string libraryName, string functionName, string objectName, integer objectInstance, string description returns nothing
48
			if (Fields.lastError != null) then
49
				set objectInstance = 1/0
50
			endif
51
		
52
			if (expression) then
53
				call ThrowMessage(libraryName, functionName, objectName, objectInstance, description, "Error", Fields.COLOR_RED)
54
				call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60000,Fields.lastError)
55
				call TimerStart(CreateTimer(), 0, true, function Pause)
56
				set objectInstance = 1/0
57
			endif
58
		endfunction
59
60
		function ThrowWarning takes boolean expression, string libraryName, string functionName, string objectName, integer objectInstance, string description returns nothing
61
			if (Fields.lastError != null) then
62
				set objectInstance = 1/0
63
			endif
64
		
65
			if (expression) then
66
				call ThrowMessage(libraryName, functionName, objectName, objectInstance, description, "Warning", Fields.COLOR_YELLOW)
67
				call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,60000,Fields.lastError)
68
				set Fields.lastError = null
69
			endif
70
		endfunction
71
	endif
72
endlibrary