Suprcode / Zircon

Legend of Mir 3 - Official Public Zircon Source
330 stars 249 forks source link

Toolbar UI fading with HideChatBar #151

Closed josh-74 closed 1 month ago

josh-74 commented 1 month ago

Looking into this from another bug which was noted, had a closer look at this, and the only time the Toolbar UI images fade is when the HideChatBar is initiated, something's effecting the other UI's to all Fade/Hide when HideChatBar hides the chat.

I've tried debugging some of the code, but so far no luck. But from my understanding it's somewhere from DXConfigWindow.cs & ChatOptionsDialog.cs -

https://github.com/user-attachments/assets/3d4fbd51-2083-40aa-8120-cb43722d5ae8

Suprcode commented 1 month ago

You can change the chat bar to show always in the options if you want to - otherwise its designed to hide when its not active by default.

You seem to have realised this i guess? Closing this issue.

josh-74 commented 1 month ago

So for the files you're keeping chat bar to always show in-order to avoid health potions disappearing upon HideChatBar?

Suprcode commented 1 month ago

Oh I see, when you said toolbar I thought you were talking about the chat bar, not the belt slot.

Yes that is a bug, but it's already been raised in a previous ticket. It's not related to the hide chat bar specifically as it can happen in many scenarios. It's only the first slot and it does go away randomly.

Unsure what triggers it

josh-74 commented 1 month ago

Issue on my side resolved I can't say this is an actual fix, I'm not sure if it's the parent of the code which is causing it, as BeltDialog share the same parents as the Fade/Chat settings in general. Or if it was BeltDialog needing more work done to it, but for the mean time I've set the Grid to always display, and to bring all cells to the front of the UI, and made further improvements. But I've spent many many hours and I cannot figure out why "ChatFade", or "FadeOutCheckBox", or "HideTabCheckBox", kept effecting the [1] grid cell in Belt.grid.grid, but I've left the code attached for BeltDialog.cs if you wanted to check it out.

The only other solution I can think of is trying to assign new parents to BeltDialog.cs , and ensuring it doesn't share the same of those which ChatFade also share, or if it's deep down in DXItemCell which blows me out of the water completely. As my brain is only so big.

BeltDialog.txt

Suprcode commented 1 month ago

Thanks for investigating, yes it's a weird one as I don't think its directly code related.

Adding the grid initialization and BringToFront in to the constructor does seem to have fixed it - for now at least.

I'll check your code in shortly

josh-74 commented 1 month ago

Okay sounds good.

MarioSanc commented 1 month ago

Hey, I know this is already closed, but I've been following this bug, and I found that there is a problem with DXManager. In my case I "solved" it by removing 2 lines in DXControl.cs, DrawControl function. Probably this affect other things, but so far I haven't encountered any problems.

   protected virtual void DrawControl()
   {
       if (!DrawTexture) return;

       if (!TextureValid)
       {
           CreateTexture();

           if (!TextureValid) return;
       }

       //float oldOpacity = DXManager.Opacity;

       DXManager.SetOpacity(Opacity);

       PresentTexture(ControlTexture, Parent, DisplayArea, IsEnabled ? Color.White : Color.FromArgb(75, 75, 75), this);

       //DXManager.SetOpacity(oldOpacity);

       ExpireTime = CEnvir.Now + Config.CacheDuration;
   }

This is not a solution, but I wanted to provide more information to help resolve this.