1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
/*
* NewTurnProcessor.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 "../../lib/constants/EntityIdentifiers.h"
#include "../../lib/constants/Enumerations.h"
#include "../../lib/gameState/RumorState.h"
VCMI_LIB_NAMESPACE_BEGIN
class CGTownInstance;
class ResourceSet;
struct SetAvailableCreatures;
struct SetMovePoints;
struct SetMana;
struct InfoWindow;
struct NewTurn;
VCMI_LIB_NAMESPACE_END
class CGameHandler;
class NewTurnProcessor : boost::noncopyable
{
CGameHandler * gameHandler;
std::vector<SetMana> updateHeroesManaPoints();
std::vector<SetMovePoints> updateHeroesMovementPoints();
ResourceSet generatePlayerIncome(PlayerColor playerID, bool newWeek);
SetAvailableCreatures generateTownGrowth(const CGTownInstance * town, EWeekType weekType, CreatureID creatureWeek, bool firstDay);
RumorState pickNewRumor();
InfoWindow createInfoWindow(EWeekType weekType, CreatureID creatureWeek, bool newMonth);
std::tuple<EWeekType, CreatureID> pickWeekType(bool newMonth);
NewTurn generateNewTurnPack();
void handleTimeEvents(PlayerColor player);
void handleTownEvents(const CGTownInstance *town);
void updateNeutralTownGarrison(const CGTownInstance * t, int currentWeek) const;
public:
NewTurnProcessor(CGameHandler * gameHandler);
void onNewTurn();
void onPlayerTurnStarted(PlayerColor color);
void onPlayerTurnEnded(PlayerColor color);
};
|