Register forum user name Search FAQ

Gammon Forum

Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the password reset link.

Due to spam on this forum, all posts now need moderator approval.

 Entire forum ➜ MUSHclient ➜ Miniwindows ➜ Working on responsive miniwindows

Working on responsive miniwindows

It is now over 60 days since the last post. This thread is closed.     Refresh page


Posted by Tamon   (4 posts)  Bio
Date Wed 29 May 2019 03:21 AM (UTC)
Message
It's still very experimental but figured i'd put it out there for anyone interested in some functionality like this.


https://github.com/thesmallbang/SimpleWindow
Top

Posted by Fiendish   USA  (2,535 posts)  Bio   Global Moderator
Date Reply #1 on Wed 29 May 2019 03:43 AM (UTC)
Message
It looks interesting. I hope you keep posting as you make progress.

https://github.com/fiendish/aardwolfclientpackage
Top

Posted by Fiendish   USA  (2,535 posts)  Bio   Global Moderator
Date Reply #2 on Wed 29 May 2019 03:14 PM (UTC)
Message
It's not quite clear to me though what a View is from the readme. Could you explain the concepts a bit? Also, are you thinking that a user should rewrite their output on every tick? That seems quite inefficient.

https://github.com/fiendish/aardwolfclientpackage
Top

Posted by Tamon   (4 posts)  Bio
Date Reply #3 on Wed 29 May 2019 04:37 PM (UTC)

Amended on Wed 29 May 2019 04:40 PM (UTC) by Tamon

Message
Hi fiendish.

Everything so far came from another plugin I am working on. That plugin has different "views" such as session data, area data, fight stats etc. A view is essentially multiple windows stuffed in 1 where only 1 is displayed at a time and the user can switch between them. I may help to just think of them as tabs atm without a ui.

Currently i dont have the method in place to switch views unless you manually set the window__state.viewIndex via code.

As far as drawing on tick. The tick can be increased or decreased depending on your needs. I am currently thinking of friendly ways to invalidate the content cache and potentially redraw only when underlying data changes but I'm still on day 2-3 with this idea atm.

The overall goal right now is to provide something lesser but similar in functionality to a lot of the responsive css frameworks.
Top

Posted by Fiendish   USA  (2,535 posts)  Bio   Global Moderator
Date Reply #4 on Wed 29 May 2019 07:05 PM (UTC)

Amended on Wed 29 May 2019 07:07 PM (UTC) by Fiendish

Message
Quote:
I am currently thinking of friendly ways to invalidate the content cache and potentially redraw only when underlying data changes

I do something like this via my repaint buffering plugin, where calls to my plugin are like indicating a data change.

description at: https://github.com/fiendish/aardwolfclientpackage/wiki/Repaint-Buffer
plugin code at: https://github.com/fiendish/aardwolfclientpackage/blob/MUSHclient/MUSHclient/worlds/plugins/aard_repaint_buffer.xml

https://github.com/fiendish/aardwolfclientpackage
Top

Posted by Tamon   (4 posts)  Bio
Date Reply #5 on Wed 29 May 2019 08:28 PM (UTC)
Message
Ah understood. Yes, to invalidate the entire cache this would be fairly straight forward but what i'm looking to do is add support on a per content basis.


(I'm only like a month into lua so please excuse the terminoligy atm.)

What I was thinking is to add callback on the content and then iterating the content to see if it changes since the last update.

Today: (Would keep existing)
AddContent {
Text = "Hello"
}

Idea: (support cache invalidating)
AddContent {
GetText = function()
return someref.value
end
}

Idea is just to store the GetText result on each content object when creating the content cache and then do a comparison and look for changes before repainting. I haven't done any benchmarks etc but i'd assume the saving on the repaint would more than make up for the need to compare the content.

thoughts? I really appreciate your feedback.
Top

Posted by Fiendish   USA  (2,535 posts)  Bio   Global Moderator
Date Reply #6 on Wed 29 May 2019 10:54 PM (UTC)

Amended on Wed 29 May 2019 11:08 PM (UTC) by Fiendish

Message
That sounds like a neat idea. I think everyone would still benefit from globally coalescing repaint requests in the way that my plugin does. Honestly, Repaint should just do what my plugin does automatically, but until then we have the plugin.

One of the biggest real-world performance problems I've encountered comes from having multiple plugins nearly simultaneously wanting to refresh the display because they're all triggering on the same lines of text from the MUD. In those moments, you really don't want to allow Repaint to be called rapid fire because with enough plugins all calling it, it can very noticably slow down the client. And just using Redraw isn't a great option, because it drops frames and that leads to a worse user experience.

https://github.com/fiendish/aardwolfclientpackage
Top

Posted by Tamon   (4 posts)  Bio
Date Reply #7 on Mon 03 Jun 2019 03:54 AM (UTC)
Message
Made some decent progress over the weekend.

Implemented css style classes and added a sample plugin now for anyone that wants to try it out.
Top

Posted by Fiendish   USA  (2,535 posts)  Bio   Global Moderator
Date Reply #8 on Mon 03 Jun 2019 02:00 PM (UTC)
Message
I like the new sample images.

https://github.com/fiendish/aardwolfclientpackage
Top

The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).

To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.


20,472 views.

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.