Diff of /branches/VisonGame2905/Display_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/VisionGameStateMachine/svnobj [r63] .. [r64]  Maximize  Restore

Switch to side-by-side view

--- a/branches/VisonGame2905/Display_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/VisionGameStateMachine/svnobj
+++ b/branches/VisonGame2905/Display_Escape_PLC/Plc Logic/Application/Function Blocks/Puzzle/VisionGameStateMachine/svnobj
@@ -1,8 +1,8 @@
-Gx_l„L!0…jüoÊ3×CeÕ’š„œœSystem.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument	L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
-TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}Id
longTagText4//---- Client init  ----\\$IF NOT xInit THEN	N	UM				(		sName := 'Normal Operation', ì							dwSupportedStates := PACK_ML.State.All - PACK_ML.State.Suspending - PACK_ML.State.Suspended - PACK_ML.State.UnSuspending - PACK_ML.Holding - PACK_ML.Held - PACK_ML.UnHolding, Ô							dwAllowsLeavingFromStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, Ö							dwAllowsEnteringIntoStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, \							eInitialState := PACK_ML.State.Aborted,0							xActive := TRUE);	xInit := TRUE;	END_IFD//---- Client communicatie  ----\\4IF Client.bReadyToPLC THEN:	CASE Client.iCommandToPLC OF"	0 : 	//Handshake 	1 : 	//Lock!		IF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[0]) =  0 THEN		"0			//First Lock Function#Ž			SendCommand(Command:= CommandType.Key,Value:=Client.KeyCommands[0]);$–		ELSIF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[1]) =  0 THEN		%2			//Second Lock Function&Ž			SendCommand(Command:= CommandType.Key,Value:=Client.KeyCommands[1]);'		END_IF(	2 : 	//Key)	3 : 	//IO*	4 : 	//Media+	5 : 	//Hint,	6 : 	//State	-p		IF SysStrCmp(Client.sCommandFromPLC, 'SC') =  0 THEN		.&			StateComplete();/x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') =  0 THEN		0			Start();1v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') =  0 THEN		2			Stop();3x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') =  0 THEN		4			Reset();5x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') =  0 THEN		6			Abort();7x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') =  0 THEN		8			Clear();9v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') =  0 THEN		:			Hold();;z		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') =  0 THEN		<			Unhold();	=|		ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') =  0 THEN		>			Suspend();?€		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') =  0 THEN		@			UnSuspend();A		B	END_CASEC6	Client.iCommandToPLC := 0;D8	Client.sCommandToPLC := '';E:	Client.bReadyToPLC := FALSE;FD//---- Client statemachine  ----\\Gparser();H.CASE UM.CurrentState OFI,PACK_ML.State.Stopped:J	;K,PACK_ML.State.Aborted:L&PACK_ML.State.Idle:M2PACK_ML.State.Complete :	N.PACK_ML.State.Execute :O(	CASE Client.Mode OFPV		Mode.Mode1: // Target practise simulationQJ			IF puzzleTimer.iProcess = 25 THEN;Rº				//	SendCommand(Command := CommandType.Hint ,Value := 'Collect the object in the room.');	S			END_IFTJ			IF puzzleTimer.iProcess = 50 THEN;Uš				//SendCommand(Command := CommandType.Media ,Value := 'Padlock K000367');	V			END_IF			WJ			IF puzzleTimer.iProcess = 75 THEN;X				//Y			Z4	CASE Client.ActualStep OF[
-					\¬	0: // determine if depending on the level of the game the calibration step is needed.]P		IF Client.Level = Level.Beginner THEN;^6			Client.ActualStep := 30;_		ELSE`6			Client.ActualStep := 10;aP	10:// stappen voor het ijken van camerab2		xHide_ijkpunt := FALSE;c:		xHide_Text_Center := FALSE;d	20:e:	30: // intro text weergeven.f^		// Hide the ijkpunten Start van de visiongameg0		xHide_ijkpunt := TRUE;h8		xHide_Text_Center := TRUE;i4		xHide_Crosshair := TRUE;j4		xHide_Text_Top := FALSE;kÌ		ParseMachine (sMETH_InputString := 'Welcome Sailors! You will participate in a training exercise ');l
-	40:	mŽ		ParseMachine (sMETH_InputString := 'Remember, this is only a combat simulation. ');		n	50:oč		ParseMachine (sMETH_InputString := 'Your object is to Locate the practice target Leopold I of the Belgian navy ');p
-	60: qÎ		ParseMachine (sMETH_InputString := 'Use the Festo Vision Sensors to mark only Leopold I as Target ');r@	70: // Show the game interface.s		// Hidingt6		sInstructionString := '';u2		xHide_Text_Top := TRUE;v		// Showingw*		xHide_Map := FALSE;x2		xHide_Dolfijn := FALSE;y4		xHide_Leopold := FALSE;	z.		CASE client.Level OF {,			level.Intermediate:|:				xHide_Rotterdam := FALSE;}>				xHide_Zeeland 	:= FALSE;			~$			level.Advanced:8				xHide_Zeeland 	:= FALSE;€:				xHide_Amsterdam := FALSE;<				xHide_Groningen := FALSE;	‚		END_CASEƒ\		Client.ActualStep := Client.ActualStep + 10;„H	80: // wacht op vision coordinaten …				†2PACK_ML.State.Resetting :‡"	StateComplete();ˆ0PACK_ML.State.Starting :‰4PACK_ML.State.Completing :Š0PACK_ML.State.Aborting :‹.PACK_ML.State.Stopping:Œ2PACK_ML.State.Clearing :	END_CASEŽ.//---- Emergency ----\\VIF NOT x_EmergencyGF AND x_EmergencyFF THEN(	 //Emergency Abort.‘	Abort();	’8//---- State handling ----\\“LClient.ActualState := UM.CurrentState;”>messageQueue(Client := Client);•äpuzzleTimer(xStartTimer := UM.CurrentState = PACK_ML.State.Execute ,xPauseTimer := ,xStopTimer:= NOT (UM.CurrentState = PACK_ML.State.Execute),tMaxPuzzleTime := Client.Duration);–PClient.Progress := puzzleTimer.iProcess;—FIF puzzleTimer.iProcess >= 100 THEN˜	Stop();™InterfacešL{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}›JFUNCTION_BLOCK VisionGameStateMachineœVAR_IN_OUT.	Client : PuzzleClient;žEND_VARŸVAR 0	UM	: PACK_ML.UnitMode; ¡j	xInit				: BOOL := FALSE; // Flag for initialization¢:	messageQueue : MessageQueue;£6	puzzleTimer : PuzzleTimer;¤// ¥2parser 			: StringParser;¦// Hiding§:	xHide_Map 			: BOOL := TRUE;¨@	xHide_ijkpunt 		: BOOL := TRUE;©B	xHide_Crosshair 	: BOOL := TRUE;ª@	xHide_Text_Top		: BOOL := TRUE;«F	xHide_Text_Center 	: BOOL := TRUE;¬>	xHide_Button1		: BOOL := TRUE;­>	xHide_Button2		: BOOL := TRUE;®>	xHide_Button3		: BOOL := TRUE;¯	// Ships°@	xHide_Leopold 		: BOOL := TRUE;±B	xHide_Amsterdam 	: BOOL := TRUE;²@	xHide_Zeeland 		: BOOL := TRUE;³B	xHide_Groningen 	: BOOL := TRUE;´B	xHide_Rotterdam 	: BOOL := TRUE;µ@	xHide_Dolfijn 		: BOOL := TRUE;¶0// communication strings·>	sInstructionString	:  	STRING;¸@	sInstructionString2	:  	STRING;¹4	sButtonString1		:	STRING;º4	sButtonString2		:	STRING;»0	sTempString1		:	STRING;¼0	sTempString2		:	STRING;½D	xContinueScreen		: BOOL := FALSE;¾$// positions ships¿^	pLeopold 			: POINT := (X := 1149, Y := 117) ;À^	pDolfijn 			: POINT := (X := 488, Y := 662) ; Á^	pRotterdam			: POINT := (X := 105, Y := 446) ;Â^	pAmsterdam			: POINT := (X := 117, Y := 174) ;ÃZ	pZeeland			: POINT := (X := 565, Y := 163) ;Ä^	pGroningen			: POINT := (X := 139, Y := 528) ;Å^	pCrosshair			: POINT := (X := 400, Y := 400) ;Æ`	pIjkpuntLB			: POINT	 := (X := 100, Y := 100) ;Çb	pIjkpuntRB			: POINT	 := (X := 1000, Y := 100) ;È`	pIjkpuntLO			: POINT	 := (X := 100, Y := 800) ;É"UniqueIdGeneratorÊ867ËPOULevelÌL{8e575c5b-1d37-49c6-941b-5c0ec7874787}ÍStandardÎ ChildObjectGuidsÏ8System.Collections.ArrayListÐ,AddAttributeSubsequentÑboolÐÐ-ÐÐ	E
-ÄÐÐ
­ŒÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ŽÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­•ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­—ÚÐ-ÐÐ
­˜ÚÐ-ÐÐ
­™ÚÐ-ÐÐ
­šÚÐ-ÐÐ
­›ÚÐ-ÐÐ
­œÚÐ-ÐÐ
­ÚÐ-ÐÐ
­žÚÐ-ÐÐ
­ŸÚÐ- ÐÐ
­ ÚÐ-!ÐÐ
­¡ÚÐ-"ÐÐ
­¢ÚÐ-#ÐÐ
­£ÚÐ-$ÐÐ
­¤ÚÐ-%ÐÐ
­¥ÚÐ-&ÐÐ
­¦ÚÐ-'ÐÐ
­§ÚÐ-(ÐÐ
­¨ÚÐ-)ÐÐ
­©ÚÐ-*ÐÐ
­ªÚÐ-+ÐÐ
­«ÚÐ-,ÐÐ
­¬ÚÐ--ÐÐ
­­ÚÐ-.ÐÐ
­®ÚÐ-/ÐÐ
­¯ÚÐ-0ÐÐ
­°ÚÐ-1ÐÐ
­±ÚÐ-2ÐÐ
­²ÚÐ-3ÐÐ
­³ÚÐ-4ÐÐ
­´ÚÐ-5ÐÐ
­µÚÐ-6ÐÐ
­¶ÚÐ-7ÐÐ
­·ÚÐ-8ÐÐ
­¸ÚÐ-9ÐÐ
­¹ÚÐ-:ÐÐ
­ºÚÐ-;ÐÐ
­»ÚÐ-<ÐÐ
­¼ÚÐ-=ÐÐ
­½ÚÐ->ÐÐ
­¾ÚÐ-?ÐÐ
­¿ÚÐ-@ÐÐ
­ÀÚÐ-'ÐÐ
­ÁÚÐ-AÐÐ
­ÂÚÐ-BÐÐ
­ÃÚÐ-ÐÐ
­ÄÚÐ-CÐÐ
­ÅÚÐ-DÐÐ
­ÆÚÐ-EÐÐ
­ÇÚÐ-ÐÐ
­ÈÚÐ-ÐÐ
­ÉÚÐ-FÐÐ
­ÊÚÐ-ÐÐ
­ËÚÐ-GÐÐ
­ÌÚÐ-ÐÐ
­ÍÚÐ-HÐÐ
­ÎÚÐ-IÐÐ
­ÏÚÐ-JÐÐ
­ÐÚÐ-KÐÐ
­ÑÚÐ-JÐÐ
­ÒÚÐ-LÐÐ
­ÓÚÐ-JÐÐ
­ÔÚÐ-MÐÐ
­ÕÚÐ-JÐÐ
­ÖÚÐ-NÐÐ
­×ÚÐ-AÐÐ
­ØÚÐ-OÐÐ
­ÙÚÐ-AÐÐ
­ÚÚÐ-PÐÐ
­ÛÚÐ-QÐÐ
­ÜÚÐ-RÐÐ
­ÝÚÐ-SÐÐ
­ÞÚÐ-TÐÐ
­ßÚÐ-UÐÐ
­àÚÐ-VÐÐ
­áÚÐ-WÐÐ
­âÚÐ-XÐÐ
­ãÚÐ-SÐÐ
­äÚÐ-YÐÐ
­åÚÐ-BÐÐ
­æÚÐ-ÐÐ
­çÚÐ-ZÐÐ
­èÚÐ-[ÐÐ
­éÚÐ-\ÐÐ
­êÚÐ-]ÐÐ
­ëÚÐ-^ÐÐ
­ìÚÐ-_ÐÐ
­íÚÐ-`ÐÐ
­îÚÐ-'ÐÐ
­ïÚÐ-AÐÐ
­ðÚÐ-aÐÐ
­ñÚÐ-bÐÐ
­òÚÐ-cÐÐ
­óÚÐ-AÐÐ
­ôÚÐ-dÐÐ
­õÚÐ-eÐÐ
­öÚÐ-AÐÐ
­÷ÚÐ-fÐÐ
­øÚÐ-gÐÐ
­ùÚÐ-hÐÐ
­úÚÐ-iÐÐ
­ûÚÐ-jÐÐ
­üÚÐ-AÐÐ
­ýÚÐ-kÐÐ
­þÚÐ-YÐÐ
­ÚÐ-lÐÐ
­ÚÐ-ÐÐ
­ÚÐ-mÐÐ
­ÚÐ-AÐÐ
­ÚÐ-nÐÐ
­ÚÐ-YÐÐ
­ÚÐ-oÐÐ
­ÚÐ-YÐÐ
­
-ÚÐ-pÐÐ
­ÚÐ-AÐÐ
­ÚÐ-qÐÐ
­
ÚÐ-AÐÐ
­ÚÐ-rÐÐ
­PÚÐ-AÐÐ
­SÚÐ-sÐÐ
­\ÚÐ-tÐÐ
­OÚÐ-uÐÐ
­QÚÐ-vÐÐ
­ÚÐ-wÐÐ
­ÚÐ-xÐÐ
­ÚÐ-yÐÐ
­RÚÐ-AÐÐ
­ÚÐ-zÐÐ
­ÚÐ-{ÐÐ
­ÚÐ-|ÐÐ
­ÚÐ-}ÐÐ
­ÚÐ-~ÐÐ
­ÚÐ-|ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-€ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-‚ÐÐ
­ ÚÐ-AÐÐ
­!ÚÐ-ƒÐÐ
­"ÚÐ-AÐÐ
­#ÚÐ-„ÐÐ
­$ÚÐ-ÐÐ
­%ÚÐ-…ÐÐ
­&ÚÐ-BÐÐ
­'ÚÐ-JÐÐ
­]ÚÐ-ÐÐ
­^ÚÐ-ÐÐ
­(ÚÐ-†ÐÐ
­)ÚÐ-‡ÐÐ
­*ÚÐ-ˆÐÐ
­+ÚÐ-‡ÐÐ
­,ÚÐ-‰ÐÐ
­-ÚÐ-‡ÐÐ
­.ÚÐ-ŠÐÐ
­/ÚÐ-‡ÐÐ
­0ÚÐ-‹ÐÐ
­1ÚÐ-‡ÐÐ
­2ÚÐ-ŒÐÐ
­3ÚÐ-‡ÐÐ
­4ÚÐ-ÐÐ
­5ÚÐ-ÐÐ
­6ÚÐ-ŽÐÐ
­7ÚÐ-ÐÐ
­8ÚÐ-ÐÐ
­9ÚÐ-ÐÐ
­:ÚÐ-‘ÐÐ
­;ÚÐ-ÐÐ
­<ÚÐ-ÐÐ
­=ÚÐ-’ÐÐ
­>ÚÐ-ÐÐ
­?ÚÐ-“ÐÐ
­@ÚÐ-ÐÐ
­AÚÐ-”ÐÐ
­BÚÐ-ÐÐ
­CÚÐ-•ÐÐ
­DÚÐ-ÐÐ
­EÚÐ-–ÐÐ
­FÚÐ-ÐÐ
­GÚÐ-—ÐÐ
­HÚÐ-˜ÐÐ
­IÚÐ-ÐÐ
­JÚÐ-ÐÐ
­KÚÐ-ÐÐ
­LÚÐ-ÐÐ
­MÚÐ-ÐÐ
­dÚÐ-ЙšÐ	E
-<ÐÐ
­^ÚÐ-›ÐÐ
­_ÚÐ-œÐÐ
­`ÚÐ-ÐÐ
­aÚÐ-žÐÐ
­bÚÐ-ŸÐÐ
­cÚÐ- ÐÐ
­dÚÐ-ÐÐ
­eÚÐ-¡ÐÐ
­fÚÐ-ÐÐ
­gÚÐ-ÐÐ
­hÚÐ-¢ÐÐ
­iÚÐ-£ÐÐ
­jÚÐ-ÐÐ
­kÚÐ-ÐÐ
­lÚÐ-¤ÐÐ
­mÚÐ-¥ÐÐ
­nÚÐ-ÐÐ
­oÚÐ-¦ÐÐ
­pÚÐ-§ÐÐ
­qÚÐ-¨ÐÐ
­rÚÐ-©ÐÐ
­sÚÐ-ªÐÐ
­tÚÐ-«ÐÐ
­uÚÐ-¬ÐÐ
­vÚÐ-­ÐÐ
­wÚÐ-®ÐÐ
­xÚÐ-¯ÐÐ
­yÚÐ-°ÐÐ
­zÚÐ-±ÐÐ
­{ÚÐ-²ÐÐ
­NÚÐ-³ÐÐ
­|ÚÐ-´ÐÐ
­}ÚÐ-µÐÐ
­~ÚÐ-ÐÐ
­ÚÐ-¶ÐÐ
­€ÚÐ-·ÐÐ
­ÚÐ-¸ÐÐ
­‚ÚÐ-¹ÐÐ
­ƒÚÐ-ºÐÐ
­„ÚÐ-»ÐÐ
­…ÚÐ-¼ÐÐ
­†ÚÐ-ÐÐ
­‡ÚÐ-½ÐÐ
­ˆÚÐ-ÐÐ
­‰ÚÐ-¾ÐÐ
­ŠÚÐ-¿ÐÐ
­TÚÐ-ÀÐÐ
­UÚÐ-ÁÐÐ
­VÚÐ-ÂÐÐ
­XÚÐ-ÃÐÐ
­YÚÐ-ÄÐÐ
­ZÚÐ-ÐÐ
­[ÚÐ-ÅÐÐ
­WÚÐ-ÐÐ
­_ÚÐ-ÆÐÐ
­`ÚÐ-ÇÐÐ
­aÚÐ-ÈÐÐ
­bÚÐ-ÐÐ
­‹ÚÐ-žÐÐ
­ÚÐ-ÐÉ-ÊÐËÌ-ÍÎÏÐÐÑ­
\ No newline at end of file
+Gx_lV!0…jüod:®ˆi{Ω
System.StringL{6f9dac99-8de1-4efc-8465-68ac443b7d08}SpecialFuncL{0db3d7bb-cde0-4416-9a7b-ce49a0124323}NoneImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocument	L{f3878285-8e4f-490b-bb1b-9acbb7eb04db}
+TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}Id
longTagText4//---- Client init  ----\\$IF NOT xInit THEN	N	UM				(		sName := 'Normal Operation', ì							dwSupportedStates := PACK_ML.State.All - PACK_ML.State.Suspending - PACK_ML.State.Suspended - PACK_ML.State.UnSuspending - PACK_ML.Holding - PACK_ML.Held - PACK_ML.UnHolding, Ô							dwAllowsLeavingFromStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, Ö							dwAllowsEnteringIntoStates := PACK_ML.State.Stopped OR PACK_ML.State.Aborted OR PACK_ML.State.Idle, \							eInitialState := PACK_ML.State.Aborted,0							xActive := TRUE);	xInit := TRUE;	END_IFD//---- Client communicatie  ----\\4IF Client.bReadyToPLC THEN:	CASE Client.iCommandToPLC OF"	0 : 	//Handshake 	1 : 	//Lock!		IF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[0]) =  0 THEN		"0			//First Lock Function#Ž			SendCommand(Command:= CommandType.Key,Value:=Client.KeyCommands[0]);$–		ELSIF SysStrCmp(Client.sCommandToPLC, Client.LockCommands[1]) =  0 THEN		%2			//Second Lock Function&Ž			SendCommand(Command:= CommandType.Key,Value:=Client.KeyCommands[1]);'		END_IF(	2 : 	//Key)	3 : 	//IO*	4 : 	//Media+	5 : 	//Hint,	6 : 	//State	-p		IF SysStrCmp(Client.sCommandFromPLC, 'SC') =  0 THEN		.&			StateComplete();/x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Start') =  0 THEN		0			Start();1v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Stop') =  0 THEN		2			Stop();3x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Reset') =  0 THEN		4			Reset();5x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Abort') =  0 THEN		6			Abort();7x		ELSIF SysStrCmp(Client.sCommandToPLC, 'Clear') =  0 THEN		8			Clear();9v		ELSIF SysStrCmp(Client.sCommandToPLC, 'Hold') =  0 THEN		:			Hold();;z		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnHold') =  0 THEN		<			Unhold();	=|		ELSIF SysStrCmp(Client.sCommandToPLC, 'Suspend') =  0 THEN		>			Suspend();?€		ELSIF SysStrCmp(Client.sCommandToPLC, 'UnSuspend') =  0 THEN		@			UnSuspend();A		B	END_CASEC6	Client.iCommandToPLC := 0;D8	Client.sCommandToPLC := '';E:	Client.bReadyToPLC := FALSE;FD//---- Client statemachine  ----\\Gparser();HTimerPulse();I.CASE UM.CurrentState OFJ,PACK_ML.State.Stopped:K	;L,PACK_ML.State.Aborted:M&PACK_ML.State.Idle:N2PACK_ML.State.Complete :	O.PACK_ML.State.Execute :P(	CASE Client.Mode OFQV		Mode.Mode1: // Target practise simulationRJ			IF puzzleTimer.iProcess = 25 THEN;Sº				//	SendCommand(Command := CommandType.Hint ,Value := 'Collect the object in the room.');	T			END_IFUJ			IF puzzleTimer.iProcess = 50 THEN;Vš				//SendCommand(Command := CommandType.Media ,Value := 'Padlock K000367');	W			END_IF			XJ			IF puzzleTimer.iProcess = 75 THEN;Y				//Z			[4	CASE Client.ActualStep OF\
+					]¬	0: // determine if depending on the level of the game the calibration step is needed.^P		IF Client.Level = Level.Beginner THEN;_6			Client.ActualStep := 30;`		ELSEa6			Client.ActualStep := 10;bP	10:// stappen voor het ijken van camerac2		xHide_ijkpunt := FALSE;d:		xHide_Text_Center := FALSE;e	20:f:	30: // intro text weergeven.g^		// Hide the ijkpunten Start van de visiongameh0		xHide_ijkpunt := TRUE;i8		xHide_Text_Center := TRUE;j4		xHide_Crosshair := TRUE;k4		xHide_Text_Top := FALSE;lÌ		ParseMachine (sMETH_InputString := 'Welcome Sailors! You will participate in a training exercise ');m
+	40:	n®		ParseMachine (sMETH_InputString := 'Remember, this is only a combat simulation. ');		o	50:pè		ParseMachine (sMETH_InputString := 'Your object is to Locate the practice target Leopold I of the Belgian navy ');q
+	60: rĪ		ParseMachine (sMETH_InputString := 'Use the Festo Vision Sensors to mark only Leopold I as Target ');s@	70: // Show the game interface.t		// Hidingu6		sInstructionString := '';v2		xHide_Text_Top := TRUE;w		// Showingx*		xHide_Map := FALSE;y2		xHide_Dolfijn := FALSE;z4		xHide_Leopold := FALSE;	{.		CASE client.Level OF |,			level.Intermediate:}:				xHide_Rotterdam := FALSE;~>				xHide_Zeeland 	:= FALSE;			$			level.Advanced:€8				xHide_Zeeland 	:= FALSE;:				xHide_Amsterdam := FALSE;‚<				xHide_Groningen := FALSE;	ƒ		END_CASE„\		Client.ActualStep := Client.ActualStep + 10;…L	80: // wacht op vision coordinaten 		†|		IF Number_of_Detections = 1 THEN; // only one ship detected.‡z			// als de coordianten overeen komen met BNS leopold 1 dan ˆ®			IF (pSensorObservation.X >= pLeopold.X AND pSensorObservation.X <= pLeopold.X + 281)‰¬				OR (pSensorObservation.Y >= pLeopold.Y AND pSensorObservation.X <= pLeopold.Y +75)Š.			THEN; // Lock Target‹H				pCrosshair.X := pLeopold.X + 25;ŒH				pCrosshair.Y := pLeopold.Y - 50;				Ž:				xHide_Crosshair := FALSE;4				TimerPulse.IN := TRUE;f				IF TimerPulse.Q AND iCrosshairSize > 1000 THEN;‘T					iCrosshairSize := iCrosshairSize -25;’<					TimerPulse.IN := FALSE;		“				END_IF	”v			ELSE; // Lock op de sensorwaarneming en geef foutmelding•2PACK_ML.State.Resetting :–"	StateComplete();—0PACK_ML.State.Starting :˜4PACK_ML.State.Completing :™0PACK_ML.State.Aborting :š.PACK_ML.State.Stopping:›2PACK_ML.State.Clearing :	œEND_CASE.//---- Emergency ----\\žVIF NOT x_EmergencyGF AND x_EmergencyFF THENŸ(	 //Emergency Abort. 	Abort();	”8//---- State handling ----\\¢LClient.ActualState := UM.CurrentState;£>messageQueue(Client := Client);¤äpuzzleTimer(xStartTimer := UM.CurrentState = PACK_ML.State.Execute ,xPauseTimer := ,xStopTimer:= NOT (UM.CurrentState = PACK_ML.State.Execute),tMaxPuzzleTime := Client.Duration);„PClient.Progress := puzzleTimer.iProcess;¦FIF puzzleTimer.iProcess >= 100 THEN§	Stop();ØInterface©L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}ŖJFUNCTION_BLOCK VisionGameStateMachine«VAR_IN_OUT¬.	Client : PuzzleClient;­END_VAR®VARÆ0	UM	: PACK_ML.UnitMode; °j	xInit				: BOOL := FALSE; // Flag for initialization±:	messageQueue : MessageQueue;²6	puzzleTimer : PuzzleTimer;³// “2parser 			: StringParser;µ// Hiding¶:	xHide_Map 			: BOOL := TRUE;·@	xHide_ijkpunt 		: BOOL := TRUE;øB	xHide_Crosshair 	: BOOL := TRUE;¹@	xHide_Text_Top		: BOOL := TRUE;ŗF	xHide_Text_Center 	: BOOL := TRUE;»>	xHide_Button1		: BOOL := TRUE;¼>	xHide_Button2		: BOOL := TRUE;½>	xHide_Button3		: BOOL := TRUE;¾	// Shipsæ@	xHide_Leopold 		: BOOL := TRUE;ĄB	xHide_Amsterdam 	: BOOL := TRUE;Į@	xHide_Zeeland 		: BOOL := TRUE;ĀB	xHide_Groningen 	: BOOL := TRUE;ĆB	xHide_Rotterdam 	: BOOL := TRUE;Ä@	xHide_Dolfijn 		: BOOL := TRUE;Å0// communication stringsĘ>	sInstructionString	:  	STRING;Ē@	sInstructionString2	:  	STRING;Č4	sButtonString1		:	STRING;É4	sButtonString2		:	STRING;Ź0	sTempString1		:	STRING;Ė0	sTempString2		:	STRING;ĢD	xContinueScreen		: BOOL := FALSE;Ķ$// positions shipsĪ^	pLeopold 			: POINT := (X := 1149, Y := 117) ;Ļ^	pDolfijn 			: POINT := (X := 488, Y := 662) ; Š^	pRotterdam			: POINT := (X := 105, Y := 446) ;Ń^	pAmsterdam			: POINT := (X := 117, Y := 174) ;ŅZ	pZeeland			: POINT := (X := 565, Y := 163) ;Ó^	pGroningen			: POINT := (X := 139, Y := 528) ;Ō^	pCrosshair			: POINT := (X := 400, Y := 400) ;Õ8	iCrosshairRot		: REAL := 0;Ö@	iCrosshairSize		: REAL := 5000;×`	pIjkpuntLB			: POINT	 := (X := 100, Y := 100) ;Ųb	pIjkpuntRB			: POINT	 := (X := 1000, Y := 100) ;Ł`	pIjkpuntLO			: POINT	 := (X := 100, Y := 800) ;Śl	pSensorObservation 	: POINT := (X := 1150, Y := 120);Ū// timersÜJ	TimerPulse			: TON := (PT := T#1MS);Ż"UniqueIdGeneratorŽ905ßPOULeveląL{8e575c5b-1d37-49c6-941b-5c0ec7874787}įStandardā ChildObjectGuidsć8System.Collections.ArrayListä,AddAttributeSubsequentåboolŠŠ-ŠŠ	E
+ÚÐÐ
­ŒÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ŽÚÐ-ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-ÐÐ
­‘ÚÐ-ÐÐ
­’ÚÐ-ÐÐ
­“ÚÐ-ÐÐ
­”ÚÐ-ÐÐ
­•ÚÐ-ÐÐ
­–ÚÐ-ÐÐ
­—ÚÐ-ÐÐ
­˜ÚÐ-ÐÐ
­™ÚÐ-ÐÐ
­šÚÐ-ÐÐ
­›ÚÐ-ÐÐ
­œÚÐ-ÐÐ
­ÚÐ-ÐÐ
­žÚÐ-ÐÐ
­ŸÚÐ- ÐÐ
­ ÚÐ-!ÐÐ
­¡ÚÐ-"ÐÐ
­¢ÚÐ-#ÐÐ
­£ÚÐ-$ÐÐ
­¤ÚÐ-%ÐÐ
­¥ÚÐ-&ÐÐ
­¦ÚÐ-'ÐÐ
­§ÚÐ-(ÐÐ
­¨ÚÐ-)ÐÐ
­©ÚÐ-*ÐÐ
­ªÚÐ-+ÐÐ
­«ÚÐ-,ÐÐ
­¬ÚÐ--ÐÐ
­­ÚÐ-.ÐÐ
­®ÚÐ-/ÐÐ
­¯ÚÐ-0ÐÐ
­°ÚÐ-1ÐÐ
­±ÚÐ-2ÐÐ
­²ÚÐ-3ÐÐ
­³ÚÐ-4ÐÐ
­´ÚÐ-5ÐÐ
­µÚÐ-6ÐÐ
­¶ÚÐ-7ÐÐ
­·ÚÐ-8ÐÐ
­¸ÚÐ-9ÐÐ
­¹ÚÐ-:ÐÐ
­ºÚÐ-;ÐÐ
­»ÚÐ-<ÐÐ
­¼ÚÐ-=ÐÐ
­½ÚÐ->ÐÐ
­¾ÚÐ-?ÐÐ
­¿ÚÐ-@ÐÐ
­ÀÚÐ-'ÐÐ
­ÁÚÐ-AÐÐ
­ÂÚÐ-BÐÐ
­ÃÚÐ-ÐÐ
­ÄÚÐ-CÐÐ
­ÅÚÐ-DÐÐ
­ÆÚÐ-EÐÐ
­ÇÚÐ-ÐÐ
­ÈÚÐ-ÐÐ
­ÉÚÐ-FÐÐ
­ÊÚÐ-ÐÐ
­ËÚÐ-GÐÐ
­ÌÚÐ-HÐÐ
­ÍÚÐ-IÐÐ
­ÎÚÐ-JÐÐ
­ÏÚÐ-KÐÐ
­ÐÚÐ-LÐÐ
­ÑÚÐ-KÐÐ
­ÒÚÐ-MÐÐ
­ÓÚÐ-KÐÐ
­ÔÚÐ-NÐÐ
­ÕÚÐ-KÐÐ
­ÖÚÐ-OÐÐ
­×ÚÐ-AÐÐ
­ØÚÐ-PÐÐ
­ÙÚÐ-AÐÐ
­ÚÚÐ-QÐÐ
­ÛÚÐ-RÐÐ
­ÜÚÐ-SÐÐ
­ÝÚÐ-TÐÐ
­ÞÚÐ-UÐÐ
­ßÚÐ-VÐÐ
­àÚÐ-WÐÐ
­áÚÐ-XÐÐ
­âÚÐ-YÐÐ
­ãÚÐ-TÐÐ
­äÚÐ-ZÐÐ
­åÚÐ-BÐÐ
­æÚÐ-ÐÐ
­çÚÐ-[ÐÐ
­èÚÐ-\ÐÐ
­éÚÐ-]ÐÐ
­êÚÐ-^ÐÐ
­ëÚÐ-_ÐÐ
­ìÚÐ-`ÐÐ
­íÚÐ-aÐÐ
­îÚÐ-'ÐÐ
­ïÚÐ-AÐÐ
­ðÚÐ-bÐÐ
­ñÚÐ-cÐÐ
­òÚÐ-dÐÐ
­óÚÐ-AÐÐ
­ôÚÐ-eÐÐ
­õÚÐ-fÐÐ
­öÚÐ-AÐÐ
­÷ÚÐ-gÐÐ
­øÚÐ-hÐÐ
­ùÚÐ-iÐÐ
­úÚÐ-jÐÐ
­ûÚÐ-kÐÐ
­üÚÐ-AÐÐ
­ýÚÐ-lÐÐ
­þÚÐ-ZÐÐ
­ÚÐ-mÐÐ
­ÚÐ-ÐÐ
­ÚÐ-nÐÐ
­ÚÐ-AÐÐ
­ÚÐ-oÐÐ
­ÚÐ-ZÐÐ
­ÚÐ-pÐÐ
­ÚÐ-ZÐÐ
­
+ÚÐ-qÐÐ
­ÚÐ-AÐÐ
­ÚÐ-rÐÐ
­
ÚÐ-AÐÐ
­ÚÐ-sÐÐ
­PÚÐ-AÐÐ
­SÚÐ-tÐÐ
­\ÚÐ-uÐÐ
­OÚÐ-vÐÐ
­QÚÐ-wÐÐ
­ÚÐ-xÐÐ
­ÚÐ-yÐÐ
­ÚÐ-zÐÐ
­RÚÐ-AÐÐ
­ÚÐ-{ÐÐ
­ÚÐ-|ÐÐ
­ÚÐ-}ÐÐ
­ÚÐ-~ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-}ÐÐ
­ÚÐ-€ÐÐ
­ÚÐ-ÐÐ
­ÚÐ-‚ÐÐ
­ÚÐ-ƒÐÐ
­ ÚÐ-AÐÐ
­!ÚÐ-„ÐÐ
­"ÚÐ-AÐÐ
­#ÚÐ-…ÐÐ
­pÚÐ-ÐÐ
­qÚÐ-†ÐÐ
­rÚÐ-‡ÐÐ
­sÚÐ-ˆÐÐ
­tÚÐ-‰ÐÐ
­uÚÐ-ŠÐÐ
­vÚÐ-‹ÐÐ
­wÚÐ-ŒÐÐ
­xÚÐ-ÐÐ
­yÚÐ-ŽÐÐ
­zÚÐ-ÐÐ
­{ÚÐ-ÐÐ
­|ÚÐ-ÐÐ
­}ÚÐ-ÐÐ
­~ÚÐ-‘ÐÐ
­ÚÐ-’ÐÐ
­€ÚÐ-“ÐÐ
­ÚÐ-ÐÐ
­‚ÚÐ-”ÐÐ
­ƒÚÐ-ÐÐ
­„ÚÐ-TÐÐ
­…ÚÐ-AÐÐ
­%ÚÐ-'ÐÐ
­nÚÐ-ÐÐ
­&ÚÐ-BÐÐ
­'ÚÐ-KÐÐ
­]ÚÐ-ÐÐ
­^ÚÐ-ÐÐ
­(ÚÐ-•ÐÐ
­)ÚÐ-–ÐÐ
­*ÚÐ-—ÐÐ
­+ÚÐ-–ÐÐ
­,ÚÐ-˜ÐÐ
­-ÚÐ-–ÐÐ
­.ÚÐ-™ÐÐ
­/ÚÐ-–ÐÐ
­0ÚÐ-šÐÐ
­1ÚÐ-–ÐÐ
­2ÚÐ-›ÐÐ
­3ÚÐ-–ÐÐ
­4ÚÐ-œÐÐ
­5ÚÐ-ÐÐ
­6ÚÐ-ÐÐ
­7ÚÐ-ÐÐ
­8ÚÐ-žÐÐ
­9ÚÐ-ŸÐÐ
­:ÚÐ- ÐÐ
­;ÚÐ-ÐÐ
­<ÚÐ-ÐÐ
­=ÚÐ-¡ÐÐ
­>ÚÐ-ÐÐ
­?ÚÐ-¢ÐÐ
­@ÚÐ-ÐÐ
­AÚÐ-£ÐÐ
­BÚÐ-ÐÐ
­CÚÐ-¤ÐÐ
­DÚÐ-ÐÐ
­EÚÐ-¥ÐÐ
­FÚÐ-ÐÐ
­GÚÐ-¦ÐÐ
­HÚÐ-§ÐÐ
­IÚÐ-ÐÐ
­JÚÐ-ÐÐ
­KÚÐ-ÐÐ
­LÚÐ-ÐÐ
­MÚÐ-ÐÐ
­dÚÐ-Ш©Ð	E
+DÐÐ
­^ÚÐ-ªÐÐ
­_ÚÐ-«ÐÐ
­`ÚÐ-¬ÐÐ
­aÚÐ-­ÐÐ
­bÚÐ-®ÐÐ
­cÚÐ-¯ÐÐ
­dÚÐ-ÐÐ
­eÚÐ-°ÐÐ
­fÚÐ-ÐÐ
­gÚÐ-ÐÐ
­hÚÐ-±ÐÐ
­iÚÐ-²ÐÐ
­jÚÐ-ÐÐ
­kÚÐ-ÐÐ
­lÚÐ-³ÐÐ
­mÚÐ-´ÐÐ
­nÚÐ-ÐÐ
­oÚÐ-µÐÐ
­pÚÐ-¶ÐÐ
­qÚÐ-·ÐÐ
­rÚÐ-¸ÐÐ
­sÚÐ-¹ÐÐ
­tÚÐ-ºÐÐ
­uÚÐ-»ÐÐ
­vÚÐ-¼ÐÐ
­wÚÐ-½ÐÐ
­xÚÐ-¾ÐÐ
­yÚÐ-¿ÐÐ
­zÚÐ-ÀÐÐ
­{ÚÐ-ÁÐÐ
­NÚÐ-ÂÐÐ
­|ÚÐ-ÃÐÐ
­}ÚÐ-ÄÐÐ
­~ÚÐ-ÐÐ
­ÚÐ-ÅÐÐ
­€ÚÐ-ÆÐÐ
­ÚÐ-ÇÐÐ
­‚ÚÐ-ÈÐÐ
­ƒÚÐ-ÉÐÐ
­„ÚÐ-ÊÐÐ
­…ÚÐ-ËÐÐ
­†ÚÐ-ÐÐ
­‡ÚÐ-ÌÐÐ
­ˆÚÐ-ÐÐ
­‰ÚÐ-ÍÐÐ
­ŠÚÐ-ÎÐÐ
­TÚÐ-ÏÐÐ
­UÚÐ-ÐÐÐ
­VÚÐ-ÑÐÐ
­XÚÐ-ÒÐÐ
­YÚÐ-ÓÐÐ
­ZÚÐ-ÐÐ
­[ÚÐ-ÔÐÐ
­WÚÐ-ÕÐÐ
­fÚÐ-ÖÐÐ
­gÚÐ-ÐÐ
­_ÚÐ-×ÐÐ
­`ÚÐ-ØÐÐ
­aÚÐ-ÙÐÐ
­bÚÐ-ÐÐ
­dÚÐ-ÚÐÐ
­eÚÐ-ÛÐÐ
­iÚÐ-ÜÐÐ
­kÚÐ-ÐÐ
­jÚÐ-ÐÐ
­hÚÐ-ÐÐ
­‹ÚÐ-­ÐÐ
­ÚÐ-ÐÝ-ÞÐßà-áâãÐäå­
\ No newline at end of file