Browse Source

PlayerUI improvements

Josh Engebretson 10 years ago
parent
commit
df4935e5cc

BIN
Data/AtomicEditor/Resources/EditorData/AtomicEditor/editor/skin/power_off.png


+ 3 - 0
Data/AtomicEditor/Resources/EditorData/AtomicEditor/editor/skin/skin.tb.txt

@@ -78,6 +78,9 @@ elements
 	PlayButton
 	PlayButton
 		bitmap play.png
 		bitmap play.png
 
 
+	PowerOffButton
+		bitmap power_off.png
+
 	AESeparator
 	AESeparator
 		bitmap item_separator_x.png
 		bitmap item_separator_x.png
 		type Stretch Image
 		type Stretch Image

+ 6 - 1
Data/AtomicEditor/Resources/EditorData/AtomicEditor/editor/ui/playerwidget.tb.txt

@@ -1 +1,6 @@
-TBLayout: distribution: gravity, size: available, axis: y, id: playerlayout
+TBLayout: distribution: gravity,  axis: y, spacing: 8
+	TBLayout: distribution: gravity
+		TBButton 
+			TBSkinImage: skin: PowerOffButton
+			id play
+	TBLayout: distribution: gravity, size: available, axis: y, id: playerlayout, spacing: 0

+ 4 - 3
Source/Atomic/UI/TBUI.cpp

@@ -242,6 +242,7 @@ TBUI::TBUI(Context* context) :
     rootWidget_(0),
     rootWidget_(0),
     initialized_(false),
     initialized_(false),
     inputDisabled_(false),
     inputDisabled_(false),
+    keyboardDisabled_(false),
     fadeAlpha_(1.0f),
     fadeAlpha_(1.0f),
     fadeTarget_(1.0f),
     fadeTarget_(1.0f),
     currentFadeTime_(0.0f),
     currentFadeTime_(0.0f),
@@ -673,7 +674,7 @@ void TBUI::HandleKey(bool keydown, int keycode, int scancode)
 
 
 void TBUI::HandleKeyDown(StringHash eventType, VariantMap& eventData)
 void TBUI::HandleKeyDown(StringHash eventType, VariantMap& eventData)
 {
 {
-    if (inputDisabled_)
+    if (inputDisabled_ || keyboardDisabled_)
         return;
         return;
 
 
     using namespace KeyDown;
     using namespace KeyDown;
@@ -687,7 +688,7 @@ void TBUI::HandleKeyDown(StringHash eventType, VariantMap& eventData)
 
 
 void TBUI::HandleKeyUp(StringHash eventType, VariantMap& eventData)
 void TBUI::HandleKeyUp(StringHash eventType, VariantMap& eventData)
 {
 {
-    if (inputDisabled_)
+    if (inputDisabled_ || keyboardDisabled_)
         return;
         return;
 
 
     using namespace KeyUp;
     using namespace KeyUp;
@@ -701,7 +702,7 @@ void TBUI::HandleKeyUp(StringHash eventType, VariantMap& eventData)
 
 
 void TBUI::HandleTextInput(StringHash eventType, VariantMap& eventData)
 void TBUI::HandleTextInput(StringHash eventType, VariantMap& eventData)
 {
 {
-    if (inputDisabled_)
+    if (inputDisabled_ || keyboardDisabled_)
         return;
         return;
 
 
     using namespace TextInput;
     using namespace TextInput;

+ 2 - 0
Source/Atomic/UI/TBUI.h

@@ -52,6 +52,7 @@ public:
 
 
     void SubmitBatchVertexData(Texture* texture, const PODVector<float>& vertexData);
     void SubmitBatchVertexData(Texture* texture, const PODVector<float>& vertexData);
 
 
+    void SetKeyboardDisabled(bool disabled) {keyboardDisabled_ = disabled; }
     void SetInputDisabled(bool disabled) { inputDisabled_ = disabled; }
     void SetInputDisabled(bool disabled) { inputDisabled_ = disabled; }
 
 
     void FadeOut(float time);
     void FadeOut(float time);
@@ -73,6 +74,7 @@ private:
     void SetVertexData(VertexBuffer* dest, const PODVector<float>& vertexData);
     void SetVertexData(VertexBuffer* dest, const PODVector<float>& vertexData);
 
 
     bool inputDisabled_;
     bool inputDisabled_;
+    bool keyboardDisabled_;
 
 
     float fadeAlpha_;
     float fadeAlpha_;
     float fadeTarget_;
     float fadeTarget_;

+ 6 - 2
Source/AtomicEditor/Source/AEEditor.cpp

@@ -165,9 +165,11 @@ void Editor::HandlePlayStop(StringHash eventType, VariantMap& eventData)
     if (!player_)
     if (!player_)
         return;
         return;
 
 
+    TBUI* tbui = GetSubsystem<TBUI>();
+    tbui->SetKeyboardDisabled(false);
     if (player_->GetMode() != AE_PLAYERMODE_WIDGET)
     if (player_->GetMode() != AE_PLAYERMODE_WIDGET)
     {
     {
-        TBUI* tbui = GetSubsystem<TBUI>();
+
         tbui->SetInputDisabled(false);
         tbui->SetInputDisabled(false);
         tbui->FadeIn(.5f);
         tbui->FadeIn(.5f);
     }
     }
@@ -267,9 +269,11 @@ void Editor::HandlePlayRequest(StringHash eventType, VariantMap& eventData)
 
 
     AEPlayerMode mode = (AEPlayerMode) eventData[EditorPlayStarted::P_MODE].GetUInt();
     AEPlayerMode mode = (AEPlayerMode) eventData[EditorPlayStarted::P_MODE].GetUInt();
 
 
+    TBUI* tbui = GetSubsystem<TBUI>();
+    tbui->SetKeyboardDisabled(true);
+
     if (mode != AE_PLAYERMODE_WIDGET)
     if (mode != AE_PLAYERMODE_WIDGET)
     {
     {
-        TBUI* tbui = context_->GetSubsystem<TBUI>();
         tbui->SetInputDisabled(true);
         tbui->SetInputDisabled(true);
         tbui->FadeOut(.5f);
         tbui->FadeOut(.5f);
     }
     }

+ 16 - 0
Source/AtomicEditor/Source/Player/UIPlayer.cpp

@@ -49,6 +49,10 @@ UIPlayer::UIPlayer(Context* context):
     aePlayer_->SetUIPlayer(this);
     aePlayer_->SetUIPlayer(this);
 
 
     TBUI* tbui = GetSubsystem<TBUI>();
     TBUI* tbui = GetSubsystem<TBUI>();
+
+    // FIXME: disabling close button as having the widget die is currently bad
+    window_->DisableCloseButton();
+
     window_->SetText("Atomic Player");
     window_->SetText("Atomic Player");
     tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/playerwidget.tb.txt");
     tbui->LoadResourceFile(window_->GetContentRoot(), "AtomicEditor/editor/ui/playerwidget.tb.txt");
 
 
@@ -127,6 +131,18 @@ void UIPlayer::HandleUpdate(StringHash eventType, VariantMap& eventData)
 
 
 bool UIPlayer::OnEvent(const TBWidgetEvent &ev)
 bool UIPlayer::OnEvent(const TBWidgetEvent &ev)
 {
 {
+    if (ev.type == EVENT_TYPE_CLICK)
+    {
+        if (ev.target->GetID() == TBIDC("play"))
+        {
+            if (GetSubsystem<Editor>()->IsPlayingProject())
+            {
+                SendEvent(E_EDITORPLAYSTOP);
+                return true;
+            }
+        }
+    }
+
     return true;
     return true;
 }
 }