1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-17 00:07:41 +02:00
Files
vcmi/lib/callback/CGameInfoCallback.h
Ivan Savenko 24def2ed16 Icons for heroes on minimap
VCMI will now show icons for all heroes on visible part of minimap to
help with readability on large maps

Old behavior can be enable via toggle in game settings menu
2025-05-27 18:38:44 +03:00

127 lines
6.6 KiB
C++

/*
* CGameInfoCallback.h, 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
*
*/
#pragma once
#include "IGameInfoCallback.h"
VCMI_LIB_NAMESPACE_BEGIN
struct SThievesGuildInfo;
class Player;
class DLL_LINKAGE CGameInfoCallback : public IGameInfoCallback
{
protected:
bool hasAccess(std::optional<PlayerColor> playerId) const;
bool canGetFullInfo(const CGObjectInstance *obj) const; //true we player owns obj or ally owns obj or privileged mode
public:
//various
int getDate(Date mode=Date::DAY)const override; //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month
const StartInfo * getStartInfo() const override;
const StartInfo * getInitialStartInfo() const;
bool isAllowed(SpellID id) const override;
bool isAllowed(ArtifactID id) const override;
bool isAllowed(SecondarySkill id) const override;
const IGameSettings & getSettings() const override;
//player
virtual std::optional<PlayerColor> getPlayerID() const;
const Player * getPlayer(PlayerColor color) const;
const PlayerState * getPlayerState(PlayerColor color, bool verbose = true) const override;
int getResource(PlayerColor Player, GameResID which) const override;
PlayerRelations getPlayerRelations(PlayerColor color1, PlayerColor color2) const override;
void getThievesGuildInfo(SThievesGuildInfo & thi, const CGObjectInstance * obj);
EPlayerStatus getPlayerStatus(PlayerColor player, bool verbose = true) const override;
bool isPlayerMakingTurn(PlayerColor player) const;
const PlayerSettings * getPlayerSettings(PlayerColor color) const override;
TurnTimerInfo getPlayerTurnTime(PlayerColor color) const;
//map
bool isVisibleFor(int3 pos, PlayerColor player) const override;
bool isVisibleFor(const CGObjectInstance * obj, PlayerColor player) const override;
bool isVisible(const CGObjectInstance * obj) const;
bool isVisible(int3 pos) const;
//armed object
void fillUpgradeInfo(const CArmedInstance *obj, SlotID stackPos, UpgradeInfo &out) const;
//hero
const CGHeroInstance * getHero(ObjectInstanceID objid) const override;
int getHeroCount(PlayerColor player, bool includeGarrisoned) const override;
std::vector<const CGHeroInstance*> getHeroes(PlayerColor player) const;
bool getHeroInfo(const CGObjectInstance * hero, InfoAboutHero & dest, const CGObjectInstance * selectedObject = nullptr) const;
int32_t getSpellCost(const spells::Spell * sp, const CGHeroInstance * caster) const;
int64_t estimateSpellDamage(const CSpell * sp, const CGHeroInstance * hero) const;
const CArtifactInstance * getArtInstance(ArtifactInstanceID aid) const override;
const CGObjectInstance * getObjInstance(ObjectInstanceID oid) const override;
const CArtifactSet * getArtSet(const ArtifactLocation & loc) const;
//objects
const CGObjectInstance * getObj(ObjectInstanceID objid, bool verbose = true) const override;
std::vector<const CGObjectInstance *> getBlockingObjs(int3 pos) const;
std::vector<const CGObjectInstance *> getVisitableObjs(int3 pos, bool verbose = true) const;
std::vector<const CGObjectInstance *> getAllVisitableObjs() const;
std::vector<const CGObjectInstance *> getFlaggableObjects(int3 pos) const;
const CGObjectInstance * getTopObj(int3 pos) const override;
PlayerColor getOwner(ObjectInstanceID heroID) const;
const IMarket * getMarket(ObjectInstanceID objid) const;
//map
int3 guardingCreaturePosition (int3 pos) const override;
std::vector<const CGObjectInstance*> getGuardingCreatures (int3 pos) const override;
bool isTileGuardedUnchecked(int3 tile) const;
const CMapHeader * getMapHeader()const override;
int3 getMapSize() const override;
const TerrainTile * getTile(int3 tile, bool verbose = true) const override;
const TerrainTile * getTileUnchecked(int3 tile) const override;
bool isInTheMap(const int3 &pos) const override;
void getVisibleTilesInRange(std::unordered_set<int3> &tiles, int3 pos, int radious, int3::EDistanceFormula distanceFormula = int3::DIST_2D) const;
void calculatePaths(const std::shared_ptr<PathfinderConfig> & config) const override;
EDiggingStatus getTileDigStatus(int3 tile, bool verbose = true) const override;
bool checkForVisitableDir(const int3 & src, const int3 & dst) const override;
//town
const CGTownInstance* getTown(ObjectInstanceID objid) const override;
int howManyTowns(PlayerColor Player) const;
std::vector<const CGHeroInstance *> getAvailableHeroes(const CGObjectInstance * townOrTavern) const;
std::string getTavernRumor(const CGObjectInstance * townOrTavern) const;
EBuildingState canBuildStructure(const CGTownInstance *t, BuildingID ID) const;
bool getTownInfo(const CGObjectInstance * town, InfoAboutTown & dest, const CGObjectInstance * selectedObject = nullptr) const;
//from gs
const TeamState *getTeam(TeamID teamID) const override;
const TeamState *getPlayerTeam(PlayerColor color) const override;
//teleport
std::vector<ObjectInstanceID> getVisibleTeleportObjects(std::vector<ObjectInstanceID> ids, PlayerColor player) const override;
std::vector<ObjectInstanceID> getTeleportChannelEntrances(TeleportChannelID id, PlayerColor Player = PlayerColor::UNFLAGGABLE) const override;
std::vector<ObjectInstanceID> getTeleportChannelExits(TeleportChannelID id, PlayerColor Player = PlayerColor::UNFLAGGABLE) const override;
ETeleportChannelType getTeleportChannelType(TeleportChannelID id, PlayerColor player = PlayerColor::UNFLAGGABLE) const;
bool isTeleportChannelImpassable(TeleportChannelID id, PlayerColor player = PlayerColor::UNFLAGGABLE) const override;
bool isTeleportChannelBidirectional(TeleportChannelID id, PlayerColor player = PlayerColor::UNFLAGGABLE) const override;
bool isTeleportChannelUnidirectional(TeleportChannelID id, PlayerColor player = PlayerColor::UNFLAGGABLE) const override;
bool isTeleportEntrancePassable(const CGTeleport * obj, PlayerColor player) const override;
//used for random spawns
void getFreeTiles(std::vector<int3> &tiles) const;
void getTilesInRange(std::unordered_set<int3> & tiles, const int3 & pos, int radius, ETileVisibility mode, std::optional<PlayerColor> player = std::optional<PlayerColor>(), int3::EDistanceFormula formula = int3::DIST_2D) const override;
void getAllTiles(std::unordered_set<int3> &tiles, std::optional<PlayerColor> player, int level, std::function<bool(const TerrainTile *)> filter) const override;
void getAllowedSpells(std::vector<SpellID> &out, std::optional<ui16> level = std::nullopt) const;
#if SCRIPTING_ENABLED
virtual scripting::Pool * getGlobalContextPool() const override;
#endif
};
VCMI_LIB_NAMESPACE_END