Allow more than one filler

This commit is contained in:
jsalmon3 2003-04-02 04:14:11 +00:00
parent f0525e4769
commit db948a0109
6 changed files with 64 additions and 31 deletions

View file

@ -868,6 +868,8 @@ local void ShowUnitInfo(const Unit* unit)
*/
global void EditorUpdateDisplay(void)
{
int i;
VideoLockScreen(); // { prepare video write
HideAnyCursor(); // remove cursor (when available)
@ -940,11 +942,15 @@ global void EditorUpdateDisplay(void)
}
//
// Filler
// Fillers
//
if (TheUI.Filler1.Graphic) {
VideoDrawSub(TheUI.Filler1.Graphic, 0, 0, TheUI.Filler1.Graphic->Width,
TheUI.Filler1.Graphic->Height, TheUI.Filler1X, TheUI.Filler1Y);
for (i = 0; i < TheUI.NumFillers; ++i) {
if (TheUI.Filler[i].Graphic) {
VideoDrawSub(TheUI.Filler[i].Graphic, 0, 0,
TheUI.Filler[i].Graphic->Width,
TheUI.Filler[i].Graphic->Height,
TheUI.FillerX[i], TheUI.FillerY[i]);
}
}
//
// Status line

View file

@ -397,7 +397,7 @@ enum _must_redraw_flags_ {
RedrawStatusLine = 1<<14, /// Statusline
RedrawInfoPanel = 1<<15, /// Unit description
RedrawButtonPanel = 1<<16, /// Unit buttons
RedrawFiller1 = 1<<17, /// Filler1: Border on right side
RedrawFillers = 1<<17, /// Fillers
RedrawMinimapBorder = 1<<18, /// Area around minimap
RedrawCosts = 1<<19, /// Costs in status line
RedrawMenuButton = 1<<20, /// Area above minimap

View file

@ -10,7 +10,7 @@
//
/**@name ui.h - The user interface header file. */
//
// (c) Copyright 1999-2003 by Lutz Sammer
// (c) Copyright 1999-2003 by Lutz Sammer and Jimmy Salmon
//
// FreeCraft is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published
@ -169,16 +169,17 @@ typedef struct _ui_ {
char* ReverseFontColor; /// Color for reverse text displayed
// Fillers
GraphicConfig Filler1; /// filler 1 graphic
int Filler1X; /// filler 1 X position
int Filler1Y; /// filler 1 Y position
GraphicConfig* Filler; /// Filler graphics
int* FillerX; /// Filler X positions
int* FillerY; /// Filler Y positions
int NumFillers; /// Number of fillers
// Resource line
GraphicConfig Resource; /// Resource background
int ResourceX; /// Resource X position
int ResourceY; /// Resource Y position
int OriginalResources; /// original resource mode
int OriginalResources; /// Original resource mode
struct {
#if 0

View file

@ -456,10 +456,15 @@ global void UpdateDisplay(void)
DrawMessages();
}
if( (MustRedraw&RedrawFiller1) && TheUI.Filler1.Graphic ) {
VideoDrawSub(TheUI.Filler1.Graphic,0,0
,TheUI.Filler1.Graphic->Width,TheUI.Filler1.Graphic->Height
,TheUI.Filler1X,TheUI.Filler1Y);
if( MustRedraw&RedrawFillers ) {
int i;
for( i=0; i<TheUI.NumFillers; ++i ) {
VideoDrawSub(TheUI.Filler[i].Graphic,0,0
,TheUI.Filler[i].Graphic->Width
,TheUI.Filler[i].Graphic->Height
,TheUI.FillerX[i],TheUI.FillerY[i]);
}
}
if( MustRedraw&RedrawMenuButton ) {
@ -529,11 +534,15 @@ global void UpdateDisplay(void)
,TheUI.MapArea.EndX-TheUI.MapArea.X+1
,TheUI.MapArea.EndY-TheUI.MapArea.Y+1);
}
if( (MustRedraw&RedrawFiller1) && TheUI.Filler1.Graphic ) {
InvalidateAreaAndCheckCursor(
TheUI.Filler1X,TheUI.Filler1Y
,TheUI.Filler1.Graphic->Width
,TheUI.Filler1.Graphic->Height);
if( MustRedraw&RedrawFillers ) {
int i;
for( i=0; i<TheUI.NumFillers; ++i ) {
InvalidateAreaAndCheckCursor(
TheUI.FillerX[i],TheUI.FillerY[i]
,TheUI.Filler[i].Graphic->Width
,TheUI.Filler[i].Graphic->Height);
}
}
if(MustRedraw&RedrawMenuButton ) {
InvalidateAreaAndCheckCursor(

View file

@ -629,10 +629,21 @@ local SCM CclDefineUI(SCM list)
temp=gh_cdr(temp);
y=gh_scm2int(value);
free(ui->Filler1.File);
ui->Filler1.File=str;
ui->Filler1X=x;
ui->Filler1Y=y;
for( i=0; i<ui->NumFillers; ++i ) {
free(ui->Filler[i].File);
}
free(ui->Filler);
free(ui->FillerX);
free(ui->FillerY);
ui->NumFillers=1;
ui->Filler=malloc(ui->NumFillers*sizeof(*ui->Filler));
ui->FillerX=malloc(ui->NumFillers*sizeof(*ui->FillerX));
ui->FillerY=malloc(ui->NumFillers*sizeof(*ui->FillerY));
ui->Filler[0].File=str;
ui->FillerX[0]=x;
ui->FillerY[0]=y;
// Resource
temp=gh_car(list);
@ -1338,7 +1349,7 @@ local SCM CclDefineNewUI(SCM list)
value=gh_car(list);
list=gh_cdr(list);
ui->ReverseFontColor=gh_scm2newstr(value,NULL);
} else if( gh_eq_p(value,gh_symbol2scm("filler-1")) ) {
} else if( gh_eq_p(value,gh_symbol2scm("filler")) ) {
value=gh_car(list);
list=gh_cdr(list);
} else if( gh_eq_p(value,gh_symbol2scm("resources")) ) {

View file

@ -172,11 +172,13 @@ global void LoadUserInterface(void)
//
// Load graphics
//
if( TheUI.Filler1.File ) {
TheUI.Filler1.Graphic=LoadGraphic(TheUI.Filler1.File);
for( i=0; i<TheUI.NumFillers; ++i ) {
if( TheUI.Filler[i].File ) {
TheUI.Filler[i].Graphic=LoadGraphic(TheUI.Filler[i].File);
#ifdef USE_OPENGL
MakeTexture(TheUI.Filler1.Graphic,TheUI.Filler1.Graphic->Width,TheUI.Filler1.Graphic->Height);
MakeTexture(TheUI.Filler[i].Graphic,TheUI.Filler[i].Graphic->Width,TheUI.Filler[i].Graphic->Height);
#endif
}
}
if( TheUI.Resource.File ) {
TheUI.Resource.Graphic=LoadGraphic(TheUI.Resource.File);
@ -308,7 +310,7 @@ local void OldSaveUi(FILE* file,const UI* ui)
ui->Name,ui->Width,ui->Height);
fprintf(file," ; Filler 1\n");
fprintf(file," (list \"%s\" %d %d)\n",
ui->Filler1.File,ui->Filler1X,ui->Filler1Y);
ui->Filler[0].File,ui->FillerX[0],ui->FillerY[0]);
fprintf(file," ; Resource line\n");
fprintf(file," (list \"%s\" %d %d)\n",
ui->Resource.File,ui->ResourceX,ui->ResourceY);
@ -428,8 +430,10 @@ local void NewSaveUi(FILE * file, const UI * ui)
fprintf(file, " 'normal-font-color %s 'reverse-font-color %s\n",
ui->NormalFontColor, ui->ReverseFontColor);
fprintf(file, " 'filler-1 '(pos (%d %d) image \"%s\")\n",
ui->Filler1X, ui->Filler1Y, ui->Filler1.File);
for( i=0; i<TheUI.NumFillers; ++i ) {
fprintf(file, " 'filler '(pos (%d %d) image \"%s\")\n",
ui->FillerX[i], ui->FillerY[i], ui->Filler[i].File);
}
fprintf(file, " 'resources '(pos (%d %d) image \"%s\"",
ui->ResourceX, ui->ResourceY, ui->Resource.File);
@ -589,7 +593,9 @@ global void CleanUserInterface(void)
//
// Free the graphics. FIXME: if they are shared this will crash.
//
VideoSaveFree(TheUI.Filler1.Graphic);
for( i=0; i<TheUI.NumFillers; ++i ) {
VideoSaveFree(TheUI.Filler[i].Graphic);
}
VideoSaveFree(TheUI.Resource.Graphic);
for( i=0; i<MaxCosts; ++i ) {