mirror of
https://github.com/quelsolaar/MergeSource
synced 2025-02-08 11:08:41 -05:00
956 lines
44 KiB
C
956 lines
44 KiB
C
#include <math.h>
|
|
#include <stdlib.h>
|
|
#include "seduce.h"
|
|
#include "s_draw_3d.h"
|
|
|
|
|
|
#define SEDUCE_WIDGET_LIST_ELEMENT_SIZE 0.02
|
|
#define SEDUCE_WIDGET_LIST_SPACING 0.01
|
|
#define SEDUCE_WIDGET_LIST_MARGIN 0.1
|
|
|
|
float seduce_widget_list_element_size(SeducePanelElement *element, float time, float *left)
|
|
{
|
|
switch(element->type)
|
|
{
|
|
case SEDUCE_PET_BOOLEAN :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_TRIGGER :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_INTEGER :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75 + 0.1;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
case SEDUCE_PET_UNSIGNED_INTEGER :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75 + 0.1;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
case SEDUCE_PET_INTEGER_BOUND :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75 + 0.1;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
case SEDUCE_PET_REAL :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75 + 0.1;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
case SEDUCE_PET_REAL_BOUND :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_RADIUS :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_2D_POS :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_3D_POS :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3;
|
|
break;
|
|
case SEDUCE_PET_4D_POS :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3;
|
|
break;
|
|
case SEDUCE_PET_QUATERNION :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_2D_NORMAL :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2;
|
|
break;
|
|
case SEDUCE_PET_3D_NORMAL :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_2X2MATRIX :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2;
|
|
break;
|
|
case SEDUCE_PET_3X3MATRIX :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_4X4MATRIX :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_TEXT :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75 + 0.2;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
case SEDUCE_PET_PASSWORD :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75 + 0.2;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
case SEDUCE_PET_TEXT_BUFFER :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_COLOR_RGB :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 4.5 + 0.05;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 4.5;
|
|
break;
|
|
case SEDUCE_PET_COLOR_RGBA :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 6 + 0.05;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 6;
|
|
break;
|
|
case SEDUCE_PET_TIME :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_DATE :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_SELECT :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_POPUP :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_IMAGE :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_SECTION_START :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_SECTION_END :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_CUSTOM :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE;
|
|
break;
|
|
case SEDUCE_PET_OK_CANCEL :
|
|
*left = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
return SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
void seduce_widget_list_text_line(SeduceLineObject *object, float x, float y, float size, float length, float *color, float time)
|
|
{
|
|
size *= 0.5;
|
|
y -= size;
|
|
seduce_primitive_circle_add_3d(object,
|
|
x + length, y, 0,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
size,
|
|
0, 0.5,
|
|
size, size,
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
seduce_primitive_circle_add_3d(object,
|
|
x, y, 0,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
size,
|
|
0.5, 0.5,
|
|
size, size,
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
seduce_primitive_line_add_3d(object,
|
|
x + length, y + size, 0,
|
|
x, y + size, 0,
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
seduce_primitive_line_add_3d(object,
|
|
x + length, y - size, 0,
|
|
x, y - size, 0,
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
|
|
}
|
|
|
|
void seduce_widget_list_done_func(void *user, char *text)
|
|
{
|
|
uint i;
|
|
char *t;
|
|
t = user;
|
|
for(i = 0; text[i] != 0 && i < 64 - 1; i++)
|
|
t[i] = text[i];
|
|
t[i] = 0;
|
|
}
|
|
|
|
uint seduce_widget_list(BInputState *input, void *id, SeducePanelElement *elements, uint element_count, float time, char *title, float *color, float *background_color, SeduceWidgetListStyle style)
|
|
{
|
|
SeduceLineObject *object;
|
|
float y_text, y_widget, f, length, margin, text_size = 0, element_width, element_right, element_left, element_size, c[4] = {0.0, 0.0, 0.0, 1}, *text_color, space_time, vec[2];
|
|
uint8 *id_fragmented;
|
|
uint i;
|
|
|
|
float size = SEDUCE_T_SIZE;
|
|
|
|
if(color == NULL)
|
|
color = c;
|
|
text_color = color;
|
|
length = 0;
|
|
if(time < 0.0001)
|
|
return -1;
|
|
element_left = element_right = 0.0;
|
|
for(i = 0; i < element_count; i++)
|
|
{
|
|
element_size = seduce_widget_list_element_size(&elements[i], time, &element_width);
|
|
if(element_left < element_size)
|
|
element_left = element_size;
|
|
if(element_right < element_width)
|
|
element_right = element_width;
|
|
length += element_size + SEDUCE_WIDGET_LIST_SPACING;
|
|
f = seduce_text_line_length(NULL, SEDUCE_T_SIZE, SEDUCE_T_SPACE, elements[i].text, -1) + element_size * 0.5 + SEDUCE_T_SIZE * 2;
|
|
if(f > text_size)
|
|
text_size = f;
|
|
}
|
|
element_left *= 0.5;
|
|
length -= SEDUCE_WIDGET_LIST_SPACING;
|
|
margin = SEDUCE_WIDGET_LIST_MARGIN;
|
|
if(title != NULL)
|
|
{
|
|
if(background_color != NULL)
|
|
length += margin * 0.5 + SEDUCE_T_SIZE * 1.5;
|
|
else
|
|
length += SEDUCE_WIDGET_LIST_SPACING + SEDUCE_T_SIZE * 1.5;
|
|
}
|
|
time = f_smooth_stepf(time);
|
|
y_text = length / 2.0;
|
|
y_widget = length / 2.0 * time;
|
|
color[0] *= time;
|
|
color[1] *= time;
|
|
color[2] *= time;
|
|
color[3] *= time;
|
|
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_primitive_line_color_set(0, 0, 0, 0, 0, 0, 0, 0, 0);
|
|
seduce_primitive_line_focal_depth_set(1.0);
|
|
seduce_primitive_line_animation_set(0, 0, 0.01, time, 1.0);
|
|
if(background_color != NULL)
|
|
{
|
|
SeduceBackgroundObject *object;
|
|
object = seduce_background_object_allocate();
|
|
r_matrix_push(NULL);
|
|
if(style == SEDUCE_WLS_PANEL)
|
|
{
|
|
margin = SEDUCE_WIDGET_LIST_MARGIN;
|
|
seduce_background_shadow_square_add(object,
|
|
-text_size - margin, length * -0.5 - margin,
|
|
text_size + element_right + 2.0 * margin, length + 2.0 * margin, 0.03);
|
|
seduce_background_square_add(object, id, 0,
|
|
-text_size - margin, length * -0.5 - margin, 0,
|
|
text_size + element_right + 2.0 * margin, length + 2.0 * margin,
|
|
background_color[0], background_color[1], background_color[2], background_color[3]);
|
|
}else
|
|
{
|
|
margin = SEDUCE_WIDGET_LIST_SPACING;
|
|
seduce_background_shadow_square_add(object,
|
|
-element_left - margin, length * -0.5 - margin,
|
|
element_left + element_right + 2.0 * margin, length + 2.0 * margin, 0.03);
|
|
seduce_background_square_add(object, id, 0,
|
|
-element_left - margin, length * -0.5 - margin, 0,
|
|
element_left + element_right + 2.0 * margin, length + 2.0 * margin,
|
|
background_color[0], background_color[1], background_color[2], background_color[3]);
|
|
}
|
|
seduce_primitive_surface_draw(input, object, time);
|
|
seduce_primitive_background_object_free(object);
|
|
r_matrix_pop(NULL);
|
|
}
|
|
|
|
/* f = 0;
|
|
for(i = 0; i < element_count; i++)
|
|
{
|
|
f_wiggle2df(vec, (float)i * 3.0 + input->minute_time * 6.0, 0.2);
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, vec[0] * length * 2.0, 0,
|
|
0, 0, 1,
|
|
0, 1, 0,
|
|
vec[1] * 0.5 + 0.1,
|
|
0, 1,
|
|
vec[0], vec[1] * 10.0,
|
|
color[0] * 0.2, color[1] * 0.2, color[2] * 0.2, color[3] * 0.2,
|
|
color[0] * 0.2, color[1] * 0.2, color[2] * 0.2, color[3] * 0.2);
|
|
}*/
|
|
}
|
|
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_element_add_rectangle(input, id, 0, -SEDUCE_WIDGET_LIST_SPACING, length / -2.0, SEDUCE_WIDGET_LIST_SPACING * 2.0, length);
|
|
object = seduce_primitive_line_object_allocate();
|
|
if(title != NULL)
|
|
{
|
|
if(background_color != NULL)
|
|
seduce_text_line_draw(NULL, ((element_right - text_size) - seduce_text_line_length(NULL, SEDUCE_T_SIZE * 1.5, SEDUCE_T_SPACE * 6.0, title, -1)) * 0.5, y_text, SEDUCE_T_SIZE * 1.5, SEDUCE_T_SPACE * 6.0, title, color[0], color[1], color[2], color[3], -1);
|
|
else
|
|
seduce_text_line_draw(NULL, seduce_text_line_length(NULL, SEDUCE_T_SIZE * 1.5, SEDUCE_T_SPACE * 6.0, title, -1) * -0.5, y_text, SEDUCE_T_SIZE * 1.5, SEDUCE_T_SPACE * 6.0, title, color[0], color[1], color[2], color[3], -1);
|
|
}
|
|
/*
|
|
f = seduce_text_line_length(NULL, 1.0, SEDUCE_T_SPACE * 3.0, title, -1);
|
|
r_matrix_push(NULL);
|
|
r_matrix_rotate(NULL, 90, 0, 0, 1);
|
|
r_matrix_translate(NULL, 0, 0, -0.05);
|
|
seduce_text_line_draw(NULL, length * -0.5, 0.05, length / f, SEDUCE_T_SPACE * 3.0, title, color[2] * 0.2, color[0] * 0.2, color[1] * 0.2, 0.0, -1);
|
|
|
|
r_matrix_pop(NULL);*/
|
|
}
|
|
if(title != NULL)
|
|
{
|
|
if(background_color != NULL)
|
|
{
|
|
y_text -= margin * 0.5 + SEDUCE_T_SIZE * 1.5;
|
|
y_widget -= margin * 0.5 + SEDUCE_T_SIZE * 1.5;
|
|
}else
|
|
{
|
|
y_text -= SEDUCE_WIDGET_LIST_SPACING + SEDUCE_T_SIZE * 1.5;
|
|
y_widget -= SEDUCE_WIDGET_LIST_SPACING + SEDUCE_T_SIZE * 1.5;
|
|
}
|
|
}
|
|
|
|
for(i = 0; i < element_count; i++)
|
|
{
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_tool_tip(input, &elements[i], elements[i].text, elements[i].description);
|
|
element_size = seduce_widget_list_element_size(&elements[i], time, &element_width);
|
|
switch(elements[i].type)
|
|
{
|
|
case SEDUCE_PET_BOOLEAN :
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
if(elements[i].param.active)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.3 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
}
|
|
if(seduce_widget_button_invisible(input, &elements[i], 0, y_widget - element_size * 0.5, element_size, TRUE))
|
|
{
|
|
elements[i].param.active = !elements[i].param.active;
|
|
return i;
|
|
}
|
|
break;
|
|
case SEDUCE_PET_TRIGGER :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
elements[i].param.trigger = seduce_widget_button_invisible(input, &elements[i], 0, y_widget - element_size * 0.5, element_size, TRUE);
|
|
if(elements[i].param.trigger)
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_INTEGER :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_widget_list_text_line(object, 0, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, 0.1, color, time);
|
|
if(S_TIS_DONE == seduce_text_edit_int(input, &elements[i], NULL, &elements[i].param.integer, 0, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_UNSIGNED_INTEGER :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_widget_list_text_line(object, 0, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, 0.1, color, time);
|
|
if(S_TIS_DONE == seduce_text_edit_uint(input, &elements[i], NULL, &elements[i].param.uinteger, 0, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_INTEGER_BOUND :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_widget_list_text_line(object, 0, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, 0.1, color, time);
|
|
if(S_TIS_DONE == seduce_text_edit_int(input, &elements[i], NULL, &elements[i].param.integer, 0, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_REAL :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_widget_list_text_line(object, 0, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, 0.1, color, time);
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &elements[i], NULL, &elements[i].param.real.value, 0, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_REAL_BOUND :
|
|
f = elements[i].param.real.value;
|
|
if(seduce_widget_slider_radial(input, &elements[i], &f, 0, y_text - element_size * 0.5, element_size, 1, elements[i].param.real.min, elements[i].param.real.max, time, color) && input->mode == BAM_EVENT)
|
|
{
|
|
elements[i].param.real.value = f;
|
|
return i;
|
|
}
|
|
break;
|
|
case SEDUCE_PET_RADIUS :
|
|
f = elements[i].param.real.value;
|
|
if(seduce_widget_slider_radius(input, &elements[i], &f, 0, y_text - element_size * 0.5, element_size, time, color) && input->mode == BAM_EVENT)
|
|
{
|
|
elements[i].param.real.value = f;
|
|
return i;
|
|
}
|
|
break;
|
|
case SEDUCE_PET_2D_POS :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_3D_POS :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_4D_POS :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_QUATERNION :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_2D_NORMAL :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_3D_NORMAL :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_2X2MATRIX :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_3X3MATRIX :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_4X4MATRIX :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_TEXT :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_widget_list_text_line(object, 0, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, 0.2, color, time);
|
|
if(S_TIS_DONE == seduce_text_edit_line(input, &elements[i], NULL, elements[i].param.text, 64, 0, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.2, SEDUCE_T_SIZE, "", TRUE, seduce_widget_list_done_func, elements[i].param.text, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_PASSWORD :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_widget_list_text_line(object, 0, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, 0.2, color, time);
|
|
if(S_TIS_DONE == seduce_text_edit_obfuscated(input, &elements[i], elements[i].param.text, 64, 0, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.2, SEDUCE_T_SIZE, "", TRUE, seduce_widget_list_done_func, elements[i].param.text, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
return i;
|
|
break;
|
|
case SEDUCE_PET_TEXT_BUFFER :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_COLOR_RGB :
|
|
case SEDUCE_PET_COLOR_RGBA :
|
|
{
|
|
float x_rot, y_rot, f;
|
|
double d, radius, widget_count;
|
|
if(elements[i].type == SEDUCE_PET_COLOR_RGB)
|
|
{
|
|
widget_count = 5;
|
|
radius = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.25;
|
|
}else
|
|
{
|
|
widget_count = 6;
|
|
radius = SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.75;
|
|
}
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
|
|
id_fragmented = (uint8 *)&elements[i];
|
|
x_rot = sin((float)0 / widget_count * PI * 2.0) * radius;
|
|
y_rot = cos((float)0 / widget_count * PI * 2.0) * radius + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7;
|
|
if(seduce_widget_color_triangle_radial(input, &id_fragmented[0], elements[i].param.color, x_rot, y_rot, SEDUCE_WIDGET_LIST_ELEMENT_SIZE, 0.4, time))
|
|
return i;
|
|
x_rot = sin((float)1 / widget_count * PI * 2.0) * radius;
|
|
y_rot = cos((float)1 / widget_count * PI * 2.0) * radius + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7;
|
|
if(seduce_widget_color_wheel_radial(input, &id_fragmented[1], elements[i].param.color, x_rot, y_rot, SEDUCE_WIDGET_LIST_ELEMENT_SIZE, 0.4, time))
|
|
return i;
|
|
x_rot = sin((float)2 / widget_count * PI * 2.0) * radius;
|
|
y_rot = cos((float)2 / widget_count * PI * 2.0) * radius + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7;
|
|
if(seduce_widget_color_square_radial(input, &id_fragmented[2], elements[i].param.color, 0, x_rot, y_rot, SEDUCE_WIDGET_LIST_ELEMENT_SIZE, 0.4, time))
|
|
return i;
|
|
x_rot = sin((float)3 / widget_count * PI * 2.0) * radius;
|
|
y_rot = cos((float)3 / widget_count * PI * 2.0) * radius + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7;
|
|
if(seduce_widget_color_square_radial(input, &id_fragmented[3], elements[i].param.color, 1, x_rot, y_rot, SEDUCE_WIDGET_LIST_ELEMENT_SIZE, 0.4, time))
|
|
return i;
|
|
x_rot = sin((float)4 / widget_count * PI * 2.0) * radius;
|
|
y_rot = cos((float)4 / widget_count * PI * 2.0) * radius + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7;
|
|
if(seduce_widget_color_square_radial(input, &id_fragmented[4], elements[i].param.color, 2, x_rot, y_rot, SEDUCE_WIDGET_LIST_ELEMENT_SIZE, 0.4, time))
|
|
return i;
|
|
|
|
|
|
if(elements[i].type == SEDUCE_PET_COLOR_RGB)
|
|
{
|
|
|
|
d = elements[i].param.color[0];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[5], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2.75, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.75 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[0] = d;
|
|
return i;
|
|
}
|
|
d = elements[i].param.color[1];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[6], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.25, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[1] = d;
|
|
return i;
|
|
}
|
|
d = elements[i].param.color[2];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[7], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2.75, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.75 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[2] = d;
|
|
return i;
|
|
}
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.0, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2.5, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.5, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.0, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.0, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
}
|
|
}else
|
|
{
|
|
x_rot = sin((float)5 / widget_count * PI * 2.0) * radius;
|
|
y_rot = cos((float)5 / widget_count * PI * 2.0) * radius + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7;
|
|
|
|
f = elements[i].param.color[3];
|
|
if(seduce_widget_slider_radial(input, &id_fragmented[5], &f, x_rot, y_rot, SEDUCE_WIDGET_LIST_ELEMENT_SIZE, 1, 0, 1, time, color))
|
|
{
|
|
elements[i].param.color[3] = f;
|
|
return i;
|
|
}
|
|
d = elements[i].param.color[0];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[6], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.0, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2.625 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[0] = d;
|
|
return i;
|
|
}
|
|
d = elements[i].param.color[1];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[7], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.75, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.875 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[1] = d;
|
|
return i;
|
|
}
|
|
d = elements[i].param.color[2];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[8], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.75, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.875 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[2] = d;
|
|
return i;
|
|
}
|
|
d = elements[i].param.color[3];
|
|
if(S_TIS_DONE == seduce_text_edit_double(input, &id_fragmented[9], NULL, &d, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.0, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2.625 - SEDUCE_T_SIZE * 0.75, 0.1, SEDUCE_T_SIZE, TRUE, NULL, NULL, color[0], color[1], color[2], color[3], text_color[0], text_color[1], text_color[2], text_color[3]))
|
|
{
|
|
elements[i].param.color[3] = d;
|
|
return i;
|
|
}
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.25, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * (2.5 + 0.875), SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 4.0, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * (0.75 + 0.875), SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 4.0, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * (1.0 - 0.875), SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.25, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * (2.75 - 0.875), SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
float x_rot, y_rot;
|
|
uint j;
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
for(j = 0; j < 6; j++)
|
|
{
|
|
x_rot = sin((float)j / 6.0 * PI * 2.0) * SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
y_rot = cos((float)j / 6.0 * PI * 2.0) * SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5;
|
|
seduce_primitive_circle_add_3d(object,
|
|
x_rot, y_rot + y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
}
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.0, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 2.5, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.5, y_widget - element_size * 0.5 + SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 0.75, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
seduce_widget_list_text_line(object, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 3.0, y_widget - element_size * 0.5 - SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.0, SEDUCE_WIDGET_LIST_ELEMENT_SIZE * 1.5 + (1.0 - time) * f_randf(i + 1) * 0.4, 0.05, color, time);
|
|
}
|
|
break;
|
|
case SEDUCE_PET_TIME :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_DATE :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_SELECT :
|
|
/* if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);*/
|
|
|
|
if(S_TIS_DONE == seduce_widget_select_radial(input, &elements[i], &elements[i].param.select.active, elements[i].param.select.text, elements[i].param.select.count, elements[i].param.select.style, 0, y_widget - element_size * 0.5, element_size, 1, time, FALSE))
|
|
return i;
|
|
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_text_line_draw(NULL, element_size * 0.5 + SEDUCE_T_SIZE, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, SEDUCE_T_SIZE, SEDUCE_T_SPACE, elements[i].param.select.text[elements[i].param.select.active], text_color[0], text_color[1], text_color[2], text_color[3], -1);
|
|
|
|
break;
|
|
case SEDUCE_PET_POPUP :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_IMAGE :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_SECTION_START :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_SECTION_END :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_CUSTOM :
|
|
if(input->mode == BAM_DRAW)
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
break;
|
|
case SEDUCE_PET_OK_CANCEL :
|
|
f = ((text_size + element_right) - 0.05) / 2.0 - element_size;
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_widget_list_text_line(object, -text_size + element_size * 0.5, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, f, color, time);
|
|
seduce_widget_list_text_line(object, element_right - element_size * 0.5 - f, y_widget, element_size + (1.0 - time) * f_randf(i + 1) * 0.4, f, color, time);
|
|
}
|
|
elements[i].param.ok_cancel = SEDUCE_PEOCS_UNDECIDED;
|
|
if(seduce_text_button(input, &elements[i].param.ok_cancel, -text_size + element_size * 0.5 + f * 0.5, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.5, SEDUCE_T_SIZE, SEDUCE_T_SPACE, "CANCEL", color[0], color[1], color[2], color[3], 1.0 - color[0], 1.0 - color[1], 1.0 - color[2], color[3]))
|
|
{
|
|
elements[i].param.ok_cancel = SEDUCE_PEOCS_CANCEL;
|
|
return i;
|
|
}
|
|
if(seduce_text_button(input, &elements[i].type, element_right - element_size * 0.5 - f * 0.5, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, 0.5, SEDUCE_T_SIZE, SEDUCE_T_SPACE, "OK", color[0], color[1], color[2], color[3], 1.0 - color[0], 1.0 - color[1], 1.0 - color[2], color[3]))
|
|
{
|
|
elements[i].param.ok_cancel = SEDUCE_PEOCS_OK;
|
|
return i;
|
|
}
|
|
break;
|
|
}
|
|
|
|
/* if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_primitive_circle_add_3d(object,
|
|
0, y_widget - element_size * 0.5, (1.0 - time) * f_randnf(i) * 0.7,
|
|
0, 1, 0,
|
|
0, 0, 1,
|
|
element_size * 0.5 + (1.0 - time) * f_randf(i + 1) * 0.4,
|
|
0, 1,
|
|
y_widget + f_randnf(i + 2) * time * 0.1, element_size * 5 + (1.0 - time) * f_randf(i + 1),
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
|
|
}*/
|
|
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
f = (float)i / (float)element_count - 0.5;
|
|
if(f < 0.0)
|
|
f = -f;
|
|
if(time > f && elements[i].type != SEDUCE_PET_OK_CANCEL)
|
|
{
|
|
f = -0.2 + (time - f) * 0.5;
|
|
if(f > 0.0)
|
|
f = 0.0;
|
|
if(style == SEDUCE_WLS_COMPACT && background_color != NULL)
|
|
seduce_text_line_draw(NULL, f - seduce_text_line_length(NULL, SEDUCE_T_SIZE, SEDUCE_T_SPACE, elements[i].text, -1) - element_left - SEDUCE_WIDGET_LIST_SPACING - SEDUCE_T_SIZE * 2, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, SEDUCE_T_SIZE, SEDUCE_T_SPACE, elements[i].text, text_color[0], text_color[1], text_color[2], text_color[3], -1);
|
|
else
|
|
seduce_text_line_draw(NULL, f - seduce_text_line_length(NULL, SEDUCE_T_SIZE, SEDUCE_T_SPACE, elements[i].text, -1) - element_size * 0.5 - SEDUCE_T_SIZE * 2, y_text - element_size * 0.5 - SEDUCE_T_SIZE * 0.75, SEDUCE_T_SIZE, SEDUCE_T_SPACE, elements[i].text, text_color[0], text_color[1], text_color[2], text_color[3], -1);
|
|
}
|
|
y_text -= element_size;
|
|
y_widget -= element_size * time;
|
|
if(i + 1 < element_count && elements[i + 1].type != SEDUCE_PET_OK_CANCEL)
|
|
seduce_primitive_line_add_3d(object,
|
|
0, y_text, 0,
|
|
0, y_text - SEDUCE_WIDGET_LIST_SPACING, 0,
|
|
color[0], color[1], color[2], color[3],
|
|
color[0], color[1], color[2], color[3]);
|
|
y_text -= SEDUCE_WIDGET_LIST_SPACING;
|
|
y_widget -= SEDUCE_WIDGET_LIST_SPACING * time;
|
|
}
|
|
}
|
|
|
|
if(input->mode == BAM_DRAW)
|
|
{
|
|
seduce_primitive_line_draw(object, 1.0, 1.0, 1.0, 1.0);
|
|
seduce_primitive_line_object_free(object);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
void seduce_widget_list_element_test2(BInputState *input)
|
|
{
|
|
static SeducePanelElement element[SEDUCE_PET_COUNT];
|
|
static uint init = FALSE, selected = -1;
|
|
static float matrix[16] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}, timer = 0;
|
|
char *select[3] = {"Option one", "Another option", "The final option"};
|
|
return;
|
|
if(!init)
|
|
{
|
|
init = TRUE;
|
|
element[SEDUCE_PET_BOOLEAN].type = SEDUCE_PET_BOOLEAN;
|
|
element[SEDUCE_PET_BOOLEAN].text = "BOOLEAN";
|
|
element[SEDUCE_PET_BOOLEAN].param.active = TRUE;
|
|
element[SEDUCE_PET_TRIGGER].type = SEDUCE_PET_TRIGGER;
|
|
element[SEDUCE_PET_TRIGGER].text = "TRIGGER";
|
|
element[SEDUCE_PET_TRIGGER].param.trigger = TRUE;
|
|
element[SEDUCE_PET_INTEGER].type = SEDUCE_PET_INTEGER;
|
|
element[SEDUCE_PET_INTEGER].text = "INTEGER";
|
|
element[SEDUCE_PET_INTEGER].param.integer = 1;
|
|
element[SEDUCE_PET_UNSIGNED_INTEGER].type = SEDUCE_PET_UNSIGNED_INTEGER;
|
|
element[SEDUCE_PET_UNSIGNED_INTEGER].text = "UNSIGNED INTEGER";
|
|
element[SEDUCE_PET_UNSIGNED_INTEGER].param.uinteger = 1;
|
|
element[SEDUCE_PET_INTEGER_BOUND].type = SEDUCE_PET_INTEGER_BOUND;
|
|
element[SEDUCE_PET_INTEGER_BOUND].text = "INTEGER BOUND";
|
|
// element[SEDUCE_PET_INTEGER_BOUND].param.value = 01;
|
|
element[SEDUCE_PET_REAL].type = SEDUCE_PET_REAL;
|
|
element[SEDUCE_PET_REAL].text = "REAL";
|
|
element[SEDUCE_PET_REAL].param.real.value = 0.5;
|
|
element[SEDUCE_PET_REAL_BOUND].type = SEDUCE_PET_REAL_BOUND;
|
|
element[SEDUCE_PET_REAL_BOUND].text = "REAL BOUND";
|
|
element[SEDUCE_PET_REAL].param.real.value = 0.5;
|
|
element[SEDUCE_PET_REAL].param.real.min = 0.0;
|
|
element[SEDUCE_PET_REAL].param.real.max = 1.0;
|
|
element[SEDUCE_PET_2D_POS].type = SEDUCE_PET_2D_POS;
|
|
element[SEDUCE_PET_2D_POS].text = "2D POS";
|
|
element[SEDUCE_PET_3D_POS].type = SEDUCE_PET_3D_POS;
|
|
element[SEDUCE_PET_3D_POS].text = "3D POS";
|
|
element[SEDUCE_PET_4D_POS].type = SEDUCE_PET_4D_POS;
|
|
element[SEDUCE_PET_4D_POS].text = "4D POS";
|
|
element[SEDUCE_PET_QUATERNION].type = SEDUCE_PET_QUATERNION;
|
|
element[SEDUCE_PET_QUATERNION].text = "QUATERNION";
|
|
element[SEDUCE_PET_2D_NORMAL].type = SEDUCE_PET_2D_NORMAL;
|
|
element[SEDUCE_PET_2D_NORMAL].text = "2D NORMAL";
|
|
element[SEDUCE_PET_3D_NORMAL].type = SEDUCE_PET_3D_NORMAL;
|
|
element[SEDUCE_PET_3D_NORMAL].text = "3D NORMAL";
|
|
element[SEDUCE_PET_2X2MATRIX].type = SEDUCE_PET_2X2MATRIX;
|
|
element[SEDUCE_PET_2X2MATRIX].text = "2X2MATRIX";
|
|
element[SEDUCE_PET_3X3MATRIX].type = SEDUCE_PET_3X3MATRIX;
|
|
element[SEDUCE_PET_3X3MATRIX].text = "3X3MATRIX";
|
|
element[SEDUCE_PET_4X4MATRIX].type = SEDUCE_PET_4X4MATRIX;
|
|
element[SEDUCE_PET_4X4MATRIX].text = "4X4MATRIX";
|
|
element[SEDUCE_PET_TEXT].type = SEDUCE_PET_TEXT;
|
|
element[SEDUCE_PET_TEXT].text = "TEXT";
|
|
element[SEDUCE_PET_PASSWORD].type = SEDUCE_PET_PASSWORD;
|
|
element[SEDUCE_PET_PASSWORD].text = "PASSWORD";
|
|
element[SEDUCE_PET_TEXT_BUFFER].type = SEDUCE_PET_TEXT_BUFFER;
|
|
element[SEDUCE_PET_TEXT_BUFFER].text = "TEXT BUFFER";
|
|
element[SEDUCE_PET_COLOR_RGB].type = SEDUCE_PET_COLOR_RGB;
|
|
element[SEDUCE_PET_COLOR_RGB].text = "COLOR RGB";
|
|
element[SEDUCE_PET_COLOR_RGBA].type = SEDUCE_PET_COLOR_RGBA;
|
|
element[SEDUCE_PET_COLOR_RGBA].text = "COLOR RGBA";
|
|
element[SEDUCE_PET_TIME].type = SEDUCE_PET_TIME;
|
|
element[SEDUCE_PET_TIME].text = "TIME";
|
|
element[SEDUCE_PET_DATE].type = SEDUCE_PET_DATE;
|
|
element[SEDUCE_PET_DATE].text = "DATE";
|
|
element[SEDUCE_PET_SELECT].type = SEDUCE_PET_SELECT;
|
|
element[SEDUCE_PET_SELECT].text = "SELECT";
|
|
element[SEDUCE_PET_SELECT].param.select.active = 0;
|
|
element[SEDUCE_PET_SELECT].param.select.text = select;
|
|
element[SEDUCE_PET_SELECT].param.select.count = 3;
|
|
element[SEDUCE_PET_SELECT].param.select.style = S_PUT_BOTTOM;
|
|
element[SEDUCE_PET_SECTION_START].type = SEDUCE_PET_SECTION_START;
|
|
element[SEDUCE_PET_SECTION_START].text = "SECTION START";
|
|
element[SEDUCE_PET_SECTION_END].type = SEDUCE_PET_SECTION_END;
|
|
element[SEDUCE_PET_SECTION_END].text = "SECTION END";
|
|
}
|
|
|
|
seduce_animate(input, &timer, !input->pointers[0].button[1], 1.0);
|
|
seduce_background_shape_matrix_interact(input, &init, matrix, TRUE, TRUE);
|
|
r_matrix_push(NULL);
|
|
r_matrix_matrix_mult(NULL, matrix);
|
|
|
|
// r_matrix_rotate(NULL,input->minute_time * 720, 1, 0, 0);
|
|
seduce_widget_list(input, &init, element, SEDUCE_PET_SECTION_END + 1, timer, "SETTINGS", NULL, NULL, 0);
|
|
r_matrix_pop(NULL);
|
|
|
|
} |