View Single Post
01/04/15, 04:24 PM   #8
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
Originally Posted by Garkin View Post
Usually everything, what you want to do when scene is showing or hiding, is done by registering to StateChange callback, something like:
Lua Code:
  1. local function OnStateChange(oldState, newState)
  2.     if newState == SCENE_SHOWING then
  3.         CHAT_SYSTEM:Minimize()
  4.     elseif newState == SCENE_HIDDEN then
  5.         CHAT_SYSTEM:Maximize()
  6.     end
  7. end
  8.  
  9. local scene = SCENE_MANAGER:GetScene("bank")
  10. scene:RegisterCallback("StateChange", OnStateChange)
But if it works, do it as you like.

SetState triggers too often and SetBaseScene get a little bug when prehooking.

So I used your method :

Lua Code:
  1. function pChat.onSceneStateChange(oldState, newState)
  2.  
  3.     if pChat.opts.chatMinimizedInMenus then
  4.         if newState == SCENE_HIDDEN then
  5.             CHAT_SYSTEM:Minimize()
  6.         end
  7.     end
  8.  
  9.     if pChat.opts.chatMaximizedAfterMenus then
  10.         if newState == SCENE_SHOWING then
  11.             CHAT_SYSTEM:Maximize()
  12.         end
  13.     end
  14.    
  15. end
  16.  
  17. -- RegisterCallback for Maximize/Minimize chat when entering/leaving scenes
  18. -- "hud" is base scene (with "hudui") -- This declaration has to be set AFTER pChat.onSceneStateChange declaration
  19. pChat.hud = SCENE_MANAGER:GetScene("hud")
  20. pChat.hud:RegisterCallback("StateChange", pChat.onSceneStateChange)

Thank you

Anyway, option asked added in pChat 1.17

Last edited by Ayantir : 01/04/15 at 04:30 PM.
  Reply With Quote