summaryrefslogtreecommitdiffhomepage
path: root/editor
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-09-10 05:45:58 +0200
committerStanislaw Halik <sthalik@misaki.pl>2023-09-10 05:45:58 +0200
commitc5f90c889835711277d208ccb121760459213774 (patch)
treece4ed82c537aa4cdf8364310dadc16d397388833 /editor
parenteb87171be32523f7fc88bc0f6d2bbcd47c600ac3 (diff)
a
Diffstat (limited to 'editor')
-rw-r--r--editor/draw.cpp1
-rw-r--r--editor/editor-enums.hpp2
-rw-r--r--editor/events.cpp5
-rw-r--r--editor/imgui.cpp4
-rw-r--r--editor/keys.hpp2
-rw-r--r--editor/update.cpp2
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: