Skip to content

Commit 4fa504b

Browse files
committed
Refactor chess.c for new event system
1 parent ef23245 commit 4fa504b

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

ncc/examples/chess.c

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//
88

99
#include <uvm/syscalls.h>
10-
#include <uvm/utils.h>
10+
#include <uvm/window.h>
1111
#include <stdlib.h>
1212
#include <string.h>
1313
#include <stdio.h>
@@ -429,7 +429,7 @@ void computer_callback()
429429
X(0,0,0,21,u,1);
430430
}
431431

432-
void anim_callback()
432+
void draw_board()
433433
{
434434
if (left_key) {
435435
left_key = false;
@@ -473,7 +473,10 @@ void anim_callback()
473473
X(0,0,0,21,u,1);
474474
selected = 0;
475475
if (y != prev_turn) {
476-
time_delay_cb(100, computer_callback);
476+
// Draw the newly moved piece
477+
draw_board();
478+
// Let the computer do its move
479+
computer_callback();
477480
}
478481
}
479482
}
@@ -566,10 +569,9 @@ void anim_callback()
566569
}
567570

568571
window_draw_frame(0, frame_buffer);
569-
time_delay_cb(33, anim_callback);
570572
}
571573

572-
void keydown(u64 window_id, u16 keycode)
574+
void keydown(u16 keycode)
573575
{
574576
if (keycode == KEY_LEFT)
575577
{
@@ -593,7 +595,7 @@ void keydown(u64 window_id, u16 keycode)
593595
}
594596
}
595597

596-
void keyup(u64 window_id, u16 keycode)
598+
void keyup(u16 keycode)
597599
{
598600
if (keycode == KEY_LEFT)
599601
{
@@ -617,15 +619,35 @@ void keyup(u64 window_id, u16 keycode)
617619
}
618620
}
619621

622+
Event event;
623+
620624
void main()
621625
{
622626
init();
623627

624628
window_create(FRAME_WIDTH, FRAME_HEIGHT, "Toledo Nanochess for UVM", 0);
625-
window_on_keydown(0, keydown);
626-
window_on_keyup(0, keyup);
627629

628-
time_delay_cb(0, anim_callback);
630+
draw_board();
631+
632+
for (;;)
633+
{
634+
window_wait_event(&event);
629635

630-
enable_event_loop();
636+
if (event.kind == EVENT_QUIT)
637+
{
638+
exit(0);
639+
}
640+
641+
if (event.kind == EVENT_KEYDOWN)
642+
{
643+
keydown(event.key);
644+
}
645+
646+
if (event.kind == EVENT_KEYUP)
647+
{
648+
keyup(event.key);
649+
}
650+
651+
draw_board();
652+
}
631653
}

0 commit comments

Comments
 (0)