function lade_karte()
{
var filehandle_n;//_n wird nie gespeichert
var i;
var j;
var count;
var bauteil;
STRING* temp_str = "#20";
ENTITY* ent;
str_cpy(delimit_str,";");//readvar wird bei ; gestoppt
str_cpy(save_dir, "\\Maps");//map muss im ordner save sein
filehandle_n = file_open_read ("Map.txt"); //öffne map.txt
if(filehandle_n != 0)//falls es existiert
{
street_count =0;
register_ready = 0;
proc_kill((void*)control_camera);//beende kamerabewegung
for(i=0;i<1000;i++)//leere das array
{
streets[i]=NULL;
}
level_load(NULL);//lade leeren Level
wait(3);
file_find(filehandle_n,"grid_x:");//suche nach string und positioniere den lesepointer hinter ihm
grid_size[0]=file_var_read(filehandle_n);//und speichere wert
file_find(filehandle_n,"grid_y:");//suche nach string und positioniere den lesepointer hinter ihm
grid_size[1]=file_var_read(filehandle_n);//und speichere wert
file_find(filehandle_n,"cars:");//suche nach string und positioniere den lesepointer hinter ihm
start_autos=file_var_read(filehandle_n);//und speichere wert
file_close(filehandle_n);
map1 = 0;
create_grid_params(startpunkt[0],startpunkt[1]); // Startpunkt Untere linke Ecke
map1=create_grid(grid_size[0],grid_size[1],cell_size[0],cell_size[1]); //Erstelle die Map
for(j=1;j<=grid_size[0];j++)
{
for(i=1;i<=grid_size[1];i++)
{
filehandle_n = file_open_read ("Map.txt");
str_cpy(temp_str,";");//; //muss vorangestellt werden da es sonst ab dem 2-stelligen bereich probleme gibt
str_cat(temp_str,str_for_num(NULL,j));//;1
str_cat(temp_str,".");//;1.
str_cat(temp_str,str_for_num(NULL,i));//;1.1
str_cat(temp_str,":");//;1.1:
file_find(filehandle_n,temp_str);//finde die stelle
bauteil = file_var_read(filehandle_n);//lese die variable aus
file_close(filehandle_n);
switch(bauteil)//erstelle die straßenteile
{
case 0:
ent_create("Hinderniss.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),hinderniss);
break;
case 1:
ent_create("Strasse.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_gerade);
break;
case 2:
ent = ent_create("Strasse.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_gerade);
ent.pan = 90;
break;
case 3:
ent = ent_create("Strasse-ecke.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_ecke);
ent.pan = -270;
break;
case 4:
ent = ent_create("Strasse-ecke.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_ecke);
ent.pan = -90;
break;
case 5:
ent = ent_create("Strasse-ecke.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_ecke);
ent.pan = -180;
break;
case 6:
ent = ent_create("Strasse-ecke.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_ecke);
ent.pan = 0;
break;
case 7:
ent_create("Strasse-kreuzung.mdl",vector(((j*cell_size[0])-cell_size[0]/2),((i*cell_size[1])-cell_size[1]/2),0),strasse_kreuzung);
break;
}
}
}
wait(1);
wait_for(count_me);
register_ready = 1;
diag("\n");diag("Street-count:");diag(str_for_num(NULL,street_count));
for(i=0;i<1000;i++)//leere das array
{
if(streets[i]==NULL)
{
diag("\n");diag("NULL@");diag(str_for_num(NULL,i));
}
}
while(count < street_count-1)//warte bis aööe registriert sind
{
count = 0;
for(i=0;i<street_count;i++)//leere das array
{
if(streets[i]!=NULL)
{
count++;
}
}
wait(1);
}
control_camera();//und starte camera wieder
for(i=1;i<=start_autos;i++)
{
add_car(-1);
}
control_camera();//und starte camera wieder
}
else
{
printf("Map.txt existiert nicht!");
}
}