#include <string.h>
#include <stdio.h>
#include <stdlib.h>


#define XO 150
#define YO 120
int num_lokacji=0;

char Exit[50];





void
ustaw_podstawy( FILE *stream )
{
fprintf(stream,"inherit \"/std/room.c\";\n");
fprintf(stream,"#include <local.h>\n");

fprintf(stream,"void\n");
fprintf(stream,"create_room()\n");
fprintf(stream,"{\n");
fprintf(stream,"set_short(\"Trakt Kislevski\");\n");
fprintf(stream,"set_long(\"Znajdujesz sie na nieco zarosnietym trakcie \"+\n "
	" \"prowadzacym z samej stolicy Imperium do Kislevu - miasta \"+\n"
	" \"skrytego w mrozach i sniegach dzikiej polnocy.\\n\");\n");
}

void
ustaw_wyjscie( char ex[50], FILE *stream )
{
fprintf(stream,"%s\n",ex);
}


void
set_end( FILE *stream )
{
fprintf(stream,"}");
}


void
start()
{
int x=0;
int i;
int y=0;
char mapa[XO][YO];
int mapak[XO][YO];
char plik[20];
char znak;
FILE *f;
int nr=0;


    for ( x = 0; x < 150; x++ )
	{
	for ( y=0; y < YO; y++ )
	    mapa[x][y]=' ';
	mapa[x][119]='\n';
	}

x=0;
y=0;

f = fopen("map.txt","r");

    while( znak != EOF )
	{
	znak=fgetc(f);	
    
	if (znak=='*')
	    {
	    mapa[x][y]='*';
	    mapak[x][y]=nr;
	    nr++;
	    }
	    
	if (znak==' ')
	    mapa[x][y]=' ';

	if (znak=='\n')
	    {
	    y=-1;
	    x++;;
	    }

    y++;
}


    for (x=0; x<XO; x++ )
    for (y=0; y<YO; y++ )
    	printf("%c",mapa[x][y]);

fclose(f);

//return ;

nr=0;
    for ( x=0; x<XO; x++ )
	{
    for ( y=0; y<YO; y++ )
	{

    if (mapa[x][y]=='*')
	{
	sprintf(plik,"area%d.c",mapak[x][y]);    
	f=fopen(plik,"w");
	    ustaw_podstawy(f);
	    num_lokacji++;
	    nr++;
	
	}    
		
	if (mapa[x-1][y]=='*') // jesli jest na polnoc
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"polnoc\",0,1,0);",mapak[x-1][y]);			
	    ustaw_wyjscie(Exit,f);
	    }
	if (mapa[x+1][y]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"poludnie\",0,1,0);",mapak[x+1][y]);
	    ustaw_wyjscie(Exit,f);
	    }
	if (mapa[x][y-1]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"zachod\",0,1,0);",mapak[x][y-1]);
	    ustaw_wyjscie(Exit,f);
	    }
	if (mapa[x][y+1]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"wschod\",0,1,0);",mapak[x][y+1]);
	    ustaw_wyjscie(Exit,f);
	    }
	if (mapa[x-1][y-1]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"polnocny-zachod\",0,1,0);",mapak[x-1][y-1]);
	    ustaw_wyjscie(Exit,f);
	    }	    
	if (mapa[x-1][y+1]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"polnocny-wschod\",0,1,0);",mapak[x-1][y+1]);	    
	    ustaw_wyjscie(Exit,f);
	    }
	if (mapa[x+1][y-1]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"poludniowy-zachod\",0,1,0);",mapak[x+1][y-1]);
	    ustaw_wyjscie(Exit,f);
	    }
	if (mapa[x+1][y+1]=='*')
	    {
	    sprintf(Exit,"add_exit\(\"area%d\",\"poludniowy-wschod\",0,1,0);",mapak[x+1][y+1]);
	    ustaw_wyjscie(Exit,f);
	    }	
	
	
	if (mapa[x][y]=='*')
	    {
		set_end(f);
		fclose(f);
	    }
	}

	}

printf("Done. Lacznie %d plikow.\n",nr);
}



void
main()
{
start();
}
