int main(int argc, char **argv) { DARNIT_KEYS keys; DARNIT_MOUSE mouse; //particle_emitter_new(30, 5000, 8000, 10000, 255, 0, 0, PARTICLE_TYPE_PULSE, 400, 240, 0, -100, 100); //particle_emitter_new(30, 5000, 8000, 10000, 255, 255, 0, PARTICLE_TYPE_PULSE, 400, 240, 0, -100, 100); init(); gamestate(GAMESTATE_MENU); while(_gamestate!=GAMESTATE_QUIT) { keys=d_keys_get(); mouse=d_mouse_get(); if(handle[_gamestate]) handle[_gamestate](&keys, &mouse); d_render_begin(); if(render[_gamestate]) render[_gamestate](); d_render_end(); d_loop(); } d_quit(); return 0; }
void do_stuff(DARNIT_TEXT_SURFACE *textplace){ DARNIT_MOUSE mus = d_mouse_get(); //Calling a function which gives us various mouse data. d_text_surface_string_append(textplace, " X: "); //"Printing" stuff. (Adds text to the text object.) char femton[256]; sprintf(femton, "%i", mus.x); //Converts the mouse x-coordinate to printable text. d_text_surface_string_append(textplace, femton); //Prints said x-coordinate. sprintf(femton, "%i", mus.y); d_text_surface_string_append(textplace, " Y: "); d_text_surface_string_append(textplace, femton); //Converts and prints Y-coordinate. if((((looked.x - 75) < mus.x) && (mus.x < (looked.x + 75))) && (((looked.y - 75) < mus.y) && (mus.y < (looked.y + 75)))){ //We check to see if the mouse is within distance //of the saved point. //If it passes this check we count another frame. looked.frames_looked = looked.frames_looked + 1; if(stickyness < looked.frames_looked){ //Then, if we've looked at the same area for 100 frames... click(looked.x, looked.y, textplace); //And call the click function, clicking the point //from which we defined the area. } } else{ //If we are outside of the area we first looked at, //we'll set the new area of looking to the point where //the mouse is, and set the frames looked to 0. looked.frames_looked = 0; looked.x = mus.x; looked.y = mus.y; } d_text_surface_draw(textplace); //Then we call the function which draws the textobject we've //appended our text to. }
void ui_events(struct UI_PANE_LIST *panes, int render) { //override for dialogues such as message boxes. if(ui_panelist_dialogue.pane) { ui_panelist_render(panes); panes=&ui_panelist_dialogue; } UI_EVENT e; UI_EVENT_MOUSE e_m; UI_EVENT_BUTTONS e_b; UI_EVENT_UI e_u; static UI_EVENT_KEYBOARD e_k={0, 0, 0}, e_k_repeat={0, 0, 0}; static int repeat=0; DARNIT_KEYS buttons; buttons=d_keys_get(); memcpy(&e_b, &buttons, sizeof(UI_EVENT_BUTTONS)); DARNIT_MOUSE mouse; mouse=d_mouse_get(); e_m.x=mouse.x; e_m.y=mouse.y; e_m.buttons=(mouse.lmb)|(mouse.rmb<<2); e_m.wheel=mouse.wheel; int key_action=0; DARNIT_KEY_RAW rawkey=d_key_raw_pop(); key_action=rawkey.action; e_k.keysym=rawkey.keysym; switch(e_k.keysym) { case KEY(LCTRL): SETMOD(LCTRL); break; case KEY(RCTRL): SETMOD(RCTRL); break; case KEY(LSHIFT): SETMOD(LSHIFT); break; case KEY(RSHIFT): SETMOD(RSHIFT); break; case KEY(LALT): SETMOD(LALT); break; case KEY(RALT): SETMOD(RALT); break; case KEY(LSUPER): SETMOD(LSUPER); break; case KEY(RSUPER): SETMOD(RSUPER); break; } e_k.character=rawkey.unicode; e.keyboard=&e_k; if(ui_selected_widget) { //Keyboard events for selected widget if(e_k_repeat.character||e_k_repeat.keysym==8) { if(repeat>KEYBOARD_REPEAT_DELAY&&!((repeat-KEYBOARD_REPEAT_DELAY)%KEYBOARD_REPEAT_SPEED)) { UI_EVENT e_repeat={.keyboard=&e_k_repeat}; ui_selected_widget->event_handler->send(ui_selected_widget, UI_EVENT_TYPE_KEYBOARD_PRESS, &e_repeat); } repeat++; } if(key_action==DARNIT_KEYACTION_PRESS) { if(e_k.character||e_k.keysym==8) { e_k_repeat=e_k; repeat=0; } ui_selected_widget->event_handler->send(ui_selected_widget, UI_EVENT_TYPE_KEYBOARD_PRESS, &e); } else if(key_action==DARNIT_KEYACTION_RELEASE) { if(e_k.keysym==e_k_repeat.keysym) { e_k_repeat.character=0; e_k_repeat.keysym=0; e_k_repeat.modifiers=0; repeat=0; } ui_selected_widget->event_handler->send(ui_selected_widget, UI_EVENT_TYPE_KEYBOARD_RELEASE, &e); } } else {
int main(int argc, char **argv) { int i, j, js0_x, js0_y, js1_x, js1_y; void *font, *surface, *text, *mapsheet, *sprite, *textinput, *mtsprite, *fps_text, *tilebuf, *fancy_text; void *music; char test[256], fps[16]; char *test_text; DARNIT_MOUSE mouse; DARNIT_KEYS keys; DARNIT_MAP *map; DARNIT_SPRITE *mapsprite; if (!d_init("TESTAPP - libDarnit", "testapp", NULL)) return -1; compression_test(); /* Sound/music */ music = d_sound_tracked_load("latyl-greasy_duck_v1.mod", DARNIT_AUDIO_STREAM, DARNIT_AUDIO_STEREO); d_sound_play(music, 0, 127, 127, 0); /* Text rendering */ test_text = malloc(64); font = d_font_load("dejavu_sans.ttf", 28, 512, 512); text = d_text_surface_new(font, 80, 800, 0, 460); fancy_text = d_text_surface_color_new(font, 16, 800, 0, 420); colorTest(fancy_text); fps_text = d_text_surface_new(font, 16, 200, 0, 40); /* Menutk test */ surface = d_menu_vertical_new("Hello\nGoodbye\nOther\nNothing\nLess than nothing", 50, 100, font, 200, 10, 3); sprintf(test_text, "Héllo, world. Modify m€! Test of offsets"); textinput = d_menu_textinput_new(0, 0, font, test_text, 64, 200); /* Sprites */ sprite = d_sprite_load("test.spr", 0, DARNIT_PFORMAT_RGB5A1); mapsprite = d_sprite_load("baurn.spr", 0, DARNIT_PFORMAT_RGB5A1); d_sprite_move(sprite, 50, 50); d_sprite_move(mapsprite, 0, 0); d_sprite_animate_start(sprite); d_sprite_animate_start(mapsprite); mtsprite = d_mtsprite_load("testspr.mts"); d_mtsprite_animate_start(mtsprite); /* Maps */ mapsheet = d_render_tilesheet_load("mapsheet.png", 32, 32, DARNIT_PFORMAT_RGBA8); if ((map = d_map_load("testmap_iso.ldmz")) == NULL) fprintf(stderr, "Map load failed\n"); d_tilemap_sprite_add(map->layer[0].tilemap, mapsprite); /* Tile caches */ tilebuf = d_render_tile_new(1, mapsheet); d_render_tile_move(tilebuf, 0, 64, 64); d_render_tile_tilesheet_coord_set(tilebuf, 0, 16, 16, 32, 32); /* Misc */ fprintf(stderr, "String lenght: %i\n", d_font_string_w(font, "ASDFÅÄÖ,,")); for (i = j = 0;;) { d_sprite_move(mapsprite, 64, j * 4); keys = d_keys_get(); d_text_surface_reset(text); d_text_surface_reset(fps_text); mouse = d_mouse_get(); d_joystick_get(&js0_x, &js0_y, &js1_x, &js1_y); sprintf(test, "X: %i, Y: %i, W: %i;; TX: %i, TY: %i;; nub0 (%i,%i) ;; nub1(%i,%i)", mouse.x, mouse.y, mouse.wheel, i*4, j*4, js0_x, js0_y, js1_x, js1_y); sprintf(fps, "%i", d_last_frame_time()); d_text_surface_string_append(text, test); d_text_surface_string_append(fps_text, "ASDFÅÄÖ,,"); if (keys.lmb) d_render_fade_in(1000, 1.0f, 0.0f, 0.0f); if (keys.rmb) d_render_fade_out(1000); d_render_begin(); if (keys.left == 1) i--; if (keys.right == 1) i++; if (keys.up == 1) j--; if (keys.down == 1) j++; if (keys.select) fprintf(stderr, "Blololol\n"); if (keys.r == 1) d_tilemap_camera_move(map->layer->tilemap, i*4, j*4); d_render_blend_enable(); d_tilemap_draw(map->layer->tilemap); if (keys.l == 1) if (d_menu_loop(surface) != -1) return 0; d_menu_loop(textinput); d_sprite_draw(sprite); d_text_surface_draw(text); d_text_surface_draw(fancy_text); d_text_surface_draw(fps_text); d_render_offset(-200, -200); d_mtsprite_draw(mtsprite); d_render_offset(0, 0); d_render_blend_disable(); d_render_tile_draw(tilebuf, 1); d_render_end(); d_loop(); } return 0; }
void game_view_buttons(UI_WIDGET *widget, unsigned int type, UI_EVENT *e) { int scroll_x=0, scroll_y=0; int screen_w=platform.screen_w, screen_h=platform.screen_h; //darnit buttons have no press or release events, we have to handle this ourselves //View movement if(!chat_is_visible(&panelist_game_sidebar)) { if(e->buttons->left&&map->cam_x>-((screen_w-sidebar_width)/2)) scroll_x=-SCROLL_SPEED; else if(e->buttons->right&&map->cam_x<map_w-(screen_w-sidebar_width)/2) scroll_x=SCROLL_SPEED; if(e->buttons->up&&map->cam_y>-(screen_h)/2) scroll_y=-SCROLL_SPEED; else if(e->buttons->down&&map->cam_y<map_h-screen_h/2) scroll_y=SCROLL_SPEED; if(e->buttons->l) { scroll_x*=2; scroll_y*=2; } if(scroll_x||scroll_y) { d_map_camera_move(map, map->cam_x+scroll_x, map->cam_y+scroll_y); map_minimap_update_viewport(); } } if(!(platform.platform&DARNIT_PLATFORM_MAEMO)||e->buttons->select) { //Interaction keys if(e->buttons->start&&!prevbuttons.start) game_state(GAME_STATE_GAME_MENU); if(e->buttons->a&&!prevbuttons.a) chat_toggle(&panelist_game_sidebar); if(e->buttons->b&&!prevbuttons.b) { if(building_place>-1) { building_place=-1; } else if(map_selected_building()) { client_message_send(player_id, MSG_SEND_PLACE_BUILDING, BUILDING_NONE, map_selected_index(), NULL); map_select_nothing(); } } if(e->buttons->x&&!prevbuttons.x) { DARNIT_MOUSE m=d_mouse_get(); UI_EVENT_MOUSE e_m={ 0, 0, UI_EVENT_MOUSE_BUTTON_LEFT, 0, }; e_m.x=m.x; e_m.y=m.y; UI_EVENT e={.mouse=&e_m}; ui_event_global_send(UI_EVENT_TYPE_MOUSE_PRESS, &e); } if(e->buttons->y&&!prevbuttons.y) { if(building_place==-1&&ability_place==0) { int selected_building=map_selected_building(); if(attacker_target) attacker_target=0; else if(map_selected_owner()==player_id&&(selected_building==BUILDING_ATTACKER||selected_building==BUILDING_SCOUT)) attacker_target=1; } } }