I need a faster way to do this....
Take a look at this extremely sloppy code and try to improve it plz. It draws a map from an array. The theme sets different tilesets, becuase the whole thing screws with a two digit number, so I have to use 0 through 9 and -1 through -9, but don't worry about that, I just don't want it to draw so slow. It's not bad until you try to juggle 3 map layers, and even one layer draws slowly, and you can see it drawing from left to right, I'm on a 500 MHz AMD K6-2 for crying out loud, and this is a 13h program! It's not the drawing functions, it's this sloppy map drawing function I made in like ten minutes.
Code:
int DrawMapLayer1(int mapnumber)
{
switch (mapnumber)
{
case 1:
switch (mapone[0][0])
{
case 1:
theme=1;
break;
case 2:
theme=2;
break;
}
maponeloop:
if (down!=21)
if (right!=12)
switch (theme)
{
case 1:
switch (mapone[right][down])
{
case 1:
Draw_T_grass(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 0:
Draw_T_hole(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 2:
Draw_T_wall(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 3:
Draw_T_path(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 4:
Draw_T_woodfloor(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 5:
Draw_T_water(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
maperrorlevel=0;
goto maponeloop;
break;
case 6:
Draw_T_door(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
}
break;
case 2:
switch (mapone[right][down])
{
case 0:
Draw_T_hole(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 1:
Draw_T_castlefloor(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 2:
Draw_T_castlewall(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 3:
Draw_T_door(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 4:
Draw_T_castlefloor(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 5:
Draw_T_castledoorwest(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 6:
Draw_T_castledooreast(drawpositiondown,drawpositionright,'n');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 8:
Draw_T_castlefloor(drawpositiondown,drawpositionright,'y');
Draw_T_candleleft(drawpositiondown,drawpositionright,'y');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
case 7:
Draw_T_castlefloor(drawpositiondown,drawpositionright,'y');
Draw_T_candleright(drawpositiondown,drawpositionright,'y');
right++;
drawpositionright=drawpositionright+16;
goto maponeloop;
break;
}
}
}
if (down!=21)
if (right==12)
{
right=1;
down++;
drawpositiondown=drawpositiondown+16;
drawpositionright=1;
goto maponeloop;
}
right=1;
down=1;
drawpositionright=1;
drawpositiondown=1;
}