home *** CD-ROM | disk | FTP | other *** search
/ תקליטור אוסף מעל 200 משחקים מרתקים / over-200-games-micro-a-media.iso / CITIZENS / DATA / PLOT / COMPILE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-18  |  7.8 KB  |  319 lines

  1. /*
  2.   compile.c
  3.   
  4.   Little People V1.0                                                    
  5.   
  6.   Create data file for plot 
  7.   
  8.   Issue     Date           Programmer        Comments
  9.   -----     -----          ----------        --------
  10.   00001     1st Sept 1994   M.K.James        Test Version
  11.   
  12. */
  13.  
  14. #include <stdlib.h>
  15. #include <stdio.h>
  16. #include <string.h>
  17.  
  18. #include "..\..\slib\library.h"
  19. #include "..\..\src\gossip.h"
  20. #include "..\..\src\plot.h"
  21.  
  22.  
  23. #include "config.h"
  24. #include "compile.h"
  25.  
  26.  
  27. struct CFG DataStore[350];
  28.  
  29. struct PlotStruct Plot;
  30.  
  31. char TaskText[2000];
  32. char TaskTitle[2000];
  33.  
  34.  
  35.  
  36. struct DataCFG DataInfo[50]={
  37.     {"PLOTNUMBER",    PLOTNUMBER    ,1,0},
  38.     {"PLOTTITLE",    PLOTTITLE    ,-1,Plot.Title},
  39.     {"PLOTTEXT",    PLOTTEXT    ,-1,Plot.IntroText},
  40.     {"PLOTOBJECT",    PLOTOBJECT    ,4,0},
  41.     {"PLOTCAST",    PLOTCAST    ,1,0},
  42.     {"SCRIPT",        SCRIPT        ,4,0},
  43.     {"ENDSCRIPT",    ENDSCRIPT    ,0,0},
  44.     {"PLOTACTIVE",    PLOTACTIVE    ,1,0},
  45.     {"PLOTFAIL",    PLOTFAIL    ,1,0},
  46.     {"PLOTPASS",    PLOTPASS    ,1,0},
  47.     {"TASKNUMBER",    TASKNUMBER    ,1,0},
  48.     {"TASKTITLE",    TASKTITLE    ,-1,Plot.Task[0].Title},
  49.     {"TASKTEXT",    TASKTEXT    ,-1,Plot.Task[0].IntroText},
  50.     {"TASKFATHER",    TASKFATHER    ,1,0},
  51.     {"TASKSON",        TASKSON        ,1,0},
  52.     {"TASKSTATUS",    TASKSTATUS    ,1,0},
  53.     {"TASKSEASON",    TASKSEASON    ,1,0},
  54.     {"TASKKARMA",    TASKKARMA    ,1,0},
  55.     {"TASKSCORE",    TASKSCORE    ,1,0},
  56.     {"TASKTIMER",    TASKTIMER    ,1,0},
  57.     {"TASKCAST",    TASKCAST    ,4,0},
  58.     {"TASKGOSSIP",    TASKGOSSIP    ,5,0},
  59.     {"TASKEVENT",    TASKEVENT    ,5,0},
  60.     {"TASKPASS",    TASKPASS    ,0,0},
  61.     {"TASKFAIL",    TASKFAIL    ,0,0},
  62.     {"END",            END            ,0,0},
  63.     {"TASKBUILD",    TASKBUILD    ,2,0},
  64.     {"ENDOFLIST",0,0}
  65. };
  66.  
  67.  
  68. static void WritePlot(char *name,char *Header);
  69. static void ReadInfo(void);
  70.  
  71. /********************* Local Function Headers ***********************/
  72.  
  73. void main(int argc,void *argv[]){
  74.  
  75.  
  76.     short count ;
  77.     char str[15];
  78.     short Index;
  79.     
  80.     sprintf(str,"%s.txt",argv[1]);
  81.     printf ("Opening Configuation File.\n");
  82.     if(Index=DecodeConfigFile(str,&DataStore,&DataInfo)){
  83.         for (count=0;count<Index;count++){
  84.             printf("%d  %s\n",DataStore[count].Command,
  85.                                     DataStore[count].Parameters[0]);
  86.         }
  87.         ReadInfo();
  88.         WritePlot("PLT1","PLT1");
  89.     }
  90.     else{
  91.         printf("Error opening file");
  92.     }            
  93.  
  94. /*
  95.     OpenOutput("PLOT1","PLOT");
  96.     WritePlotHeader(&Plot1);
  97.     WritePlotTasks(&Plot1Task);
  98.     WritePlotObjects(&Plot1Objs);
  99.     WritePlotCast(&Plot1Cast);
  100.     CloseOutput();
  101. */
  102. }
  103.  
  104.  
  105. static void ReadInfo(){
  106.     
  107.     char ret=FALSE;
  108.     short count;
  109.     short CastNo=-1;
  110.  
  111.     short Script=0;
  112.     short ScrNo=0;
  113.  
  114.     short ObjNo=0;
  115.     short MaxObj=0;
  116.  
  117.     short TaskNo=0;
  118.     short BNo=0;
  119.  
  120.     for (count=0;ret==FALSE;count++){
  121.         switch (DataStore[count].Command){
  122.             case PLOTNUMBER :
  123.                 Plot.ID=(unsigned char)atoi(DataStore[count].Parameters[0]);
  124.                 break;
  125.             case PLOTOBJECT :
  126.                 Plot.Object.ObjNum=(short)atoi(DataStore[count].Parameters[0]);
  127.                 Plot.Object.CastNo=(short)atoi(DataStore[count].Parameters[1]);
  128.                 Plot.Object.X=(short)atoi(DataStore[count].Parameters[2]);
  129.                 Plot.Object.Y=(short)atoi(DataStore[count].Parameters[3]);
  130.                 break;
  131.             case PLOTCAST :
  132.                 CastNo=(unsigned char)atoi(DataStore[count].Parameters[0]);
  133.                 Script=1;
  134.                 break;
  135.             case SCRIPT:
  136.                 switch (Script){
  137.                     case 1:
  138.                         /* Cast Script */
  139.                         Plot.Cast[CastNo][ScrNo].Command=(unsigned char)atoi(DataStore[count].Parameters[0]);
  140.                         Plot.Cast[CastNo][ScrNo].Value=(unsigned char)atoi(DataStore[count].Parameters[1]);
  141.                         Plot.Cast[CastNo][ScrNo].FailGoto=(unsigned char)atoi(DataStore[count].Parameters[2]);
  142.                         Plot.Cast[CastNo][ScrNo].Ptr=(unsigned char)atoi(DataStore[count].Parameters[3]);
  143.                         ScrNo++;
  144.                         break;
  145.                 }
  146.                 break;
  147.             case ENDSCRIPT:
  148.                 Script=0;
  149.                 ScrNo=0;
  150.                 break;
  151.             case PLOTFAIL :
  152.                 Plot.FailType=(short)atoi(DataStore[count].Parameters[0]);
  153.                 break;
  154.             case PLOTPASS :
  155.                 Plot.PassType=(short)atoi(DataStore[count].Parameters[0]);
  156.                 break;
  157.             case TASKNUMBER :
  158.                 TaskNo=(unsigned char)atoi(DataStore[count].Parameters[0]);
  159.                 Plot.Task[TaskNo].Number=TaskNo;
  160.                 break;
  161. /*
  162.             case TASKTITLE :
  163.             case TASKTEXT :
  164. */
  165.             case TASKFATHER :
  166.                 Plot.Task[TaskNo].Father=atoi(DataStore[count].Parameters[0]);
  167.                 break;
  168.             case TASKSON :
  169.                 Plot.Task[TaskNo].Son=atoi(DataStore[count].Parameters[0]);
  170.                 break;
  171.             case TASKSTATUS :
  172.                 Plot.Task[TaskNo].Status=atoi(DataStore[count].Parameters[0]);
  173.                 break;
  174.             case TASKSEASON    :
  175.                 Plot.Task[TaskNo].Season=atoi(DataStore[count].Parameters[0]);
  176.                 break;
  177.             case TASKKARMA :
  178.                 Plot.Task[TaskNo].Karma=atoi(DataStore[count].Parameters[0]);
  179.                 break;
  180.             case TASKSCORE :
  181.                 Plot.Task[TaskNo].Score=atoi(DataStore[count].Parameters[0]);
  182.                 break;
  183.             case TASKTIMER :
  184.                 Plot.Task[TaskNo].TimerInit=atoi(DataStore[count].Parameters[0]);
  185.                 break;
  186.             case TASKCAST :
  187.                 Plot.Task[TaskNo].Cast[0]=atoi(DataStore[count].Parameters[0]);
  188.                 Plot.Task[TaskNo].Cast[1]=atoi(DataStore[count].Parameters[1]);
  189.                 Plot.Task[TaskNo].Cast[2]=atoi(DataStore[count].Parameters[2]);
  190.                 Plot.Task[TaskNo].Cast[3]=atoi(DataStore[count].Parameters[3]);
  191.                 break;    
  192.             case TASKGOSSIP :
  193.                 Plot.Task[TaskNo].Gossip.CastNo=atoi(DataStore[count].Parameters[0]);
  194.                 Plot.Task[TaskNo].Gossip.Entry.Meme=atoi(DataStore[count].Parameters[1]);
  195.                 Plot.Task[TaskNo].Gossip.Entry.Flag=atoi(DataStore[count].Parameters[2]);
  196.                 Plot.Task[TaskNo].Gossip.Entry.Char1=atoi(DataStore[count].Parameters[3]);
  197.                 Plot.Task[TaskNo].Gossip.Entry.Char2=atoi(DataStore[count].Parameters[4]);
  198.                 break;
  199.             case TASKEVENT :
  200.                 Plot.Task[TaskNo].Event.Number=atoi(DataStore[count].Parameters[0]);
  201.                 Plot.Task[TaskNo].Event.Cast[0]=atoi(DataStore[count].Parameters[1]);
  202.                 Plot.Task[TaskNo].Event.Cast[1]=atoi(DataStore[count].Parameters[2]);
  203.                 Plot.Task[TaskNo].Event.Cast[2]=atoi(DataStore[count].Parameters[3]);
  204.                 Plot.Task[TaskNo].Event.Cast[3]=atoi(DataStore[count].Parameters[4]);
  205.                 break;
  206.             case TASKPASS :
  207.             case TASKFAIL :
  208.                 break;
  209.             case END:
  210.                 ret=TRUE;
  211.                 break;
  212.             
  213.             case TASKBUILD :
  214.                 strncpy(Plot.Task[TaskNo].Building[BNo].Class,DataStore[count].Parameters[0],10);
  215.                 strncpy(Plot.Task[TaskNo].Building[BNo].Type,DataStore[count].Parameters[1],10);
  216.                 BNo++;
  217.                 break;
  218.             }
  219.         
  220.     }
  221. };        
  222.         
  223.         
  224.         
  225.         
  226. static void WritePlot(char *name,char *Header){
  227.  
  228.     int i,l;
  229.     char f[20];
  230.  
  231.     sprintf(f,"%s.bin",name);
  232.     printf("%s\n", f);
  233.  
  234.     iff_open_w(f, Header);
  235.    for(l=sizeof(struct PlotStruct);l>0 && !((char *)(&Plot))[l-1];l--); /* Reduce length to real data */
  236.     iff_open_block_w("PLOT");
  237.     iff_write_block(&Plot,l);
  238.     iff_close_block_w();
  239.       iff_close_w(); 
  240. }
  241.         
  242.         
  243.         
  244.         
  245.             
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252. /*
  253. void WriteTown(char *TownName){
  254.  
  255.     char f[30];
  256.  
  257.     sprintf(f,"..\\maps\\%s.inf",TownName);
  258.     iff_open_block_w("TINF");
  259.     iff_write_block_f(f);
  260.     iff_close_block_w();
  261.  
  262.     sprintf(f,"..\\maps\\%s.mp0",TownName);
  263.     iff_open_block_w("TMAP");
  264.     iff_write_block_f(f);
  265.     iff_close_block_w();
  266.  
  267.     sprintf(f,"..\\maps\\%s.blk",TownName);
  268.     iff_open_block_w("TBLK");
  269.     iff_write_block_f(f);
  270.     iff_close_block_w();
  271.  
  272.     sprintf(f,"..\\maps\\%s.chr",TownName);
  273.     iff_open_block_w("TCHR");
  274.     iff_write_block_f(f);
  275.     iff_close_block_w();
  276. }    
  277. */
  278.  
  279.  
  280.  
  281. /*
  282. void WritePlotTasks(struct TaskData *Task,short NoOfTasks){
  283.  
  284.     int i, l;
  285.  
  286.     for (i=0;i<NoOfTasks;i++){
  287.            for(l=sizeof(struct TaskData);l>0 && !((char *)(Task+i))[l-1];l--); 
  288.         iff_open_block_w("PTSK");
  289.         iff_write_block(&Task,1);
  290.         iff_close_block_w();
  291.     }
  292. }
  293.     
  294. void WritePlotObjects(struct ObjEntry *Object,short NoOfObjects){
  295.  
  296.     int i, l;
  297.  
  298.     for (i=0;i<NoOfObjects;i++){
  299.            for(l=sizeof(struct ObjEntry);l>0 && !((char *)(Object+i))[l-1];l--); 
  300.         iff_open_block_w("POBJ");
  301.         iff_write_block(&Object,1);
  302.         iff_close_block_w();
  303.     }
  304. }
  305.  
  306.  
  307. void WritePlotCast(struct CharScript *Cast){
  308.  
  309.     int i, l;
  310.  
  311.        for(l=sizeof(struct CharScript);l>0 && !((char *)(Cast+i))[l-1];l--);
  312.     iff_open_block_w("PCST");
  313.     iff_write_block(&Cast,1);
  314.     iff_close_block_w();
  315. }
  316.     
  317. */
  318.  
  319.