++++ fixed navigator logics

This commit is contained in:
masterm 2007-02-22 23:04:02 +00:00
parent d8e83400c8
commit e51f1c2038
5 changed files with 123 additions and 28 deletions

View file

@ -3,10 +3,7 @@
//-----------------------------------------------------------------------------
void Logic::OnBallOwned()
{
Wireless* ourWireless = parent->GetModule<Wireless>(IO_WIRELESS_MAIN);
//ourWireless->Send(WIRELESS_CODE);
//ourWireless->Send();
this->SetKeeper(false);
}
//-----------------------------------------------------------------------------
@ -27,12 +24,12 @@ void Logic::Update()
// is Keeper?
if(isKeeper) {
// turn around al little bit...
if((status == STATUS_KEEPER_TURN_LEFT && ourNavigator->AngleReached()) ||
if((status == STATUS_KEEPER_TURN_LEFT && !ourNavigator->IsMoving()) ||
(status != STATUS_KEEPER_TURN_LEFT && status != STATUS_KEEPER_TURN_RIGHT)) {
status = STATUS_KEEPER_TURN_RIGHT;
ourNavigator->RotateTo(315,200);
}
else if(status == STATUS_KEEPER_TURN_RIGHT && ourNavigator->AngleReached()) {
else if(status == STATUS_KEEPER_TURN_RIGHT && !ourNavigator->IsMoving()) {
status = STATUS_KEEPER_TURN_LEFT;
ourNavigator->RotateTo(45, 200);
}

View file

@ -3,9 +3,6 @@
#include "../../stdafx.h"
#define STATUS_KEEPER_TURN_RIGHT 1
#define STATUS_KEEPER_TURN_LEFT 2
class Logic : public IO_Module
{
public:
@ -29,9 +26,18 @@ protected:
bool isKeeper;
uint8 status;
enum LogicalStatus
{
STATUS_KEEPER_TURN_RIGHT,
STATUS_KEEPER_TURN_LEFT,
};
void OnBallOwned();
void OnBallLost();
void OnBecomeKeeper();
void OnBecomeAttacker();
public:
void Update();
@ -46,6 +52,14 @@ public:
}
void SetKeeper(bool newStatus) {
if(!this->isKeeper && newStatus)
{
this->OnBecomeKeeper();
}
else if(this->isKeeper && !newStatus)
{
this->OnBecomeAttacker();
}
this->isKeeper = newStatus;
}