#include <acknex.h>
#define LEVEL_COUNT 20
#define OBJECTS_MAX 10
FONT *fntArial = "Arial#20";
typedef struct OBJECT
{
var x;
var y;
var z;
var pan;
var tilt;
var roll;
// and so...
} OBJECT;
OBJECT objects[LEVEL_COUNT][OBJECTS_MAX];
void objects_save ()
{
file_save ( "saved.dat", objects, sizeof(OBJECT) * LEVEL_COUNT * OBJECTS_MAX );
}
void objects_load ()
{
if ( !file_exists ( "saved.dat" ) )
return;
long size = 0;
void *buffer = file_load ( "saved.dat", NULL, &size );
memcpy ( objects, buffer, sizeof(OBJECT) * LEVEL_COUNT * OBJECTS_MAX );
file_load ( NULL, buffer, &size );
}
void objects_zero ()
{
memset ( objects, 0, sizeof(OBJECT) * LEVEL_COUNT * OBJECTS_MAX );
}
void evnPan ()
{
var indexX = floor ( LEVEL_COUNT * mouse_pos.x / screen_size.x );
var indexY = floor ( OBJECTS_MAX * mouse_pos.y / screen_size.y );
if ( event_type == EVENT_CLICK )
objects[indexX][indexY].x += 1;
else if ( event_type == EVENT_RIGHTCLICK )
objects[indexX][indexY].x -= 1;
}
void main ()
{
video_mode = 10;
mouse_mode = 4;
enable_mouse = 2;
wait(1);
PANEL *pan = pan_create ( "", 1 );
pan->size_x = screen_size.x;
pan->size_y = screen_size.y;
var stepX = pan->size_x / LEVEL_COUNT;
var stepY = pan->size_y / OBJECTS_MAX;
var y = 0;
for ( ; y<OBJECTS_MAX; y+=1 )
{
var x = 0;
for ( ; x<LEVEL_COUNT; x+=1 )
{
pan_setdigits ( pan, 0, (stepX/2)+x*stepX, (stepY/2)+y*stepY, "%.0f", fntArial, 1, &objects[x][y].x );
}
}
pan->event = evnPan;
pan->flags |= SHOW;
on_s = objects_save;
on_l = objects_load;
on_r = objects_zero;
while ( !key_esc )
wait (1);
pan_remove ( pan );
sys_exit ( NULL );
}