#pragma once #include "ModuleHook.h" namespace NosSmoothCore { public delegate bool WalkCallback(int position); typedef bool(__stdcall* NativeWalkCallback)(int position); class CharacterUnmanaged { public: /// /// Set ups the addresses of objects. /// /// The hooking module holding the information about NostaleX.dat void Setup(NosSmoothCore::ModuleHook moduleHook); /// /// Starts walking to the specified x, y position /// /// The coordinate to walk to. void Walk(DWORD position); /// /// Registers the callback for walk function. /// /// The callback to call. void SetWalkCallback(NativeWalkCallback walkCallback); /// /// Reset the registered hooks. /// void ResetHooks(); /// /// Executes the walk callback. /// /// The coordinate the user wants to walk to. /// Whether to accept the walk. bool ExecuteWalkCallback(const DWORD position); static CharacterUnmanaged* GetInstance() { static CharacterUnmanaged instance; return reinterpret_cast(&instance); } unsigned int _walkFunctionAddress; unsigned int _characterObjectAddress; private: CharacterUnmanaged(); NativeWalkCallback _walkCallback; }; }