2017-07-13 10:26:03 +02:00
/*
* StupidAI . 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
*
*/
2010-12-22 22:14:40 +02:00
# pragma once
2017-06-24 16:42:05 +02:00
# include "../../lib/battle/BattleHex.h"
2011-12-14 00:23:17 +03:00
2010-12-22 22:14:40 +02:00
class CStupidAI : public CBattleGameInterface
{
2010-12-25 03:43:40 +02:00
int side ;
2015-12-29 04:43:33 +02:00
std : : shared_ptr < CBattleCallback > cb ;
2010-12-25 03:43:40 +02:00
void print ( const std : : string & text ) const ;
2010-12-22 22:14:40 +02:00
public :
2018-01-13 10:43:26 +02:00
CStupidAI ( ) ;
~ CStupidAI ( ) ;
2010-12-22 22:14:40 +02:00
2015-12-29 04:43:33 +02:00
void init ( std : : shared_ptr < CBattleCallback > CB ) override ;
2013-06-26 14:18:27 +03:00
void actionFinished ( const BattleAction & action ) override ; //occurs AFTER every action taken by any stack or by the hero
void actionStarted ( const BattleAction & action ) override ; //occurs BEFORE every action taken by any stack or by the hero
BattleAction activeStack ( const CStack * stack ) override ; //called when it's turn of that stack
void battleAttack ( const BattleAttack * ba ) override ; //called when stack is performing attack
2017-07-20 06:08:49 +02:00
void battleStacksAttacked ( const std : : vector < BattleStackAttacked > & bsa , const std : : vector < MetaString > & battleLog ) override ; //called when stack receives damage (after battleAttack())
2013-06-26 14:18:27 +03:00
void battleEnd ( const BattleResult * br ) override ;
//void battleResultsApplied() override; //called when all effects of last battle are applied
void battleNewRoundFirst ( int round ) override ; //called at the beginning of each turn before changes are applied;
2014-03-23 15:59:03 +03:00
void battleNewRound ( int round ) override ; //called at the beginning of each turn, round=-1 is the tactic phase, round=0 is the first "normal" turn
2013-06-26 14:18:27 +03:00
void battleStackMoved ( const CStack * stack , std : : vector < BattleHex > dest , int distance ) override ;
void battleSpellCast ( const BattleSpellCast * sc ) override ;
void battleStacksEffectsSet ( const SetStackEffect & sse ) override ; //called when a specific effect is set to stacks
//void battleTriggerEffect(const BattleTriggerEffect & bte) override;
void battleStart ( const CCreatureSet * army1 , const CCreatureSet * army2 , int3 tile , const CGHeroInstance * hero1 , const CGHeroInstance * hero2 , bool side ) override ; //called by engine when battle starts; side=0 - left, side=1 - right
void battleCatapultAttacked ( const CatapultAttack & ca ) override ; //called when catapult makes an attack
2010-12-25 03:43:40 +02:00
2011-12-22 16:05:19 +03:00
BattleAction goTowards ( const CStack * stack , BattleHex hex ) ;
2013-05-09 14:09:23 +03:00
2016-09-10 02:32:40 +02:00
virtual void saveGame ( BinarySerializer & h , const int version ) override ;
virtual void loadGame ( BinaryDeserializer & h , const int version ) override ;
2013-05-09 14:09:23 +03:00
2010-12-22 22:14:40 +02:00
} ;