mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 13:26:38 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef OPENMW_LUAUI_LAYERS
 | |
| #define OPENMW_LUAUI_LAYERS
 | |
| 
 | |
| #include <string>
 | |
| #include <string_view>
 | |
| 
 | |
| #include <MyGUI_LayerManager.h>
 | |
| #include <MyGUI_OverlappedLayer.h>
 | |
| 
 | |
| namespace LuaUi
 | |
| {
 | |
|     namespace Layers
 | |
|     {
 | |
|         struct Options {
 | |
|             bool mInteractive;
 | |
|         };
 | |
| 
 | |
|         size_t size()
 | |
|         {
 | |
|             return MyGUI::LayerManager::getInstance().getLayerCount();
 | |
|         }
 | |
| 
 | |
|         std::string at(size_t index)
 | |
|         {
 | |
|             if (index >= size())
 | |
|                 throw std::logic_error("Invalid layer index");
 | |
|             return MyGUI::LayerManager::getInstance().getLayer(index)->getName();
 | |
|         }
 | |
| 
 | |
|         size_t indexOf(std::string_view name)
 | |
|         {
 | |
|             for (size_t i = 0; i < size(); i++)
 | |
|                 if (at(i) == name)
 | |
|                     return i;
 | |
|             return size();
 | |
|         }
 | |
| 
 | |
|         void insert(size_t index, std::string_view name, Options options)
 | |
|         {
 | |
|             if (index > size())
 | |
|                 throw std::logic_error("Invalid layer index");
 | |
|             if (indexOf(name) < size())
 | |
|                 Log(Debug::Error) << "Layer \"" << name << "\" already exists";
 | |
|             else
 | |
|             {
 | |
|                 auto layer = MyGUI::LayerManager::getInstance()
 | |
|                                  .createLayerAt(std::string(name), "OverlappedLayer", index);
 | |
|                 auto overlappedLayer = dynamic_cast<MyGUI::OverlappedLayer*>(layer);
 | |
|                 overlappedLayer->setPick(options.mInteractive);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| #endif // OPENMW_LUAUI_LAYERS
 |