User Tag List

Results 1 to 5 of 5

Thread: Purple stuff.

  1. #1
    OBEY GOVERNMENT GOD ZC Developer
    Gleeok's Avatar
    Join Date
    Apr 2007
    Posts
    4,779
    Mentioned
    256 Post(s)
    Tagged
    10 Thread(s)
    vBActivity - Stats
    Points
    12,676
    Level
    32
    vBActivity - Bars
    Lv. Percent
    96.02%

    Purple stuff.

    Well, it's come to this, my least favorite thing to work on. It's like the stuff in the fridge that never gets drank until you're out of everything else: The purple stuff. :tongue2: (I'm talking about the UI of course.)

    There's actually been a whole bunch of cool stuff, but a there's a few pertaining to this particular topic worthy of interest. The first is actual good looking pixel-perfect font support such as bitmap and ASCII type fonts. These are much easier to get to look right at low resolutions than freetype fonts. That and the GUI code is actually being worked on now. That last part might also be important... :\

    Also, the complete bestiary:
    ...

    The todo list for these isn't actually so bad though. In a nutshell:
    -Implement some kind of auto layout.
    -Have a parent of default GUI so that fonts and skins don't have to be manually set.
    -Implement a ListBox with customizable ListContents so that UI's with many items or texts will be much more simple (eg. Inventories).
    -Fix bugs aaah!

    You can see what I mean from the code that does the window:
    Code:
    class TestScreen : public Screen
    {
    public:
    	Font f;
    	Texture frameTex;
    	Texture bgTex;
    	Sprite frameSprite;
    	Sprite bgSprite;
    	AnimatedSpriteSet curMonsterSprite;
    
    	SpriteBatch m_spriteBatch;
    
    	Widget mainMenu;
    	Frame frame[3];
    	Widget infoContainer;
    	Label monsterName;
    
    	Label attribNames[12];
    	Label monsterStats[12];
    
    	BackgroundImage bgImage;
    
    	int curID;
    	bool needsUpdate;
    
    	TestScreen()
    	{
    		curID = 0;
    		needsUpdate = true;
    
    		f.LoadFromFile("data/fonts/ff1_gba_font.png", 8);
    		bgTex.LoadFromFile("data/textures/gui.png");
    		//bgTex.SetFilterMode(0x2601);
    
    		frameSprite.Create( &bgTex, Rect(0,64,24,24) );
    		bgSprite.Create( &bgTex, Rect(64,0,64,64) );
    
    		bgImage.SetSize(256,224);
    		bgImage.SetSprite( bgSprite );
    		bgImage.SetAutoFitSprite(true);
    
    		foreachi(i, 3) {
    			frame[i].SetFromSprite(frameSprite);
    			//frame[i].SetBackground(bgSprite);
    		}
    
    		monsterName.SetFont(&f);
    		monsterName.SetPosition(12,12);
    		monsterName.SetSize(20, 80);
    		monsterName.SetTextAlignment(AlignCenter);
    		frame[0].AddChild(&monsterName);
    
    		frame[0].SetSize( 128, 32 );
    		frame[1].SetSize( 128, 224 );
    		frame[2].SetSize( 128, 32 );
    		frame[0].SetPosition( 0, 0 );
    		frame[1].SetPosition( 128, 0 );
    		frame[2].SetPosition( 0, 224-32 );
    
    		infoContainer.SetPosition(16,16);
    		infoContainer.SetSize(frame[1].GetSize() - 32.f);
    
    		const char* attr[12] = {
    			"Defeated",
    			"HP",
    			"Attack",
    			"Accuracy",
    			"Defense",
    			"Agility",
    			"Intelligence",
    			"Evasion",
    			"Magic Defense",
    			"Gil",
    			"EXP",
    			"Treasure"
    		};
    
    		foreachi(i, 12) {
    			//TODO: Implement a default "skin" for all parent GUI objects to make these go away.
    			attribNames[i].SetFont(&f);
    			attribNames[i].SetText(attr[i]);
    			monsterStats[i].SetFont(&f);
    			monsterStats[i].SetColor( Color::Yellow() );
    			monsterStats[i].SetTextAlignment(AlignRight);
    
    			//TODO improve ListBox to easily handle this kind of crap.
    			attribNames[i].SetPosition(0, i * 16);
    			monsterStats[i].SetPosition(80, i * 16);
    
    			attribNames[i].SetSize(80, 16);
    			monsterStats[i].SetSize(20, 16);
    
    			infoContainer.AddChild(&attribNames[i]);
    			infoContainer.AddChild(&monsterStats[i]);
    		}
    
    		frame[1].AddChild(&infoContainer);
    
    		mainMenu.AddChild(&bgImage);
    		mainMenu.AddChild(&frame[0]);
    		mainMenu.AddChild(&frame[1]);
    		mainMenu.AddChild(&frame[2]);
    
    
    	}
    
    	void Update()
    	{
    		if( Input::GetKeyboard()->IsKeyPressed(KEY_LEFT) )
    		{
    			if( --curID < 0 )
    				curID = 127;
    			needsUpdate = true;
    		}
    		else if( Input::GetKeyboard()->IsKeyPressed(KEY_RIGHT) )
    		{
    			if( ++curID > 127 )
    				curID = 0;
    			needsUpdate = true;
    		}
    
    		if(needsUpdate)
    		{
    			needsUpdate = false;
    			MonsterData* m = GetDatabase()->GetMonster(curID);
    			ASSERT(m);
     
    			AnimatedSpriteSetAsset* as = GetDatabase()->GetMonsterBattleSpriteSetAsset(m->battle_spriteset_id);
    			bool isLoaded = as->LoadAnimatedSpriteSet(curMonsterSprite);
    			ASSERT(isLoaded);
    
    			int i(0);
    			monsterName.SetText( m->name );
    			monsterStats[i++].SetText("0");
    			monsterStats[i++].SetText( ToString(m->attributes.max_params[0]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[0]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[2]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[1]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[3]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[4]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[3]) );
    			monsterStats[i++].SetText( ToString(m->attributes.stats[5]) );
    
    			monsterStats[i++].SetText( ToString(m->gold) );
    			monsterStats[i++].SetText( ToString(m->exp) );
    			monsterStats[i++].SetText(""); //treasure
    		}
    
    		mainMenu.Update();
    		curMonsterSprite.Update();
    	}
    
    	void Render()
    	{
    		m_spriteBatch.Begin();
    
    		// draw it
    		mainMenu.Render(&m_spriteBatch);
    		m_spriteBatch.DrawAnimatedSpriteSet( curMonsterSprite, Vector2(64,112) - (curMonsterSprite.size/2.f) );
    
    		m_spriteBatch.Render();
    		m_spriteBatch.End();
    
    	}
    
    };
    Obviously not the worst Gui code--most other game UI code is pretty horrendous, actually-- but with a little work it shouldn't be too bad. It'll also be easier to do menus as a script in it's final form.
    "Protocols of the Learned Elders of Zion" (British Royal Institute, 1906)
    "The International Jew: The World's Foremost Problem" �Henry Ford
    "Dope Inc. - Britain Opium War Against The U.S." (LaRouche; Konstandinos Kalimtgis; David Goldman; Jeffrey Stienberg, 1978)
    "Fundamental Laws: A Report of the 68th Convocation of the Rose Cross Order" 1916
    "War is a Racket" �Major General Smedley Butler
    "The Secret Destiny of America" �Manly P. Hall
    "A Strategy for Israel in the Nineteen Eighties" Oded Yinon (English Translation)
    The WWI Conspiracy: Part 1 - Part 2 - Part 3 "A New World Order"
    The War You Don't See
    Psywar

    �The modern theory of the perpetuation of debt has drenched the earth with blood, and crushed its inhabitants under burdens ever accumulating.� �Thomas Jefferson
    �It is well enough that the people of the nation do not understand our banking and monetary system for, if they did, I believe there would be a revolution before tomorrow morning.� �Henry Ford
    �Man will ultimately be governed by God or by tyrants.� �Benjamin Franklin

    This post contains the official Gleeok� seal of approval. Look for these and other posts in an area near you.

  2. #2
    Cor Blimey! CJC's Avatar
    Join Date
    Dec 2002
    Location
    Fading into the darkness
    Age
    31
    Posts
    1,398
    Mentioned
    150 Post(s)
    Tagged
    6 Thread(s)
    vBActivity - Stats
    Points
    6,448
    Level
    24
    vBActivity - Bars
    Lv. Percent
    72.65%
    I was just thinking about FFC... Awesome work Gleeok!

  3. #3
    birb Tim's Avatar
    Join Date
    Apr 2004
    Age
    31
    Posts
    630
    Mentioned
    34 Post(s)
    Tagged
    8 Thread(s)
    vBActivity - Stats
    Points
    3,029
    Level
    17
    vBActivity - Bars
    Lv. Percent
    81.68%
    This is neat. I've been waiting to hear some development news.

  4. #4
    クールな男
    SE Developer
    MasterSwordUltima's Avatar
    Join Date
    Jul 2001
    Location
    Keystonia
    Age
    31
    Posts
    5,573
    Mentioned
    17 Post(s)
    Tagged
    6 Thread(s)
    vBActivity - Stats
    Points
    8,396
    Level
    27
    vBActivity - Bars
    Lv. Percent
    68.65%
    Oh boy oh boy!!

    -----

  5. #5
    Karate guys for cash. Aegix Drakan's Avatar
    Join Date
    Sep 2005
    Location
    Montreal, Canada.
    Age
    31
    Posts
    2,305
    Mentioned
    0 Post(s)
    Tagged
    2 Thread(s)
    vBActivity - Stats
    Points
    6,666
    Level
    25
    vBActivity - Bars
    Lv. Percent
    8.53%
    Purple dragon! I like purple! Purple is awesome!

    ...Wait, all that code is for making things purple?! :o That looks like a lot of work for purple! I respect it even more now!

    [/obviously a joke. Duh. but I really do like purple.]
    Last edited by Aegix Drakan; 02-04-2014 at 07:49 PM.
    Quote Originally Posted by phattonez
    AGN is not meant for people who have lives. Come back home, turn the lights off and stare in awe at the glow that comes from the monitor.
    Do you enjoy challenging RPGs? Do you enjoy dark storylines? You'll like my game. Go on, it's not very long.
    You can download my game for free right here!
    Feedback on it would be nice. It'll help with future projects.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
About us
Armageddon Games is a game development group founded in 1997. We are extremely passionate about our work and our inspirations are mostly drawn from games of the 8-bit and 16-bit era.
Social