summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-11-18 14:58:09 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-11-18 14:58:09 (GMT)
commit394a0e9ee0efc6a76cd10df17bad571980c7206c (patch)
tree2b41e5a5a0eaba085265aca2c74237556d99b31a /src
parentd94914040bb451365b24174dbfca15072832c7ba (diff)
parentaac78386ffac946217f1b9e5f8ad618372583e20 (diff)
downloadpowder-394a0e9ee0efc6a76cd10df17bad571980c7206c.zip
powder-394a0e9ee0efc6a76cd10df17bad571980c7206c.tar.gz
Merge branch 'master' of github.com:FacialTurd/The-Powder-Toy
Diffstat (limited to 'src')
-rw-r--r--src/interface.c94
1 files changed, 85 insertions, 9 deletions
diff --git a/src/interface.c b/src/interface.c
index 64d9ab9..44d2ad9 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -584,6 +584,59 @@ void ui_checkbox_process(int mx, int my, int mb, int mbq, ui_checkbox *ed)
}
}
+void ui_radio_draw(pixel *vid_buf, ui_checkbox *ed)
+{
+ if (ed->checked)
+ {
+ int count;
+ for(count=0; count<=2; count++)
+ {
+ blendpixel(vid_buf, ed->x+3+count, ed->y+4, 255, 255, 255, 255);
+ blendpixel(vid_buf, ed->x+4, ed->y+3+count, 255, 255, 255, 255);
+ }
+ }
+ if (ed->focus)
+ {
+ int nx, ny;
+ for(nx=-3; nx<=3; nx++)
+ for(ny=-3; ny<=3; ny++)
+ if((nx*nx+ny*ny)<14 && (nx*nx+ny*ny)>7)
+ blendpixel(vid_buf, ed->x+4+nx, ed->y+4+ny, 255, 255, 255, 255);
+ }
+ else
+ {
+ int nx, ny;
+ for(nx=-3; nx<=3; nx++)
+ for(ny=-3; ny<=3; ny++)
+ if((nx*nx+ny*ny)<14 && (nx*nx+ny*ny)>7)
+ blendpixel(vid_buf, ed->x+4+nx, ed->y+4+ny, 128, 128, 128, 255);
+ }
+}
+
+void ui_radio_process(int mx, int my, int mb, int mbq, ui_checkbox *ed)
+{
+ int w = 7;
+
+ if (mb && !mbq)
+ {
+ if (mx>=ed->x && mx<=ed->x+w && my>=ed->y && my<=ed->y+w)
+ {
+ ed->checked = (ed->checked)?0:1;
+ }
+ }
+ else
+ {
+ if (mx>=ed->x && mx<=ed->x+w && my>=ed->y && my<=ed->y+w)
+ {
+ ed->focus = 1;
+ }
+ else
+ {
+ ed->focus = 0;
+ }
+ }
+}
+
void ui_copytext_draw(pixel *vid_buf, ui_copytext *ed)
{
int g = 180, i = 0;
@@ -6256,8 +6309,8 @@ void render_ui(pixel * vid_buf, int xcoord, int ycoord, int orientation)
colour_cb = calloc(colour_optioncount, sizeof(ui_checkbox));
for(i = 0; i < colour_optioncount; i++)
{
- colour_cb[i].x = (xcoffset * 0) + xcoord + (i * xoffset) + 5;
- colour_cb[i].y = ycoord + (i * yoffset) + 5;
+ colour_cb[i].x = (xcoffset * 0) + xcoord + (i * xoffset) + 9;
+ colour_cb[i].y = ycoord + (i * yoffset) + 8;
colour_cb[i].focus = 0;
colour_cb[i].checked = 0;
j = 0;
@@ -6290,7 +6343,18 @@ void render_ui(pixel * vid_buf, int xcoord, int ycoord, int orientation)
for(i = 0; i < display_optioncount; i++)
{
display_cb[i].x = (xcoffset * 2) + xcoord + (i * xoffset) + 5;
- display_cb[i].y = ycoord + (i * yoffset) + 5;
+
+ if(display_options[i] & DISPLAY_AIR)
+ {
+ display_cb[i].x = (xcoffset * 2) + xcoord + (i * xoffset) + 9;
+ display_cb[i].y = ycoord + (i * yoffset) + 8;
+ }
+ else
+ {
+ display_cb[i].x = (xcoffset * 2) + xcoord + (i * xoffset) + 5;
+ display_cb[i].y = ycoord + (i * yoffset) + 5;
+ }
+
display_cb[i].focus = 0;
display_cb[i].checked = 0;
j = 0;
@@ -6338,9 +6402,21 @@ void render_ui(pixel * vid_buf, int xcoord, int ycoord, int orientation)
for(i = 0; i < display_optioncount; i++)
{
- drawIcon(vid_buf, display_cb[i].x + 16, display_cb[i].y+2, display_optionicons[i]);
- ui_checkbox_draw(vid_buf, &(display_cb[i]));
- ui_checkbox_process(mx, my, b, bq, &(display_cb[i]));
+ if(display_options[i] & DISPLAY_AIR)
+ drawIcon(vid_buf, display_cb[i].x + 12, display_cb[i].y-1, display_optionicons[i]);
+ else
+ drawIcon(vid_buf, display_cb[i].x + 16, display_cb[i].y+2, display_optionicons[i]);
+
+ if(display_options[i] & DISPLAY_AIR)
+ {
+ ui_radio_draw(vid_buf, &(display_cb[i]));
+ ui_radio_process(mx, my, b, bq, &(display_cb[i]));
+ }
+ else
+ {
+ ui_checkbox_draw(vid_buf, &(display_cb[i]));
+ ui_checkbox_process(mx, my, b, bq, &(display_cb[i]));
+ }
if(display_cb[i].checked && (display_options[i] & DISPLAY_AIR)) //One air type only
{
for(j = 0; j < display_optioncount; j++)
@@ -6357,9 +6433,9 @@ void render_ui(pixel * vid_buf, int xcoord, int ycoord, int orientation)
for(i = 0; i < colour_optioncount; i++)
{
- drawIcon(vid_buf, colour_cb[i].x + 16, colour_cb[i].y+2, colour_optionicons[i]);
- ui_checkbox_draw(vid_buf, &(colour_cb[i]));
- ui_checkbox_process(mx, my, b, bq, &(colour_cb[i]));
+ drawIcon(vid_buf, colour_cb[i].x + 12, colour_cb[i].y-1, colour_optionicons[i]);
+ ui_radio_draw(vid_buf, &(colour_cb[i]));
+ ui_radio_process(mx, my, b, bq, &(colour_cb[i]));
if(colour_cb[i].checked) //One colour only
{
for(j = 0; j < colour_optioncount; j++)