/*
 **************************************
 ** CONQUISTA DELL'UNIVERSO by
 ** BIANCA Hard&Soft AND LANKY SOFT
 ** (c) 1995 PRATO ITALY
 ************************************
 ** Written in E 2.1b 
 *************************************
 ** MODULO VISUALIZZAZIONE IMMAGINI      
 **************************************
*/

/**** DEFINIZIONE COSTANTI DA USARSI SOLO ALL'INTERNO DI QUESTO MODULO ***/
CONST NIMM=5		/* numero di immagini definite */
CONST DIMI=260*2	/* dimensione max per immagine */

/*************************************************************************/

/*** INIZIALIZZO ARRAY CON DESCRIZIONE IMMAGINI ***/
PROC ini_imm(uni:PTR TO universo)
DEF imm:PTR TO image
DEF im1:LONG      
DEF im2:LONG
DEF im3:LONG
DEF im4:LONG
DEF im5:LONG
DEF i:LONG

uni.imm:=0

imm:=New(NIMM*(SIZEOF image)+50)
IF imm=NIL THEN RETURN 0

uni.imm:=imm
imm[0].imagedata:=0
imm[1].imagedata:=0
imm[2].imagedata:=0
imm[3].imagedata:=0
imm[4].imagedata:=0

im1:=AllocMem(DIMI,MEMF_CHIP)
im2:=AllocMem(DIMI,MEMF_CHIP)
im3:=AllocMem(DIMI,MEMF_CHIP)
im4:=AllocMem(DIMI,MEMF_CHIP)
im5:=AllocMem(DIMI,MEMF_CHIP)

IF (im1=NIL) OR (im2=NIL) OR (im3=NIL) OR (im4=NIL) OR (im5=NIL)
	res_imm(uni)
	RETURN 0
ENDIF

uni.imm:=imm

/** definisco bitmap delle immagini **/
i:=[	$001F,$F800,$007F,$F800,$0007,$F800,$001F,$D800,
	$7FFF,$CC00,$EFF3,$C000,$EFF3,$C000,$7FFF,$CC00,
	$001F,$D800,$0007,$F800,$007F,$F800,$001F,$F800,
	$0000,$0000,$0007,$F800,$0000,$0000,$0003,$C000,
	$001F,$C000,$11EC,$0000,$11EC,$0000,$001F,$C000,
	$0003,$C000,$0000,$0000,$0007,$F800,$0000,$0000,
	$0000,$0000,$001F,$F800,$0000,$0000,$0003,$E000,
	$001F,$F000,$71EC,$3C00,$71EC,$3C00,$001F,$F000,
	$0003,$E000,$0000,$0000,$001F,$F800,$0000,$0000,
	$0000,$0000,$0000,$0000,$0000,$3000,$0000,$1000,
	$0000,$0800,$1E0D,$C000,$1E0D,$C000,$0000,$0800,
	$0000,$1000,$0000,$3000,$0000,$0000,$0000,$0000,
	$0000,$0000,$007F,$FF00,$0000,$3000,$0003,$F000,
	$001F,$F800,$FFED,$FF80,$FFED,$FF80,$001F,$F800,
	$0003,$F000,$0000,$3000,$007F,$FF00,$0000,$0000]:INT
cmem(i,im1,DIMI)


