Files
Sun1602/Client/GameClient/Autobot/Area/Field/AutobotAreaField.cpp
T
2022-10-26 12:25:11 +08:00

64 lines
2.7 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "AutobotAreaField.h"
#include "Autobot/Action/AutobotActionMove.h"
#include "Autobot/Action/AutobotActionReadyField.h"
#include "Autobot/Action/AutobotActionAttack.h"
#include "Autobot/Action/AutobotActionRelax.h"
#include "Autobot/Action/AutobotActionDie.h"
#include "Autobot/Action/AutobotActionRecall.h"
#include "Autobot/Action/AutobotActionFollow.h"
#include "Autobot/Action/Global/AutobotActionTargeting.h"
#include "Autobot/Action/Global/AutobotActionPickup.h"
#include "Autobot/Action/Global/AutobotActionPotion.h"
#include "Autobot/Action/Global/AutobotActionInterval.h"
#include "Autobot/Action/Global/AutobotActionShouting.h"
#include "Autobot/Autobot.h"
#include "Autobot/Passpoint/AutobotPasspointManager.h"
#include "Autobot/Condition/AutobotConditionManager.h"
//------------------------------------------------------------------------------
AutobotAreaField* AutobotAreaField::Instance()
{
static AutobotAreaField instance;
return &instance;
}
//------------------------------------------------------------------------------
AutobotAreaField::AutobotAreaField()
{
state_machine()->PushGlobalState(AutobotActionPickup::Instance());
state_machine()->PushGlobalState(AutobotActionPotion::Instance());
state_machine()->PushGlobalState(AutobotActionInterval::Instance());
state_machine()->PushGlobalState(AutobotActionTargeting::Instance());
state_machine()->PushGlobalState(AutobotActionShouting::Instance());
state_machine()->RegisterState("ready", AutobotActionReadyField::Instance());
state_machine()->RegisterState("move", AutobotActionMove::Instance());
state_machine()->RegisterState("attack", AutobotActionAttack::Instance());
state_machine()->RegisterState("relax", AutobotActionRelax::Instance());
state_machine()->RegisterState("die", AutobotActionDie::Instance());
state_machine()->RegisterState("recall", AutobotActionRecall::Instance());
state_machine()->RegisterState("follow", AutobotActionFollow::Instance());
}
//------------------------------------------------------------------------------
AutobotAreaField::~AutobotAreaField()
{
}
//------------------------------------------------------------------------------
void AutobotAreaField::Enter(Autobot* owner)
{
AutobotPasspointManager::Instance()->Clear();
state_machine()->ChangeState("ready");
}
//------------------------------------------------------------------------------
bool AutobotAreaField::Execute(Autobot* owner)
{
return state_machine()->Update();
}
//------------------------------------------------------------------------------
bool AutobotAreaField::NetworkProc(Autobot* owner, MSG_BASE* packet)
{
return state_machine()->NetworkProc(packet);
}