2025-06-09 22:12:46 +02:00
/*
* mineselector . cpp , part of VCMI engine
*
* Authors : listed in file AUTHORS in main folder
*
* License : GNU General Public License v2 .0 or later
* Full text of license available in license . txt file , in main folder
*
*/
# include "StdInc.h"
# include "mineselector.h"
# include "ui_mineselector.h"
# include "../../lib/GameLibrary.h"
# include "../../lib/texts/CGeneralTextHandler.h"
2025-09-14 16:17:55 +02:00
# include "../../lib/texts/MetaString.h"
# include "../../lib/entities/ResourceTypeHandler.h"
2025-06-09 22:12:46 +02:00
2025-09-16 10:34:38 +02:00
auto resourcesToShow = std : : vector < EGameResID > { EGameResID : : GOLD , EGameResID : : WOOD , EGameResID : : MERCURY , EGameResID : : ORE , EGameResID : : SULFUR , EGameResID : : CRYSTAL , EGameResID : : GEMS } ; //todo: configurable resource support
2025-06-09 22:12:46 +02:00
2025-09-21 22:28:41 +02:00
MineSelector : : MineSelector ( std : : map < GameResID , ui16 > & mines ) :
2025-06-09 22:12:46 +02:00
ui ( new Ui : : MineSelector ) ,
minesSelected ( mines )
{
ui - > setupUi ( this ) ;
setWindowTitle ( tr ( " Mine Selector " ) ) ;
setWindowModality ( Qt : : ApplicationModal ) ;
ui - > tableWidgetMines - > setColumnCount ( 2 ) ;
2025-09-14 16:17:55 +02:00
ui - > tableWidgetMines - > setRowCount ( resourcesToShow . size ( ) ) ;
2025-06-09 22:12:46 +02:00
ui - > tableWidgetMines - > setHorizontalHeaderLabels ( { tr ( " Resource " ) , tr ( " Mines " ) } ) ;
2025-09-14 16:17:55 +02:00
for ( int row = 0 ; row < resourcesToShow . size ( ) ; + + row )
2025-06-09 22:12:46 +02:00
{
2025-09-16 23:11:35 +02:00
auto name = resourcesToShow [ row ] . toResource ( ) - > getNameTranslated ( ) ;
2025-06-09 22:12:46 +02:00
auto label = new QLabel ( QString : : fromStdString ( name ) ) ;
2025-07-02 18:23:02 +03:00
label - > setAlignment ( Qt : : AlignCenter ) ;
2025-06-09 22:12:46 +02:00
ui - > tableWidgetMines - > setCellWidget ( row , 0 , label ) ;
auto spinBox = new QSpinBox ( ) ;
2025-07-02 18:23:02 +03:00
spinBox - > setRange ( 0 , 100 ) ;
2025-09-14 16:17:55 +02:00
spinBox - > setValue ( mines [ resourcesToShow [ row ] ] ) ;
2025-06-09 22:12:46 +02:00
ui - > tableWidgetMines - > setCellWidget ( row , 1 , spinBox ) ;
}
ui - > tableWidgetMines - > resizeColumnsToContents ( ) ;
show ( ) ;
}
2025-09-21 22:28:41 +02:00
void MineSelector : : showMineSelector ( std : : map < GameResID , ui16 > & mines )
2025-06-09 22:12:46 +02:00
{
auto * dialog = new MineSelector ( mines ) ;
dialog - > setAttribute ( Qt : : WA_DeleteOnClose ) ;
dialog - > exec ( ) ;
}
void MineSelector : : on_buttonBoxResult_accepted ( )
{
2025-09-14 16:17:55 +02:00
for ( int row = 0 ; row < resourcesToShow . size ( ) ; + + row )
minesSelected [ resourcesToShow [ row ] ] = static_cast < QSpinBox * > ( ui - > tableWidgetMines - > cellWidget ( row , 1 ) ) - > value ( ) ;
2025-06-09 22:12:46 +02:00
2025-07-02 18:23:02 +03:00
close ( ) ;
2025-06-09 22:12:46 +02:00
}
void MineSelector : : on_buttonBoxResult_rejected ( )
{
2025-07-02 18:23:02 +03:00
close ( ) ;
}