91 lines
1.5 KiB
C++
Executable file
91 lines
1.5 KiB
C++
Executable file
#ifndef _LOGIC_H
|
|
#define _LOGIC_H
|
|
|
|
#include "../../stdafx.h"
|
|
|
|
class Logic : public IO_Module
|
|
{
|
|
public:
|
|
Logic()
|
|
{
|
|
this->parent = NULL;
|
|
this->moduleId = 0;
|
|
this->isKeeper = false;
|
|
this->status = 0;
|
|
this->hasBall = false;
|
|
this->avoidsObstacle = false;
|
|
}
|
|
|
|
Logic(uint32 logicId)
|
|
{
|
|
this->parent = NULL;
|
|
this->moduleId = logicId;
|
|
this->isKeeper = false;
|
|
this->status = 0;
|
|
this->hasBall = false;
|
|
this->avoidsObstacle = false;
|
|
}
|
|
|
|
protected:
|
|
bool isKeeper;
|
|
uint8 status;
|
|
bool hasBall;
|
|
bool avoidsObstacle;
|
|
|
|
enum LogicalStatus
|
|
{
|
|
STATUS_KEEPER_TURN_RIGHT,
|
|
STATUS_KEEPER_TURN_LEFT,
|
|
STATUS_KEEPER_RETURN_HOME,
|
|
STATUS_KEEPER_HUNT_BALL,
|
|
STATUS_KEEPER_TURN_TO_BALL,
|
|
STATUS_KEEPER_DRIVE_TO_DEFEND,
|
|
|
|
STATUS_ATTACKER_TURN_TO_BALL,
|
|
STATUS_ATTACKER_DRIVE_TO_BALL,
|
|
STATUS_ATTACKER_SEARCHING_AT_HOME,
|
|
STATUS_ATTACKER_SEARCHING_AT_ENEMY,
|
|
};
|
|
|
|
void OnBallOwned();
|
|
void OnBallLost();
|
|
|
|
void OnBecomeKeeper();
|
|
void OnBecomeAttacker();
|
|
|
|
public:
|
|
void Update();
|
|
|
|
bool IsKeeper()
|
|
{
|
|
return isKeeper;
|
|
}
|
|
|
|
bool IsAttacker()
|
|
{
|
|
return !isKeeper;
|
|
}
|
|
|
|
void SetKeeper(bool newStatus)
|
|
{
|
|
if(!this->isKeeper && newStatus)
|
|
{
|
|
this->OnBecomeKeeper();
|
|
}
|
|
else if(this->isKeeper && !newStatus)
|
|
{
|
|
this->OnBecomeAttacker();
|
|
}
|
|
this->isKeeper = newStatus;
|
|
}
|
|
|
|
bool HasBall()
|
|
{
|
|
return this->hasBall;
|
|
}
|
|
|
|
void UpdateKeeperMovement();
|
|
void UpdateAttackerMovement();
|
|
};
|
|
|
|
#endif
|