home *** CD-ROM | disk | FTP | other *** search
- /* ACK-3D ( Animation Construction Kit 3D ) */
- /* Goal routine */
- /* Author: Lary Myers */
-
- #include <stdlib.h>
- #include <stdio.h>
- #include <dos.h>
- #include <mem.h>
- #include <alloc.h>
- #include <io.h>
- #include <fcntl.h>
- #include <time.h>
- #include <string.h>
- #include <sys\stat.h>
- #include "ack3d.h"
- #include "ackext.h"
-
- extern unsigned char far colordat[];
-
- /****************************************************************************
- ** **
- ****************************************************************************/
- int ShowScreen(char *sName)
- {
- int handle;
- unsigned char *sBuffer,*Video;
- unsigned char *pBuffer;
-
- pBuffer = malloc(768);
- if (pBuffer == NULL)
- return(-1);
-
- if (!stricmp(GetExtent(sName),"LBM"))
- {
- sBuffer = Readiff(sName);
- memmove(sBuffer,&sBuffer[4],64000);
- memmove(pBuffer,colordat,768);
- }
- else
- {
- handle = open(sName,O_RDWR|O_BINARY);
- if (handle < 1)
- {
- free(pBuffer);
- return(-2);
- }
-
- sBuffer = malloc(64000);
- if (sBuffer)
- {
- read(handle,sBuffer,4);
- read(handle,sBuffer,64000);
- }
-
- close(handle);
-
- if (*GoalPalFile)
- {
- handle = open(GoalPalFile,O_RDWR|O_BINARY);
- if (handle > 0)
- {
- read(handle,pBuffer,768);
- close(handle);
- }
- else
- {
- free(pBuffer);
- pBuffer = NULL;
- }
- }
- else
- {
- free(pBuffer);
- pBuffer = NULL;
- }
- }
-
- if (sBuffer == NULL)
- {
- if (pBuffer)
- free(pBuffer);
- return(-3);
- }
-
- if (pBuffer)
- {
- SetPalette(pBuffer);
- free(pBuffer);
- }
-
- Video = MK_FP(0xA000,0);
- memmove(Video,sBuffer,64000);
-
- free(sBuffer);
-
- return(0);
- }
-
-
-
- /****************************************************************************
- ** Here is where everything finishes up. If a screen was specified in the **
- ** master description file then it is displayed, otherwise a simple **
- ** YOU WON! is shown. **
- ****************************************************************************/
- void DoGoalScreen(void)
- {
- int result;
-
- SetVGAmode();
-
- result = 1;
-
- if (*GoalFile)
- result = ShowScreen(GoalFile);
-
- if (result)
- {
- printf("\tY O U W O N ! !");
- }
-
- setvect(KEYBD,oldvec);
- getch();
- }
-
-