#include <acknex.h>
// Material skills
#define skPosX skill9 // X coord relative to the center of the map in map coords (centered on the screen)
#define skPosY skill10 // Y coord
#define skScale skill11 // scale of the map
#define skScaleNext skill12 // needed a map scale smooth transition variable
void main ()
{
video_mode = 10;
mouse_mode = 4;
fps_max = 60;
wait(1);
BMAP *bmpMap = bmap_createblack(1920,1200,32);
BMAP *bmpScreen = bmap_createblack(1920,1200,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);
var x=100;
bmap_zbuffer(bmap_createblack(2048,2048,32));
while ( !key_esc )
{
//------------
bmap_rendertarget(bmpMap,0,0);
draw_quad(NULL,vector(-50,20,0),NULL,vector(100,100,0),NULL,vector(200,200,200),100,NULL);
draw_quad(NULL,vector(500,20,0),NULL,vector(100,100,0),NULL,vector(200,200,200),100,NULL);
draw_quad(NULL,vector(1000,20,0),NULL,vector(100,100,0),NULL,vector(200,200,200),100,NULL);
draw_quad(NULL,vector(1450,20,0),NULL,vector(100,100,0),NULL,vector(200,200,200),100,NULL);
draw_quad(NULL,vector(2000,20,0),NULL,vector(100,100,0),NULL,vector(200,200,200),100,NULL);
bmap_rendertarget(NULL,0,0);
//----------
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),0.001, 1000 );
}
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 );
mtlCamMap->skill5 = floatd ( 0.5, bmap_width(bmpMap) * mtlCamMap->skScale );
mtlCamMap->skill6 = floatd ( 0.5, bmap_height(bmpMap) * mtlCamMap->skScale );
bmap_process ( bmpScreen, bmpMap, mtlCamMap );
wait(1);
}
mtl_remove ( mtlCamMap );
pan_remove ( panScreen );
bmap_remove ( bmpScreen );
bmap_remove ( bmpMap );
sys_exit ( NULL );
}