// Ryzom - MMORPG Framework
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
#ifndef SIM_DMC_H
#define SIM_DMC_H
#include "nel/misc/types_nl.h"
#include "simulated_idmc.h"
#include
extern "C"
{
// #include "lua_loadlib.h"
// interface_v3 file, replaced with:
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
}
namespace NLNET
{
class IModuleSocket;
}
namespace R2
{
class CScenario;
class CObjectFactory;
class CObject;
class CComLuaModule;
// class CClientAdminModule;
class CSimClientAnimationModule;
class CSimClientEditionModule;
class CDynamicMapClient : public IDynamicMapClient
{
public:
/** \param luaState NULL If the lua environment should be built by this object
* If the lua state is provided externally, then it won't be deleted by this object
*/
CDynamicMapClient(const std::string &eid, NLNET::IModuleSocket * clientGateway, lua_State *luaState);
~CDynamicMapClient();
virtual void init( uint id, lua_State *luaState );
virtual void release();
virtual void disconnect();
bool isSEMConnected();
void save(const std::string& filename);
bool load(const std::string& filename);
CObject *loadScenario(const std::string& filename);
void loadFeatures();
void loadDefaultPalette();
virtual void show() const;
virtual void addPaletteElement(const std::string& attrName, CObject* paletteElement);
virtual CObject* newComponent(const std::string& type) const;
virtual void registerGenerator(CObject* classObject);
virtual void requestGoTest();
virtual void requestStartAct( uint actId );
virtual void requestStopTest();
virtual void requestTranslateFeatures();
virtual void requestCreateScenario(CObject* scenario);
virtual void requestUpdateRtScenario(CObject* rtScenario);
virtual void requestInsertNode(const std::string& instanceId, const std::string& name, sint32 position, const std::string& key, CObject* value);
virtual void requestSetNode(const std::string& instanceId, const std::string& attrName, CObject* value);
virtual void requestEraseNode(const std::string& instanceId, const std::string& attrName, sint32 position);
virtual void requestMoveNode(const std::string& instanceId, const std::string& attrName, sint32 position, const std::string& destInstanceId, const std::string& destAttrName, sint32 destPosition);
virtual void nodeSet(const std::string& instanceId, const std::string& attrName, CObject* value);
virtual void nodeErased(const std::string& instanceId, const std::string& attrName, sint32 position);
virtual void nodeInserted( const std::string& instanceId, const std::string& attrName, sint32 position,
const std::string& key, CObject* value);
virtual void nodeMoved(const std::string& instanceId, const std::string& attrName, sint32 position,
const std::string& destInstanceId, const std::string& destAttrName, sint32 destPosition);
virtual void scenarioUpdated(CObject* highLevel);
virtual void onEditionModeConnected( uint32 userSlotId, uint32 adventureId, CObject* highLevel);
virtual void onEditionModeDisconnected();
virtual void onResetEditionMode();
virtual void onTestModeConnected();
virtual void onTestModeDisconnected();
// virtual void onNpcAnimationTargeted(uint32 mode);
void testConnectionAsCreator();
void updateScenario(CObject* scenario);
void doFile(const std::string& filename);
void runLuaScript(const std::string& filename);
// find an object in the scenario from its instance ID
CObject* find(const std::string& instanceId);
CSimClientEditionModule& getEditionModule() const;
CSimClientAnimationModule& getAnimationModule() const;
// CClientAdminModule& getAdminModule() const;
CScenario* getCurrentScenario() const;
virtual CObject* getCurrentScenarioHighLevel();
const CObject *getHighLevel() const;
virtual CObject* getPropertyValue(CObject* component, const std::string& attrName) const;
virtual CObject* getPropertyList(CObject* component) const;
virtual CObject* getPaletteElement(const std::string& key)const;
// CPropertyAccessor &getPropertyAccessor() const;
virtual void requestUploadScenario(CObject* scenario);
virtual void saveRtData(const std::string& filename);
// virtual void requestTalkAs(const std::string& npcname);
protected:
uint _Id;
NLNET::IModuleSocket *_SocketGateway;
// CClientAdminModule *_AdminModule;
CSimClientAnimationModule *_AnimationModule;
CSimClientEditionModule *_EditionModule;
CComLuaModule * _ComLua;
};
} // namespace R2
#endif //SIM_DMC_H