Allow more than one filler
This commit is contained in:
parent
f0525e4769
commit
db948a0109
6 changed files with 64 additions and 31 deletions
src
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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")) ) {
|
||||
|
|
|
@ -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 ) {
|
||||
|
|
Loading…
Add table
Reference in a new issue