#include <acknex.h>
// Material skills
#define skPosX skill5 // X coord relative to the center of the map in map coords (centered on the screen)
#define skPosY skill6 // Y coord
#define skScale skill7 // scale of the map
#define skScaleNext skill8 // needed a map scale smooth transition variable
void main ()
{
video_mode = 10;
mouse_mode = 4;
fps_max = 60;
wait(1);
BMAP *bmpMap = bmap_create ( "grid.tga" );
BMAP *bmpScreen = bmap_createblack ( screen_size.x, screen_size.y, 24 );
PANEL *panScreen = pan_create ( "flags=SHOW", 1 );
panScreen->bmap = bmpScreen;
MATERIAL *mtlCamMap = mtl_create ();
mtlCamMap->skPosX = 0;
mtlCamMap->skPosY = 0;
mtlCamMap->skScale = 1;
mtlCamMap->skScaleNext = mtlCamMap->skScale;
effect_load ( mtlCamMap, "display_map.fx" );
mtlCamMap->skill4 = floatd ( bmap_height(bmpScreen) * bmap_width(bmpMap), bmap_width(bmpScreen) * bmap_height(bmpMap) );
var nProp = bmap_width(bmpScreen) / bmap_width(bmpMap);
while ( !key_esc )
{
if ( mouse_left )
{
mtlCamMap->skPosX += mickey.x / mtlCamMap->skScale;
mtlCamMap->skPosY += mickey.y / mtlCamMap->skScale;
}
if ( mickey.z )
{
mtlCamMap->skScaleNext = clamp ( mtlCamMap->skScaleNext + sign(mickey.z), 1, 10 );
}
mtlCamMap->skScale += ( mtlCamMap->skScaleNext - mtlCamMap->skScale ) * time_step * 0.5;
mtlCamMap->skill1 = floatd ( mtlCamMap->skPosX, bmap_width(bmpMap) );
mtlCamMap->skill2 = floatd ( mtlCamMap->skPosY, bmap_height(bmpMap) );
mtlCamMap->skill3 = floatd ( nProp, mtlCamMap->skScale );
bmap_process ( bmpScreen, bmpMap, mtlCamMap );
wait(1);
}
mtl_remove ( mtlCamMap );
pan_remove ( panScreen );
bmap_remove ( bmpScreen );
bmap_remove ( bmpMap );
sys_exit ( NULL );
}