i:=[	$0000,$0007,$F000,$0000,$0008,$0800,$0FCF,$FFF3,
	$FC00,$3030,$001C,$0400,$4100,$000E,$0400,$9F80,
	$001D,$FC00,$873C,$3FE3,$0400,$405A,$8015,$8800,
	$3F98,$0001,$F000,$0018,$0001,$8000,$0018,$0001,
	$8000,$0018,$0001,$8000,$001F,$00FF,$8000,$000F,
	$FFFF,$0000,
	$0000,$0000,$0000,$0000,$0000,$0000,$0000,$000C,
	$F000,$0987,$FFE3,$F800,$1EFF,$FFF9,$F000,$607F,
	$FFE3,$0000,$70C0,$0000,$F800,$1F88,$0001,$7000,
	$0008,$0001,$0000,$0008,$0001,$0000,$0008,$0001,
	$0000,$0008,$0001,$0000,$000F,$00FF,$0000,$0000,
	$0000,$0000,
	$0000,$0000,$0000,$0000,$0007,$F000,$0000,$000C,
	$F000,$0FCF,$FFE2,$0400,$3E00,$0018,$0400,$60BF,
	$FFE3,$0400,$77C0,$0000,$F800,$3F8D,$7FEB,$7000,
	$000C,$0003,$0000,$000C,$FCFF,$0000,$000C,$0003,
	$0000,$000E,$7CFF,$0000,$000F,$00FF,$0000,$0000,
	$0000,$0000,
	$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
	$0800,$0800,$0001,$F800,$1EFF,$FFE7,$F800,$0040,
	$0000,$F800,$0803,$C01C,$0000,$0008,$0001,$0000,
	$000B,$FFFD,$0000,$000B,$0301,$0000,$000B,$FFFD,
	$0000,$0009,$8301,$0000,$000F,$FFFF,$0000,$0000,
	$0000,$0000,
	$0000,$0000,$0000,$0000,$0007,$F000,$0000,$000C,
	$F800,$0FCF,$FFE3,$FF00,$3EFF,$FFFF,$FF80,$60FF,
	$FFE3,$FF00,$7FC3,$C01C,$F800,$3F8D,$7FEB,$7000,
	$000F,$FFFF,$0000,$000F,$FFFF,$0000,$000F,$FFFF,
	$0000,$000F,$FFFF,$0000,$000F,$FFFF,$0000,$0000,
	$0000,$0000]:INT
cmem(i,im2,DIMI)


i:=[	$0008,$0041,$0098,$0132,$FE64,$82C8,$8150,$8024,
	$8004,$8004,$FFF8,
	$0000,$0030,$0066,$00CC,$0198,$0130,$3020,$0700,
	$0000,$0000,$0000,
	$0000,$0030,$0066,$00CC,$0198,$4130,$7020,$4700,
	$4000,$7FF8,$0000,
	$0000,$0000,$0000,$0000,$0000,$3C00,$3E80,$3FD8,
	$3FF8,$0000,$0000,
	$0018,$003B,$0067,$00CC,$0198,$7D30,$7EA0,$7FD8,
	$7FF8,$7FF8,$0000]:INT
cmem(i,im3,DIMI)

i:=[	$0000,$3DC0,$0000,$7000,$0000,$F800,$0000,$F800,
	$0001,$F800,$C631,$FC00,$B5AD,$7B00,$8C63,$1880,
	$8000,$0080,$BFFF,$FE80,$A000,$0280,$BFFF,$FE80,
	$8000,$0080,$FFFF,$FF80,
	$0000,$0000,$0000,$0000,$0000,$7000,$0000,$7000,
	$0000,$7000,$0000,$7000,$4210,$9400,$739C,$E700,
	$7FFF,$FF00,$0000,$0000,$1FFF,$FC00,$0000,$0000,
	$0000,$0000,$0000,$0000,
	$0000,$0000,$0000,$0000,$0000,$7000,$0000,$7000,
	$0000,$7000,$0000,$7000,$4210,$9400,$739C,$E700,
	$7FFF,$FF00,$0000,$0000,$0000,$0000,$0000,$0000,
	$0000,$0000,$0000,$0000,
	$0000,$0000,$0000,$0000,$0000,$7000,$0000,$7000,
	$0000,$7000,$0000,$7000,$0000,$1000,$0000,$0000,
	$0000,$0000,$4000,$0100,$5FFF,$FD00,$4000,$0100,
	$7FFF,$FF00,$0000,$0000,
	$0000,$0000,$0000,$0000,$0000,$7000,$0000,$7000,
	$0000,$7000,$0000,$7000,$4210,$9400,$739C,$E700,
	$7FFF,$FF00,$4000,$0100,$4000,$0100,$4000,$0100,
	$7FFF,$FF00,$0000,$0000]:INT
