diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-09-10 05:45:58 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-09-10 05:45:58 +0200 |
commit | c5f90c889835711277d208ccb121760459213774 (patch) | |
tree | ce4ed82c537aa4cdf8364310dadc16d397388833 /editor | |
parent | eb87171be32523f7fc88bc0f6d2bbcd47c600ac3 (diff) |
a
Diffstat (limited to 'editor')
-rw-r--r-- | editor/draw.cpp | 1 | ||||
-rw-r--r-- | editor/editor-enums.hpp | 2 | ||||
-rw-r--r-- | editor/events.cpp | 5 | ||||
-rw-r--r-- | editor/imgui.cpp | 4 | ||||
-rw-r--r-- | editor/keys.hpp | 2 | ||||
-rw-r--r-- | editor/update.cpp | 2 |
6 files changed, 13 insertions, 3 deletions
diff --git a/editor/draw.cpp b/editor/draw.cpp index 539b6c53..c898ed35 100644 --- a/editor/draw.cpp +++ b/editor/draw.cpp @@ -145,6 +145,7 @@ void app::draw_collision_boxes() const auto tile_ = Vector2(M->pixel_to_tile_(Vector2d(pixel))); const auto curchunk = Vector2(tile.chunk()), curtile = Vector2(tile.local()); const auto subpixel_ = Vector2(std::fmod(tile_[0], 1.f), std::fmod(tile_[1], 1.f)); + // todo use this formula for dragging objs const auto subpixel = m * Vector2(curchunk[0] < 0 ? 1 + subpixel_[0] : subpixel_[0], curchunk[1] < 0 ? 1 + subpixel_[1] : subpixel_[1]); for (int16_t y = miny; y <= maxy; y++) diff --git a/editor/editor-enums.hpp b/editor/editor-enums.hpp index 6480433f..77323ab3 100644 --- a/editor/editor-enums.hpp +++ b/editor/editor-enums.hpp @@ -3,7 +3,7 @@ namespace floormat { enum class editor_mode : unsigned char { - none, floor, walls, scenery, vobj, + none, floor, walls, scenery, vobj, tests, }; enum class editor_wall_rotation : unsigned char { diff --git a/editor/events.cpp b/editor/events.cpp index e140cd4e..1c73188c 100644 --- a/editor/events.cpp +++ b/editor/events.cpp @@ -136,6 +136,11 @@ auto app::resolve_keybinding(int k_, int mods_) -> std::tuple<key, int> case SDLK_3: return key_mode_walls; case SDLK_4: return key_mode_scenery; case SDLK_5: return key_mode_vobj; + // for things like: + // - detect collisions with a line placed using the cursor (can be diagonal) + // - make charactere pathfind somewhere + // - make character walk around waypoints + case SDLK_6: return key_mode_tests; case SDLK_c | ALT: return key_render_collision_boxes; case SDLK_l | ALT: return key_render_clickables; case SDLK_v | ALT: return key_render_vobjs; diff --git a/editor/imgui.cpp b/editor/imgui.cpp index 00c0c58d..96eb940f 100644 --- a/editor/imgui.cpp +++ b/editor/imgui.cpp @@ -61,7 +61,7 @@ float app::draw_main_menu() mode == editor_mode::walls && ed_w; bool m_none = mode == m::none, m_floor = mode == m::floor, m_walls = mode == m::walls, - m_scenery = mode == m::scenery, m_vobjs = mode == m::vobj, + m_scenery = mode == m::scenery, m_vobjs = mode == m::vobj, m_tests = mode == m::tests, b_collisions = _render_bboxes, b_clickables = _render_clickables, b_vobjs = _render_vobjs, b_all_z_levels = _render_all_z_levels; @@ -76,6 +76,8 @@ float app::draw_main_menu() do_key(key_mode_scenery); if (ImGui::MenuItem("Virtual objects", "5", m_vobjs)) do_key(key_mode_vobj); + if (ImGui::MenuItem("Functional tests", "6", m_tests)) + do_key(key_mode_tests); ImGui::SeparatorText("Modify"); if (ImGui::MenuItem("Rotate", "R", false, b_rotate)) do_key(key_rotate_tile); diff --git a/editor/keys.hpp b/editor/keys.hpp index 79cd695b..a7f042d6 100644 --- a/editor/keys.hpp +++ b/editor/keys.hpp @@ -17,7 +17,7 @@ enum key : unsigned { key_left, key_right, key_up, key_down, key_NO_REPEAT, key_rotate_tile, - key_mode_none, key_mode_floor, key_mode_walls, key_mode_scenery, key_mode_vobj, + key_mode_none, key_mode_floor, key_mode_walls, key_mode_scenery, key_mode_vobj, key_mode_tests, key_render_collision_boxes, key_render_clickables, key_render_vobjs, key_render_all_z_levels, key_GLOBAL, key_new_file, diff --git a/editor/update.cpp b/editor/update.cpp index aa1495c1..73e5cb00 100644 --- a/editor/update.cpp +++ b/editor/update.cpp @@ -179,6 +179,8 @@ void app::do_key(key k, int mods) return do_set_mode(editor_mode::scenery); case key_mode_vobj: return do_set_mode(editor_mode::vobj); + case key_mode_tests: + return do_set_mode(editor_mode::tests); case key_render_collision_boxes: return void(_render_bboxes = !_render_bboxes); case key_render_clickables: |