int cmd_uptime(char param[]) { unsigned time_tick, up_days, up_hours, up_minutes, up_seconds, up_millisecs; time_tick = kol_time_tick(); up_days = (time_tick/(24*60*60*100)); up_hours = (time_tick/(60*60*100))%24; up_minutes = (time_tick/(60*100))%60; up_seconds = (time_tick/100)%60; up_millisecs = (time_tick*10)%100; #if LANG_ENG printf (" Uptime: %d day(s), %d:%d:%d.%d\n\r", up_days, up_hours, up_minutes, up_seconds, up_millisecs); #elif LANG_RUS printf (" Uptime: %d дней, %d:%d:%d.%d\n\r", up_days, up_hours, up_minutes, up_seconds, up_millisecs); #endif return TRUE; }
void kol_main() { BoardPuts("Hello, Heliothryx!\n"); int err; int version =-1; if((err = InitSound(&version)) !=0 ){ BoardPuts("Sound Error 1\n"); }; if( (SOUND_VERSION>(version&0xFFFF)) || (SOUND_VERSION<(version >> 16))){ BoardPuts("Sound Error 2\n"); } unsigned event; unsigned key; unsigned key_up; unsigned btn, btn_state; unsigned pos, x, y; int gx, gy; //srand(kol_system_time_get()); kol_event_mask(0xC0000027); // mouse and keyboard kol_key_mode_set(1); area_width = 512; area_height = 512; // Initializing variables window_width = FIX_MENUETOS_LEGACY_ONE_PIXEL_BORDER_GAP_BUG + area_width + 10; // 2 x 5px border window_height = FIX_MENUETOS_LEGACY_ONE_PIXEL_BORDER_GAP_BUG + kol_skin_height() + area_height + 5; // bottom 5px border //rs_main_init(); GameInit(); wnd_draw(); fps = 0; unsigned int tick_start = kol_time_tick(); unsigned int tick_current = tick_start; unsigned int tick_last = tick_start; unsigned int fps_counter = 0; int wait_time; int already_drawn = 0; float xf; float xfs; int xfs_i; while (1) { tick_last = tick_current; tick_current = kol_time_tick(); dt = tick_current - tick_last; tick_last = tick_current; already_drawn = 0; while (( event = kol_event_wait_time(1) )) { //while (( event = kol_event_wait() )) { switch (event) { case 1: wnd_draw(); // <--- need to clear event! already_drawn = 1; break; case 2: key = kol_key_get(); key = (key & 0xff00)>>8; key_up = key & 0x80; key = key & 0x7F; if (key_up) { GameKeyUp(key); //rs_app.OnKeyUp(key); } else { GameKeyDown(key); //rs_app.OnKeyDown(key, 1); }; break; case 3: switch ((kol_btn_get() & 0xff00)>>8) { case 1: // close button kol_exit(); case 2: // 'new' button //init_board(); //wnd_draw(); break; } break; case 6: btn = kol_mouse_btn() & 1; // read mouse button (only left) pos = kol_mouse_posw(); // read mouse position x = pos / 65536; y = pos % 65536; /*if (x > window_width) x=0; if (y > window_height) y=0;*/ if (btn && (!btn_state)) { //rs_app.OnMouseDown(x,y); GameMouseDown(x, y); BoardPuts("MouseDown!\n"); } else if ( (!btn) && btn_state ) { //rs_app.OnMouseUp(x,y); GameMouseUp(x, y); } else { //GameMouseMove(x, y); }; btn_state = btn; break; } }; if (!already_drawn) { wnd_draw(); }; fps_counter++; tick_current = kol_time_tick(); if (tick_current > tick_start+100) { fps = fps_counter; fps_counter = 0; tick_start += 100; }; draw_dt = tick_current - tick_last; wait_time = (100/GAME_REQUIRED_FPS) - draw_dt; if (wait_time <= 0) { wait_time = 1; }; kol_sleep(wait_time); } GameTerm(); kol_exit(); }