You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.6 KiB
C++
74 lines
2.6 KiB
C++
#ifndef OPENMW_CELLCONTROLLER_HPP
|
|
#define OPENMW_CELLCONTROLLER_HPP
|
|
|
|
#include "Cell.hpp"
|
|
#include "ActorList.hpp"
|
|
#include "LocalActor.hpp"
|
|
#include "DedicatedActor.hpp"
|
|
#include "../mwworld/cellstore.hpp"
|
|
|
|
namespace mwmp
|
|
{
|
|
class CellController
|
|
{
|
|
public:
|
|
|
|
CellController();
|
|
virtual ~CellController();
|
|
|
|
void updateLocal(bool forceUpdate);
|
|
void updateDedicated(float dt);
|
|
|
|
void initializeCell(const ESM::Cell& cell);
|
|
|
|
void readPositions(mwmp::ActorList& actorList);
|
|
void readAnimFlags(mwmp::ActorList& actorList);
|
|
void readAnimPlay(mwmp::ActorList& actorList);
|
|
void readStatsDynamic(mwmp::ActorList& actorList);
|
|
void readEquipment(mwmp::ActorList& actorList);
|
|
void readSpeech(mwmp::ActorList& actorList);
|
|
void readAI(mwmp::ActorList& actorList);
|
|
void readAttack(mwmp::ActorList& actorList);
|
|
void readCellChange(mwmp::ActorList& actorList);
|
|
|
|
void setLocalActorRecord(std::string actorIndex, std::string cellIndex);
|
|
void removeLocalActorRecord(std::string actorIndex);
|
|
|
|
bool isLocalActor(MWWorld::Ptr ptr);
|
|
bool isLocalActor(int refNumIndex, int mpNum);
|
|
virtual LocalActor *getLocalActor(MWWorld::Ptr ptr);
|
|
virtual LocalActor *getLocalActor(int refNumIndex, int mpNum);
|
|
|
|
void setDedicatedActorRecord(std::string actorIndex, std::string cellIndex);
|
|
void removeDedicatedActorRecord(std::string actorIndex);
|
|
|
|
bool isDedicatedActor(MWWorld::Ptr ptr);
|
|
bool isDedicatedActor(int refNumIndex, int mpNum);
|
|
virtual DedicatedActor *getDedicatedActor(MWWorld::Ptr ptr);
|
|
virtual DedicatedActor *getDedicatedActor(int refNumIndex, int mpNum);
|
|
|
|
std::string generateMapIndex(int refNumindex, int mpNum);
|
|
std::string generateMapIndex(MWWorld::Ptr ptr);
|
|
std::string generateMapIndex(std::shared_ptr<mwmp::BaseActor> baseActor);
|
|
|
|
bool hasLocalAuthority(const ESM::Cell& cell);
|
|
bool isInitializedCell(const std::string& cellDescription);
|
|
bool isInitializedCell(const ESM::Cell& cell);
|
|
bool isActiveWorldCell(const ESM::Cell& cell);
|
|
virtual Cell *getCell(const ESM::Cell& cell);
|
|
|
|
virtual MWWorld::CellStore *getCellStore(const ESM::Cell& cell);
|
|
|
|
bool isSameCell(const ESM::Cell& cell, const ESM::Cell& otherCell);
|
|
|
|
int getCellSize() const;
|
|
|
|
private:
|
|
static std::map<std::string, mwmp::Cell *> cellsInitialized;
|
|
static std::map<std::string, std::string> localActorsToCells;
|
|
static std::map<std::string, std::string> dedicatedActorsToCells;
|
|
};
|
|
}
|
|
|
|
#endif //OPENMW_CELLCONTROLLER_HPP
|