Exemple #1
0
        internal Context()
        {
            mImplementPtr = ConversationAPI.CreateContext();

            IntPtr global = ConversationAPI.GetContextGlobalSave(ImplementPtr);

            if (global != IntPtr.Zero)
            {
                mGlobalSave = new Save(global);
            }

            IntPtr player = ConversationAPI.GetContextPlayerSave(ImplementPtr);

            if (player != IntPtr.Zero)
            {
                mPlayerSave = new Save(player);
            }

            // 长期持有自己的delegate防止被gc
            mFunctionHandler = new FunctionHandler(OnFunctoinCall);
            mProcessHandler  = new FunctionHandler(OnProcessCall);
            mFunctionQuery   = new FunctionQuery(OnFunctoinQuery);
            mProcessQuery    = new FunctionQuery(OnProcessQuery);

            ConversationAPI.SetFunctionHandler(ImplementPtr, mFunctionHandler);
            ConversationAPI.SetProcessHandler(ImplementPtr, mProcessHandler);
            ConversationAPI.SetFunctionQuery(ImplementPtr, mFunctionQuery);
            ConversationAPI.SetProcessQuery(ImplementPtr, mProcessQuery);
        }