Page 1 of 2

ManiaLive 2 r284 (beta)

Posted: 08 Nov 2011, 17:09
by The_Big_Boo
Here it comes!

As some you already know, the GUI has been -a bit- rewritten so the compatibility is broken with plugins using windows (others should still work) but I'll try to sum up the changes.

Positioning
- The Y swapping isn't used anymore to keep a standard with manialinks (maybe I can reconsider this temporarily if it's really too annoying but I think it's better for people who are used to manialinks but doesn't know yet how to write a ManiaLive plugin)

GUI namespaces
- Displayables has been totally removed
- Handler has been removed, classes are now directly in Gui
- Windowing has been removed, sub namespaces and classes are now directly in Gui too

Controls
- The initializeComponents() method doesn't exist anymore, you need to use the normal constructor
- Method beforeDraw() has been renamed onDraw() and method afterDraw() has been removed
- Methods applyLayout() and removeLayout() are now a single method setLayout()
- Methods onResize() and onMove() now takes the old values as parameters
- It's now plenty assumed that a Control can be added to several windows at the same time, so you need to call the destroy() method yourself (especially if you have created actions with it). It can seems weird but in fact it can be really useful for updating values and redrawing every window including it easily.

Windows
- The initializeComponents() method doesn't exist anymore, you need to use onConstruct() instead
- You can add parameters to onConstruct() and pass them when calling Window::Create() but they all have to be declared as optional (this is a PHP limitation)
- Static method Redraw() has been renamed RedrawAll() and a new method redraw() has been created to redraw a window only if it's shown
- Static methods (except Create) now use every subclass instances, eg. if you call ManagedWindow::EraseAll() it will destroy every windows which inherit from ManagedWindow
- Methods setPlayerValue(), getPlayerValue(), setHeaderElement() and getHeaderElement() has been removed
- Methods deactivateLinks(), activateLinks() and getLinksDeactivated() has been renamed respectively to disableLinks(), enableLinks() and areLinksDisabled()
- Method showDialog() has been more or less replaced by a new method showAsDialog() which works as the show() method, except that when drawn it will add a background preventing to click on any other window.
- Panel is not a Control anymore but inherits from Window and ManagedWindow inherits from Panel. If one of your class inherits directly or indirectly from Panel, don't forget to call parent::onConstruct() in your onConstruct() method and parent::onResize() if you overload it

Shortkeys
- The key to totally hide GUI is now F8
- F5, F6 and F7 are free to use
- Only one callback per key can be set (don't forget to free the keys when you don't need them anymore)

CustomUI
- It now works almost the same manner than windows: each player has its own and unique CustomUI instance you get by calling Create()
- You can set the visibility for a specific player or for everybody by using a mask of constant, eg. to hide notices and chat for everybody, you call CustomUI::HideForAll(CustomUI::NOTICE | CustomUI::CHAT)
- Sending the new CustomUI is then automatic

Actions
- There is now a singleton to create actions, the ActionHandler class
- Methods callback() in Control and Window has been replaced by createAction(). You should be a bit careful with this method as created actions will be removed when calling destroy() so if the action is used somewhere else, it can break things. On the other hand, if you create an action by calling directly the ActionHandler, you have to think about deleting it.

Events
- There is no more Event classes in GUI
- More generally, Event classes now declare a constant for each specific event and those constants are a power of 2, eg. with application events

Code: Select all

	const ON_INIT      = 1;
	const ON_RUN       = 2;
	const ON_PRE_LOOP  = 4;
	const ON_POST_LOOP = 8;
	const ON_TERMINATE = 16;
So when registering a listener to the dispatcher, you can now specify which events of the class you want to listen to by adding a bitmask in parameters (default is all events). You should particularly use it for server callbacks, eg. in a plugin $this->enableDedicatedEvents(Event::ON_PLAYER_CONNECT | Event::ON_PLAYER_DISCONNECT)

Chat command interpreter
- A bug has been fixed, preventing a polymorphic command to be removed
- When entering a polymorphic command in the chat, the interpreter will now call the registered method with the complete string (except the command)
- You can now escape double quotes " in the chat with a backslash \, it will be send to your method correctly and without the backslash (eg. if you have a setservername command with 1 parameter, you can type /setservername "My \"super\" server")

ManiaHome and WebServices
- ManiaLive is now including the WebServices SDK but
- WebServices credentials should be provided in the config file as it was for ManiaHome
- If you want to use a service, you have to create a client with these credentials which are in \ManiaLive\Features\WebServices\Config

That's it for the main changes I think. Everything should run fine with standard plugins but I'm considering this release as a beta as it can have ugly bugs or memory leaks.

So you can download the files here:
ManiaLive
Standard plugins

Re: ManiaLive 2 r284 (beta)

Posted: 08 Nov 2011, 22:50
by Slig
Yop BoO :)
The_Big_Boo wrote:- The key to totally hide GUI is now F8
edit: There is an actionkey for F8 ? or you are using maniascript to catch it ?

Re: ManiaLive 2 r284 (beta)

