|
01-02-2007, 10:51 AM
|
Super Moderator
|
|
Join Date: Oct 2024
Posts: 137
|
|
VanGUI Development Thread
Hey all,
Posted this to the beta boards and figured I'd cross-post here. I'll update as things develop.
Mal.
=================
Welp I'm back from a couple weeks in Big Brother, aka the 'States (I'm Canadian eh) and feeling a bit rejuvenated now that the craziness of the holidays is over. Sooo I'm getting back down to business.
On the ~22 hour drive back I had a bit of an epiphony regarding the UI editor, which I'm officially gonna name VanGUI (thanks BWShellShocked for the suggestion ). I resolved something that'll kill 3 birds with one stone, so I'm getting started on that now. The plus side is it'll save me a whole lot of coding later on (I hope), but it does mean I've gotta rework a bunch of stuff.
Incidentally - I did a bit of work on a UO server emulator with my brother-in-law while I was down in St. Louis... quaint little game that (yeah yeah flame on fanboiz, see if I care ).
Anyway, I wanted to start this thread to track progress on the editor. As always time is an issue for me. I'm not single anymore and can't devote hours an' hours on the project without singing soprano, but I am putting everything I have into it.
I'll put down some rough estimates, but don't hold me to them. I have a real job so I don't have a set timeslot to work on this stuff. Just trust me that it's basically all I'm doing in my spare time and it'll be done (hopefully sooner than later). With B4 now starting I feel a bit more pressure 'cause I know release is just around the corner and I really wanna get this finished and polished by launch.
Short term goals - Alpha
The UI will have most of the functionality I want, but very little of the look. Functionality is more important. The UI will be kinda "dev-ish". Those of you familiar with Visual Studio will recognize it right away.
% Complete: hmm, there are 2 percentages here - functionality accomplished and time spent. Time-wise I'd say I'm 50% to alpha; functionality-wise I'd say I'm 10%. I know I've been "working" on this for 3 months now, but The Season got in the way (and more than a bit of a learning curve with regards to VS design infrastructure, oh and about 597 birthdays and anniversaries in the fall) so the second half should go much faster.
Medium Term Goals - Beta
Well, I wanna get the final look-and-feel finalized at this point. And there will be the bazillion bugs and suggestions from Alpha to implement. I obviously won't get it all done, but I'll get as much as I can.
If I get the final look in place and iron out the significant bugs by this stage, I'll be happy.
% Complete: yeah right.
Long Term Goals - Release
I need to get this done by VG launch. I don't want VG to launch without a good editor available for UI mods (that's not to say mine's a good editor, but it is to say that I want mine to be a good editor by then).
If any of you has done DAoC modding you might have used this gem. This came to my attention about a month ago (thanks Sarrene) and I was amazed at the simliarities between his ideas and mine. /Shrug, maybe it's just that there are some must-haves in a UI editor and we're both bound by that .
At any rate, I was impressed by the fact that he allows you to put dummy data in various elements so that you get a better feel for what you'll see in game. It's fine to say "this text box will have a foreground of gold and a background of black", but it's really nice to see it shown at design-time. I had planned to do something like this at a later time, but I'm thinking it's a must-have so I'll be looking at implementing this by release.
Oh, and the bugs. Gotta fix the bugs.
% Complete: dream on.
So that's the plan. Be gentle with me
|
01-02-2007, 07:17 PM
|
Administrator
|
|
Join Date: Sep 2024
Location: Phoenix
Posts: 374
|
|
Well Mal, let me just say thank you for the work your putting into this for the community, some times people don't say thank you enough, so thank you =-)
~Sokol
|
01-03-2007, 10:06 AM
|
Super Moderator
|
|
Join Date: Oct 2024
Posts: 137
|
|
Hehe thanks
|
01-03-2007, 10:40 AM
|
|
Ghost
|
|
Join Date: Oct 2024
Posts: 298
|
|
Welcome back! Im glad you had a good holiday. I hope it was fun and relaxing for you. Or idoes the relaxing part begin now that you are home again?
Aye, A big thank you also from me again. It seems like you have put a lot of work into it so far. I know you said its been three months, but lords, that is a lot of work to do, expecialy on your own time. So no worries there. Even if I do harass you once in a while.
It will be interesting to see how it turns out, and be nice once I can start working on some layouts and new TGA files for people. Of course, most of that will have to wait untill the NDA is dropped I know. Though I am excited to actualy do something.. since boss man wont give me anything.
hehe.. oh on a side note.. I have my new HDD, its installed and I am ready to go. I love it!
Welcome back again, and thank you from myself and my family!
Peace,
Sarrene'
__________________
01101001 01101101 00100000 01101110 01101111 01110100 00100000 01100001 00100000 01100111 01100101 01100101 01101011
68 6f 6e 65 73 74
|
01-03-2007, 12:20 PM
|
Administrator
|
|
Join Date: Sep 2024
Location: Phoenix
Posts: 374
|
|
Bah, you will have enough to do come tomorrow or shortly there after.
~Sokol
|
01-12-2007, 10:06 AM
|
Super Moderator
|
|
Join Date: Oct 2024
Posts: 137
|
|
Here's a bit of Q&A to give some info on what VanGUI is intended to do, from the Beta boards:
Quote:
Originally Posted by fandaor
The soft will be release as an installer version, so it can be installed anywhere on the computer, and we will have a configuration that will allow people to state where the Vanguard installation is, right ?
|
Yep. I'll default the VG installation directory to the usual place but you'll be asked to confirm / browse to new folder first time you run the app. There will be a configuration option to change that at any time.
I'll have an installer for VanGUI but there will be no registered DLLs so the files can be manually copied if you need to move them elsewhere.
Quote:
Originally Posted by fandaor
Could it also be to add a pointer to a "graphical" directory ?
I explain my point :
In the case I want to design my own UI, I will surely will wish to re-design it (windows, icons, etc...). And there will also be websites where to get new graphics (like the T-King when we were playing EQ), so if we can have the option in the VanGUI to add a directory in the graphic section, this will, to my point of view, be a good addon.
|
You'll have projects, each project defining a UI with its own set of folders as defined by Sigil. Currently it's:
Code:
+ Shells
`--+ <UI Name>
|-- Windows
|-- Textures
|-- Index.xml
`-- SkinInfo.xml
So yes, you'll work on your own set of assets and files (and, of course, the current default shell folders will be there).
Quote:
Originally Posted by fandaor
Would also it be possible to change the colour and the font of the characters used in the UI ?
|
Hmm, which UI? VanGUI's or VG's? I plan to support color scheme / font customization in VanGUI eventually, but not right away. As for VG's, you'll be able to customize colors / fonts in the UIs you design, same as you can now with XML. If you mean chat font colors etc. like what you get in-game via the a chat tab's Properties window, I could do that at some point maybe as an add-in. There are plenty of folks capable of doing that, though, so maybe one of them can take it on as a project to get it done sooner than later
Quote:
Originally Posted by fandaor
Another point I wanted to know :
Will you release a "preview" system, or will we have to switch from VanGUI to Vanguard to see the look of the UI ?
I remember Sidlwidl when I was playing EQ and it was quite annoying having to switch.
|
It's a graphical designer so you'll see it as you're designing. I want it to be as WYSIWYG as possible.
I need to get innovative for some of the functionality, like changing a button's graphics when the mouse moves over it or when you click it, because mouse events aren't raised when in design mode. The functionality is there, and it works, but it's not being invoked because the designer is intercepting and canceling mouse events (Microsoft sucks). I have some workaround ideas though and I should be able to get it done one way or another. Worst case scenario you'll have to press a Preview button to switch to runtime mode if you want to see dynamic stuff like flybys and button presses.
Quote:
Originally Posted by fandaor
The VanGUI will work also for modded UIs ?
Will it contains all the other functions that are allowed ?
|
Yep. It's purpose is to allow you to do anything VG's UI system allows you to do. You'll be able to mod the default UI, your own UI, someone else's UI... whatever. Anything you can do via the XML you'll be able to do via VanGUI.
Quote:
Originally Posted by fandaor
Thank you for the reply, and most of all : THANK YOU FOR YOUR DEDICATION AND YOUR HARD WORK.
|
Thanks
|
01-12-2007, 10:13 AM
|
Super Moderator
|
|
Join Date: Oct 2024
Posts: 137
|
|
Taiisien has posted this in another form, but I thought I'd put up the XML-formatted list of game vars he put together for VanGUI:
|
01-12-2007, 10:17 AM
|
Super Moderator
|
|
Join Date: Oct 2024
Posts: 137
|
|
Here's an interesting proof-of-concept viewer put together by thorvang to give an idea of the relationship between what you see in a SkinInfo file and the actual targa. VanGUI will have something similar.
To those of you wondering how it was done, he did it in QT and built his own C++ targa loader. I like it Short 'n sweet.
Here's a quote:
Quote:
Originally Posted by thorvang
my own loader. i wrote this UI in qt and qt doesn't support tga. plus the loader i used earlier failed to load some test data (drox ui) so i sticked to my own loader (supports unmapped tga +rle)
edit: added the c++/qt code to load the tga (if anyone wants to know ^^)
Code:
// ensure compiler doesn't mess with the byte order
#pragma pack(push, 1)
struct TgaHeader
{
char identsize; // size of ID field that follows 18 byte header (0 usually)
char colourmaptype; // type of colour map 0=none, 1=has palette
char imagetype; // type of image 0=none,1=indexed,2=rgb,3=grey,+8=rle packed
short colourmapstart; // first colour map entry in palette
short colourmaplength; // number of colours in palette
char colourmapbits; // number of bits per palette entry 15,16,24,32
short xstart; // image x origin
short ystart; // image y origin
short width; // image width in pixels
short height; // image height in pixels
char bits; // image bits per pixel 8,16,24,32
char descriptor; // image descriptor bits (vh flip bits)
// pixel data follows header
};
#pragma pack(pop)
// reverted pragma
QPixmap load(const char *filename)
{
// check if file has tga extension
bool isTga = false;
int len = strlen(filename);
if(len >= 3)
{
char ext[3];
ext[0] = tolower(filename[len - 3]);
ext[1] = tolower(filename[len - 2]);
ext[2] = tolower(filename[len - 1]);
if(ext[0] == 't' && ext[1] == 'g' && ext[2] == 'a')
isTga = true;
}
if(!isTga)
return QPixmap(filename);
// stupid Qt doesn't know how to load tga, so we'll load it by ourselves
QPixmap pixmap;
FILE *fp; // file streams would be more c++ ... oh well :D
fp = fopen(filename, "rb");
if(!fp)
return pixmap;
TgaHeader header;
fread(&header, sizeof(TgaHeader), 1, fp);
// we only deal with rgb images, unmapped and rle, and no additional header information
if(header.imagetype != 2 && header.imagetype != 10 && !header.identsize && !header.colourmaptype)
{
fclose(fp);
return pixmap;
}
int bytesPerPixel = header.bits/8;
int imageSize = header.width * header.height * bytesPerPixel;
uchar *imageData = new uchar[imageSize];
fread(imageData, imageSize, 1, fp);
fclose(fp);
// decode rle, if any
if(header.imagetype == 10)
{
uchar *rleData = new uchar[imageSize];
memcpy(rleData, imageData, imageSize);
int i = 0;
int r = 0;
while(i < imageSize && r < imageSize)
{
int num = (rleData[r]&0x7F) + 1;
if(rleData[r] > 127) // is rle
{
for(int k = 0; k < num; ++k)
{
if(r + 1 + bytesPerPixel >= imageSize || i >= imageSize)
return pixmap; // corrupt image data!
memcpy(&imageData[i], &rleData[r + 1], bytesPerPixel);
i += bytesPerPixel;
}
r += bytesPerPixel + 1;
}
else
{
if(r + num * bytesPerPixel + 1 >= imageSize)
return pixmap; // corrupt image data!
memcpy(&imageData[i], &rleData[r + 1], num * bytesPerPixel);
i += num * bytesPerPixel;
r += num * bytesPerPixel + 1;
}
}
delete[] rleData;
}
QImage::Format format;
switch(header.bits)
{
case 16 : format = QImage::Format_RGB16; break;
case 24 : format = QImage::Format_RGB32; break;
case 32 : format = QImage::Format_ARGB32; break;
default : delete[] imageData; return pixmap; // any other than 16, 24 or 32 would be a broken image
};
QImage image(imageData, header.width, header.height, format);
// deal with the TGA flipping of axis
// bit5 == 0 : flip
// bit5 == 1 : don't flip
image = image.mirrored(0, !(header.descriptor&16)); // copies the image. performance loss, but who cares ;-)
pixmap = QPixmap::fromImage(image);
delete[] imageData;
return pixmap;
};
|
|
01-12-2007, 10:23 AM
|
Super Moderator
|
|
Join Date: Oct 2024
Posts: 137
|
|
And we have our own splash screen! Thanks to Tweedlum:
|
01-12-2007, 10:25 AM
|
|
Super Moderator
|
|
Join Date: Nov 2024
Location: Oxford, UK
Posts: 772
|
|
Quote:
Originally Posted by Malacki
Taiisien has posted this in another form, but I thought I'd put up the XML-formatted list of game vars he put together for VanGUI:
|
Great work Taiisien has done helping out, and I don't mean to discount it - but.
I've got a script now which parses a logfile after doing /gvlist. At the moment it outputs it in Wiki format, but I could quite easily have it also output an xml file too (in whatever way you want). If it will help, let me know.
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
|
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 05:03 AM.
|
|