cmem(i,im4,DIMI)

i:=[	$0004,$2000,$0001,$C000,$0002,$6000,$700C,$1C1C,
	$3E30,$07F8,$07F8,$3FC0,$001C,$7000,$0000,$0000,
	$FFFB,$DFFE,$FFFE,$3FFE,$FFFD,$9FFE,$8FF3,$E3E2,
	$C1CF,$F806,$F007,$C01E,$C1E3,$8F06,$07FF,$FFC0,
	$000C,$6000,$0007,$0000,$000D,$E000,$007C,$7C00,
	$01F0,$1F00,$0000,$0000,$0000,$0000,$0000,$0000,
	$0004,$2000,$0001,$0000,$0000,$6000,$000C,$1C00,
	$0030,$0700,$0800,$0020,$3E00,$00F8,$F800,$003E,
	$FFFF,$FFFE,$FFFF,$3FFE,$FFFD,$FFFE,$8FFF,$FFE2,
	$C1FF,$FF06,$F007,$C01E,$C1E3,$8F06,$07FF,$FFC0]:INT
cmem(i,im5,DIMI)

/** definisco descrittori delle immagini **/
imm[0].leftedge:=0
imm[0].topedge:=0
imm[0].width:=25
imm[0].height:=12
imm[0].depth:=5
imm[0].imagedata:=im1 
imm[0].planepick:=$1F
imm[0].planeonoff:=00
imm[0].nextimage:=0

imm[1].leftedge:=0
imm[1].topedge:=0
imm[1].width:=41
imm[1].height:=14
imm[1].depth:=5
imm[1].imagedata:=im2 
imm[1].planepick:=$1F
imm[1].planeonoff:=00
imm[1].nextimage:=0

imm[2].leftedge:=0
imm[2].topedge:=0
imm[2].width:=16
imm[2].height:=11
imm[2].depth:=5
imm[2].imagedata:=im3 
imm[2].planepick:=$1F
imm[2].planeonoff:=00
imm[2].nextimage:=0

imm[3].leftedge:=0
imm[3].topedge:=0
imm[3].width:=26
imm[3].height:=14
imm[3].depth:=5
imm[3].imagedata:=im4 
imm[3].planepick:=$1F
imm[3].planeonoff:=00
imm[3].nextimage:=0

imm[4].leftedge:=0
imm[4].topedge:=0
imm[4].width:=31
imm[4].height:=8
imm[4].depth:=5
imm[4].imagedata:=im5 
imm[4].planepick:=$1F
imm[4].planeonoff:=00
imm[4].nextimage:=0

ENDPROC 1

/** visualizzo un immagine sulla rastport attuale **/
PROC vis_imm(uni:PTR TO universo,nimm,x,y)
DEF imm:PTR TO image

IF (nimm<1) OR (nimm>NIMM) THEN RETURN 0

imm:=uni.imm+((nimm-1)*(SIZEOF image))

DrawImage(stdrast,imm,x,y)

ENDPROC

/** ELIMINO LE STRUTTURE DEFINITE PER LE IMMAGINI **/
PROC res_imm(uni:PTR TO universo)
DEF imm:PTR TO image

imm:=uni.imm

IF imm[0].imagedata<>NIL THEN FreeMem(imm[0].imagedata,DIMI)
IF imm[1].imagedata<>NIL THEN FreeMem(imm[1].imagedata,DIMI)
IF imm[2].imagedata<>NIL THEN FreeMem(imm[2].imagedata,DIMI)
IF imm[3].imagedata<>NIL THEN FreeMem(imm[3].imagedata,DIMI)
IF imm[4].imagedata<>NIL THEN FreeMem(imm[4].imagedata,DIMI)

Dispose(imm)

ENDPROC

