Files
source/Utils/popup_definition.cpp
T
Marco Antonio J. Costaandmajcosta 86ad401186 add newline at end of file where it's lacking
.editorconfig already enforces it but it's getting changed piecemeal in
every commit. just get it done with.

the script:
```

find . -type f -not -path "./.git/*" -not -path "./.vs/*" | while read -r file; do
	isFile=$(file -0 "$file" | cut -d $'\0' -f2)
	case "$isFile" in
		(*text*)
			echo "$file is text"
			if [[ $(tail -c 1 "$file" | wc -l) -ne 1 ]]; then
				echo "" >> "$file"
			fi
			;;
		(*)
			echo "file isn't text"
			;;
	esac
done
```
2024-12-14 19:05:48 -03:00

236 lines
6.6 KiB
C++

#include "popup_class.h"
#include "popup_callback.h"
#include "sgp.h"
#include "popup_definition.h"
#include "Interface Items.h"
// for getting psoldier
#include "Map Screen Interface.h"
#include "Map Screen Interface Map.h"
#include "Overhead.h"
//////////////////////////////////////
// popupDef
//////////////////////////////////////
popupDef::popupDef(){}
popupDef::~popupDef(){
for(std::vector<popupDefContent*>::iterator content=this->content.begin(); content != this->content.end(); ++content)
{
delete *content;
}
}
BOOL popupDef::applyToBox(POPUP* popup){
for(std::vector<popupDefContent*>::iterator content=this->content.begin(); content != this->content.end(); ++content)
{
if ( (*content)->addToBox( popup ) != TRUE ) return FALSE;
}
return TRUE;
}
BOOL popupDef::addOption(std::wstring* name, UINT16 callbackId, UINT16 availId){
// TODO: check for vaid callbacl/avail ID
this->content.push_back( new popupDefOption(name,callbackId,availId) );
return TRUE;
}
popupDef * popupDef::addSubPopup(std::wstring* name){
popupDefSubPopupOption * sub = new popupDefSubPopupOption(name);
this->content.push_back( sub );
return sub->getSubDef();
}
BOOL popupDef::addSubPopup(popupDefSubPopupOption* sub){
// TODO: add check for max options
this->content.push_back( sub );
return TRUE;
};
BOOL popupDef::addGenerator(UINT16 id){
// TODO: check for valid generator id
this->content.push_back( new popupDefContentGenerator(id) );
return TRUE;
}
//////////////////////////////////////
// popupDefContent
//////////////////////////////////////
popupDefContent::popupDefContent(){}
popupDefContent::~popupDefContent(){}
//////////////////////////////////////
// popupDefOption helpers
//////////////////////////////////////
static BOOL setPopupDefCallback( POPUP_OPTION * opt, UINT16 callbackId ){
// TODO
opt->setAction(NULL);
return TRUE;
}
static BOOL setPopupDefAvail( POPUP_OPTION * opt, UINT16 callbackId ){
// TODO
opt->setAvail(NULL);
return TRUE;
}
//////////////////////////////////////
// popupDefOption
//////////////////////////////////////
/* defined in header file
popupDefOption::popupDefOption(){}
popupDefOption::popupDefOption( std::wstring* name, UINT16 callbackId, UINT16 availId ){}
~popupDefOption::popupDefOption(){}
*/
BOOL popupDefOption::addToBox(POPUP * popup){
POPUP_OPTION * opt = new POPUP_OPTION();
opt->setName( this->name );
if ( !setPopupDefCallback(opt, this->callbackId)
|| !setPopupDefAvail(opt, this->availId) )
{
delete opt;
return false;
}
return popup->addOption(*opt);
}
//////////////////////////////////////
// popupDefSubPopupOption
//////////////////////////////////////
/* defined in header file
popupDefSubPopupOption::popupDefSubPopupOption(){}
popupDefSubPopupOption::popupDefSubPopupOption( std::wstring* name ){}
popupDefSubPopupOption::~popupDefSubPopupOption(){}
*/
BOOL popupDefSubPopupOption::addToBox(POPUP * popup){
POPUP_SUB_POPUP_OPTION * sub = new POPUP_SUB_POPUP_OPTION( this->name );
if( !this->content->applyToBox( sub->subPopup ) ){
delete sub;
return false;
}
return popup->addSubMenuOption(sub);
}
//////////////////////////////////////
// popupDefContentGenerator helpers
//////////////////////////////////////
/*
void addArmorToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addLBEToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addWeaponsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addWeaponGroupsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addGrenadesToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addBombsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addFaceGearToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addRifleGrenadesToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addRocketAmmoToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
void addDrugsToPocketPopup( SOLDIERTYPE *pSoldier, INT16 sPocket, POPUP* popup );
*/
static BOOL applyPopupContentGenerator( POPUP * popup, UINT16 generatorId ){
SOLDIERTYPE *pSoldier;
GetSoldier( &pSoldier, gCharactersList[ bSelectedInfoChar ].usSolID );
switch(generatorId){
case popupGenerators::dummy:
popup->addOption(new std::wstring( L"Dummy generator" ),NULL);
break;
case popupGenerators::addArmor:
addArmorToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addLBE:
addLBEToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addWeapons:
addWeaponsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addWeaponGroups:
addWeaponGroupsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addGrenades:
addGrenadesToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addBombs:
addBombsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addFaceGear:
addFaceGearToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addAmmo:
addAmmoToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addRifleGrenades:
addRifleGrenadesToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addRocketAmmo:
addRocketAmmoToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addMisc:
addMiscToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
case popupGenerators::addKits:
addKitsToPocketPopup( pSoldier, gsPocketUnderCursor, popup );
break;
default:
return FALSE;
}
return TRUE;
}
//////////////////////////////////////
// popupDefContentGenerator
//////////////////////////////////////
/* defined in header file
popupDefContentGenerator::popupDefContentGenerator(){}
popupDefContentGenerator::popupDefContentGenerator( UINT16 generatorId ){}
popupDefContentGenerator::~popupDefContentGenerator(){}
*/
BOOL popupDefContentGenerator::addToBox(POPUP * popup){
return applyPopupContentGenerator( popup, this->generatorId );
}