5 #include "game/camera.h"
6 #include "system/stacktrace.h"
7 #include "player_layer.h"
8 #include "system/nth_alloc.h"
9 #include "system/log.h"
11 PlayerLayer *create_player_layer(Vec position, Color color)
15 PlayerLayer *player_layer = PUSH_LT(lt, nth_calloc(1, sizeof(PlayerLayer)), free);
16 player_layer->lt = lt;
18 player_layer->position = position;
19 player_layer->color_picker.color = color;
24 PlayerLayer *create_player_layer_from_line_stream(LineStream *line_stream)
26 trace_assert(line_stream);
28 PlayerLayer *player_layer = create_player_layer(
29 vec(0.0f, 0.0f), COLOR_BLACK);
31 const char *line = line_stream_next(line_stream);
33 log_fail("Could not read Player Layer\n");
34 RETURN_LT(player_layer->lt, NULL);
44 log_fail("Could not read Player Layer\n");
45 RETURN_LT(player_layer->lt, NULL);
48 return create_player_layer(position, hexstr(colorstr));
51 void destroy_player_layer(PlayerLayer *player_layer)
53 trace_assert(player_layer);
54 destroy_lt(player_layer->lt);
57 LayerPtr player_layer_as_layer(PlayerLayer *player_layer)
66 int player_layer_render(const PlayerLayer *player_layer,
70 trace_assert(player_layer);
76 player_layer->position,
79 player_layer->color_picker.color,
80 rgba(1.0f, 1.0f, 1.0f, active ? 1.0f : 0.0f))) < 0) {
88 int player_layer_event(PlayerLayer *player_layer,
89 const SDL_Event *event,
92 trace_assert(player_layer);
96 switch (event->type) {
97 case SDL_MOUSEBUTTONDOWN:
98 case SDL_MOUSEBUTTONUP: {
99 bool selected = false;
100 if (color_picker_mouse_button(
101 &player_layer->color_picker,
108 event->type == SDL_MOUSEBUTTONUP &&
109 event->button.button == SDL_BUTTON_LEFT) {
110 player_layer->position =
111 camera_map_screen(camera,
121 int player_layer_dump_stream(const PlayerLayer *player_layer,
124 trace_assert(player_layer);
125 trace_assert(filedump);
127 fprintf(filedump, "%f %f ", player_layer->position.x, player_layer->position.y);
128 color_hex_to_stream(player_layer->color_picker.color, filedump);
129 fprintf(filedump, "\n");