/*********************************************************************
	>>>>>  Koja.c   Routine fuer Gag bei Programmende

	Autor: Rudolf Gierlinger   A - 4692 Niederthalheim 50

	Verwendung und Verbreitung fuer NICHTKOMMERZIELLEN Gebrauch
	erlaubt, solange der Autorenvermerk nicht geloescht wird !

						Dezember 1988
 *********************************************************************/
#ifdef EXTERN
 #undef EXTERN
#endif
#define EXTERN extern

#include <intuition/intuitionbase.h>
#undef JAM1 /* gegen Warnings */
#undef JAM2
#include "Common.H"

/*=== FUNCTION  Kojaniskatsi  ===*/
/*** Top Secret.  (streng geheime Funktionsweise, sehr streng.) ***/
VOID Kojaniskatsi(ScreenP,WindowP)
	struct Screen 	*ScreenP;
	struct Window 	*WindowP;

{	struct RastPort *IchRastAus; 		/* Ohh! */
	struct Screen 	*WBscreenP=NULL, 	/* Ahh! */
			*sPtr;
   	USHORT  	Wbreit,Whoch;
   	REGISTER int 	Br,Hoe,x,y, i;
	int 		FarbFlag=!0;

   IchRastAus = WindowP->RPort;   /* Hier spricht der TNT-Virus, */
   Wbreit = WindowP->Width;       /* dein Computer explodiert in 3 Sekunden.*/
   Whoch  = WindowP->Height;      /* - Ha Ha Ha, ist das ein lustiger Virus!*/ 
                                  /* ... zwo, eins, Tuschschsch. */

   /* fuer die boese, boese Absicht den WBscreen suchen */
   for (sPtr=IntuitionBase->FirstScreen; sPtr; sPtr=sPtr->NextScreen)
       if (sPtr->Flags & WBENCHSCREEN) WBscreenP = sPtr;
   if (WBscreenP==NULL) return;

   ModifyIDCMP(	WindowP, 	  /* Abbruchkriterien */
		RAWKEY|MOUSEBUTTONS|DISKINSERTED|DISKREMOVED);

   ScreenToBack(ScreenP);         /* sich verstecken */
   MoveScreen(ScreenP,0L,-256);   /* und nach y-Pos 0 */
   for (y=0;y<=SCREEN_HOE/2;y++)  /* Der Vorhang hebt sich */
   	MoveScreen(WBscreenP,0L,2L);

   Delay(1*SEC); 		  /* Warten steigert die Spannung */
   for (Br=Wbreit,Hoe=Whoch,x=0,y=0;
	(Br>=20)&&(Hoe>=10);
	Br-=20,Hoe-=10,x+=10,y+=5)
   {
	if (Meldung = (struct IntuiMessage *)GetMsg(WindowP->UserPort))
	{	ReplyMsg(Meldung);
		break; 		  /* Abbruch erwuenscht */
	}
	FarbRahmen(IchRastAus,(FarbFlag=!FarbFlag),"",x,y,Br,Hoe);
	DisplayBeep(ScreenP);
	for (i=0;i<10;i++)
	{	MoveScreen(ScreenP  ,0L,3L);
		MoveScreen(WBscreenP,0L,3L);
	}
	for (i=0;i<5;i++)
	{	MoveScreen(ScreenP  ,0L,-3L);
		MoveScreen(WBscreenP,0L,-3L);
	}
	Delay(1/2*SEC);
   }
   for (y=0;y<256/3;y++) 	  /* WBscreen in Ausgangslage */
	MoveScreen(WBscreenP,0L,-3L);
}
