예제 #1
0
    private void OnDestroy()
    {
        mLuaLooper.Destroy();
        mLuaState.Dispose();

        mLuaLooper = null;
        mLuaState  = null;
        mInstance  = null;
    }
예제 #2
0
    public static void CallFunction(string funcName)
    {
        LuaFunction func = LuaGame.GetSingleton().luaState.GetFunction(funcName);

        if (func != null)
        {
            func.Call();
        }
    }
예제 #3
0
 public static LuaGame GetSingleton()
 {
     if (mInstance == null)
     {
         GameObject go = new GameObject(typeof(LuaGame).ToString());
         DontDestroyOnLoad(go);
         mInstance            = go.AddComponent <LuaGame>();
         mInstance.mLuaLooper = go.AddComponent <LuaLooper>();
     }
     return(mInstance);
 }
예제 #4
0
    private void Awake()
    {
        mInstance  = this;
        mLuaLooper = gameObject.AddComponent <LuaLooper>();
        DontDestroyOnLoad(gameObject);


        mLuaState           = new LuaState();
        mLuaLooper.luaState = mLuaState;

        OpenLibs();
        mLuaState.LuaSetTop(0);

        LuaBinder.Bind(mLuaState);

        //测试自定义Wrap
        mLuaState.BeginModule(null);
        TestLuaWrap.Register(mLuaState);
        mLuaState.EndModule();

        DelegateFactory.Init();
        LuaCoroutine.Register(mLuaState, this);
    }
예제 #5
0
        public LuaSetup()
        {
            PrintMessage("Lua!");

            LuaScriptLoader luaScriptLoader = new LuaScriptLoader(this);

            LuaCustomConverters.RegisterAll();

            UserData.RegisterType <TraitorMessageType>();
            UserData.RegisterType <JobPrefab>();
            UserData.RegisterType <CharacterInfo>();
            UserData.RegisterType <Rectangle>();
            UserData.RegisterType <Point>();
            UserData.RegisterType <Level.InterestingPosition>();
            UserData.RegisterType <Level.PositionType>();
            UserData.RegisterType <Level>();
            UserData.RegisterType <Items.Components.Steering>();
            UserData.RegisterType <ServerLog.MessageType>();
            UserData.RegisterType <SpawnType>();
            UserData.RegisterType <ChatMessageType>();
            UserData.RegisterType <WayPoint>();
            UserData.RegisterType <Character>();
            UserData.RegisterType <Item>();
            UserData.RegisterType <Submarine>();
            UserData.RegisterType <Client>();
            UserData.RegisterType <LuaPlayer>();
            UserData.RegisterType <LuaHook>();
            UserData.RegisterType <LuaGame>();
            UserData.RegisterType <LuaRandom>();
            UserData.RegisterType <LuaTimer>();
            UserData.RegisterType <Vector2>();
            UserData.RegisterType <Vector3>();
            UserData.RegisterType <Vector4>();


            lua = new Script(CoreModules.Preset_SoftSandbox | CoreModules.LoadMethods);

            lua.Options.DebugPrint = PrintMessage;

            lua.Options.ScriptLoader = luaScriptLoader;

            hook = new LuaHook(this);
            game = new LuaGame(this);

            lua.Globals["Player"]                = new LuaPlayer();
            lua.Globals["Game"]                  = game;
            lua.Globals["Hook"]                  = hook;
            lua.Globals["Random"]                = new LuaRandom();
            lua.Globals["Timer"]                 = new LuaTimer(this);
            lua.Globals["WayPoint"]              = UserData.CreateStatic <WayPoint>();
            lua.Globals["SpawnType"]             = UserData.CreateStatic <SpawnType>();
            lua.Globals["ChatMessageType"]       = UserData.CreateStatic <ChatMessageType>();
            lua.Globals["ServerLog_MessageType"] = UserData.CreateStatic <ServerLog.MessageType>();
            lua.Globals["Submarine"]             = UserData.CreateStatic <Submarine>();
            lua.Globals["Client"]                = UserData.CreateStatic <Client>();
            lua.Globals["Character"]             = UserData.CreateStatic <Character>();
            lua.Globals["Item"]                  = UserData.CreateStatic <Item>();
            lua.Globals["Level"]                 = UserData.CreateStatic <Level>();
            lua.Globals["Vector2"]               = UserData.CreateStatic <Vector2>();
            lua.Globals["Vector3"]               = UserData.CreateStatic <Vector3>();
            lua.Globals["PositionType"]          = UserData.CreateStatic <Level.PositionType>();
            lua.Globals["JobPrefab"]             = UserData.CreateStatic <JobPrefab>();
            lua.Globals["TraitorMessageType"]    = UserData.CreateStatic <TraitorMessageType>();

            foreach (string d in Directory.GetDirectories("Lua"))
            {
                if (Directory.Exists(d + "/autorun"))
                {
                    luaScriptLoader.RunFolder(d + "/autorun");
                }
            }
        }
예제 #6
0
 internal Graphics(SpriteBatch spriteBatch, LuaGame lg)
 {
     Batch = spriteBatch;
     game = lg;
 }
예제 #7
0
    public static LuaFunction GetFunction(string module, string funcName)
    {
        string func = string.Format("{0}.{1}", module, funcName);

        return(LuaGame.GetSingleton().luaState.GetFunction(func));
    }
예제 #8
0
 internal Graphics(SpriteBatch spriteBatch, LuaGame lg)
 {
     Batch = spriteBatch;
     game  = lg;
 }