2021-05-17 18:47:39 +00:00
|
|
|
/* ScummVM - Graphic Adventure Engine
|
|
|
|
*
|
|
|
|
* ScummVM is the legal property of its developers, whose names
|
|
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
|
|
* file distributed with this source distribution.
|
|
|
|
*
|
2021-12-26 17:47:58 +00:00
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
2021-05-17 18:47:39 +00:00
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
2021-12-26 17:47:58 +00:00
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2021-05-17 18:47:39 +00:00
|
|
|
*
|
|
|
|
*
|
|
|
|
* Based on the original sources
|
|
|
|
* Faery Tale II -- The Halls of the Dead
|
|
|
|
* (c) 1993-1996 The Wyrmkeep Entertainment Co.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SAGA2_VPAL_H
|
|
|
|
#define SAGA2_VPAL_H
|
|
|
|
|
2021-06-01 21:47:48 +00:00
|
|
|
#include "saga2/idtypes.h"
|
|
|
|
|
2021-05-17 18:47:39 +00:00
|
|
|
namespace Saga2 {
|
|
|
|
|
|
|
|
// Stores an RGB value
|
|
|
|
|
|
|
|
struct gPaletteEntry {
|
|
|
|
uint8 r,
|
|
|
|
g,
|
|
|
|
b;
|
|
|
|
};
|
|
|
|
|
|
|
|
// An entire palette of 256 colors
|
|
|
|
|
|
|
|
struct gPalette {
|
2021-06-07 16:19:10 +00:00
|
|
|
gPaletteEntry entry[256];
|
2021-07-12 03:47:06 +00:00
|
|
|
|
|
|
|
void read(Common::InSaveFile *in);
|
2021-07-15 15:08:27 +00:00
|
|
|
void write(Common::MemoryWriteStreamDynamic *out);
|
2021-05-17 18:47:39 +00:00
|
|
|
};
|
|
|
|
|
2021-08-21 22:26:24 +00:00
|
|
|
typedef gPalette *gPalettePtr;
|
|
|
|
|
2021-05-17 18:47:39 +00:00
|
|
|
/* ===================================================================== *
|
|
|
|
Prototypes
|
|
|
|
* ===================================================================== */
|
|
|
|
|
|
|
|
void LoadPalette(gPalette &palette);
|
|
|
|
int32 ColorDistance(gPaletteEntry &c1, gPaletteEntry &c2);
|
|
|
|
void CalcPens(gPalette &, gPaletteEntry *, gPen *, int16, bool);
|
|
|
|
|
2021-08-21 22:26:24 +00:00
|
|
|
class PaletteManager {
|
|
|
|
private:
|
|
|
|
gPalette _currentPalette;
|
|
|
|
|
|
|
|
gPalette _oldPalette,
|
|
|
|
_destPalette,
|
|
|
|
_quickPalette;
|
|
|
|
|
|
|
|
int32 _startTime,
|
|
|
|
_totalTime;
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
2021-08-22 21:16:13 +00:00
|
|
|
gPalette _newPalette;
|
2021-08-21 22:26:24 +00:00
|
|
|
gPalettePtr _midnightPalette,
|
|
|
|
_noonPalette,
|
|
|
|
_darkPalette;
|
|
|
|
|
2021-08-22 21:16:13 +00:00
|
|
|
uint32 _prevLightLevel;
|
|
|
|
|
2021-08-21 22:26:24 +00:00
|
|
|
PaletteManager();
|
|
|
|
//~PaletteManager() {}
|
|
|
|
|
|
|
|
void assertCurrentPalette();
|
|
|
|
void loadPalettes();
|
|
|
|
void cleanupPalettes();
|
|
|
|
void beginFade(gPalettePtr newPalette, int32 fadeDuration);
|
|
|
|
bool updatePalette();
|
|
|
|
void createPalette(gPalettePtr newP, gPalettePtr srcP, gPalettePtr dstP,
|
|
|
|
int32 elapsedTime, int32 totalTime_);
|
|
|
|
void setCurrentPalette(gPalettePtr newPal);
|
|
|
|
void getCurrentPalette(gPalettePtr pal);
|
|
|
|
void initPaletteState();
|
|
|
|
void lightsOut();
|
|
|
|
void quickSavePalette();
|
|
|
|
void quickRestorePalette();
|
|
|
|
void savePaletteState(Common::OutSaveFile *outS);
|
|
|
|
void loadPaletteState(Common::InSaveFile *in);
|
|
|
|
};
|
|
|
|
|
2021-05-17 18:47:39 +00:00
|
|
|
} // end of namespace Saga2
|
|
|
|
|
|
|
|
#endif
|