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_from_line_stream(LineStream *line_stream)
13 trace_assert(line_stream);
17 PlayerLayer *player_layer = PUSH_LT(lt, nth_calloc(1, sizeof(PlayerLayer)), free);
18 player_layer->lt = lt;
22 const char *line = line_stream_next(line_stream);
24 log_fail("Could not read Player Layer\n");
30 &player_layer->position.x,
31 &player_layer->position.y,
33 log_fail("Could not read Player Layer\n");
36 player_layer->color_picker.color = hexstr(colorstr);
41 void destroy_player_layer(PlayerLayer *player_layer)
43 trace_assert(player_layer);
44 destroy_lt(player_layer->lt);
47 LayerPtr player_layer_as_layer(PlayerLayer *player_layer)
56 int player_layer_render(const PlayerLayer *player_layer,
60 trace_assert(player_layer);
66 player_layer->position,
69 player_layer->color_picker.color,
70 rgba(1.0f, 1.0f, 1.0f, fa))) < 0) {
78 int player_layer_event(PlayerLayer *player_layer,
79 const SDL_Event *event,
82 trace_assert(player_layer);
86 switch (event->type) {
87 case SDL_MOUSEBUTTONDOWN:
88 case SDL_MOUSEBUTTONUP: {
89 bool selected = false;
90 if (color_picker_mouse_button(
91 &player_layer->color_picker,
98 event->type == SDL_MOUSEBUTTONUP &&
99 event->button.button == SDL_BUTTON_LEFT) {
100 player_layer->position =
101 camera_map_screen(camera,