diff options
| author | Simon Robertshaw <simon@HardWIRED-Laptop.localdomain> | 2010-10-30 19:50:36 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@HardWIRED-Laptop.localdomain> | 2010-10-30 19:50:36 (GMT) |
| commit | 457c049f955431c3d0d906b7580e93d629d116dd (patch) | |
| tree | a4b4f7809fac16703e20664a0e42927e039cbe28 /src | |
| parent | de9171c1eb5b9e130b8bf0607d509cbefe042730 (diff) | |
| download | powder-457c049f955431c3d0d906b7580e93d629d116dd.zip powder-457c049f955431c3d0d906b7580e93d629d116dd.tar.gz | |
Functionality finished, tweeks needed
Diffstat (limited to 'src')
| -rw-r--r-- | src/interface.c | 242 |
1 files changed, 165 insertions, 77 deletions
diff --git a/src/interface.c b/src/interface.c index 94b0e8a..10e272c 100644 --- a/src/interface.c +++ b/src/interface.c @@ -33,6 +33,7 @@ int svf_myvote = 0; int svf_publish = 0; char svf_id[16] = ""; char svf_name[64] = ""; +char svf_description[255] = ""; char svf_tags[256] = ""; void *svf_last = NULL; int svf_lsize; @@ -1124,9 +1125,10 @@ finish: int save_name_ui(pixel *vid_buf) { - int x0=(XRES-192)/2,y0=(YRES-68-YRES/4)/2,b=1,bq,mx,my,ths,nd=0; + int x0=(XRES-400)/2,y0=(YRES-68-YRES/4)/2,b=1,bq,mx,my,ths,nd=0; void *th; ui_edit ed; + ui_edit ed2; ui_checkbox cb; th = build_thumb(&ths, 0); @@ -1148,6 +1150,18 @@ int save_name_ui(pixel *vid_buf) ed.cursor = strlen(svf_name); ed.multiline = 0; strcpy(ed.str, svf_name); + + ed2.x = x0+13; + ed2.y = y0+45; + ed2.w = 166; + ed2.h = 85; + ed2.nx = 1; + ed2.def = "[simulation description]"; + ed2.focus = 0; + ed2.hide = 0; + ed2.cursor = strlen(svf_description); + ed2.multiline = 1; + strcpy(ed2.str, svf_description); cb.x = x0+10; cb.y = y0+53+YRES/4; @@ -1162,16 +1176,19 @@ int save_name_ui(pixel *vid_buf) mx /= sdl_scale; my /= sdl_scale; - drawrect(vid_buf, x0, y0, 192, 90+YRES/4, 192, 192, 192, 255); - clearrect(vid_buf, x0, y0, 192, 90+YRES/4); + drawrect(vid_buf, x0, y0, 400, 90+YRES/4, 192, 192, 192, 255); + clearrect(vid_buf, x0, y0, 400, 90+YRES/4); drawtext(vid_buf, x0+8, y0+8, "New simulation name:", 255, 255, 255, 255); drawtext(vid_buf, x0+10, y0+23, "\x82", 192, 192, 192, 255); drawrect(vid_buf, x0+8, y0+20, 176, 16, 192, 192, 192, 255); + + drawrect(vid_buf, x0+8, y0+40, 176, 95, 192, 192, 192, 255); ui_edit_draw(vid_buf, &ed); + ui_edit_draw(vid_buf, &ed2); - drawrect(vid_buf, x0+(192-XRES/4)/2-2, y0+42, XRES/4+3, YRES/4+3, 128, 128, 128, 255); - render_thumb(th, ths, 0, vid_buf, x0+(192-XRES/4)/2, y0+44, 4); + drawrect(vid_buf, x0+(192-XRES/3)/2-2+200, y0+34, XRES/3+3, YRES/3+3, 128, 128, 128, 255); + render_thumb(th, ths, 0, vid_buf, x0+(200-XRES/3)/2+200, y0+36, 3); ui_checkbox_draw(vid_buf, &cb); drawtext(vid_buf, x0+34, y0+50+YRES/4, "Publish? (Do not publish others'\nworks without permission)", 192, 192, 192, 255); @@ -1182,6 +1199,7 @@ int save_name_ui(pixel *vid_buf) sdl_blit(0, 0, (XRES+BARSIZE), YRES+MENUSIZE, vid_buf, (XRES+BARSIZE)); ui_edit_process(mx, my, b, &ed); + ui_edit_process(mx, my, b, &ed2); ui_checkbox_process(mx, my, b, bq, &cb); if(b && !bq && ((mx>=x0+9 && mx<x0+23 && my>=y0+22 && my<y0+36) || @@ -1193,6 +1211,8 @@ int save_name_ui(pixel *vid_buf) nd = strcmp(svf_name, ed.str) || !svf_own; strncpy(svf_name, ed.str, 63); svf_name[63] = 0; + strncpy(svf_description, ed2.str, 254); + svf_description[254] = 0; if(nd) { strcpy(svf_id, ""); @@ -1212,6 +1232,8 @@ int save_name_ui(pixel *vid_buf) nd = strcmp(svf_name, ed.str) || !svf_own; strncpy(svf_name, ed.str, 63); svf_name[63] = 0; + strncpy(svf_description, ed2.str, 254); + svf_description[254] = 0; if(nd) { strcpy(svf_id, ""); @@ -2548,6 +2570,69 @@ finish: return 0; } +int report_ui(pixel* vid_buf, char *save_id) +{ + int b=1,bq,mx,my; + ui_edit ed; + ed.x = 209; + ed.y = 159; + ed.w = (XRES+BARSIZE-400)-18; + ed.h = (YRES+MENUSIZE-300)-36; + ed.nx = 1; + ed.def = "Report details"; + ed.focus = 0; + ed.hide = 0; + ed.multiline = 1; + ed.cursor = 0; + strcpy(ed.str, ""); + + fillrect(vid_buf, -1, -1, XRES+BARSIZE, YRES+MENUSIZE, 0, 0, 0, 192); + while(!sdl_poll()) + { + b = SDL_GetMouseState(&mx, &my); + if(!b) + break; + } + while(!sdl_poll()){ + fillrect(vid_buf, 200, 150, (XRES+BARSIZE-400), (YRES+MENUSIZE-300), 0,0,0, 255); + drawrect(vid_buf, 200, 150, (XRES+BARSIZE-400), (YRES+MENUSIZE-300), 255, 255, 255, 255); + + drawrect(vid_buf, 205, 155, (XRES+BARSIZE-400)-10, (YRES+MENUSIZE-300)-28, 255, 255, 255, 170); + + bq = b; + b = SDL_GetMouseState(&mx, &my); + mx /= sdl_scale; + my /= sdl_scale; + + + drawrect(vid_buf, 200, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 255); + drawtext(vid_buf, 213, (YRES+MENUSIZE-150)-13, "Cancel", 255, 255, 255, 255); + + drawrect(vid_buf, (XRES+BARSIZE-400)+150, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 255); + drawtext(vid_buf, (XRES+BARSIZE-400)+163, (YRES+MENUSIZE-150)-13, "Report", 255, 255, 255, 255); + if(mx>(XRES+BARSIZE-400)+150 && my>(YRES+MENUSIZE-150)-18 && mx<(XRES+BARSIZE-400)+200 && my<(YRES+MENUSIZE-150)){ + fillrect(vid_buf, (XRES+BARSIZE-400)+150, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 40); + if(b){ + if(execute_report(vid_buf, save_id, ed.str)){ + info_ui(vid_buf, "Success", "This save has been reported"); + return 1; + } else { + return 0; + } + } + } + if(mx>200 && my>(YRES+MENUSIZE-150)-18 && mx<250 && my<(YRES+MENUSIZE-150)){ + fillrect(vid_buf, 200, (YRES+MENUSIZE-150)-18, 50, 18, 255, 255, 255, 40); + if(b) + return 0; + } + ui_edit_draw(vid_buf, &ed); + sdl_blit(0, 0, (XRES+BARSIZE), YRES+MENUSIZE, vid_buf, (XRES+BARSIZE)); + ui_edit_process(mx, my, b, &ed); + } + return 0; +} + int open_ui(pixel *vid_buf, char *save_id, char *save_date) { int b=1,bq,mx,my,ca=0,thumb_w,thumb_h,active=0,active_2=0,cc=0,ccy=0,cix=0,hasdrawninfo=0,hasdrawnthumb=0,authoritah=0,myown=0,queue_open=0,data_size=0,retval=0,bc=255,openable=1; @@ -2709,53 +2794,6 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date) drawtext(vid_buf, XRES+BARSIZE-90, YRES+MENUSIZE-63, "Submit", 255, 255, 255, 255); } - if(queue_open) { - if(info_ready && data_ready) { - // Do Open! - status = parse_save(data, data_size, 1, 0, 0); - if(!status) { - //if(svf_last) - //free(svf_last); - svf_last = data; - svf_lsize = data_size; - - svf_open = 1; - svf_own = svf_login && !strcmp(info->author, svf_user); - svf_publish = info->publish && svf_login && !strcmp(info->author, svf_user); - - strcpy(svf_id, save_id); - strcpy(svf_name, info->name); - if(info->tags) - { - strncpy(svf_tags, info->tags, 255); - svf_tags[255] = 0; - } else { - svf_tags[0] = 0; - } - svf_myvote = info->myvote; - retval = 1; - break; - } else { - queue_open = 0; - - svf_open = 0; - svf_publish = 0; - svf_own = 0; - svf_myvote = 0; - svf_id[0] = 0; - svf_name[0] = 0; - svf_tags[0] = 0; - if(svf_last) - free(svf_last); - svf_last = NULL; - error_ui(vid_buf, 0, "An Error Occurred"); - } - } else { - fillrect(vid_buf, -1, -1, XRES+BARSIZE, YRES+MENUSIZE, 0, 0, 0, 190); - drawtext(vid_buf, XRES+BARSIZE/2, XRES+MENUSIZE, "Loading...", 0, 0, 0, 200); - } - } - //Open Button bc = openable?255:150; drawrect(vid_buf, 50, YRES+MENUSIZE-68, 50, 18, 255, 255, 255, bc); @@ -2808,14 +2846,9 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date) fillrect(vid_buf, 150, YRES+MENUSIZE-68, 50, 18, 255, 255, 255, 40); if(b && !bq) { //Button Clicked - if(confirm_ui(vid_buf, "Are you sure?", "Are you sure you wish to report this save?", "Report")){ - fillrect(vid_buf, -1, -1, XRES+BARSIZE, YRES+MENUSIZE, 0, 0, 0, 192); - info_box(vid_buf, "Reporting..."); - if(execute_report(vid_buf, save_id)){ - info_ui(vid_buf, "Success", "This save has been reported"); - retval = 0; - break; - } + if(report_ui(vid_buf, save_id)){ + retval = 0; + break; } } } @@ -2870,17 +2903,69 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date) } if(!(mx>50 && my>50 && mx<XRES+BARSIZE-100 && my<XRES+MENUSIZE-100) && b && !queue_open){ + retval = 0; break; } + if(queue_open) { + if(info_ready && data_ready) { + // Do Open! + status = parse_save(data, data_size, 1, 0, 0); + if(!status) { + //if(svf_last) + //free(svf_last); + svf_last = data; + svf_lsize = data_size; + + svf_open = 1; + svf_own = svf_login && !strcmp(info->author, svf_user); + svf_publish = info->publish && svf_login && !strcmp(info->author, svf_user); + + strcpy(svf_id, save_id); + strcpy(svf_name, info->name); + strcpy(svf_description, info->description); + if(info->tags) + { + strncpy(svf_tags, info->tags, 255); + svf_tags[255] = 0; + } else { + svf_tags[0] = 0; + } + svf_myvote = info->myvote; + retval = 1; + break; + } else { + queue_open = 0; + + svf_open = 0; + svf_publish = 0; + svf_own = 0; + svf_myvote = 0; + svf_id[0] = 0; + svf_name[0] = 0; + svf_description[0] = 0; + svf_tags[0] = 0; + if(svf_last) + free(svf_last); + svf_last = NULL; + error_ui(vid_buf, 0, "An Error Occurred"); + } + } else { + fillrect(vid_buf, -1, -1, XRES+BARSIZE, YRES+MENUSIZE, 0, 0, 0, 190); + drawtext(vid_buf, 50+(XRES/4)-textwidth("Loading...")/2, 50+(YRES/4), "Loading...", 255, 255, 255, 128); + } + } + sdl_blit(0, 0, (XRES+BARSIZE), YRES+MENUSIZE, vid_buf, (XRES+BARSIZE)); memcpy(vid_buf, old_vid, ((XRES+BARSIZE)*(YRES+MENUSIZE))*PIXELSIZE); if(info_ready && svf_login){ ui_edit_process(mx, my, b, &ed); } - if(sdl_key==SDLK_ESCAPE) + if(sdl_key==SDLK_ESCAPE){ + retval = 0; break; + } if(lasttime<TIMEOUT) lasttime++; @@ -3324,24 +3409,26 @@ void execute_save(pixel *vid_buf) int status; char *result; - char *names[] = {"Name", "Data:save.bin", "Thumb:thumb.bin", "Publish", "ID", NULL}; - char *parts[5]; - int plens[5]; + char *names[] = {"Name","Description", "Data:save.bin", "Thumb:thumb.bin", "Publish", "ID", NULL}; + char *parts[6]; + int plens[6]; parts[0] = svf_name; plens[0] = strlen(svf_name); - parts[1] = build_save(plens+1, 0, 0, XRES, YRES); - parts[2] = build_thumb(plens+2, 1); - parts[3] = (svf_publish==1)?"Public":"Private"; - plens[3] = strlen((svf_publish==1)?"Public":"Private"); + parts[1] = svf_description; + plens[1] = strlen(svf_description); + parts[2] = build_save(plens+2, 0, 0, XRES, YRES); + parts[3] = build_thumb(plens+3, 1); + parts[4] = (svf_publish==1)?"Public":"Private"; + plens[4] = strlen((svf_publish==1)?"Public":"Private"); if(svf_id[0]) { - parts[4] = svf_id; - plens[4] = strlen(svf_id); + parts[5] = svf_id; + plens[5] = strlen(svf_id); } else - names[4] = NULL; + names[5] = NULL; result = http_multipart_post( "http://" SERVER "/Save.api", @@ -3351,10 +3438,10 @@ void execute_save(pixel *vid_buf) if(svf_last) free(svf_last); - svf_last = parts[1]; - svf_lsize = plens[1]; + svf_last = parts[2]; + svf_lsize = plens[2]; - free(parts[2]); + free(parts[3]); if(status!=200) { @@ -3460,15 +3547,16 @@ void execute_submit(pixel *vid_buf, char *id, char *message) free(result); } -int execute_report(pixel *vid_buf, char *id) +int execute_report(pixel *vid_buf, char *id, char *reason) { int status; char *result; - char *names[] = {"ID", NULL}; - char *parts[1]; + char *names[] = {"ID", "Reason", NULL}; + char *parts[2]; parts[0] = id; + parts[1] = reason; result = http_multipart_post( "http://" SERVER "/Report.api", |
