X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fgame%2Flevel%2Flevel_editor%2Flabel_layer.c;h=76244fca74619fc2fa4d1a1d96fe1c56383d5772;hb=adb80cab471bca6d38cce10b256f7804dc526489;hp=7c4527367059b9d0363b16b4e83d98db73c29298;hpb=4df50087d23952937d2b18b634732cd98f1a86e8;p=nothing.git diff --git a/src/game/level/level_editor/label_layer.c b/src/game/level/level_editor/label_layer.c index 7c452736..76244fca 100644 --- a/src/game/level/level_editor/label_layer.c +++ b/src/game/level/level_editor/label_layer.c @@ -177,6 +177,7 @@ int label_layer_render(const LabelLayer *label_layer, } size_t n = dynarray_count(label_layer->ids); + char *ids = dynarray_data(label_layer->ids); Point *positions = dynarray_data(label_layer->positions); Color *colors = dynarray_data(label_layer->colors); char *texts = dynarray_data(label_layer->texts); @@ -184,11 +185,10 @@ int label_layer_render(const LabelLayer *label_layer, /* TODO(#891): LabelLayer doesn't show the final position of Label after the animation */ for (size_t i = 0; i < n; ++i) { if (label_layer->state == LABEL_LAYER_EDIT_TEXT) { - // TODO(#965): LabelLayer Edit Field should be rendered inside of the world - if (edit_field_render( + if (edit_field_render_world( label_layer->edit_field, camera, - camera_point(camera, positions[i])) < 0) { + positions[i]) < 0) { return -1; } } else { @@ -203,6 +203,17 @@ int label_layer_render(const LabelLayer *label_layer, return -1; } } + + if (camera_render_text( + camera, + ids + i * LABEL_LAYER_ID_MAX_SIZE, + vec(1.0f, 1.0f), + color_scale( + color_invert(colors[i]), + rgba(1.0f, 1.0f, 1.0f, active ? 1.0f : 0.5f)), + vec_sub(positions[i], vec(0.0f, FONT_CHAR_HEIGHT))) < 0) { + return -1; + } } if (label_layer->selected >= 0) { @@ -359,33 +370,19 @@ int label_layer_edit_text_event(LabelLayer *label_layer, trace_assert(label_layer->selected >= 0); switch (event->type) { - case SDL_TEXTINPUT: { - if (edit_field_text_input( - label_layer->edit_field, - &event->text) < 0) { - return -1; - } - } break; - - case SDL_KEYDOWN: - case SDL_KEYUP: { - if (edit_field_keyboard( - label_layer->edit_field, - &event->key) < 0) { - return -1; - } - + case SDL_KEYDOWN: { if (event->key.keysym.sym == SDLK_RETURN) { char *text = (char*)dynarray_data(label_layer->texts) + label_layer->selected * LABEL_LAYER_TEXT_MAX_SIZE; memset(text, 0, LABEL_LAYER_TEXT_MAX_SIZE); memcpy(text, edit_field_as_text(label_layer->edit_field), LABEL_LAYER_TEXT_MAX_SIZE - 1); label_layer->state = LABEL_LAYER_IDLE; + return 0; } } break; } - return 0; + return edit_field_event(label_layer->edit_field, event); } int label_layer_event(LabelLayer *label_layer,