aboutsummaryrefslogtreecommitdiff
path: root/src/hud.h
Commit message (Expand)AuthorAge
* Minimap: Add new HUD flag for minimap radar modeparamat2017-08-20
* C++ modernize: Pragma once (#6264)Loïc Blot2017-08-17
* Irrlicht cleanup: cleanup various object to use RenderingEngine (#6088)Loïc Blot2017-07-02
* hud.h: add missing false default state on use_hotbar_selected_imageLoïc Blot2017-06-19
* Cpp11 initializers 2 (#5999)Loïc Blot2017-06-17
* Add option to use neither node highlighting nor outliningezhh2017-05-15
* Environment & IGameDef code refactoring (#4985)Ner'zhul2017-01-09
* Halo: Highlight selected faceRealBadAngel2016-11-12
* Fix inventory hud scalingrubenwardy2016-04-12
* Hud: Cache hud_scaling, fix minor style issueskwolekr2016-04-10
* Hud: Fix offset being ignored by inventory barrubenwardy2016-04-10
* Use single box for halo meshRealBadAngel2016-02-11
* Cleanup selection mesh code, add shaders for halo and selection boxesRealBadAngel2016-02-08
* small drawItemStack cleanupest312016-02-08
* Use meshes to display inventory itemsRealBadAngel2016-02-07
* Hide minimap if it has been disabled by serverest312015-09-01
* minimap: Add ability to disable from serverkwolekr2015-08-13
* Make hud use fontengine toosapier2014-11-30
* Fix heart + bubble bar size on different texture packssapier2014-05-07
* Bugfix: make waypoints respect camera offsetRealBadAngel2014-05-05
* Add support for dpi based HUD scalingsapier2014-04-27
* New HUD element - waypoint.RealBadAngel2014-01-26
* Use player:set_hotbar_image() instead of hardcoded hotbar.pngPilzAdam2013-09-05
* Add support for using textures in hotbarBlockMen2013-08-25
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
* Add drowningPilzAdam2013-06-19
* Add ObjectRef.hud_set_hotbar_itemcount and add TOCLIENT_HUD_SET_PARAMKahrl2013-05-26
* Move scriptapi to separate folder (by sapier)sapier2013-05-25
* Minor hud.cpp cleanupkwolekr2013-04-25
* Generalize hud_builtin_enable into hud_set_flagskwolekr2013-04-25
* Added support to disable built-in HUD elementsDiego Martínez2013-04-24
* Added offset support for HUD itemsDiego Martínez2013-04-23
* Added support for alignment in HUD itemsDiego Martínez2013-04-23
* Add direction parameter to statbars in HUD APIkwolekr2013-04-20
* Split HUD code off to hud.cpp, make into a class, extensive Lua HUD modificationkwolekr2013-04-18
undation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include "test.h" #include <sstream> #include "log.h" #include "serialization.h" #include "nodedef.h" #include "noise.h" class TestFilePath : public TestBase { public: TestFilePath() { TestManager::registerTestModule(this); } const char *getName() { return "TestFilePath"; } void runTests(IGameDef *gamedef); void testIsDirDelimiter(); void testPathStartsWith(); void testRemoveLastPathComponent(); void testRemoveLastPathComponentWithTrailingDelimiter(); void testRemoveRelativePathComponent(); }; static TestFilePath g_test_instance; void TestFilePath::runTests(IGameDef *gamedef) { TEST(testIsDirDelimiter); TEST(testPathStartsWith); TEST(testRemoveLastPathComponent); TEST(testRemoveLastPathComponentWithTrailingDelimiter); TEST(testRemoveRelativePathComponent); } //////////////////////////////////////////////////////////////////////////////// // adjusts a POSIX path to system-specific conventions // -> changes '/' to DIR_DELIM // -> absolute paths start with "C:\\" on windows std::string p(std::string path) { for (size_t i = 0; i < path.size(); ++i) { if (path[i] == '/') { path.replace(i, 1, DIR_DELIM); i += std::string(DIR_DELIM).size() - 1; // generally a no-op } } #ifdef _WIN32 if (path[0] == '\\') path = "C:" + path; #endif return path; } void TestFilePath::testIsDirDelimiter() { UASSERT(fs::IsDirDelimiter('/') == true); UASSERT(fs::IsDirDelimiter('A') == false); UASSERT(fs::IsDirDelimiter(0) == false); #ifdef _WIN32 UASSERT(fs::IsDirDelimiter('\\') == true); #else UASSERT(fs::IsDirDelimiter('\\') == false); #endif } void TestFilePath::testPathStartsWith() { const int numpaths = 12; std::string paths[numpaths] = { "", p("/"), p("/home/user/minetest"), p("/home/user/minetest/bin"), p("/home/user/.minetest"), p("/tmp/dir/file"), p("/tmp/file/"), p("/tmP/file"), p("/tmp"), p("/tmp/dir"), p("/home/user2/minetest/worlds"), p("/home/user2/minetest/world"), }; /* expected fs::PathStartsWith results 0 = returns false 1 = returns true 2 = returns false on windows, true elsewhere 3 = returns true on windows, false elsewhere 4 = returns true if and only if FILESYS_CASE_INSENSITIVE is true */ int expected_results[numpaths][numpaths] = { {1,2,0,0,0,0,0,0,0,0,0,0}, {1,1,0,0,0,0,0,0,0,0,0,0}, {1,1,1,0,0,0,0,0,0,0,0,0}, {1,1,1,1,0,0,0,0,0,0,0,0}, {1,1,0,0,1,0,0,0,0,0,0,0}, {1,1,0,0,0,1,0,0,1,1,0,0}, {1,1,0,0,0,0,1,4,1,0,0,0}, {1,1,0,0,0,0,4,1,4,0,0,0}, {1,1,0,0,0,0,0,0,1,0,0,0}, {1,1,0,0,0,0,0,0,1,1,0,0}, {1,1,0,0,0,0,0,0,0,0,1,0}, {1,1,0,0,0,0,0,0,0,0,0,1}, }; for (int i = 0; i < numpaths; i++) for (int j = 0; j < numpaths; j++){ /*verbosestream<<"testing fs::PathStartsWith(\"" <<paths[i]<<"\", \"" <<paths[j]<<"\")"<<std::endl;*/ bool starts = fs::PathStartsWith(paths[i], paths[j]); int expected = expected_results[i][j]; if(expected == 0){ UASSERT(starts == false); } else if(expected == 1){ UASSERT(starts == true); } #ifdef _WIN32 else if(expected == 2){ UASSERT(starts == false); } else if(expected == 3){ UASSERT(starts == true); } #else else if(expected == 2){ UASSERT(starts == true); } else if(expected == 3){ UASSERT(starts == false); } #endif else if(expected == 4){ UASSERT(starts == (bool)FILESYS_CASE_INSENSITIVE); } } } void TestFilePath::testRemoveLastPathComponent() { std::string path, result, removed; UASSERT(fs::RemoveLastPathComponent("") == ""); path = p("/home/user/minetest/bin/..//worlds/world1"); result = fs::RemoveLastPathComponent(path, &removed, 0); UASSERT(result == path); UASSERT(removed == ""); result = fs::RemoveLastPathComponent(path, &removed, 1); UASSERT(result == p("/home/user/minetest/bin/..//worlds")); UASSERT(removed == p("world1")); result = fs::RemoveLastPathComponent(path, &removed, 2); UASSERT(result == p("/home/user/minetest/bin/..")); UASSERT(removed == p("worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 3); UASSERT(result == p("/home/user/minetest/bin")); UASSERT(removed == p("../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 4); UASSERT(result == p("/home/user/minetest")); UASSERT(removed == p("bin/../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 5); UASSERT(result == p("/home/user")); UASSERT(removed == p("minetest/bin/../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 6); UASSERT(result == p("/home")); UASSERT(removed == p("user/minetest/bin/../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 7); #ifdef _WIN32 UASSERT(result == "C:"); #else UASSERT(result == ""); #endif UASSERT(removed == p("home/user/minetest/bin/../worlds/world1")); } void TestFilePath::testRemoveLastPathComponentWithTrailingDelimiter() { std::string path, result, removed; path = p("/home/user/minetest/bin/..//worlds/world1/"); result = fs::RemoveLastPathComponent(path, &removed, 0); UASSERT(result == path); UASSERT(removed == ""); result = fs::RemoveLastPathComponent(path, &removed, 1); UASSERT(result == p("/home/user/minetest/bin/..//worlds")); UASSERT(removed == p("world1")); result = fs::RemoveLastPathComponent(path, &removed, 2); UASSERT(result == p("/home/user/minetest/bin/..")); UASSERT(removed == p("worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 3); UASSERT(result == p("/home/user/minetest/bin")); UASSERT(removed == p("../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 4); UASSERT(result == p("/home/user/minetest")); UASSERT(removed == p("bin/../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 5); UASSERT(result == p("/home/user")); UASSERT(removed == p("minetest/bin/../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 6); UASSERT(result == p("/home")); UASSERT(removed == p("user/minetest/bin/../worlds/world1")); result = fs::RemoveLastPathComponent(path, &removed, 7); #ifdef _WIN32 UASSERT(result == "C:"); #else UASSERT(result == ""); #endif UASSERT(removed == p("home/user/minetest/bin/../worlds/world1")); } void TestFilePath::testRemoveRelativePathComponent() { std::string path, result, removed; path = p("/home/user/minetest/bin"); result = fs::RemoveRelativePathComponents(path); UASSERT(result == path); path = p("/home/user/minetest/bin/../worlds/world1"); result = fs::RemoveRelativePathComponents(path); UASSERT(result == p("/home/user/minetest/worlds/world1")); path = p("/home/user/minetest/bin/../worlds/world1/"); result = fs::RemoveRelativePathComponents(path); UASSERT(result == p("/home/user/minetest/worlds/world1")); path = p("."); result = fs::RemoveRelativePathComponents(path); UASSERT(result == ""); path = p("../a"); result = fs::RemoveRelativePathComponents(path); UASSERT(result == ""); path = p("./subdir/../.."); result = fs::RemoveRelativePathComponents(path); UASSERT(result == ""); path = p("/a/b/c/.././../d/../e/f/g/../h/i/j/../../../.."); result = fs::RemoveRelativePathComponents(path); UASSERT(result == p("/a/e")); }