Kapiainen / Lauhdutin

A Rainmeter skin for launching games.
MIT License
67 stars 8 forks source link

(Suggestion) Add more rows #62

Closed BanCrash closed 7 years ago

BanCrash commented 7 years ago

Hello again. I like so much the new feature that hiddes the skin in the screen, and I think that could be awesome have the option of adding more rows, like a grid. Now that the skin could be hidden I think would be interesting to have all the screen filled with games and hide it when you launch a game or simply don't want to see the grid.

Kapiainen commented 7 years ago

My main concern would be the performance impact, but perhaps it won't be noticeable. However, I'm currently working on a major overhaul of the GUI in order to improve performance (mainly during animations) and to clean up the code. It would probably be best to not start working on a grid system until after that overhaul has been completed.

BanCrash commented 7 years ago

You have a point about that, but I guess that would be dependent of the computer and the grid size too. Sure, better to not mixed things. Besides, maybe that overhaul helps to reduce that possible perfomance impact too. In any case thanks for take the suggestion into account.

Kapiainen commented 7 years ago

Some click and hover animations are most likely not going to work properly in a grid system. When a banner is moved or resized, then it will end up above or below some other banners. This is due to the order that meters are defined in a config also determining which meter is drawn on top of or below other meters. Not a huge problem, but something I'll have to keep in mind.

BanCrash commented 7 years ago

I am not sure If I understand correctly the problem, but If I do maybe the solution is before doing the animation in lua part get the X and Y of the banner and in the end set that X and Y again? For example:

Before Animation: SlotBannerToAnimate = SKIN:GetMeter('SlotBanner37') SlotBannerToAnimateX= SlotBannerToAnimate:GetX() SlotBannerToAnimateY= SlotBannerToAnimate:GetY()

Also can get the Width and the height, if that is a problem too.

SlotBannerToAnimateW= SlotBannerToAnimate:GetW() SlotBannerToAnimateH= SlotBannerToAnimate:GetH()

--Animation--

After the animation: SlotBannerToAnimate:SetX(SlotBannerToAnimateX) SlotBannerToAnimate:SetY(SlotBannerToAnimateY) SlotBannerToAnimate:SetW(SlotBannerToAnimateW) SlotBannerToAnimate:SetH(SlotBannerToAnimateH)

Like I said before I am not sure if I understand correctly the problem, so I don't know if that could be a solution for that.

Kapiainen commented 7 years ago

Not quite what I'm talking about, but I did get an idea for how one might solve the issue.

BanCrash commented 7 years ago

Glad to read that.

Kapiainen commented 7 years ago

Started working on this today.

griddemo

Implemented so far:

Animations don't work properly at the moment since they are operating on the assumption that there is only a single row/column of slots.

The performance gets worse as expected as the total number of slots increases (slots per row/column * rows/columns). Slot highlighting takes longer to update and animations are slowed down. At the moment I'm not sure what I could do to reduce the performance hit. At this point I'm assuming that it is taking longer for Rainmeter to draw the skin instead of the Lua script, which updates the state of the skin, requiring more time to complete. I still need to do some profiling to see if that is the case, but that is my gut feeling right now. For example updating all of the slots (e.g. when scrolling) would take longer for the Lua script to do since there are more slots. However, highlighting a slot should not take longer for the Lua script to do as the amount of slots increases. The fact that single-slot animations and even slot highlighting are getting slower seems like an indicator that Rainmeter is indeed taking longer to draw the skin due to the number of slots.

BanCrash commented 7 years ago

I do some testings with the branch and I see the same that you, with a 6x6 grid with Slot Width:310 and Height:145 I have a perfect perfomance, but with a 12x12 grid with W:155 and H:72.5 I see a big impact in the perfomance.

Probably you're right and Rainmeter doesn't have enough capacity to handle that amount of items, but I think at least a 6x6 grid with 36 games is big enough .

Kapiainen commented 7 years ago

Quick update on the current status of this feature. A busy schedule and travel has prevented me from testing changes and pushing any commits, but I think I've got the animation stuff figured out. I've been working on it on a Linux netbook so I haven't been able to test it yet, but I should be able to resume working on this normally again in a day or two. I will hopefully have a new version ready for testing soon.

BanCrash commented 7 years ago

Glad to read that, thanks for the update and all the work!!

Kapiainen commented 7 years ago

This feature is included in the new version (beta 1).

BanCrash commented 7 years ago

Thank you so much!!!! I will download right now!

Thank you for all your hard work!!!