Q3CenterMGON Home Q3Center   Q3Center
 
Q3Arena

    Home
    Submit News
    Contact Admin
    News Archive
    Features
    Q3 Strategy
    Mod Reviews
    Map Reviews
    Skins & Models
    File Index
    Benchmarks
    Technology
    Clans
    Link To Q3C
    IRC Chat
    Wallpaper

Clan Community
    Clans Home
    Clans News
    Clans Admin
    Clans Forum
    Clans Hosting
Q3A Console
    Commands
    Variables
    Tweaking
Site Information
    The Staff
    Hosting
MGO Channel
    MGON
    MGOChat
   Action Channel
    DarkSector
    Duke Nukem
    Halo
    HalfLife
    Quake 3
    Soldier of Fortune
    Team Fortress
    Unreal
    Wheel of Time
   Strategy Channel
    Ground Control
    Subtitans
    Worms
   RPG Channel
    Horizons
    Nox
    Roleplay Haven
   Simulations Channel
    Creatures
    Pokmon
    The Sims
   Racing Channel
    Racing Source
    Driver
   Console Channel
    Nintendo 64
Sunday, Apr 30  

UI Coding Tutorial #2
Main Menu Button Position Manipulation

Buttons positions are determined with x and y coordinates. You may remember these annoying buggers from high school math, and they haunt many of us to this day, sometimes even with their buddy the z axis. But not to worry, he doesnt show up in the main menu of Quake3. Here is the code for the positioning of the SinglePlayer button. I will detail with a commented line what each line does:

// gives ys definition, you dont need this , specify y yourself.
y = 134;
// tells what MTYPE the button is. It can also be MTYPE_BITMAP


s_main.singleplayer.generic.type = MTYPE_PTEXT;

// flags to tell how it acts and stuff
s_main.singleplayer.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;
// its position on the x plane. (up and down)(goes from 480 to 0)

s_main.singleplayer.generic.x = 320;

// its position on the y plane. (left and right)(goes from 640 to 0)
s_main.singleplayer.generic.y = y;
// the ID for it (makes reference to the CASE ID_whatever above
s_main.singleplayer.generic.id = ID_SINGLEPLAYER;
// what menu its making the command under
s_main.singleplayer.generic.callback = Main_MenuEvent;
// what text shows up
s_main.singleplayer.string = "SINGLE PLAYER";
// The color of the text, can be color_black; color_white; color_yellow; color_blue; color_orange;

s_main.singleplayer.color = color_red;

// the style of the text, and the value they give is style, which is defined above (top of this function)
s_main.singleplayer.style = style;

Now with this you can do many wonderful things. First of all, to demonstrate something you could do, lets move the SinglePlayer button somewhere else on the screen, and call it Bot Play in the color blue. To do this, youll need to change the following:
(note: you will need to change the original code to this or paste this after the original and comment out the original in order for it to work)

s_main.singleplayer.generic.type = MTYPE_PTEXT;
s_main.singleplayer.generic.flags = QMF_CENTER_JUSTIFY|QMF_PULSEIFFOCUS;

// everything above we keep the same, but notice the following differences
// x coordinate is same (middle of screen left and right)

s_main.singleplayer.generic.x = 320;

// no more y for the y coordinate! now the y coordinate is 20, higher up on the screen

s_main.singleplayer.generic.y = 20;

// still acts the same when clicked


s_main.singleplayer.generic.id = ID_SINGLEPLAYER;

// same menu called

s_main.singleplayer.generic.callback = Main_MenuEvent;

// weve changed the text to BOT MODE, which will show up in the menu instead of singleplayer


s_main.singleplayer.string = "BOT MODE";

// here we changed the text color to orange

s_main.singleplayer.color = color_orange;

// style is the same, no need to change it

s_main.singleplayer.style = style;

I hope you understand the main menu of Quake3 even better, and I look forward to seeing some interesting menus later on! I will deal with images for buttons and more in later tutorials!
-IoN_PuLse

Latest Features
UI Coding Tutorial #2 - IoN_PuLse - 29/04
Quake Food Guide - Marine71 - 27/04
UI Coding Tutorial #1 - IoN_PuLse - 22/04
The Q3Center Map Contest Verdict - PaRaDoX - 30/03
Q3 Console by Keen - Bigdog - 11/03

Forums
    Quake 3 Arena
    Q3A Strategy
    Hardware
    Art & Skinning
    MODS & Editing
    Clans Forum

Get your own
Hardware

    Reviews
    Articles
    Hardware Q&A

Send Questions

Hosted sites
    Clans

   Modifications
    MODNews
    DBZ
    Dragonball Q
    Refraction
    Crusade
    Frenzy3
    007Q2
    CTF Resource

    Predator

   Skins/Art
    SKUN
    Skin & Model RC
    Arena X
    Elite Imagery
    Dethayngel
    Type3 Skins
    RuffSkinz

   Mapping
    Map CC
    Pur3 Q3
    RA3 Mapping
    Vexar's Maps
    Gef's Maps

   Misc.
    Console
    QTCentral
    Q3Log
    Shader Tool
    Quakeage
    XyGeNaTeD
    1on1 Q3

 Home          Top

The Gamers' Choice