Created
September 2, 2016 10:21
-
-
Save StoddardOXC/3bb5c59841b7f2fd7e44dfbf1fc7ac04 to your computer and use it in GitHub Desktop.
green NV patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/Battlescape/BattlescapeState.cpp b/src/Battlescape/BattlescapeState.cpp | |
index 9945818..0affc7f 100644 | |
--- a/src/Battlescape/BattlescapeState.cpp | |
+++ b/src/Battlescape/BattlescapeState.cpp | |
@@ -461,6 +461,8 @@ BattlescapeState::BattlescapeState() : _reserve(0), _xBeforeMouseScrolling(0), _ | |
_btnStats->onKeyboardPress((ActionHandler)&BattlescapeState::btnReloadClick, Options::keyBattleReload); | |
_btnStats->onKeyboardPress((ActionHandler)&BattlescapeState::btnPersonalLightingClick, Options::keyBattlePersonalLighting); | |
+ _btnStats->onKeyboardPress((ActionHandler)&BattlescapeState::btnNightVisionClick, Options::keyNightVisionToggle); | |
+ | |
SDLKey buttons[] = {Options::keyBattleCenterEnemy1, | |
Options::keyBattleCenterEnemy2, | |
Options::keyBattleCenterEnemy3, | |
@@ -1300,6 +1302,15 @@ void BattlescapeState::btnPersonalLightingClick(Action *) | |
} | |
/** | |
+ * Toggles map-wide night vision (purely cosmetic). | |
+ * @param action Pointer to an action. | |
+ */ | |
+void BattlescapeState::btnNightVisionClick(Action *action) | |
+{ | |
+ _map->toggleNightVision(); | |
+} | |
+ | |
+/** | |
* Determines whether a playable unit is selected. Normally only player side units can be selected, but in debug mode one can play with aliens too :) | |
* Is used to see if stats can be displayed and action buttons will work. | |
* @return Whether a playable unit is selected. | |
diff --git a/src/Battlescape/BattlescapeState.h b/src/Battlescape/BattlescapeState.h | |
index 15f6073..776f2d3 100644 | |
--- a/src/Battlescape/BattlescapeState.h | |
+++ b/src/Battlescape/BattlescapeState.h | |
@@ -167,6 +167,8 @@ public: | |
void btnReloadClick(Action *action); | |
/// Handler for clicking the lighting button. | |
void btnPersonalLightingClick(Action *action); | |
+ /// Handler for toggling the "night vision" mode. | |
+ void btnNightVisionClick(Action *action); | |
/// Determines whether a playable unit is selected. | |
bool playableUnitSelected(); | |
/// Updates soldier name/rank/tu/energy/health/morale. | |
diff --git a/src/Battlescape/Map.cpp b/src/Battlescape/Map.cpp | |
index ec64c89..5c34cf9 100644 | |
--- a/src/Battlescape/Map.cpp | |
+++ b/src/Battlescape/Map.cpp | |
@@ -108,6 +108,12 @@ Map::Map(Game *game, int width, int height, int x, int y, int visibleMapHeight) | |
_scrollMouseTimer->onTimer((SurfaceHandler)&Map::scrollMouse); | |
_scrollKeyTimer = new Timer(SCROLL_INTERVAL); | |
_scrollKeyTimer->onTimer((SurfaceHandler)&Map::scrollKey); | |
+ _fadeTimer = new Timer(FADE_INTERVAL); | |
+ _fadeTimer->onTimer((SurfaceHandler)&Map::fadeShade); | |
+ _fadeTimer->start(); | |
+ _fadeShade = 16; | |
+ _nightVisionOn = false; | |
+ _nvColor = 0; | |
_camera->setScrollTimer(_scrollMouseTimer, _scrollKeyTimer); | |
_txtAccuracy = new Text(24, 9, 0, 0); | |
@@ -124,6 +130,7 @@ Map::~Map() | |
{ | |
delete _scrollMouseTimer; | |
delete _scrollKeyTimer; | |
+ delete _fadeTimer; | |
delete _arrow; | |
delete _message; | |
delete _camera; | |
@@ -174,6 +181,7 @@ void Map::think() | |
{ | |
_scrollMouseTimer->think(0, this); | |
_scrollKeyTimer->think(0, this); | |
+ _fadeTimer->think(0, this); | |
} | |
/** | |
@@ -417,7 +425,7 @@ void Map::drawTerrain(Surface *surface) | |
if (tile->isDiscovered(2)) | |
{ | |
- tileShade = tile->getShade(); | |
+ tileShade = reShade(tile->getShade()); | |
} | |
else | |
{ | |
@@ -429,7 +437,7 @@ void Map::drawTerrain(Surface *surface) | |
// Draw floor | |
tmpSurface = tile->getSprite(O_FLOOR); | |
if (tmpSurface) | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_FLOOR)->getYOffset(), tileShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_FLOOR)->getYOffset(), tileShade, false, _nvColor); | |
unit = tile->getUnit(); | |
// Draw cursor back | |
@@ -469,7 +477,7 @@ void Map::drawTerrain(Surface *surface) | |
int tileNorthShade, tileTwoNorthShade, tileWestShade, tileNorthWestShade, tileSouthWestShade; | |
if (tileNorth->isDiscovered(2)) | |
{ | |
- tileNorthShade = tileNorth->getShade(); | |
+ tileNorthShade = reShade(tileNorth->getShade()); | |
} | |
else | |
{ | |
@@ -508,7 +516,7 @@ void Map::drawTerrain(Surface *surface) | |
Tile *tileTwoNorth = _save->getTile(mapPosition - Position(0,2,0)); | |
if (tileTwoNorth->isDiscovered(2)) | |
{ | |
- tileTwoNorthShade = tileTwoNorth->getShade(); | |
+ tileTwoNorthShade = reShade(tileTwoNorth->getShade()); | |
} | |
else | |
{ | |
@@ -517,7 +525,7 @@ void Map::drawTerrain(Surface *surface) | |
tmpSurface = tileTwoNorth->getSprite(O_OBJECT); | |
if (tmpSurface && tileTwoNorth->getMapData(O_OBJECT)->getBigWall() == 6) | |
{ | |
- tmpSurface->blitNShade(surface, screenPosition.x + tileOffset.x*2, screenPosition.y - tileTwoNorth->getMapData(O_OBJECT)->getYOffset() + tileOffset.y*2, tileTwoNorthShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x + tileOffset.x*2, screenPosition.y - tileTwoNorth->getMapData(O_OBJECT)->getYOffset() + tileOffset.y*2, tileTwoNorthShade, false, _nvColor); | |
} | |
} | |
@@ -529,7 +537,7 @@ void Map::drawTerrain(Surface *surface) | |
Tile *tileNorthWest = _save->getTile(mapPosition - Position(1,1,0)); | |
if (tileNorthWest->isDiscovered(2)) | |
{ | |
- tileNorthWestShade = tileNorthWest->getShade(); | |
+ tileNorthWestShade = reShade(tileNorthWest->getShade()); | |
} | |
else | |
{ | |
@@ -538,7 +546,7 @@ void Map::drawTerrain(Surface *surface) | |
tmpSurface = tileNorthWest->getSprite(O_OBJECT); | |
if (tmpSurface && tileNorthWest->getMapData(O_OBJECT)->getBigWall() == 7) | |
{ | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tileNorthWest->getMapData(O_OBJECT)->getYOffset() + tileOffset.y*2, tileNorthWestShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tileNorthWest->getMapData(O_OBJECT)->getYOffset() + tileOffset.y*2, tileNorthWestShade, false, _nvColor); | |
} | |
} | |
@@ -549,7 +557,7 @@ void Map::drawTerrain(Surface *surface) | |
{ | |
tmpSurface = tileNorth->getSprite(O_OBJECT); | |
if (tmpSurface) | |
- tmpSurface->blitNShade(surface, screenPosition.x + tileOffset.x, screenPosition.y - tileNorth->getMapData(O_OBJECT)->getYOffset() + tileOffset.y, tileNorthShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x + tileOffset.x, screenPosition.y - tileNorth->getMapData(O_OBJECT)->getYOffset() + tileOffset.y, tileNorthShade, false, _nvColor); | |
} | |
if (mapPosition.x > 0) | |
{ | |
@@ -563,7 +571,7 @@ void Map::drawTerrain(Surface *surface) | |
Tile *tileSouthWest = _save->getTile(mapPosition + Position(-1, 1, 0)); | |
if (tileSouthWest->isDiscovered(2)) | |
{ | |
- tileSouthWestShade = tileSouthWest->getShade(); | |
+ tileSouthWestShade = reShade(tileSouthWest->getShade()); | |
} | |
else | |
{ | |
@@ -572,7 +580,7 @@ void Map::drawTerrain(Surface *surface) | |
tmpSurface = tileSouthWest->getSprite(O_OBJECT); | |
if (tmpSurface) | |
{ | |
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x * 2, screenPosition.y - tileSouthWest->getMapData(O_OBJECT)->getYOffset(), tileSouthWestShade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x * 2, screenPosition.y - tileSouthWest->getMapData(O_OBJECT)->getYOffset(), tileSouthWestShade, true, _nvColor); | |
} | |
} | |
@@ -583,7 +591,7 @@ void Map::drawTerrain(Surface *surface) | |
BattleUnit *westUnit = tileWest->getUnit(); | |
if (tileWest->isDiscovered(2)) | |
{ | |
- tileWestShade = tileWest->getShade(); | |
+ tileWestShade = reShade(tileWest->getShade()); | |
} | |
else | |
{ | |
@@ -595,31 +603,31 @@ void Map::drawTerrain(Surface *surface) | |
{ | |
if ((tileWest->getMapData(O_WESTWALL)->isDoor() || tileWest->getMapData(O_WESTWALL)->isUFODoor()) | |
&& tileWest->isDiscovered(0)) | |
- wallShade = tileWest->getShade(); | |
+ wallShade = reShade(tileWest->getShade()); | |
else | |
wallShade = tileWestShade; | |
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_WESTWALL)->getYOffset() + tileOffset.y, wallShade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_WESTWALL)->getYOffset() + tileOffset.y, wallShade, true, _nvColor); | |
} | |
tmpSurface = tileWest->getSprite(O_NORTHWALL); | |
if (tmpSurface) | |
{ | |
if ((tileWest->getMapData(O_NORTHWALL)->isDoor() || tileWest->getMapData(O_NORTHWALL)->isUFODoor()) | |
&& tileWest->isDiscovered(1)) | |
- wallShade = tileWest->getShade(); | |
+ wallShade = reShade(tileWest->getShade()); | |
else | |
wallShade = tileWestShade; | |
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_NORTHWALL)->getYOffset() + tileOffset.y, wallShade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_NORTHWALL)->getYOffset() + tileOffset.y, wallShade, true, _nvColor); | |
} | |
tmpSurface = tileWest->getSprite(O_OBJECT); | |
if (tmpSurface && (tileWest->getMapData(O_OBJECT)->getBigWall() < 6 || tileWest->getMapData(O_OBJECT)->getBigWall() == 9) && tileWest->getMapData(O_OBJECT)->getBigWall() != 3) | |
{ | |
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_OBJECT)->getYOffset() + tileOffset.y, tileWestShade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_OBJECT)->getYOffset() + tileOffset.y, tileWestShade, true, _nvColor); | |
// if the object in the tile to the west is a diagonal big wall, we need to cover up the black triangle at the bottom | |
if (tileWest->getMapData(O_OBJECT)->getBigWall() == 2) | |
{ | |
tmpSurface = tile->getSprite(O_FLOOR); | |
if (tmpSurface) | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_FLOOR)->getYOffset(), tileShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_FLOOR)->getYOffset(), tileShade, false, _nvColor); | |
} | |
} | |
// draw an item on top of the floor (if any) | |
@@ -677,13 +685,13 @@ void Map::drawTerrain(Surface *surface) | |
frameNumber += halfAnimFrame + tileWest->getAnimationOffset(); | |
} | |
tmpSurface = _game->getMod()->getSurfaceSet("SMOKE.PCK")->getFrame(frameNumber); | |
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y + tileOffset.y, shade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y + tileOffset.y, shade, true, _nvColor); | |
} | |
// Draw object | |
if (tileWest->getMapData(O_OBJECT) && tileWest->getMapData(O_OBJECT)->getBigWall() >= 6 && tileWest->getMapData(O_OBJECT)->getBigWall() != 9) | |
{ | |
tmpSurface = tileWest->getSprite(O_OBJECT); | |
- tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_OBJECT)->getYOffset() + tileOffset.y, tileWestShade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x - tileOffset.x, screenPosition.y - tileWest->getMapData(O_OBJECT)->getYOffset() + tileOffset.y, tileWestShade, true, _nvColor); | |
} | |
} | |
} | |
@@ -699,10 +707,10 @@ void Map::drawTerrain(Surface *surface) | |
{ | |
if ((tile->getMapData(O_WESTWALL)->isDoor() || tile->getMapData(O_WESTWALL)->isUFODoor()) | |
&& tile->isDiscovered(0)) | |
- wallShade = tile->getShade(); | |
+ wallShade = reShade(tile->getShade()); | |
else | |
wallShade = tileShade; | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_WESTWALL)->getYOffset(), wallShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_WESTWALL)->getYOffset(), wallShade, false, _nvColor); | |
} | |
// Draw north wall | |
tmpSurface = tile->getSprite(O_NORTHWALL); | |
@@ -710,16 +718,16 @@ void Map::drawTerrain(Surface *surface) | |
{ | |
if ((tile->getMapData(O_NORTHWALL)->isDoor() || tile->getMapData(O_NORTHWALL)->isUFODoor()) | |
&& tile->isDiscovered(1)) | |
- wallShade = tile->getShade(); | |
+ wallShade = reShade(tile->getShade()); | |
else | |
wallShade = tileShade; | |
if (tile->getMapData(O_WESTWALL)) | |
{ | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_NORTHWALL)->getYOffset(), wallShade, true); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_NORTHWALL)->getYOffset(), wallShade, true, _nvColor); | |
} | |
else | |
{ | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_NORTHWALL)->getYOffset(), wallShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_NORTHWALL)->getYOffset(), wallShade, false, _nvColor); | |
} | |
} | |
// Draw object | |
@@ -727,7 +735,7 @@ void Map::drawTerrain(Surface *surface) | |
{ | |
tmpSurface = tile->getSprite(O_OBJECT); | |
if (tmpSurface) | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_OBJECT)->getYOffset(), tileShade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_OBJECT)->getYOffset(), tileShade, false, _nvColor); | |
} | |
// draw an item on top of the floor (if any) | |
BattleItem* item = tile->getTopItem(); | |
@@ -815,7 +823,7 @@ void Map::drawTerrain(Surface *surface) | |
_camera->convertVoxelToScreen(voxelPos, &bulletPositionScreen); | |
bulletPositionScreen.x -= tmpSurface->getWidth() / 2; | |
bulletPositionScreen.y -= tmpSurface->getHeight() / 2; | |
- tmpSurface->blitNShade(surface, bulletPositionScreen.x, bulletPositionScreen.y, 16); | |
+ tmpSurface->blitNShade(surface, bulletPositionScreen.x, bulletPositionScreen.y, 16, false, _nvColor); | |
} | |
// draw bullet itself | |
@@ -828,7 +836,7 @@ void Map::drawTerrain(Surface *surface) | |
_camera->convertVoxelToScreen(voxelPos, &bulletPositionScreen); | |
bulletPositionScreen.x -= tmpSurface->getWidth() / 2; | |
bulletPositionScreen.y -= tmpSurface->getHeight() / 2; | |
- tmpSurface->blitNShade(surface, bulletPositionScreen.x, bulletPositionScreen.y, 0); | |
+ tmpSurface->blitNShade(surface, bulletPositionScreen.x, bulletPositionScreen.y, 0, false, _nvColor); | |
} | |
} | |
} | |
@@ -866,7 +874,7 @@ void Map::drawTerrain(Surface *surface) | |
offset.y += (22 - unit->getHeight()); | |
if (tmpSurface) | |
{ | |
- tmpSurface->blitNShade(surface, offset.x, offset.y - 30, tileShade); | |
+ tmpSurface->blitNShade(surface, offset.x, offset.y - 30, tileShade, false, _nvColor); | |
} | |
} | |
if (isAltPressed) | |
@@ -897,7 +905,7 @@ void Map::drawTerrain(Surface *surface) | |
tunit, part, | |
offset.x, | |
offset.y, | |
- ttile->getShade() | |
+ reShade(ttile->getShade()) | |
); | |
} | |
} | |
@@ -930,7 +938,7 @@ void Map::drawTerrain(Surface *surface) | |
frameNumber += halfAnimFrame + tile->getAnimationOffset(); | |
} | |
tmpSurface = _game->getMod()->getSurfaceSet("SMOKE.PCK")->getFrame(frameNumber); | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y, shade); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y, shade, false, _nvColor); | |
} | |
//draw particle clouds | |
@@ -979,7 +987,7 @@ void Map::drawTerrain(Surface *surface) | |
{ | |
tmpSurface = tile->getSprite(O_OBJECT); | |
if (tmpSurface) | |
- tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_OBJECT)->getYOffset(), tileShade, false); | |
+ tmpSurface->blitNShade(surface, screenPosition.x, screenPosition.y - tile->getMapData(O_OBJECT)->getYOffset(), tileShade, false, _nvColor); | |
} | |
} | |
// Draw cursor front | |
@@ -1251,18 +1259,18 @@ void Map::drawTerrain(Surface *surface) | |
if ((*i)->getCurrentFrame() >= 0) | |
{ | |
tmpSurface = _game->getMod()->getSurfaceSet("X1.PCK")->getFrame((*i)->getCurrentFrame()); | |
- tmpSurface->blitNShade(surface, bulletPositionScreen.x - (tmpSurface->getWidth() / 2), bulletPositionScreen.y - (tmpSurface->getHeight() / 2), 0); | |
+ tmpSurface->blitNShade(surface, bulletPositionScreen.x - (tmpSurface->getWidth() / 2), bulletPositionScreen.y - (tmpSurface->getHeight() / 2), 0, false, _nvColor); | |
} | |
} | |
else if ((*i)->isHit()) | |
{ | |
tmpSurface = _game->getMod()->getSurfaceSet("HIT.PCK")->getFrame((*i)->getCurrentFrame()); | |
- tmpSurface->blitNShade(surface, bulletPositionScreen.x - 15, bulletPositionScreen.y - 25, 0); | |
+ tmpSurface->blitNShade(surface, bulletPositionScreen.x - 15, bulletPositionScreen.y - 25, 0, false, _nvColor); | |
} | |
else | |
{ | |
tmpSurface = _game->getMod()->getSurfaceSet("SMOKE.PCK")->getFrame((*i)->getCurrentFrame()); | |
- tmpSurface->blitNShade(surface, bulletPositionScreen.x - 15, bulletPositionScreen.y - 15, 0); | |
+ tmpSurface->blitNShade(surface, bulletPositionScreen.x - 15, bulletPositionScreen.y - 15, 0, false, _nvColor); | |
} | |
} | |
} | |
@@ -1325,6 +1333,25 @@ void Map::keyboardPress(Action *action, State *state) | |
} | |
/** | |
+ * Handles map vision toggle mode. | |
+ */ | |
+ | |
+void Map::toggleNightVision() | |
+{ | |
+ _nightVisionOn = not _nightVisionOn; | |
+} | |
+ | |
+/** | |
+ * Handles fade-in and fade-out shade modification | |
+ * @param original tile/item/unit shade | |
+ */ | |
+ | |
+int Map::reShade(const int shade) | |
+{ | |
+ return shade > _fadeShade ? _fadeShade : shade; | |
+} | |
+ | |
+/** | |
* Handles keyboard releases on the map. | |
* @param action Pointer to an action. | |
* @param state State that the action handlers belong to. | |
@@ -1626,6 +1653,30 @@ void Map::scrollKey() | |
} | |
/** | |
+ * Modify the fade shade level if fade's in progress. | |
+ */ | |
+void Map::fadeShade() | |
+{ | |
+ bool hold = SDL_GetKeyState(NULL)[Options::keyNightVisionHold]; | |
+ if (_nightVisionOn xor hold ) | |
+ { | |
+ _nvColor = 5; | |
+ if (_fadeShade > 4) | |
+ { | |
+ --_fadeShade; | |
+ } | |
+ } | |
+ else | |
+ { | |
+ _nvColor = 0; | |
+ if (_fadeShade < _save->getGlobalShade()) | |
+ { | |
+ ++_fadeShade; | |
+ } | |
+ } | |
+} | |
+ | |
+/** | |
* Gets a list of waypoints on the map. | |
* @return A list of waypoints. | |
*/ | |
diff --git a/src/Battlescape/Map.h b/src/Battlescape/Map.h | |
index ea2bd22..9667270 100644 | |
--- a/src/Battlescape/Map.h | |
+++ b/src/Battlescape/Map.h | |
@@ -46,8 +46,13 @@ class Map : public InteractiveSurface | |
{ | |
private: | |
static const int SCROLL_INTERVAL = 15; | |
+ static const int FADE_INTERVAL = 23; | |
static const int BULLET_SPRITES = 35; | |
Timer *_scrollMouseTimer, *_scrollKeyTimer; | |
+ Timer *_fadeTimer; | |
+ int _fadeShade; | |
+ bool _nightVisionOn; | |
+ int _nvColor; | |
Game *_game; | |
SavedBattleGame *_save; | |
Surface *_arrow; | |
@@ -121,6 +126,8 @@ public: | |
void scrollMouse(); | |
/// Keyboard-scrolls the camera. | |
void scrollKey(); | |
+ /// fades in/out | |
+ void fadeShade(); | |
/// Get waypoints vector. | |
std::vector<Position> *getWaypoints(); | |
/// Set mouse-buttons' pressed state. | |
@@ -147,6 +154,11 @@ public: | |
void setBlastFlash(bool flash); | |
/// Check if the screen is flashing this. | |
bool getBlastFlash(); | |
+ /// Modify shade for fading | |
+ int reShade(const int shade); | |
+ /// toggle the night-vision mode | |
+ void toggleNightVision(); | |
+ | |
}; | |
} | |
diff --git a/src/Engine/Options.cpp b/src/Engine/Options.cpp | |
index 4537766..5b35eb9 100644 | |
--- a/src/Engine/Options.cpp | |
+++ b/src/Engine/Options.cpp | |
@@ -296,6 +296,9 @@ void create() | |
_info.push_back(OptionInfo("keyBattleActionItem5", &keyBattleActionItem5, SDLK_5, "STR_ACTION_ITEM_5", "STR_OXCE")); | |
_info.push_back(OptionInfo("keyToggleQuickSearch", &keyToggleQuickSearch, SDLK_q, "STR_TOGGLE_QUICK_SEARCH", "STR_OXCE")); | |
+ _info.push_back(OptionInfo("keyNightVisionToggle", &keyNightVisionToggle, SDLK_SCROLLOCK, "STR_TOGGLE_NIGHT_VISION", "STR_OXCE")); | |
+ _info.push_back(OptionInfo("keyNightVisionHold", &keyNightVisionHold, SDLK_BACKQUOTE, "STR_HOLD_NIGHT_VISION", "STR_OXCE")); | |
+ | |
#ifdef __MORPHOS__ | |
_info.push_back(OptionInfo("FPS", &FPS, 15, "STR_FPS_LIMIT", "STR_GENERAL")); | |
_info.push_back(OptionInfo("FPSInactive", &FPSInactive, 15, "STR_FPS_INACTIVE_LIMIT", "STR_GENERAL")); | |
diff --git a/src/Engine/Options.inc.h b/src/Engine/Options.inc.h | |
index 3fc086c..53a7780 100644 | |
--- a/src/Engine/Options.inc.h | |
+++ b/src/Engine/Options.inc.h | |
@@ -52,6 +52,8 @@ OPT bool showAllCommendations; | |
OPT bool removeWoundedFromTraining; | |
OPT bool autoAssignPilots; | |
+OPT SDLKey keyNightVisionToggle, keyNightVisionHold; | |
+ | |
// Flags and other stuff that don't need OptionInfo's. | |
OPT bool mute, reload, newOpenGL, newScaleFilter, newHQXFilter, newXBRZFilter; | |
OPT int newDisplayWidth, newDisplayHeight, newBattlescapeScale, newGeoscapeScale; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment