Advertisement Jump to content
  • Advertisement
  • entries
  • comments
  • views

Screw it...

Sign in to follow this  


I'm done with this art thing for now. I'll still be practicing and such, I'm just not going to be trying to do art for my game. I'll take what I've got and add some filler art and once I'm finished I'll try to find an artist. I can't stay consistent enough and I'm still having a bunch of problems with perspective.

In other news I implemented a dialog class, a new required button overlay (the red x button in the upper right hand corner), and skinless rendering for the Button class (notice how the regular button skin is rendered underneath the red x button.) I'm going to add the ability to have animated overlays so that they change with the state of the button.

I also made a new skin (just to test it out) and it turned out pretty good:

It uses the BlueMesa Win32 theme that I have set. The only thing that had to be done via code was the Dialog class. Everything else was done via my skin files (which are still the old ones, since I haven't gotten around to changing them), even the text and such.

I've decided that I'm not entering 4E5 unless my entry qualifies. I want to be able to just design it how I want and if it qualifies for 4E5, then I'll enter. I'm still going to put a bunch of effort into it though. And I plan on finishing it before 4E5 ends.

Anyway, back to work for me.

Edit: Btw, am I the only one that thinks the Dialog in the first screenshot looks messed up? (besides the red x button not fitting the theme.)

Ok, I came up with a Dialog skin much better than the first:
Sign in to follow this  


Recommended Comments

The UI looks awesome. What do these skin files look like? I'm going to need to implement some sort of system like that in my UI between my current project and the next.

Share this comment

Link to comment

lol, just kidding.

Original post by Deyja
The UI looks awesome. What do these skin files look like? I'm going to need to implement some sort of system like that in my UI between my current project and the next.

Thanks! At the moment it uses just some plain crappy text-files, but if you go back 2 entries look below you can see an example of what I'm working on implementing (it is a file similar to CSS. Really easy to use and modify by non-programmers.) And, if you go back 1 entry look below further, you can see part of the code that I use to load it.

Offset: Point(0, 0);
LeftWidth: 12;
TopHeight: 12;
RightWidth: 12;
BottomHeight: 12;

And the code to load it (missing the function parsing ATM.):

std::ostream& operator<<(std::ostream& Stream, const std::string& String)
return Stream;

class ScriptValue
std::string m_Variable;
std::string m_Value;

class ScriptClass
std::string m_BaseClass;
std::map<std::string, ScriptValue> m_Values;

void SetBaseClass(const std::string& String)
m_BaseClass = String;

const std::string& GetBaseClass() const
return m_BaseClass;

void SetValue(ScriptValue Value)
m_Values[Value.m_Variable] = Value;

ScriptValue* GetValue(const std::string& Name)
std::map<std::string, ScriptValue>::iterator Itor = m_Values.find(Name);
if(Itor == m_Values.end())
return 0;
return &(*Itor).second;

std::string Script;

int nIndex = 0;
int nStart = 0;
while(nIndex < Script.size())
ScriptClass NewClass;

nStart = nIndex;
while(nIndex < Script.size() && Script[nIndex] != '{' && Script[nIndex] != '}')
std::string ClassName = Script.substr(nStart, nIndex - nStart);
if(ClassName == "" || ClassName == "\n")

++nIndex; // skip the {

while(nIndex < Script.size() && Script[nIndex] != '}')
ScriptValue TempValue;

while(nIndex < Script.size() && Script[nIndex] != ':')
if(Script[nIndex] != ' ' && Script[nIndex] != '\t' && Script[nIndex] != '\n')
TempValue.m_Variable += Script[nIndex];
++nIndex; // skip the :

while(nIndex < Script.size() && Script[nIndex] != ';')
bool bInQuotes = false;
if(Script[nIndex] == '\"')
bInQuotes = !bInQuotes;
if(Script[nIndex] != '\t' && Script[nIndex] != '\n')
TempValue.m_Value += Script[nIndex];
else if(!bInQuotes && Script[nIndex] != ' ')
TempValue.m_Value += Script[nIndex];
++nIndex; // skip the ;

if(TempValue.m_Variable != "}" && TempValue.m_Value != "}")
std::map<std::string, ScriptClass>::iterator Itor = m_Classes.find(NewClass.GetBaseClass());
if(Itor == m_Classes.end())
m_Classes[ClassName] = NewClass;
if(Script[nIndex] == '}')

I'm also going to use a similar system for the layout file. I haven't quite worked that out yet though.

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!