[Add] Embed name on window creation rather than having the overhead of writing and positioning a block of text.

This commit is contained in:
Allanis 2013-02-19 21:38:57 +00:00
parent 4384adec98
commit 8f7df9fc2f
3 changed files with 14 additions and 14 deletions

View File

@ -44,11 +44,7 @@ static void shipyard(void) {
// Spaceport bar.
static void spaceport_bar(void) {
secondary_wid = window_create(-1, -1, BAR_WIDTH, BAR_HEIGHT);
// Window title.
window_addText(secondary_wid, 0, -20, BAR_WIDTH, 0, 1,
"txtTitle", NULL, &cBlack, "Spaceport Bar");
secondary_wid = window_create("SpacePort Bar", -1, -1, BAR_WIDTH, BAR_HEIGHT);
window_addText(secondary_wid, 20, 20 + BUTTON_HEIGHT + 20,
BAR_WIDTH-140, BAR_HEIGHT - 40 - BUTTON_HEIGHT - 60,
@ -65,11 +61,7 @@ static void spaceport_bar_close(char* str) {
// Planet news reports.
static void news(void) {
secondary_wid = window_create(-1, -1, NEWS_WIDTH, NEWS_HEIGHT);
// Window title.
window_addText(secondary_wid, 0, -20, NEWS_WIDTH, 0, 1,
"txtTitle", NULL, &cBlack, "News Reports");
secondary_wid = window_create("New Reports", -1, -1, NEWS_WIDTH, NEWS_HEIGHT);
window_addText(secondary_wid, 20, 20 + BUTTON_HEIGHT + 20,
NEWS_WIDTH-40, NEWS_HEIGHT - 20 - BUTTON_HEIGHT - 20 - 20 -20,
@ -89,10 +81,9 @@ static void news_close(char* str) {
void land(Planet* p) {
if(landed) return;
planet = p;
land_wid = window_create(-1, -1, LAND_WIDTH, LAND_HEIGHT);
land_wid = window_create(p->name, -1, -1, LAND_WIDTH, LAND_HEIGHT);
// Pretty display.
window_addText(land_wid, 0., -20, LAND_WIDTH, 0, 1, "txtPlanet", NULL, &cBlack, p->name);
window_addImage(land_wid, 20, -440, "imgPlanet", p->gfx_exterior);
window_addText(land_wid, 440, 80, 200, 460, 0,
"txtPlanetDesc", &gl_smallFont, &cBlack, p->description);

View File

@ -47,6 +47,7 @@ typedef struct {
typedef struct {
unsigned int id; // Unique identifier.
char* name;
double x,y; // Position.
double w,h; // Dimensions.
@ -162,7 +163,7 @@ static Window* window_get(const unsigned int wid) {
}
// Create a window.
unsigned int window_create(const int x, const int y, const int w, const int h) {
unsigned int window_create(char* name, const int x, const int y, const int w, const int h) {
if(nwindows >= mwindows) {
// We have reached our memory limit.
windows = realloc(windows, sizeof(Window)*(++mwindows));
@ -172,6 +173,7 @@ unsigned int window_create(const int x, const int y, const int w, const int h) {
const int wid = (++genwid); // Unique id
windows[nwindows].id = wid;
windows[nwindows].name = strdup(name);
windows[nwindows].w = (double) w;
windows[nwindows].h = (double) h;
@ -221,6 +223,7 @@ void window_destroy(unsigned int wid) {
// Destroy the window.
for(i = 0; i < nwindows; i++)
if(windows[i].id == wid) {
if(windows[i].name) free(windows[i].name);
for(j = 0; j < windows[i].nwidgets; j++)
widget_cleanup(&windows[i].widgets[j]);
free(windows[i].widgets);
@ -424,6 +427,12 @@ static void window_render(Window* w) {
glVertex2d(x+21., y); // Back to beginning.
glEnd();
// Render the window name.
gl_printMid(&gl_defFont, w->w,
x + (double)gl_screen.w/2.,
y + w->h - 20. + (double)gl_screen.h/2.,
&cBlack, w->name);
// Widgets.
for(i = 0; i < w->nwidgets; i++) {
switch(w->widgets[i].type) {

View File

@ -6,7 +6,7 @@
extern int toolkit;
// Creation.
unsigned int window_create(const int x, const int y, const int w, const int h);
unsigned int window_create(char* name, const int x, const int y, const int w, const int h);
void window_addButton(const unsigned int wid, const int x, const int y,
const int w, const int h, char* name, char* display,