Posted: 09 Nov 2011, 07:52
by Xymph
Slig wrote:
The_Big_Boo wrote:- The key to totally hide GUI is now F8
Il y a un actionkey pour F8 ? ou bien tu as trippé avec du maniascript ?
English please. ;)

Re: ManiaLive 2 r284 (beta)

Posted: 09 Nov 2011, 10:49
by Slig
Oops, i wanted to send a mp, not a quoted post :oops:

For info, the response is: actionkey=4 is triggered by F8

Re: ManiaLive 2 r284 (beta)

Posted: 24 Nov 2011, 09:02
by TheM
Hell a lot of changes!
It's going to be impossible to make all those changes into our MLEPP plugins...

Why changing good working systems...?

Re: ManiaLive 2 r284 (beta)

Posted: 24 Nov 2011, 12:08
by The_Big_Boo
It wasn't working as good as it seems ^^ There were some nasty hidden bugs, broken features, useless code, etc. that were really hard to fix and maintain. We also need a better base for future features.

About what you need to do in plugins, it's not that hard if you sum up what you actually have to do:
- Swapping Y is probably the longest part (I had to do it too, in ManiaLive and in the standard plugins)
- For namespaces, replacing all "\ManiaLive\Gui\Windowing" by "\ManiaLive\Gui" should do the job
- For controls and windows, there are only a few methods to rename (except the special case of Panel)
- Nothing to do about Shortkey (except that it works as expected now)
- CustomUI should be easier to use now
- Actions are mainly a method renaming
- You can still use events as before (even if it's better to use bit masks)
- Maybe you now have to split polymorphic chat commands by yourself but it's just a single line to add

Most of this can be done in a few hours ;) (but swapping Y may need a few days, I agree)

Re: ManiaLive 2 r284 (beta)

Posted: 27 Nov 2011, 08:47
by nocturne
TheM wrote:Hell a lot of changes!
It's going to be impossible to make all those changes into our MLEPP plugins... Why changing good working systems...?
Because they can! Hey, it's Nadeo.. We've all gotten used to the craziness by now..
The_Big_Boo wrote:It wasn't working as good as it seems ^^ There were some nasty hidden bugs, broken features, useless code, etc. that were really hard to fix and maintain. We also need a better base for future features.
I can agree, for the most part... but 'fixing' isn't the same as 'changing'. The challenge->map change was ridiculous enough, and now incredible changes -- that may or may not stay, or will be changing entirely in the near future.
And the swapping of the Y axis.. why was it that way to begin with? :roflol:

Not to seem too negative -- I appreciate all that Nadeo does (or did, rather, before the freezone fiasco that still threatens to ruin the franchise); but it's getting harder and harder to enjoy anything you guys do anymore. We have already a gotten buggy unfinished game, rife with the same illogical problems we've already suffered for years on previous tm games -- and once we get used to anything, it all changes again (but again, no fixes -- just naming convention changes)! It's frustrating as #%&& for a dev, server op, or community head.. and honestly, with DIRT3 and NFS:TR out now.. I can find a much funner racing experience elsewhere. TM thrives on the multiplayer experience alone, and everything Nadeo does seems to make that experience harder for those of us that actually make it possible.

Re: ManiaLive 2 r284 (beta)

Posted: 07 Dec 2011, 02:47
by Stardust8888
I`m hoster. After i read this things i informed my customers that im not able to offer a running Manialive for now.
After they read this post they understood it.

I hope the developers of the MLEEP will reject the behavior of Manialive and will only continue if they do respect your work.

It is a shame!!!

Re: ManiaLive 2 r284 (beta)

Posted: 07 Dec 2011, 10:20
by w1lla
Stardust8888 wrote:I`m hoster. After i read this things i informed my customers that im not able to offer a running Manialive for now.
After they read this post they understood it.

I hope the developers of the MLEEP will reject the behavior of Manialive and will only continue if they do respect your work.

It is a shame!!!
Hi,

as one of the developers of MLEPP, we acknowledge the fact that we are dont support this release by nadeo.

In fact we support the other release due to the r267 with some updates that are posted inside the mlepp release topic which can be found here:

Manialive R267

The latest Official working release for MLEPP can be found here:

MLEPP R1170

In the second post of that topic you will find some additions to make mlepp really functional for your clients.

There is also an unofficial release R1195: (It supports Dedimania but it has some minor bugs which we are working on)

MLEPP_R1195.zip

Its sad to regret that people let MLEPP go out of the blue due to a new Manialive. We as team find it also hard that Nadeo makes these changes but we will work in the near future towards a updated MLEPP that functionally will work side to side with ManiaLive.

Please be patient and find an alternative for the moment by using the above instructions to make it work as a server controller.

Anyway this should of been posted inside MLEPP forum:

http://forum.maniaplanet.com/viewforum.php?f=297

Hope this helps you and other hosters/customers to stay active with mlepp even though we do not follow the path of nadeo right away as its an hobby/free time project of some of us.

With kind regards,

W1lla.
MLEPP Developer.

Re: ManiaLive 2 r284 (beta)

Posted: 07 Dec 2011, 14:22
by papic
Thx for the best plugin :thumbsup:
w1lla wrote: MLEPP_R1195.zip
dedimania.php is not the last version in the archive ;)