forked from teamnwah/openmw-tes3coop
00c13ae96c
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.
99 lines
1.7 KiB
C++
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
|