| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #pragma once
- #include <ThirdParty/TurboBadger/tb_widgets_listener.h>
- #include "../Core/Object.h"
- #include "../UI/UIBatch.h"
- namespace Atomic
- {
- class VertexBuffer;
- class UIRenderer;
- class UIWidget;
- class UI : public Object, private tb::TBWidgetListener
- {
- OBJECT(UI)
- public:
- /// Construct.
- UI(Context* context);
- /// Destruct.
- virtual ~UI();
- tb::TBWidget* GetRootWidget() { return rootWidget_; }
- bool LoadResourceFile(tb::TBWidget* widget, const String& filename);
- void SetKeyboardDisabled(bool disabled) {keyboardDisabled_ = disabled; }
- void SetInputDisabled(bool disabled) { inputDisabled_ = disabled; }
- void Render(bool resetRenderTargets = true);
- void GetBatches(PODVector<UIBatch>& batches, PODVector<float>& vertexData, const IntRect& currentScissor);
- void SubmitBatchVertexData(Texture* texture, const PODVector<float>& vertexData);
- void Initialize(const String& languageFile);
- void Shutdown();
- void LoadSkin(const String& skin, const String& overrideSkin = String::EMPTY);
- bool GetSkinLoaded() { return skinLoaded_; }
- /// Load the default skin, will also look in resoures for UI/Skin/skin.ui.txt and
- /// UI/Skin/Override/skin.ui.txt for base skin and possible override (TODO: baked in UI setting for load from project)
- void LoadDefaultPlayerSkin();
- void AddFont(const String& fontFile, const String &name);
- void SetDefaultFont(const String& name, int size);
- bool IsWidgetWrapped(tb::TBWidget* widget);
- // wrap an existing widget we new'd from script
- void WrapWidget(UIWidget* widget, tb::TBWidget* tbwidget);
- // given a TB widget, creating a UIWidget
- UIWidget* WrapWidget(tb::TBWidget* widget);
- bool UnwrapWidget(tb::TBWidget* widget);
- unsigned DebugGetWrappedWidgetCount() { return widgetWrap_.Size(); }
- void PruneUnreachableWidgets();
- void GetTBIDString(unsigned id, String& value);
- void ShowDebugHud(bool value);
- void ToggleDebugHud();
- void ShowConsole(bool value);
- void ToggleConsole();
- UIRenderer* GetRenderer() { return renderer_; }
- private:
- static WeakPtr<Context> uiContext_;
- static void TBFileReader(const char* filename, void** data, unsigned* length);
- static void TBIDRegisterStringCallback(unsigned id, const char* value);
- void HandleRenderUpdate(StringHash eventType, VariantMap& eventData);
- void Render(VertexBuffer* buffer, const PODVector<UIBatch>& batches, unsigned batchStart, unsigned batchEnd);
- void SetVertexData(VertexBuffer* dest, const PODVector<float>& vertexData);
- // TBWidgetListener
- void OnWidgetDelete(tb::TBWidget *widget);
- bool OnWidgetDying(tb::TBWidget *widget);
- tb::TBWidget* rootWidget_;
- UIRenderer* renderer_;
- /// UI rendering batches.
- PODVector<UIBatch> batches_;
- /// UI rendering vertex data.
- PODVector<float> vertexData_;
- SharedPtr<VertexBuffer> vertexBuffer_;
- WeakPtr<Graphics> graphics_;
- HashMap<tb::TBWidget*, SharedPtr<UIWidget> > widgetWrap_;
- HashMap<unsigned, String> tbidToString_;
- bool inputDisabled_;
- bool keyboardDisabled_;
- bool initialized_;
- bool skinLoaded_;
- bool consoleVisible_;
- // Events
- void HandleScreenMode(StringHash eventType, VariantMap& eventData);
- void HandleMouseButtonDown(StringHash eventType, VariantMap& eventData);
- void HandleMouseButtonUp(StringHash eventType, VariantMap& eventData);
- void HandleMouseMove(StringHash eventType, VariantMap& eventData);
- void HandleMouseWheel(StringHash eventType, VariantMap& eventData);
- void HandleKeyDown(StringHash eventType, VariantMap& eventData);
- void HandleKeyUp(StringHash eventType, VariantMap& eventData);
- void HandleKey(bool keydown, int keycode, int scancode);
- void HandleTextInput(StringHash eventType, VariantMap& eventData);
- void HandleUpdate(StringHash eventType, VariantMap& eventData);
- void HandleConsoleClosed(StringHash eventType, VariantMap& eventData);
- };
- }
|