openmw-tes3coop/components/openmw-mp/Base/BaseActor.hpp
David Cernat 00c13ae96c [General] Implement ActorAI packet, part 4
The server can now make actors activate players and objects, at least in theory. In practice, OpenMW''s AiActivate package needs to be worked so it allows specific objects as targets instead of just refIds.
2018-07-10 07:07:37 +03:00

99 lines
1.7 KiB
C++

#ifndef OPENMW_BASEACTOR_HPP
#define OPENMW_BASEACTOR_HPP
#include <components/esm/loadcell.hpp>
#include <components/openmw-mp/Base/BaseStructs.hpp>
#include <RakNetTypes.h>
namespace mwmp
{
class BaseActor
{
public:
BaseActor()
{
hasPositionData = false;
hasStatsDynamicData = false;
}
std::string refId;
int refNumIndex;
int mpNum;
ESM::Position position;
ESM::Position direction;
ESM::Cell cell;
unsigned int movementFlags;
char drawState;
bool isFlying;
std::string sound;
SimpleCreatureStats creatureStats;
Animation animation;
Attack attack;
Target killer;
bool hasAiTarget;
Target aiTarget;
unsigned int aiAction;
unsigned int aiDistance;
unsigned int aiDuration;
ESM::Position aiCoordinates;
bool hasPositionData;
bool hasStatsDynamicData;
Item equipmentItems[19];
};
class BaseActorList
{
public:
BaseActorList()
{
}
enum ACTOR_ACTION
{
SET = 0,
ADD = 1,
REMOVE = 2,
REQUEST = 3
};
enum AI_ACTION
{
CANCEL = 0,
ACTIVATE = 1,
COMBAT = 2,
ESCORT = 3,
FOLLOW = 4,
TRAVEL = 5,
WANDER = 6
};
RakNet::RakNetGUID guid;
std::vector<BaseActor> baseActors;
unsigned int count;
ESM::Cell cell;
unsigned char action; // 0 - Clear and set in entirety, 1 - Add item, 2 - Remove item, 3 - Request items
bool isValid;
};
}
#endif //OPENMW_BASEACTOR_HPP