Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int test_xpm(unsigned short xi, unsigned short yi, char *xpm[])
- {
- int flag=0;
- if(kbd_subscribe()<0)
- return 1;
- Sprite* sp;
- vg_init(TEST_MODE);
- if((yi<0)||(xi<0)||(yi>get_v_res())||(xi>get_h_res()))
- {
- flag=1;
- goto FUNC_EXIT;
- }
- else
- {
- sp = create_sprite(xpm);
- int a;
- a=draw_sprite(sp, xi, yi);
- switch(a)
- {
- case 1:
- flag=1;
- goto FUNC_EXIT;
- case 2:
- goto FUNC_EXIT;
- }
- }
- while(waitEscKey()!=0)
- {
- }
- FUNC_EXIT:
- if(vg_exit()!=0)
- flag=1;
- if(kbd_unsubscribe()!=0)
- flag=1;
- return flag;
- }
- int test_move(unsigned short xi, unsigned short yi, char *xpm[], unsigned short hor, short delta, unsigned short time)
- {
- int flag = 0;
- int acc = 0;
- int x = xi;
- if(timer_subscribe_int()<0)
- return 1;
- if(kbd_subscribe()<0)
- return 1;
- vg_init(TEST_MODE);
- Sprite* sp;
- if((yi<0)||(xi<0)||(yi>get_v_res())||(xi>get_h_res()))
- {
- flag=1;
- goto FUNC_EXIT;
- }
- else
- {
- sp = create_sprite(xpm);
- draw_sprite(sp, x, yi);
- sprite_handler(sp,x,yi,time,1,1);
- }
- while(waitEscKey()!=0)
- {
- }
- FUNC_EXIT:
- if(vg_exit()!=0)
- flag=1;
- if(kbd_unsubscribe()!=0)
- flag=1;
- if(timer_unsubscribe_int()!=0)
- flag=1;
- return flag;
- }
- int sprite_handler(Sprite* sp,unsigned short x, unsigned short y, unsigned short delay, unsigned short delta, unsigned short hor)
- {
- int irq_set_timer, irq_set_kbd;
- int ipc_status;
- message msg;
- int inc,u;
- int x_s,y_s;
- x_s=x;
- y_s=y;
- u=0;
- if(delta>0)
- {
- inc=1;
- }
- else
- {
- inc=-1;
- }
- int acc = 0;
- int time=delay;
- irq_set_timer = BIT(0);
- irq_set_kbd = BIT(1);
- //Cycle
- while( acc < 60*time)
- {
- if ( driver_receive(ANY, &msg, &ipc_status) != 0 )
- {
- printf("driver_receive failed with: %d", 0);
- continue;
- }
- if (is_ipc_notify(ipc_status)) {
- switch (_ENDPOINT_P(msg.m_source)) {
- case HARDWARE:
- if (msg.NOTIFY_ARG & irq_set_timer)
- {
- if(hor!=0)
- {
- erase_sprite(sp);
- y_s=y_s+1;
- draw_sprite(sp, x_s, y_s);
- }
- else
- {
- erase_sprite(sp);
- x_s=x_s+1;
- draw_sprite(sp, x_s, y_s);
- }
- /*
- erase_sprite(sp);
- x_s=x_s+inc;
- draw_sprite(sp, x_s, y_s);
- */
- acc++;
- }
- if (msg.NOTIFY_ARG & irq_set_kbd)
- {
- return 0;
- }
- break;
- default:
- break;
- }
- } else {
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement