Skip to content

Commit fd5da62

Browse files
committed
WIP6
1 parent 8e9b6d1 commit fd5da62

File tree

10 files changed

+72
-3
lines changed

10 files changed

+72
-3
lines changed

src/console/console_cmd.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,8 @@ int console_find_by_text(game_state *gs, int argc, char **argv) {
282282
return 1;
283283
}
284284
gui_frame *frame = mechlab_get_frame(game_state_get_scene(gs));
285-
component *c = component_find_text(gui_frame_get_root(frame), "NEW");
285+
// component *c = component_find_text(gui_frame_get_root(frame), "NEW");
286+
component *c = gui_frame_find_text(frame, "NEW");
286287
if(c == NULL) {
287288
log_debug("Could not find the component");
288289
return 1;

src/game/gui/gui_frame.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "game/gui/gui_frame.h"
22
#include "utils/allocator.h"
3+
#include "utils/log.h"
34

45
typedef struct gui_frame {
56
int x;
@@ -48,6 +49,7 @@ component *gui_frame_find(gui_frame *frame, int id) {
4849
}
4950

5051
component *gui_frame_find_text(gui_frame *frame, const char *text) {
52+
log_debug("gui_frame_find_text");
5153
if(frame->root_node) {
5254
return component_find_text(frame->root_node, text);
5355
}

src/game/gui/menu.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,10 +431,13 @@ static component *menu_find(component *c, int id) {
431431
}
432432

433433
static component *menu_find_text(component *c, const char *text) {
434+
log_debug("menu_find_text");
434435
menu *m = sizer_get_obj(c);
435436
if(m->submenu) {
437+
log_debug("menu_find_text: calling for submenu");
436438
return component_find_text(m->submenu, text);
437439
}
440+
log_debug("menu_find_text: returning NULL");
438441
return NULL;
439442
}
440443

src/game/gui/spritebutton.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ static void spritebutton_tick(component *c) {
7373
}
7474

7575
static component *spritebutton_find_text(component *c, const char *text) {
76+
log_debug("spritebutton_find_text");
7677
spritebutton *b = widget_get_obj(c);
7778
if(strcmp(text_c(b->text), text) == 0) {
7879
return c;
@@ -148,6 +149,7 @@ component *spritebutton_create(const char *text, const surface *img, bool disabl
148149
widget_set_tick_cb(c, spritebutton_tick);
149150
widget_set_free_cb(c, spritebutton_free);
150151
widget_set_layout_cb(c, spritebutton_layout);
152+
log_debug("widget_set_find_text_cb(c, spritebutton_find_text): %s", text_c(b->text));
151153
widget_set_find_text_cb(c, spritebutton_find_text);
152154
return c;
153155
}

src/game/gui/trn_menu.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "game/gui/trn_menu.h"
22
#include "game/gui/sizer.h"
3+
#include "game/gui/widget.h"
34
#include "utils/allocator.h"
45
#include "utils/log.h"
56
#include "utils/vector.h"
@@ -420,6 +421,46 @@ int trnmenu_is_finished(const component *c) {
420421
return m->finished;
421422
}
422423

424+
static component *trnmenu_find_text(component *c, const char *text) {
425+
log_debug("trnmenu_find_text");
426+
427+
iterator it;
428+
component **tmp;
429+
sizer_begin_iterator(c, &it);
430+
431+
foreach(it, tmp) {
432+
component *t = *tmp;
433+
// log_debug("trnmenu_find_text: iterating %p", t);
434+
435+
// if(!component_is_selectable(t)) {
436+
// continue;
437+
//}
438+
// widget *w = component_get_obj(t);
439+
// component_get_obj(t);
440+
441+
component *found = widget_find_text(t, text);
442+
if(found != NULL) {
443+
log_debug("trnmenu_find_text: found %p", t);
444+
return found;
445+
} else {
446+
log_debug("trnmenu_find_text: found was NULL on %p", t);
447+
}
448+
}
449+
log_debug("trnmenu_find_text: checking submenu");
450+
451+
trnmenu *m = sizer_get_obj(c);
452+
if(m->submenu != NULL) {
453+
log_debug("trnmenu_find_text: submenu is non-NULL");
454+
component *found = component_find_text(m->submenu, text);
455+
if(found != NULL) {
456+
return found;
457+
}
458+
} else {
459+
log_debug("trnmenu_find_text: submenu is NULL");
460+
}
461+
return NULL;
462+
}
463+
423464
void trnmenu_set_submenu(component *c, component *submenu) {
424465
trnmenu *m = sizer_get_obj(c);
425466
if(m->submenu) {
@@ -480,6 +521,7 @@ component *trnmenu_create(surface *button_sheet, int sheet_x, int sheet_y, bool
480521
sizer_set_event_cb(c, trnmenu_event);
481522
sizer_set_tick_cb(c, trnmenu_tick);
482523
sizer_set_free_cb(c, trnmenu_free);
524+
sizer_set_find_text_cb(c, trnmenu_find_text);
483525

484526
return c;
485527
}

src/game/gui/trn_menu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ typedef void (*trnmenu_tick_cb)(component *c);
1111
typedef void (*trnmenu_free_cb)(component *c);
1212
typedef void (*trnmenu_submenu_init_cb)(component *menu, component *submenu);
1313
typedef void (*trnmenu_submenu_done_cb)(component *menu, component *submenu);
14+
typedef component *(*trnmenu_find_text_cb)(component *menu, const char *text);
1415

1516
component *trnmenu_create(surface *button_sheet, int sheet_x, int sheet_y, bool return_hand);
1617
void trnmenu_attach(component *menu, component *c);

src/game/gui/widget.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ void widget_set_focus_cb(component *c, widget_focus_cb cb) {
6868
}
6969

7070
void widget_set_find_text_cb(component *c, widget_find_text_cb cb) {
71+
log_debug("widget_set_find_text_cb %p", c);
7172
assert(c->header == WIDGET_MAGIC);
7273
widget *local = component_get_obj(c);
7374
local->find_text = cb;
@@ -172,6 +173,16 @@ static component *widget_find(component *c, int id) {
172173
return NULL;
173174
}
174175

176+
component *widget_find_text(component *c, const char *text) {
177+
widget *w = component_get_obj(c);
178+
log_debug("widget_find_text(%p): %p", c, w);
179+
component *ret = NULL;
180+
if(w->find_text != NULL) {
181+
ret = w->find_text(c, text);
182+
}
183+
return ret;
184+
}
185+
175186
component *widget_create(void) {
176187
component *c = component_create(WIDGET_MAGIC);
177188
c->supports_disable = 1;

src/game/gui/widget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ void *widget_get_obj(const component *c);
2121
void widget_set_id(component *c, int id);
2222
int widget_get_id(const component *c);
2323

24+
component *widget_find_text(component *c, const char *text);
25+
2426
void widget_set_render_cb(component *c, widget_render_cb cb);
2527
void widget_set_event_cb(component *c, widget_event_cb cb);
2628
void widget_set_action_cb(component *c, widget_action_cb cb);

src/game/scenes/mechlab/button_details.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
#include "game/scenes/mechlab/button_details.h"
2+
#include "utils/log.h"
23

34
component *sprite_button_from_details(const button_details *details, const char *text, const surface *img,
45
void *userdata) {
5-
component *b =
6-
spritebutton_create(text != NULL ? text : details->text, img, details->disabled, details->cb, userdata);
6+
text = text != NULL ? text : details->text;
7+
8+
log_debug("sprite_button_from_details(%s)", text);
9+
10+
component *b = spritebutton_create(text, img, details->disabled, details->cb, userdata);
711
spritebutton_set_vertical_align(b, details->valign);
812
spritebutton_set_horizontal_align(b, details->halign);
913
spritebutton_set_text_direction(b, details->dir);

src/game/scenes/mechlab/lab_menu_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "game/gui/sizer.h"
66
#include "game/gui/spritebutton.h"
77
#include "game/gui/trn_menu.h"
8+
#include "game/gui/widget.h"
89
#include "game/scenes/mechlab.h"
910
#include "game/scenes/mechlab/button_details.h"
1011
#include "game/scenes/mechlab/lab_menu_customize.h"

0 commit comments

Comments
 (0)