diff options
author | lapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-07-09 22:25:50 +0200 |
---|---|---|
committer | lapayo94@gmail.com <lapayo94@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-07-09 22:25:50 +0200 |
commit | 38459c9c171fc8bea3a0d7fd54141aa16dc195ca (patch) | |
tree | c397496b072c4ae0a22b806ada4f2a1f194f3e7a | |
parent | Improved Squirrel Bindings (diff) | |
download | cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.tar cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.tar.gz cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.tar.bz2 cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.tar.lz cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.tar.xz cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.tar.zst cuberite-38459c9c171fc8bea3a0d7fd54141aa16dc195ca.zip |
-rw-r--r-- | Plugins/SquirrelChatLog.nut | 13 | ||||
-rw-r--r-- | source/_OLD_SquirrelBindings.cpp | 140 | ||||
-rw-r--r-- | source/_OLD_SquirrelBindings.h | 15 |
3 files changed, 3 insertions, 165 deletions
diff --git a/Plugins/SquirrelChatLog.nut b/Plugins/SquirrelChatLog.nut index df43c3fb3..4ef0fd595 100644 --- a/Plugins/SquirrelChatLog.nut +++ b/Plugins/SquirrelChatLog.nut @@ -1,20 +1,13 @@ class SquirrelChatLog extends Plugin
-{
- name = "SquirrelChatLogger";
-
+{
function Initialize()
- {
- ::print("SquirrelChatLog initialize()");
-
+ {
this.AddHook(Hook.Chat);
-
return true;
}
- function OnChat( Message, Player )
+ function OnChat(Message, Player)
{
- ::print("CHAT");
::print(Player.GetName() + ": " + Message);
-
}
}
diff --git a/source/_OLD_SquirrelBindings.cpp b/source/_OLD_SquirrelBindings.cpp deleted file mode 100644 index 532b19950..000000000 --- a/source/_OLD_SquirrelBindings.cpp +++ /dev/null @@ -1,140 +0,0 @@ -
-#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
-
-#include "SquirrelBindings.h"
-#if USE_SQUIRREL
-//#pragma warning(disable:4100) // Getting A LOT of these warnings from SqPlus
-//#pragma warning(disable:4127)
-
-#include <sqplus/sqplus.h>
-#include <sqplus/SquirrelObject.h>
-#include <../squirrel/sqstate.h>
-#include <../squirrel/sqvm.h>
-
-#include "cPlugin.h"
-#include "cPluginManager.h"
-#include "cRoot.h"
-#include "cPlayer.h"
-
-
-
-
-
-bool SquirrelBindings::IsBound = false;
-
-bool IsTopClosure( HSQUIRRELVM v )
-{
- return ( v->_stack[0]._type == OT_CLOSURE );
-}
-
-class __Squirrel_Base_Class // All inheritable classes should extend this class, as it allows virtual functions to call Squirrel
-{
-public:
- template<typename T>
- static int ConstructAndDestruct(HSQUIRRELVM v, T* a_Instance, SQRELEASEHOOK a_ReleaseHook )
- {
- LOG("ConstructAndDestruct()");
-
- StackHandler sa(v);
- HSQOBJECT ho = sa.GetObjectHandle(1); // OT_INSTANCE
- SquirrelObject instance(ho);
- SqPlus::PopulateAncestry(v, instance, a_Instance);
- a_Instance->vm = v;
- a_Instance->obj = instance;
-
- sq_setinstanceup(v, 1, a_Instance);
- sq_setreleasehook(v, 1, a_ReleaseHook);
- return TRUE;
- }
-
- HSQUIRRELVM vm;
- SquirrelObject obj;
-};
-
-class cPlugin__Squirrel : public cPlugin, public __Squirrel_Base_Class
-{
-public:
- cPlugin__Squirrel() { SetLanguage( cPlugin::E_SQUIRREL ); }
-
- bool Initialize() // This is a pure virtual function, so it NEEDS an implementation on the script side or it would be an illegal instance
- {
- SqPlus::SquirrelFunction<bool> InitFunc(obj, "Initialize");
- if( !InitFunc.func.IsNull() )
- return InitFunc();
- LOGWARN("cPlugin__Squirrel::Initialize() Pure virtual function called!"); // Spam some errorz to make it clear this function needs to be implemented
- return false;
- }
-
- static int constructor(HSQUIRRELVM v) { return ConstructAndDestruct( v, new cPlugin__Squirrel, SqPlus::ReleaseClassPtr<cPlugin__Squirrel>::release ); }
-
- virtual bool OnChat( const char* a_Chat, cPlayer* a_Player )
- {
- if( !IsTopClosure(vm) ) // Avoid recursion (TODO: FIXME: THIS NEEDS MORE RESEARCH!)
- { //Called from C++
- return SqPlus::SquirrelFunction<bool>(obj, "OnChat")(a_Chat, a_Player);
- }
- else // Called from Squirrel
- {
- return cPlugin::OnChat(a_Chat, a_Player);
- }
- }
-};
-
-static void printFunc(HSQUIRRELVM v,const SQChar * s,...)
-{
- (void)v;
- va_list vl;
- va_start(vl,s);
- cMCLogger::GetInstance()->Log( s, vl );
- va_end(vl);
-}
-
-DECLARE_INSTANCE_TYPE( cRoot );
-DECLARE_INSTANCE_TYPE( cPluginManager );
-DECLARE_ENUM_TYPE( cPluginManager::PluginHook );
-DECLARE_INSTANCE_TYPE( cPlugin );
-DECLARE_INSTANCE_TYPE( cPlugin__Squirrel );
-
-DECLARE_INSTANCE_TYPE( cEntity );
-DECLARE_INSTANCE_TYPE( cPawn );
-DECLARE_INSTANCE_TYPE( cPlayer );
-
-void SquirrelBindings::Bind( HSQUIRRELVM a_SquirrelVM )
-{
- IsBound = true;
-
- sq_setprintfunc(a_SquirrelVM, printFunc, printFunc);
-
-
- SqPlus::SQClassDefNoConstructor<cEntity>("cEntity");
- SqPlus::SQClassDefNoConstructor<cPawn, cEntity>("cPawn", "cEntity");
- SqPlus::SQClassDefNoConstructor<cPlayer, cPawn>("cPlayer", "cPawn"). // All NoConstructor because they need a custom one
- func(&cPlayer::GetName, "GetName");
-
- SqPlus::SQClassDefNoConstructor<cPlugin>("cPlugin").
- func(&cPlugin::SetName, "SetName").
- func(&cPlugin::GetName, "GetName").
- func(&cPlugin::GetVersion, "GetVersion").
- func(&cPlugin::OnChat, "OnChat");
-
-
- SqPlus::SQClassDef<cPlugin__Squirrel, cPlugin>("cPlugin__Squirrel", "cPlugin").
- staticFunc(&cPlugin__Squirrel::constructor, "constructor");
-
-
- SqPlus::SQClassDefNoConstructor<cRoot>("cRoot").
- staticFunc(&cRoot::Get, "Get").
- func(static_cast<cPluginManager* (__thiscall cRoot::*)(void)>(&cRoot::GetPluginManager), "GetPluginManager");
-
-
- SqPlus::SQClassDefNoConstructor<cPluginManager>("cPluginManager").
- overloadFunc<bool (cPluginManager::*)(cPlugin*)>(&cPluginManager::AddPlugin, "AddPlugin").
- func(&cPluginManager::GetPlugin, "GetPlugin").
- func(&cPluginManager::AddHook, "AddHook").
- enumInt( cPluginManager::E_PLUGIN_CHAT, "E_PLUGIN_CHAT");
-
-
-
-}
-
-#endif
diff --git a/source/_OLD_SquirrelBindings.h b/source/_OLD_SquirrelBindings.h deleted file mode 100644 index 26f125746..000000000 --- a/source/_OLD_SquirrelBindings.h +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once
-
-#define USE_SQUIRREL 1
-
-#if USE_SQUIRREL
-
-struct SQVM;
-class SquirrelBindings
-{
-public:
- static void Bind( SQVM* a_SquirrelVM );
- static bool IsBound;
-};
-
-#endif
|