# Tuesday, 20 June 2006

For some time now I've been working on a project, QuickBuff/NB2-Lite, the former being its name, the later being its purpose.  The premise is to have a plugin that can take the old nb2 profiles we probably all have still laying around and run them.  Recently I've been making a lot of progress on this and have been able to ssuccessfully run buff profiles.  Unfortunately vital recovery is still incomplete, and I haven't yet started on equipment manipulations.

I very much wanted to bring back the old nb2, but between the network parser changes and the control infrastructure changing, that became less and less of a reality.  The network parser alone was enough to make me want to drop it since nb2 is just a huge network driven state engine.  Not to mention the sheer amount of code duplication within that engine.  I don't know how nerf ever managed to maintain this code as long as he did.

Expect to hear more on this in the future as I near the testing phase.  I'll probably also start requesting copies of your profiles so that I can make sure everything works as expected.

posted on Tuesday, 20 June 2006 15:15:49 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback
# Thursday, 15 June 2006

I know I said something about tomorrow, but once I started working out the examples I wanted, I found many defiencies in my original setup.  I've since been working out a complete overhaul of the message system.  Once I complete the refining of the new system, I'll go over everything including the differences between the two.

posted on Thursday, 15 June 2006 17:51:35 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback
# Tuesday, 06 June 2006

It's been a while since I've said anything about Decal so today I've decided to share some things about the next public release of Decal.  We've come a long way with Adapter and our new rendering code so this upcoming release will likely be the last time you guys see the old view system.  You can also expect a few other components to be completely redone and at least one to be gone forever.

There are two new features in Adapter that will be the focus of today's article.  One will make life easier for devs, the other will make things much more interesting for them.  Firstly, to make development and maintenance easier, I've added another code hook-up attribute to the system, BaseEvent.  The purpose of BaseEvent is very much like that of ControlEvent.  It works on the protected 'system' events that exist as part of PluginBase (which mostly come from ACHooks in the Decal core).  When applied to an event handler, these attributes will automatically hook up and tear down the connection to that event.

[WireUpBaseEvents]
public class Test : PluginBase
{
protected override void Startup()
{
// Network events
// this is the old way of doing it
//this.ServerDispatch += new EventHandler<NetworkMessageEventArgs>(Test_ServerDispatch);
}

[BaseEvent("ServerDispatch")]
void Test_ServerDispatch(object sender, NetworkMessageEventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}

protected override void Shutdown()
{
// old tear down
//this.ServerDispatch -= this.Test_ServerDispatch;
}
}

This may not look like much since once you add the attribute, you only save one line of code.  What it does for you, is guarantee proper shutdown of all of your events.  I've found many times in my code where my tear-down code missed several events.

Now for the more interesting stuff.  Plugin devs often want to share the functionality of their plugin with others.  They also sometimes want to get information from other plugins.  This can't always be implemented to suit all (depending on language/knowledge/etc) so we've added a message notification system to Adapter to help things along.  With the next release of Decal, all Adapter plugins will be able to consume a single event "AdapterMessage", and they will be notified of all messages sent between plugins.  Sending a message is very simple as well, you just derive an object from AdapterMessageEventArgs, add in the information you want to share, and call SendAdapterMessage.

I'll talk a bit more about messages tomorrow, along with some examples on how to use it.

posted on Tuesday, 06 June 2006 09:30:53 (Central Daylight Time, UTC-05:00)  #    Comments [0] Trackback