mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-24 22:14:36 +02:00
Moved all non-window GUI elements out from GUI classes file. TODO: reorganize source tree
This commit is contained in:
parent
55ff933b7f
commit
83099fdb78
@ -20,8 +20,14 @@
|
||||
#include "CMusicHandler.h"
|
||||
#include "Graphics.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "StartInfo.h"
|
||||
#include "CPreGame.h"
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/SDL_Pixels.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "battle/CBattleInterface.h"
|
||||
#include "battle/CBattleInterfaceClasses.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
|
||||
/*
|
||||
* CAdventureMapClasses.h, part of VCMI engine
|
||||
@ -950,3 +956,283 @@ void CInfoBar::showGameStatus()
|
||||
setTimer(3000);
|
||||
redraw();
|
||||
}
|
||||
|
||||
void CInGameConsole::show(SDL_Surface * to)
|
||||
{
|
||||
int number = 0;
|
||||
|
||||
std::vector<std::list< std::pair< std::string, int > >::iterator> toDel;
|
||||
|
||||
boost::unique_lock<boost::mutex> lock(texts_mx);
|
||||
for(auto it = texts.begin(); it != texts.end(); ++it, ++number)
|
||||
{
|
||||
Point leftBottomCorner(0, screen->h);
|
||||
if(LOCPLINT->battleInt)
|
||||
{
|
||||
leftBottomCorner = LOCPLINT->battleInt->pos.bottomLeft();
|
||||
}
|
||||
graphics->fonts[FONT_MEDIUM]->renderTextLeft(to, it->first, Colors::GREEN,
|
||||
Point(leftBottomCorner.x + 50, leftBottomCorner.y - texts.size() * 20 - 80 + number*20));
|
||||
|
||||
if(SDL_GetTicks() - it->second > defaultTimeout)
|
||||
{
|
||||
toDel.push_back(it);
|
||||
}
|
||||
}
|
||||
|
||||
for(auto & elem : toDel)
|
||||
{
|
||||
texts.erase(elem);
|
||||
}
|
||||
}
|
||||
|
||||
void CInGameConsole::print(const std::string &txt)
|
||||
{
|
||||
boost::unique_lock<boost::mutex> lock(texts_mx);
|
||||
int lineLen = conf.go()->ac.outputLineLength;
|
||||
|
||||
if(txt.size() < lineLen)
|
||||
{
|
||||
texts.push_back(std::make_pair(txt, SDL_GetTicks()));
|
||||
if(texts.size() > maxDisplayedTexts)
|
||||
{
|
||||
texts.pop_front();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(lineLen);
|
||||
for(int g=0; g<txt.size() / lineLen + 1; ++g)
|
||||
{
|
||||
std::string part = txt.substr(g * lineLen, lineLen);
|
||||
if(part.size() == 0)
|
||||
break;
|
||||
|
||||
texts.push_back(std::make_pair(part, SDL_GetTicks()));
|
||||
if(texts.size() > maxDisplayedTexts)
|
||||
{
|
||||
texts.pop_front();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CInGameConsole::keyPressed (const SDL_KeyboardEvent & key)
|
||||
{
|
||||
if(key.type != SDL_KEYDOWN) return;
|
||||
|
||||
if(!captureAllKeys && key.keysym.sym != SDLK_TAB) return; //because user is not entering any text
|
||||
|
||||
switch(key.keysym.sym)
|
||||
{
|
||||
case SDLK_TAB:
|
||||
case SDLK_ESCAPE:
|
||||
{
|
||||
if(captureAllKeys)
|
||||
{
|
||||
captureAllKeys = false;
|
||||
endEnteringText(false);
|
||||
}
|
||||
else if(SDLK_TAB)
|
||||
{
|
||||
captureAllKeys = true;
|
||||
startEnteringText();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SDLK_RETURN: //enter key
|
||||
{
|
||||
if(enteredText.size() > 0 && captureAllKeys)
|
||||
{
|
||||
captureAllKeys = false;
|
||||
endEnteringText(true);
|
||||
CCS->soundh->playSound("CHAT");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SDLK_BACKSPACE:
|
||||
{
|
||||
if(enteredText.size() > 1)
|
||||
{
|
||||
Unicode::trimRight(enteredText,2);
|
||||
enteredText += '_';
|
||||
refreshEnteredText();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SDLK_UP: //up arrow
|
||||
{
|
||||
if(previouslyEntered.size() == 0)
|
||||
break;
|
||||
|
||||
if(prevEntDisp == -1)
|
||||
{
|
||||
prevEntDisp = previouslyEntered.size() - 1;
|
||||
enteredText = previouslyEntered[prevEntDisp] + "_";
|
||||
refreshEnteredText();
|
||||
}
|
||||
else if( prevEntDisp > 0)
|
||||
{
|
||||
--prevEntDisp;
|
||||
enteredText = previouslyEntered[prevEntDisp] + "_";
|
||||
refreshEnteredText();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SDLK_DOWN: //down arrow
|
||||
{
|
||||
if(prevEntDisp != -1 && prevEntDisp+1 < previouslyEntered.size())
|
||||
{
|
||||
++prevEntDisp;
|
||||
enteredText = previouslyEntered[prevEntDisp] + "_";
|
||||
refreshEnteredText();
|
||||
}
|
||||
else if(prevEntDisp+1 == previouslyEntered.size()) //useful feature
|
||||
{
|
||||
prevEntDisp = -1;
|
||||
enteredText = "_";
|
||||
refreshEnteredText();
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
#ifdef VCMI_SDL1
|
||||
if(enteredText.size() > 0 && enteredText.size() < conf.go()->ac.inputLineLength)
|
||||
{
|
||||
if( key.keysym.unicode < 0x80 && key.keysym.unicode > 0 )
|
||||
{
|
||||
enteredText[enteredText.size()-1] = (char)key.keysym.unicode;
|
||||
enteredText += "_";
|
||||
refreshEnteredText();
|
||||
}
|
||||
}
|
||||
#endif // VCMI_SDL1
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef VCMI_SDL1
|
||||
|
||||
void CInGameConsole::textInputed(const SDL_TextInputEvent & event)
|
||||
{
|
||||
if(!captureAllKeys || enteredText.size() == 0)
|
||||
return;
|
||||
enteredText.resize(enteredText.size()-1);
|
||||
|
||||
enteredText += event.text;
|
||||
enteredText += "_";
|
||||
|
||||
refreshEnteredText();
|
||||
}
|
||||
|
||||
void CInGameConsole::textEdited(const SDL_TextEditingEvent & event)
|
||||
{
|
||||
//do nothing here
|
||||
}
|
||||
|
||||
#endif // VCMI_SDL1
|
||||
|
||||
void CInGameConsole::startEnteringText()
|
||||
{
|
||||
CSDL_Ext::startTextInput(&pos);
|
||||
|
||||
enteredText = "_";
|
||||
if(GH.topInt() == adventureInt)
|
||||
{
|
||||
GH.statusbar->alignment = TOPLEFT;
|
||||
GH.statusbar->setText(enteredText);
|
||||
|
||||
//Prevent changes to the text from mouse interaction with the adventure map
|
||||
GH.statusbar->lock(true);
|
||||
}
|
||||
else if(LOCPLINT->battleInt)
|
||||
{
|
||||
LOCPLINT->battleInt->console->ingcAlter = enteredText;
|
||||
}
|
||||
}
|
||||
|
||||
void CInGameConsole::endEnteringText(bool printEnteredText)
|
||||
{
|
||||
CSDL_Ext::stopTextInput();
|
||||
|
||||
prevEntDisp = -1;
|
||||
if(printEnteredText)
|
||||
{
|
||||
std::string txt = enteredText.substr(0, enteredText.size()-1);
|
||||
LOCPLINT->cb->sendMessage(txt);
|
||||
previouslyEntered.push_back(txt);
|
||||
//print(txt);
|
||||
}
|
||||
enteredText = "";
|
||||
if(GH.topInt() == adventureInt)
|
||||
{
|
||||
GH.statusbar->alignment = CENTER;
|
||||
GH.statusbar->lock(false);
|
||||
GH.statusbar->clear();
|
||||
}
|
||||
else if(LOCPLINT->battleInt)
|
||||
{
|
||||
LOCPLINT->battleInt->console->ingcAlter = "";
|
||||
}
|
||||
}
|
||||
|
||||
void CInGameConsole::refreshEnteredText()
|
||||
{
|
||||
if(GH.topInt() == adventureInt)
|
||||
{
|
||||
GH.statusbar->lock(false);
|
||||
GH.statusbar->clear();
|
||||
GH.statusbar->setText(enteredText);
|
||||
GH.statusbar->lock(true);
|
||||
}
|
||||
else if(LOCPLINT->battleInt)
|
||||
{
|
||||
LOCPLINT->battleInt->console->ingcAlter = enteredText;
|
||||
}
|
||||
}
|
||||
|
||||
CInGameConsole::CInGameConsole() : prevEntDisp(-1), defaultTimeout(10000), maxDisplayedTexts(10)
|
||||
{
|
||||
#ifdef VCMI_SDL1
|
||||
addUsedEvents(KEYBOARD);
|
||||
#else
|
||||
addUsedEvents(KEYBOARD | TEXTINPUT);
|
||||
#endif
|
||||
}
|
||||
|
||||
CAdventureOptions::CAdventureOptions():
|
||||
CWindowObject(PLAYER_COLORED, "ADVOPTS")
|
||||
{
|
||||
OBJ_CONSTRUCTION_CAPTURING_ALL;
|
||||
|
||||
exit = new CAdventureMapButton("","",boost::bind(&CAdventureOptions::close, this), 204, 313, "IOK6432.DEF",SDLK_RETURN);
|
||||
exit->assignedKeys.insert(SDLK_ESCAPE);
|
||||
|
||||
scenInfo = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 198, "ADVINFO.DEF",SDLK_i);
|
||||
scenInfo->callback += CAdventureOptions::showScenarioInfo;
|
||||
//viewWorld = new CAdventureMapButton("","",boost::bind(&CGuiHandler::popIntTotally, &GH, this), 204, 313, "IOK6432.DEF",SDLK_RETURN);
|
||||
|
||||
puzzle = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 81, "ADVPUZ.DEF");
|
||||
puzzle->callback += boost::bind(&CPlayerInterface::showPuzzleMap, LOCPLINT);
|
||||
|
||||
dig = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 139, "ADVDIG.DEF");
|
||||
if(const CGHeroInstance *h = adventureInt->curHero())
|
||||
dig->callback += boost::bind(&CPlayerInterface::tryDiggging, LOCPLINT, h);
|
||||
else
|
||||
dig->block(true);
|
||||
}
|
||||
|
||||
void CAdventureOptions::showScenarioInfo()
|
||||
{
|
||||
auto campState = LOCPLINT->cb->getStartInfo()->campState;
|
||||
if(campState)
|
||||
{
|
||||
GH.pushInt(new CBonusSelection(campState));
|
||||
}
|
||||
else
|
||||
{
|
||||
GH.pushInt(new CScenarioInfo(LOCPLINT->cb->getMapHeader(), LOCPLINT->cb->getStartInfo()));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "gui/CIntObject.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
|
||||
class CArmedInstance;
|
||||
@ -313,3 +312,40 @@ public:
|
||||
/// for 3 seconds shows amount of town halls and players status
|
||||
void showGameStatus();
|
||||
};
|
||||
|
||||
class CInGameConsole : public CIntObject
|
||||
{
|
||||
private:
|
||||
std::list< std::pair< std::string, int > > texts; //list<text to show, time of add>
|
||||
boost::mutex texts_mx; // protects texts
|
||||
std::vector< std::string > previouslyEntered; //previously entered texts, for up/down arrows to work
|
||||
int prevEntDisp; //displayed entry from previouslyEntered - if none it's -1
|
||||
int defaultTimeout; //timeout for new texts (in ms)
|
||||
int maxDisplayedTexts; //hiw many texts can be displayed simultaneously
|
||||
public:
|
||||
std::string enteredText;
|
||||
void show(SDL_Surface * to);
|
||||
void print(const std::string &txt);
|
||||
void keyPressed (const SDL_KeyboardEvent & key); //call-in
|
||||
|
||||
#ifndef VCMI_SDL1
|
||||
void textInputed(const SDL_TextInputEvent & event) override;
|
||||
void textEdited(const SDL_TextEditingEvent & event) override;
|
||||
#endif // VCMI_SDL1
|
||||
|
||||
void startEnteringText();
|
||||
void endEnteringText(bool printEnteredText);
|
||||
void refreshEnteredText();
|
||||
|
||||
CInGameConsole(); //c-tor
|
||||
};
|
||||
|
||||
/// Adventure options dialogue where you can view the world, dig, play the replay of the last turn,...
|
||||
class CAdventureOptions : public CWindowObject
|
||||
{
|
||||
public:
|
||||
CAdventureMapButton *exit, *viewWorld, *puzzle, *dig, *scenInfo, *replay;
|
||||
|
||||
CAdventureOptions();
|
||||
static void showScenarioInfo();
|
||||
};
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "CSpellWindow.h"
|
||||
#include "Graphics.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "CDefHandler.h"
|
||||
#include "../lib/CGeneralTextHandler.h"
|
||||
#include "../lib/CHeroHandler.h"
|
||||
@ -31,6 +32,7 @@
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/CTradeWindow.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "../lib/UnlockGuard.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
@ -1524,38 +1526,3 @@ void CAdvMapInt::adjustActiveness(bool aiTurnStart)
|
||||
if(wasActive)
|
||||
activate();
|
||||
}
|
||||
|
||||
CAdventureOptions::CAdventureOptions():
|
||||
CWindowObject(PLAYER_COLORED, "ADVOPTS")
|
||||
{
|
||||
OBJ_CONSTRUCTION_CAPTURING_ALL;
|
||||
|
||||
exit = new CAdventureMapButton("","",boost::bind(&CAdventureOptions::close, this), 204, 313, "IOK6432.DEF",SDLK_RETURN);
|
||||
exit->assignedKeys.insert(SDLK_ESCAPE);
|
||||
|
||||
scenInfo = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 198, "ADVINFO.DEF",SDLK_i);
|
||||
scenInfo->callback += CAdventureOptions::showScenarioInfo;
|
||||
//viewWorld = new CAdventureMapButton("","",boost::bind(&CGuiHandler::popIntTotally, &GH, this), 204, 313, "IOK6432.DEF",SDLK_RETURN);
|
||||
|
||||
puzzle = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 81, "ADVPUZ.DEF");
|
||||
puzzle->callback += boost::bind(&CPlayerInterface::showPuzzleMap, LOCPLINT);
|
||||
|
||||
dig = new CAdventureMapButton("","", boost::bind(&CAdventureOptions::close, this), 24, 139, "ADVDIG.DEF");
|
||||
if(const CGHeroInstance *h = adventureInt->curHero())
|
||||
dig->callback += boost::bind(&CPlayerInterface::tryDiggging, LOCPLINT, h);
|
||||
else
|
||||
dig->block(true);
|
||||
}
|
||||
|
||||
void CAdventureOptions::showScenarioInfo()
|
||||
{
|
||||
auto campState = LOCPLINT->cb->getStartInfo()->campState;
|
||||
if(campState)
|
||||
{
|
||||
GH.pushInt(new CBonusSelection(campState));
|
||||
}
|
||||
else
|
||||
{
|
||||
GH.pushInt(new CScenarioInfo(LOCPLINT->cb->getMapHeader(), LOCPLINT->cb->getStartInfo()));
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <typeinfo>
|
||||
|
||||
#include "SDL.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "gui/CIntObject.h"
|
||||
#include "AdventureMapClasses.h"
|
||||
|
||||
class CDefHandler;
|
||||
@ -29,16 +25,6 @@ class IShipyard;
|
||||
*
|
||||
*/
|
||||
|
||||
/// Adventure options dialogue where you can view the world, dig, play the replay of the last turn,...
|
||||
class CAdventureOptions : public CWindowObject
|
||||
{
|
||||
public:
|
||||
CAdventureMapButton *exit, *viewWorld, *puzzle, *dig, *scenInfo, *replay;
|
||||
|
||||
CAdventureOptions();
|
||||
static void showScenarioInfo();
|
||||
};
|
||||
|
||||
/// Holds information about which tiles of the terrain are shown/not shown at the screen
|
||||
class CTerrainRect
|
||||
: public CIntObject
|
||||
|
@ -25,6 +25,8 @@
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/CTradeWindow.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "GUIClasses.h"
|
||||
|
||||
using namespace boost::assign;
|
||||
|
||||
|
@ -1,8 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "CAnimation.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "gui/CGarrisonInt.h"
|
||||
|
||||
class CAdventureMapButton;
|
||||
class CBuilding;
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
|
||||
using namespace CSDL_Ext;
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#include "gui/CIntObject.h"
|
||||
#include "../lib/HeroBonus.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "gui/CArtifactHolder.h"
|
||||
|
||||
/*
|
||||
* CCreatureWindow.h, part of VCMI engine
|
||||
|
@ -25,6 +25,8 @@
|
||||
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "CMT.h"
|
||||
|
||||
#undef min
|
||||
|
@ -2,7 +2,8 @@
|
||||
|
||||
#include "../lib/HeroBonus.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "gui/CArtifactHolder.h"
|
||||
#include "gui/CGarrisonInt.h"
|
||||
|
||||
/*
|
||||
* CHeroWindow.h, part of VCMI engine
|
||||
@ -24,6 +25,7 @@ class LClickableAreaHero;
|
||||
class LRClickableAreaWText;
|
||||
class LRClickableAreaWTextComp;
|
||||
class CArtifactsOfHero;
|
||||
class MoraleLuckBox;
|
||||
|
||||
/// Button which switches hero selection
|
||||
class CHeroSwitcher : public CIntObject
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "CPlayerInterface.h" //LOCPLINT
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "CMT.h"
|
||||
|
||||
/*
|
||||
|
@ -1,7 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "GUIClasses.h"
|
||||
#include "gui/CArtifactHolder.h"
|
||||
#include "gui/CGarrisonInt.h"
|
||||
|
||||
class CAdventureMapButton;
|
||||
class CAnimImage;
|
||||
@ -11,6 +11,10 @@ class CSlider;
|
||||
class CTownInfo;
|
||||
class CCreaInfo;
|
||||
class HeroSlots;
|
||||
class LRClickableAreaOpenTown;
|
||||
class CComponent;
|
||||
class CHeroArea;
|
||||
class MoraleLuckBox;
|
||||
|
||||
/*
|
||||
* CKingdomInterface.h, part of VCMI engine
|
||||
|
@ -23,6 +23,7 @@ set(client_SRCS
|
||||
gui/CTradeWindow.cpp
|
||||
gui/Fonts.cpp
|
||||
gui/Geometries.cpp
|
||||
gui/MiscWidgets.cpp
|
||||
gui/CCursorHandler.cpp
|
||||
gui/SDL_Extensions.cpp
|
||||
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "CBitmapHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
|
||||
const int BETWEEN_COMPS_ROWS = 10;
|
||||
const int BEFORE_COMPONENTS = 30;
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "../lib/CSoundBase.h"
|
||||
#include "../lib/CCreatureHandler.h"
|
||||
|
||||
/*
|
||||
* CMusicHandler.h, part of VCMI engine
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "battle/CCreatureAnimation.h"
|
||||
#include "Graphics.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "../lib/CArtHandler.h"
|
||||
#include "../lib/CGeneralTextHandler.h"
|
||||
#include "../lib/CHeroHandler.h"
|
||||
@ -36,6 +37,7 @@
|
||||
#include "../lib/CGameState.h"
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "../lib/UnlockGuard.h"
|
||||
|
||||
#ifdef min
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "../lib/mapping/CMapService.h"
|
||||
#include "../lib/mapping/CMap.h"
|
||||
#include "../lib/CRandomGenerator.h"
|
||||
|
@ -1,12 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "../lib/filesystem/Filesystem.h"
|
||||
#include <SDL.h>
|
||||
#include "../lib/StartInfo.h"
|
||||
#include "GUIClasses.h"
|
||||
#include "../lib/FunctionList.h"
|
||||
#include "../lib/mapping/CMapInfo.h"
|
||||
#include "../lib/rmg/CMapGenerator.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
|
||||
/*
|
||||
* CPreGame.h, part of VCMI engine
|
||||
|
@ -5,20 +5,20 @@
|
||||
#include "../lib/CGeneralTextHandler.h"
|
||||
#include "../CCallback.h"
|
||||
|
||||
#include <SDL.h>
|
||||
#include "gui/SDL_Extensions.h"
|
||||
#include "CBitmapHandler.h"
|
||||
#include "CDefHandler.h"
|
||||
#include "Graphics.h"
|
||||
#include "CPlayerInterface.h"
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "CAdvmapInterface.h"
|
||||
|
||||
#include "../lib/CGameState.h"
|
||||
#include "../lib/CArtHandler.h"
|
||||
#include "../lib/NetPacksBase.h"
|
||||
#include "../lib/CConfigHandler.h"
|
||||
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "gui/SDL_Extensions.h"
|
||||
|
||||
/*
|
||||
* CQuestLog.cpp, part of VCMI engine
|
||||
|
@ -1,9 +1,12 @@
|
||||
#include "gui/CIntObject.h"
|
||||
#include "AdventureMapClasses.h"
|
||||
#include "CAdvmapInterface.h"
|
||||
#include "GUIClasses.h"
|
||||
#pragma once
|
||||
|
||||
#include "../lib/CGameState.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "CAnimation.h"
|
||||
#include "AdventureMapClasses.h"
|
||||
//#include "CAdvmapInterface.h"
|
||||
//
|
||||
|
||||
//#include "../lib/CGameState.h"
|
||||
|
||||
/*
|
||||
* CQuestLog.h, part of VCMI engine
|
||||
@ -29,8 +32,6 @@ class CSlider;
|
||||
class CLabel;
|
||||
struct QuestInfo;
|
||||
|
||||
extern CAdvMapInt *adventureInt;
|
||||
|
||||
const int QUEST_COUNT = 9;
|
||||
|
||||
class CQuestLabel : public LRClickableAreaWText, public CMultiLineLabel
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include "Graphics.h"
|
||||
#include "CDefHandler.h"
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "../lib/CSpellHandler.h"
|
||||
#include "../lib/CGeneralTextHandler.h"
|
||||
#include "CVideoHandler.h"
|
||||
@ -18,7 +19,9 @@
|
||||
#include "../lib/BattleState.h"
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "CMT.h"
|
||||
#include "GUIClasses.h"
|
||||
|
||||
/*
|
||||
* CSpellWindow.cpp, part of VCMI engine
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,23 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
#include "CAnimation.h"
|
||||
#include "../lib/FunctionList.h"
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "../lib/ResourceSet.h"
|
||||
#include "../lib/CConfigHandler.h"
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "gui/CIntObject.h"
|
||||
#include "gui/CIntObjectClasses.h"
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "gui/CArtifactHolder.h"
|
||||
#include "gui/CComponent.h"
|
||||
#include "gui/CGarrisonInt.h"
|
||||
|
||||
#ifdef max
|
||||
#undef max
|
||||
#endif
|
||||
#ifdef min
|
||||
#undef min
|
||||
#endif
|
||||
#include "CAnimation.h"
|
||||
|
||||
/*
|
||||
* GUIClasses.h, part of VCMI engine
|
||||
@ -82,150 +70,12 @@ struct InfoAboutArmy;
|
||||
struct InfoAboutHero;
|
||||
struct InfoAboutTown;
|
||||
|
||||
/// text + comp. + ok button
|
||||
class CInfoWindow : public CSimpleWindow
|
||||
{ //window able to delete its components when closed
|
||||
bool delComps; //whether comps will be deleted
|
||||
class CCreaturePic;
|
||||
class MoraleLuckBox;
|
||||
class CHeroArea;
|
||||
class CMinorResDataBar;
|
||||
|
||||
public:
|
||||
typedef std::vector<std::pair<std::string,CFunctionList<void()> > > TButtonsInfo;
|
||||
typedef std::vector<CComponent*> TCompsInfo;
|
||||
QueryID ID; //for identification
|
||||
CTextBox *text;
|
||||
std::vector<CAdventureMapButton *> buttons;
|
||||
std::vector<CComponent*> components;
|
||||
CSlider *slider;
|
||||
|
||||
void setDelComps(bool DelComps);
|
||||
virtual void close();
|
||||
|
||||
void show(SDL_Surface * to);
|
||||
void showAll(SDL_Surface * to);
|
||||
void sliderMoved(int to);
|
||||
|
||||
CInfoWindow(std::string Text, PlayerColor player, const TCompsInfo &comps = TCompsInfo(), const TButtonsInfo &Buttons = TButtonsInfo(), bool delComps = true); //c-tor
|
||||
CInfoWindow(); //c-tor
|
||||
~CInfoWindow(); //d-tor
|
||||
|
||||
//use only before the game starts! (showYesNoDialog in LOCPLINT must be used then)
|
||||
static void showInfoDialog( const std::string & text, const std::vector<CComponent*> *components, bool DelComps = true, PlayerColor player = PlayerColor(1));
|
||||
static void showOkDialog(const std::string & text, const std::vector<CComponent*> *components, const boost::function<void()> & onOk, bool delComps = true, PlayerColor player = PlayerColor(1));
|
||||
static void showYesNoDialog( const std::string & text, const std::vector<CComponent*> *components, const CFunctionList<void( ) > &onYes, const CFunctionList<void()> &onNo, bool DelComps = true, PlayerColor player = PlayerColor(1));
|
||||
static CInfoWindow *create(const std::string &text, PlayerColor playerID = PlayerColor(1), const std::vector<CComponent*> *components = nullptr, bool DelComps = false);
|
||||
|
||||
/// create text from title and description: {title}\n\n description
|
||||
static std::string genText(std::string title, std::string description);
|
||||
};
|
||||
|
||||
/// popup displayed on R-click
|
||||
class CRClickPopup : public CIntObject
|
||||
{
|
||||
public:
|
||||
virtual void close();
|
||||
void clickRight(tribool down, bool previousState);
|
||||
|
||||
CRClickPopup();
|
||||
virtual ~CRClickPopup(); //d-tor
|
||||
|
||||
static CIntObject* createInfoWin(Point position, const CGObjectInstance * specific);
|
||||
static void createAndPush(const std::string &txt, const CInfoWindow::TCompsInfo &comps = CInfoWindow::TCompsInfo());
|
||||
static void createAndPush(const std::string &txt, CComponent * component);
|
||||
static void createAndPush(const CGObjectInstance *obj, const Point &p, EAlignment alignment = BOTTOMRIGHT);
|
||||
};
|
||||
|
||||
/// popup displayed on R-click
|
||||
class CRClickPopupInt : public CRClickPopup
|
||||
{
|
||||
public:
|
||||
IShowActivatable *inner;
|
||||
bool delInner;
|
||||
|
||||
void show(SDL_Surface * to);
|
||||
void showAll(SDL_Surface * to);
|
||||
CRClickPopupInt(IShowActivatable *our, bool deleteInt); //c-tor
|
||||
virtual ~CRClickPopupInt(); //d-tor
|
||||
};
|
||||
|
||||
class CInfoPopup : public CRClickPopup
|
||||
{
|
||||
public:
|
||||
bool free; //TODO: comment me
|
||||
SDL_Surface * bitmap; //popup background
|
||||
void close();
|
||||
void show(SDL_Surface * to);
|
||||
CInfoPopup(SDL_Surface * Bitmap, int x, int y, bool Free=false); //c-tor
|
||||
CInfoPopup(SDL_Surface * Bitmap, const Point &p, EAlignment alignment, bool Free=false); //c-tor
|
||||
CInfoPopup(SDL_Surface * Bitmap = nullptr, bool Free = false); //default c-tor
|
||||
|
||||
void init(int x, int y);
|
||||
~CInfoPopup(); //d-tor
|
||||
};
|
||||
|
||||
/// popup on adventure map for town\hero objects
|
||||
class CInfoBoxPopup : public CWindowObject
|
||||
{
|
||||
Point toScreen(Point pos);
|
||||
public:
|
||||
CInfoBoxPopup(Point position, const CGTownInstance * town);
|
||||
CInfoBoxPopup(Point position, const CGHeroInstance * hero);
|
||||
CInfoBoxPopup(Point position, const CGGarrison * garr);
|
||||
};
|
||||
|
||||
/// component selection window
|
||||
class CSelWindow : public CInfoWindow
|
||||
{ //warning - this window deletes its components by closing!
|
||||
public:
|
||||
void selectionChange(unsigned to);
|
||||
void madeChoice(); //looks for selected component and calls callback
|
||||
CSelWindow(const std::string& text, PlayerColor player, int charperline ,const std::vector<CSelectableComponent*> &comps, const std::vector<std::pair<std::string,CFunctionList<void()> > > &Buttons, QueryID askID); //c-tor
|
||||
CSelWindow(){}; //c-tor
|
||||
//notification - this class inherits important destructor from CInfoWindow
|
||||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/// base class for hero/town/garrison tooltips
|
||||
class CArmyTooltip : public CIntObject
|
||||
{
|
||||
void init(const InfoAboutArmy &army);
|
||||
public:
|
||||
CArmyTooltip(Point pos, const InfoAboutArmy &army);
|
||||
CArmyTooltip(Point pos, const CArmedInstance * army);
|
||||
};
|
||||
|
||||
/// Class for hero tooltip. Does not have any background!
|
||||
/// background for infoBox: ADSTATHR
|
||||
/// background for tooltip: HEROQVBK
|
||||
class CHeroTooltip : public CArmyTooltip
|
||||
{
|
||||
void init(const InfoAboutHero &hero);
|
||||
public:
|
||||
CHeroTooltip(Point pos, const InfoAboutHero &hero);
|
||||
CHeroTooltip(Point pos, const CGHeroInstance * hero);
|
||||
};
|
||||
|
||||
/// Class for town tooltip. Does not have any background!
|
||||
/// background for infoBox: ADSTATCS
|
||||
/// background for tooltip: TOWNQVBK
|
||||
class CTownTooltip : public CArmyTooltip
|
||||
{
|
||||
void init(const InfoAboutTown &town);
|
||||
public:
|
||||
CTownTooltip(Point pos, const InfoAboutTown &town);
|
||||
CTownTooltip(Point pos, const CGTownInstance * town);
|
||||
};
|
||||
|
||||
/// draws picture with creature on background, use Animated=true to get animation
|
||||
class CCreaturePic : public CIntObject
|
||||
{
|
||||
private:
|
||||
CPicture *bg;
|
||||
CCreatureAnim *anim; //displayed animation
|
||||
|
||||
public:
|
||||
CCreaturePic(int x, int y, const CCreature *cre, bool Big=true, bool Animated=true); //c-tor
|
||||
};
|
||||
class CComponentBox;
|
||||
|
||||
/// Recruitment window where you can recruit creatures
|
||||
class CRecruitmentWindow : public CWindowObject
|
||||
@ -333,17 +183,6 @@ public:
|
||||
|
||||
};
|
||||
|
||||
/// Resource bar like that at the bottom of the adventure map screen
|
||||
class CMinorResDataBar : public CIntObject
|
||||
{
|
||||
public:
|
||||
SDL_Surface *bg; //background bitmap
|
||||
void show(SDL_Surface * to);
|
||||
void showAll(SDL_Surface * to);
|
||||
CMinorResDataBar(); //c-tor
|
||||
~CMinorResDataBar(); //d-tor
|
||||
};
|
||||
|
||||
/// Town portal, castle gate window
|
||||
class CObjectListWindow : public CWindowObject
|
||||
{
|
||||
@ -474,68 +313,6 @@ public:
|
||||
void show(SDL_Surface * to);
|
||||
};
|
||||
|
||||
class CInGameConsole : public CIntObject
|
||||
{
|
||||
private:
|
||||
std::list< std::pair< std::string, int > > texts; //list<text to show, time of add>
|
||||
boost::mutex texts_mx; // protects texts
|
||||
std::vector< std::string > previouslyEntered; //previously entered texts, for up/down arrows to work
|
||||
int prevEntDisp; //displayed entry from previouslyEntered - if none it's -1
|
||||
int defaultTimeout; //timeout for new texts (in ms)
|
||||
int maxDisplayedTexts; //hiw many texts can be displayed simultaneously
|
||||
public:
|
||||
std::string enteredText;
|
||||
void show(SDL_Surface * to);
|
||||
void print(const std::string &txt);
|
||||
void keyPressed (const SDL_KeyboardEvent & key); //call-in
|
||||
|
||||
#ifndef VCMI_SDL1
|
||||
void textInputed(const SDL_TextInputEvent & event) override;
|
||||
void textEdited(const SDL_TextEditingEvent & event) override;
|
||||
#endif // VCMI_SDL1
|
||||
|
||||
void startEnteringText();
|
||||
void endEnteringText(bool printEnteredText);
|
||||
void refreshEnteredText();
|
||||
|
||||
CInGameConsole(); //c-tor
|
||||
};
|
||||
|
||||
class MoraleLuckBox : public LRClickableAreaWTextComp
|
||||
{
|
||||
CAnimImage *image;
|
||||
public:
|
||||
bool morale; //true if morale, false if luck
|
||||
bool small;
|
||||
|
||||
void set(const IBonusBearer *node);
|
||||
|
||||
MoraleLuckBox(bool Morale, const Rect &r, bool Small=false);
|
||||
};
|
||||
|
||||
/// Opens hero window by left-clicking on it
|
||||
class CHeroArea: public CIntObject
|
||||
{
|
||||
const CGHeroInstance * hero;
|
||||
public:
|
||||
|
||||
CHeroArea(int x, int y, const CGHeroInstance * _hero);
|
||||
|
||||
void clickLeft(tribool down, bool previousState);
|
||||
void clickRight(tribool down, bool previousState);
|
||||
void hover(bool on);
|
||||
};
|
||||
|
||||
/// Opens town screen by left-clicking on it
|
||||
class LRClickableAreaOpenTown: public LRClickableAreaWTextComp
|
||||
{
|
||||
public:
|
||||
const CGTownInstance * town;
|
||||
void clickLeft(tribool down, bool previousState);
|
||||
void clickRight(tribool down, bool previousState);
|
||||
LRClickableAreaOpenTown();
|
||||
};
|
||||
|
||||
class CExchangeWindow : public CWindowObject, public CWindowWithGarrison, public CWindowWithArtifacts
|
||||
{
|
||||
CGStatusBar * ourBar; //internal statusbar
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include "../lib/BattleState.h"
|
||||
#include "../lib/GameConstants.h"
|
||||
#include "gui/CGuiHandler.h"
|
||||
#include "gui/MiscWidgets.h"
|
||||
#include "AdventureMapClasses.h"
|
||||
#include "CMT.h"
|
||||
|
||||
//macros to avoid code duplication - calls given method with given arguments if interface for specific player is present
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "../CCreatureWindow.h"
|
||||
#include "../CGameInfo.h"
|
||||
#include "../CPlayerInterface.h"
|
||||
#include "../GUIClasses.h"
|
||||
|
||||
#include "../../CCallback.h"
|
||||
|
||||
|
@ -1,23 +1,27 @@
|
||||
#include "StdInc.h"
|
||||
#include "CIntObjectClasses.h"
|
||||
|
||||
#include "../CBitmapHandler.h"
|
||||
#include "SDL_Pixels.h"
|
||||
#include "SDL_Extensions.h"
|
||||
#include "../Graphics.h"
|
||||
#include "../CAnimation.h"
|
||||
#include "CGuiHandler.h"
|
||||
#include "CCursorHandler.h"
|
||||
#include "../CGameInfo.h"
|
||||
#include "../../CCallback.h"
|
||||
#include "../../lib/CConfigHandler.h"
|
||||
#include "MiscWidgets.h"
|
||||
|
||||
#include "../battle/CBattleInterface.h"
|
||||
#include "../battle/CBattleInterfaceClasses.h"
|
||||
|
||||
#include "../CBitmapHandler.h"
|
||||
#include "../Graphics.h"
|
||||
#include "../CAnimation.h"
|
||||
#include "../CGameInfo.h"
|
||||
#include "../CPlayerInterface.h"
|
||||
#include "../CMessage.h"
|
||||
#include "../CMusicHandler.h"
|
||||
#include "../GUIClasses.h"
|
||||
#include "CGuiHandler.h"
|
||||
#include "../CAdvmapInterface.h"
|
||||
|
||||
#include "../../CCallback.h"
|
||||
|
||||
#include "../../lib/CConfigHandler.h"
|
||||
#include "../../lib/CGeneralTextHandler.h" //for Unicode related stuff
|
||||
|
||||
CPicture::CPicture( SDL_Surface *BG, int x, int y, bool Free )
|
||||
|
Loading…
Reference in New Issue
Block a user