home *** CD-ROM | disk | FTP | other *** search
- /*
- compile.c
-
- Little People V1.0
-
- Create data file for plot
-
- Issue Date Programmer Comments
- ----- ----- ---------- --------
- 00001 1st Sept 1994 M.K.James Test Version
-
- */
-
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-
- #include "..\..\slib\library.h"
- #include "..\..\src\gossip.h"
- #include "..\..\src\plot.h"
-
-
- #include "config.h"
- #include "compile.h"
-
-
- struct CFG DataStore[350];
-
- struct PlotStruct Plot;
-
- char TaskText[2000];
- char TaskTitle[2000];
-
-
-
- struct DataCFG DataInfo[50]={
- {"PLOTNUMBER", PLOTNUMBER ,1,0},
- {"PLOTTITLE", PLOTTITLE ,-1,Plot.Title},
- {"PLOTTEXT", PLOTTEXT ,-1,Plot.IntroText},
- {"PLOTOBJECT", PLOTOBJECT ,4,0},
- {"PLOTCAST", PLOTCAST ,1,0},
- {"SCRIPT", SCRIPT ,4,0},
- {"ENDSCRIPT", ENDSCRIPT ,0,0},
- {"PLOTACTIVE", PLOTACTIVE ,1,0},
- {"PLOTFAIL", PLOTFAIL ,1,0},
- {"PLOTPASS", PLOTPASS ,1,0},
- {"TASKNUMBER", TASKNUMBER ,1,0},
- {"TASKTITLE", TASKTITLE ,-1,Plot.Task[0].Title},
- {"TASKTEXT", TASKTEXT ,-1,Plot.Task[0].IntroText},
- {"TASKFATHER", TASKFATHER ,1,0},
- {"TASKSON", TASKSON ,1,0},
- {"TASKSTATUS", TASKSTATUS ,1,0},
- {"TASKSEASON", TASKSEASON ,1,0},
- {"TASKKARMA", TASKKARMA ,1,0},
- {"TASKSCORE", TASKSCORE ,1,0},
- {"TASKTIMER", TASKTIMER ,1,0},
- {"TASKCAST", TASKCAST ,4,0},
- {"TASKGOSSIP", TASKGOSSIP ,5,0},
- {"TASKEVENT", TASKEVENT ,5,0},
- {"TASKPASS", TASKPASS ,0,0},
- {"TASKFAIL", TASKFAIL ,0,0},
- {"END", END ,0,0},
- {"TASKBUILD", TASKBUILD ,2,0},
- {"ENDOFLIST",0,0}
- };
-
-
- static void WritePlot(char *name,char *Header);
- static void ReadInfo(void);
-
- /********************* Local Function Headers ***********************/
-
- void main(int argc,void *argv[]){
-
-
- short count ;
- char str[15];
- short Index;
-
- sprintf(str,"%s.txt",argv[1]);
- printf ("Opening Configuation File.\n");
- if(Index=DecodeConfigFile(str,&DataStore,&DataInfo)){
- for (count=0;count<Index;count++){
- printf("%d %s\n",DataStore[count].Command,
- DataStore[count].Parameters[0]);
- }
- ReadInfo();
- WritePlot("PLT1","PLT1");
- }
- else{
- printf("Error opening file");
- }
-
- /*
- OpenOutput("PLOT1","PLOT");
- WritePlotHeader(&Plot1);
- WritePlotTasks(&Plot1Task);
- WritePlotObjects(&Plot1Objs);
- WritePlotCast(&Plot1Cast);
- CloseOutput();
- */
- }
-
-
- static void ReadInfo(){
-
- char ret=FALSE;
- short count;
- short CastNo=-1;
-
- short Script=0;
- short ScrNo=0;
-
- short ObjNo=0;
- short MaxObj=0;
-
- short TaskNo=0;
- short BNo=0;
-
- for (count=0;ret==FALSE;count++){
- switch (DataStore[count].Command){
- case PLOTNUMBER :
- Plot.ID=(unsigned char)atoi(DataStore[count].Parameters[0]);
- break;
- case PLOTOBJECT :
- Plot.Object.ObjNum=(short)atoi(DataStore[count].Parameters[0]);
- Plot.Object.CastNo=(short)atoi(DataStore[count].Parameters[1]);
- Plot.Object.X=(short)atoi(DataStore[count].Parameters[2]);
- Plot.Object.Y=(short)atoi(DataStore[count].Parameters[3]);
- break;
- case PLOTCAST :
- CastNo=(unsigned char)atoi(DataStore[count].Parameters[0]);
- Script=1;
- break;
- case SCRIPT:
- switch (Script){
- case 1:
- /* Cast Script */
- Plot.Cast[CastNo][ScrNo].Command=(unsigned char)atoi(DataStore[count].Parameters[0]);
- Plot.Cast[CastNo][ScrNo].Value=(unsigned char)atoi(DataStore[count].Parameters[1]);
- Plot.Cast[CastNo][ScrNo].FailGoto=(unsigned char)atoi(DataStore[count].Parameters[2]);
- Plot.Cast[CastNo][ScrNo].Ptr=(unsigned char)atoi(DataStore[count].Parameters[3]);
- ScrNo++;
- break;
- }
- break;
- case ENDSCRIPT:
- Script=0;
- ScrNo=0;
- break;
- case PLOTFAIL :
- Plot.FailType=(short)atoi(DataStore[count].Parameters[0]);
- break;
- case PLOTPASS :
- Plot.PassType=(short)atoi(DataStore[count].Parameters[0]);
- break;
- case TASKNUMBER :
- TaskNo=(unsigned char)atoi(DataStore[count].Parameters[0]);
- Plot.Task[TaskNo].Number=TaskNo;
- break;
- /*
- case TASKTITLE :
- case TASKTEXT :
- */
- case TASKFATHER :
- Plot.Task[TaskNo].Father=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKSON :
- Plot.Task[TaskNo].Son=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKSTATUS :
- Plot.Task[TaskNo].Status=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKSEASON :
- Plot.Task[TaskNo].Season=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKKARMA :
- Plot.Task[TaskNo].Karma=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKSCORE :
- Plot.Task[TaskNo].Score=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKTIMER :
- Plot.Task[TaskNo].TimerInit=atoi(DataStore[count].Parameters[0]);
- break;
- case TASKCAST :
- Plot.Task[TaskNo].Cast[0]=atoi(DataStore[count].Parameters[0]);
- Plot.Task[TaskNo].Cast[1]=atoi(DataStore[count].Parameters[1]);
- Plot.Task[TaskNo].Cast[2]=atoi(DataStore[count].Parameters[2]);
- Plot.Task[TaskNo].Cast[3]=atoi(DataStore[count].Parameters[3]);
- break;
- case TASKGOSSIP :
- Plot.Task[TaskNo].Gossip.CastNo=atoi(DataStore[count].Parameters[0]);
- Plot.Task[TaskNo].Gossip.Entry.Meme=atoi(DataStore[count].Parameters[1]);
- Plot.Task[TaskNo].Gossip.Entry.Flag=atoi(DataStore[count].Parameters[2]);
- Plot.Task[TaskNo].Gossip.Entry.Char1=atoi(DataStore[count].Parameters[3]);
- Plot.Task[TaskNo].Gossip.Entry.Char2=atoi(DataStore[count].Parameters[4]);
- break;
- case TASKEVENT :
- Plot.Task[TaskNo].Event.Number=atoi(DataStore[count].Parameters[0]);
- Plot.Task[TaskNo].Event.Cast[0]=atoi(DataStore[count].Parameters[1]);
- Plot.Task[TaskNo].Event.Cast[1]=atoi(DataStore[count].Parameters[2]);
- Plot.Task[TaskNo].Event.Cast[2]=atoi(DataStore[count].Parameters[3]);
- Plot.Task[TaskNo].Event.Cast[3]=atoi(DataStore[count].Parameters[4]);
- break;
- case TASKPASS :
- case TASKFAIL :
- break;
- case END:
- ret=TRUE;
- break;
-
- case TASKBUILD :
- strncpy(Plot.Task[TaskNo].Building[BNo].Class,DataStore[count].Parameters[0],10);
- strncpy(Plot.Task[TaskNo].Building[BNo].Type,DataStore[count].Parameters[1],10);
- BNo++;
- break;
- }
-
- }
- };
-
-
-
-
- static void WritePlot(char *name,char *Header){
-
- int i,l;
- char f[20];
-
- sprintf(f,"%s.bin",name);
- printf("%s\n", f);
-
- iff_open_w(f, Header);
- for(l=sizeof(struct PlotStruct);l>0 && !((char *)(&Plot))[l-1];l--); /* Reduce length to real data */
- iff_open_block_w("PLOT");
- iff_write_block(&Plot,l);
- iff_close_block_w();
- iff_close_w();
- }
-
-
-
-
-
-
-
-
-
-
-
- /*
- void WriteTown(char *TownName){
-
- char f[30];
-
- sprintf(f,"..\\maps\\%s.inf",TownName);
- iff_open_block_w("TINF");
- iff_write_block_f(f);
- iff_close_block_w();
-
- sprintf(f,"..\\maps\\%s.mp0",TownName);
- iff_open_block_w("TMAP");
- iff_write_block_f(f);
- iff_close_block_w();
-
- sprintf(f,"..\\maps\\%s.blk",TownName);
- iff_open_block_w("TBLK");
- iff_write_block_f(f);
- iff_close_block_w();
-
- sprintf(f,"..\\maps\\%s.chr",TownName);
- iff_open_block_w("TCHR");
- iff_write_block_f(f);
- iff_close_block_w();
- }
- */
-
-
-
- /*
- void WritePlotTasks(struct TaskData *Task,short NoOfTasks){
-
- int i, l;
-
- for (i=0;i<NoOfTasks;i++){
- for(l=sizeof(struct TaskData);l>0 && !((char *)(Task+i))[l-1];l--);
- iff_open_block_w("PTSK");
- iff_write_block(&Task,1);
- iff_close_block_w();
- }
- }
-
- void WritePlotObjects(struct ObjEntry *Object,short NoOfObjects){
-
- int i, l;
-
- for (i=0;i<NoOfObjects;i++){
- for(l=sizeof(struct ObjEntry);l>0 && !((char *)(Object+i))[l-1];l--);
- iff_open_block_w("POBJ");
- iff_write_block(&Object,1);
- iff_close_block_w();
- }
- }
-
-
- void WritePlotCast(struct CharScript *Cast){
-
- int i, l;
-
- for(l=sizeof(struct CharScript);l>0 && !((char *)(Cast+i))[l-1];l--);
- iff_open_block_w("PCST");
- iff_write_block(&Cast,1);
- iff_close_block_w();
- }
-
- */
-
-