Files
source/Tactical/SkillMenu.h
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

201 lines
3.7 KiB
C++

#ifndef _SKILL_MENU_
#define _SKILL_MENU_
/**
* @file
* @author Flugente (bears-pit.com)
*/
#include "popup_class.h"
/**
* @brief A basic class for popup menus
* Use this to create menus calling other menus, each having various sub-options
* I tried to make this as orderly as possible. It's ugly, but much more clean than the first solution, which was a hardcoded mess.
* You will, however, still need wrapper functions (we use callbacks on member functions), see Implementation.
*/
class SkillMenuItem
{
public:
SkillMenuItem() :
fInitialized(FALSE), usPosX(0), gPopup(NULL)
{
}
virtual void Cancel()
{
// Hide the Filter Menu pop-up.
if (gPopup != NULL && fInitialized )
{
gPopup->hide();
}
}
virtual void Destroy()
{
// If we already have a popup, destroy it first. This ensures we get a fresh menu each time.
if ( fInitialized )
{
delete(gPopup);
gPopup = NULL;
fInitialized = FALSE;
}
}
BOOLEAN Active()
{
if (gPopup != NULL && fInitialized && gPopup->Visible())
{
return TRUE;
}
return FALSE;
}
UINT16 GetMaxPosX()
{
if ( gPopup )
return (usPosX + gPopup->getBoxDimensions().iRight);
return usPosX;
}
virtual void SetPos(UINT16 usX, UINT16 usY)
{
// same y, different x
usPosX = usX;
gPopup->setPosition( usPosX, usY );
fInitialized = TRUE;
gPopup->show();
}
void SetupPopup(CHAR* name);
POPUP* GetPopup()
{
return gPopup;
}
virtual void Setup( UINT32 aVal ) {}
virtual void Functions( UINT32 aVal ) {}
private:
BOOLEAN fInitialized;
UINT16 usPosX;
POPUP* gPopup;
};
// select a trait
class TraitSelection : public SkillMenuItem
{
public:
TraitSelection() {}
void Setup( UINT32 aVal );
};
// select a skill
class SkillSelection : public SkillMenuItem
{
public:
SkillSelection() : usSector(0) {}
void Setup( UINT32 aVal );
void Functions( UINT32 aVal );
private:
UINT32 usSector;
};
// select sector to call artillery from
class ArtillerySector : public SkillMenuItem
{
public:
ArtillerySector() {}
void Setup( UINT32 aVal );
};
// select team we request artillery from
class ArtilleryTeam : public SkillMenuItem
{
public:
ArtilleryTeam() : usSector(0) {}
void Setup( UINT32 aVal );
void Functions( UINT32 aVal );
private:
UINT32 usSector;
};
// select the sector we call reinforcements from
class ReinforcementSector : public SkillMenuItem
{
public:
ReinforcementSector() {}
void Setup( UINT32 aVal );
};
// select the number of milita that should reinforce
class ReinforcementNumber : public SkillMenuItem
{
public:
ReinforcementNumber() : usSector(0) {}
void Setup( UINT32 aVal );
void Functions( UINT32 aVal );
private:
UINT32 usSector;
};
// select an individual soldier as target of a skill
class SoldierSelection : public SkillMenuItem
{
public:
SoldierSelection() : usSkill(0) {}
void Setup( UINT32 aVal );
void Functions( UINT32 aVal );
private:
UINT32 usSkill;
};
class DragSelection : public SkillMenuItem
{
public:
DragSelection() { usSkill = 0; }
void Setup( UINT32 aVal );
void Functions( UINT32 aVal );
void FunctionsGridNo( INT32 aVal );
private:
UINT32 usSkill;
};
/**
* Flugente: traits menu popup box
* This will create other boxes when needed
*/
void TraitsMenu( INT32 usMapPos );
// C17
// not skill-related, but while we're here...
class EquipmentSelection : public SkillMenuItem
{
public:
EquipmentSelection() {}
void Setup(UINT32 aVal);
void Functions(UINT32 aVal);
};
void EquipmentListMenu();
void EquipmentListMenuCancel();
#endif