Innerspace .NET Extender

Discussion of Inner Space

Moderators: Lavish Software Team, Moderators

Post Reply
Tenshi
GamingTools Subscriber
Posts: 2
Joined: Sun May 14, 2006 12:14 pm

Innerspace .NET Extender

Post by Tenshi » Mon Mar 17, 2008 11:08 pm

Wrote this code to be useful in my .NET applications.

Could be useful to someone else, and Lax if you're reading this, something along these lines in the bundled libraries would be helpful.

Code: Select all

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InnerSpaceAPI;
using LavishScriptAPI;
using System.Threading;
using LavishVMAPI;

namespace ISExtender
{
    public class InnerSpaceSession
    {
        public static string Name
        {
            get
            {
                string name = "";
                LavishScript.DataParse<string>&#40;"$&#123;Session&#125;", ref name&#41;;
                return name;
            &#125;
            set
            &#123;
                LavishScript.ExecuteCommand&#40;String.Format&#40;"uplink name &#123;0&#125;", value&#41;&#41;;
            &#125;
        &#125;

        public static int Number
        &#123;
            get
            &#123;
                int number = 0;
                LavishScript.DataParse<int>&#40;"$&#123;Session.Right[-2]&#125;", ref number&#41;;
                return number;
            &#125;
        &#125;

        public static void Log&#40;string Text&#41;
        &#123;
            InnerSpace.Echo&#40;String.Format&#40;"[&#123;0&#125;&#58;&#123;1&#125;&#58;&#123;2&#125;]&#58; &#123;3&#125;", DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, Text&#41;&#41;;
        &#125;

        public static void LoadExtension&#40;string extension&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;String.Format&#40;"extension &#123;0&#125;", extension&#41;&#41;;
        &#125;

        public static void UnloadExtension&#40;string extension&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;String.Format&#40;"extension -unload &#123;0&#125;", extension&#41;&#41;;
        &#125;

        public static void FrameWaitSleep&#40;double millisecondsTimeout&#41;
        &#123;
            DateTime end = DateTime.Now.AddMilliseconds&#40;millisecondsTimeout&#41;;

            while &#40;end.Ticks > DateTime.Now.Ticks&#41;
                Frame.Wait&#40;false&#41;;
        &#125;

        public static void SetMaxFPS&#40;int fps&#41;
        &#123;
            SetMaxBackgroundFPS&#40;fps&#41;;
            SetMaxForegroundFPS&#40;fps&#41;;
        &#125;

        public static void SetMaxBackgroundFPS&#40;int fps&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;String.Format&#40;"maxfps -bg &#123;0&#125;", fps&#41;&#41;;
        &#125;

        public static void SetMaxForegroundFPS&#40;int fps&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;String.Format&#40;"maxfps -fg &#123;0&#125;", fps&#41;&#41;;
        &#125;

        public static void Exit&#40;&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;"exit"&#41;;
        &#125;
    &#125;
    public class InnerSpaceScript
    &#123;
        public string Name &#123; get; set; &#125;

        public InnerSpaceScript&#40;string name&#41;
        &#123;
            Name = name;
        &#125;

        public bool Running
        &#123;
            get
            &#123;
                try
                &#123;
                    LavishScriptObject Script = LavishScript.Objects.GetObject&#40;"Script", Name&#41;;
                    return Script.IsValid;
                &#125;
                catch
                &#123;
                    return false;
                &#125;
            &#125;
        &#125;

        public void WaitForExit&#40;&#41;
        &#123;
            while &#40;Running&#41;
                InnerSpaceSession.FrameWaitSleep&#40;1000&#41;;
        &#125;

        public void WaitForExit&#40;int Timeout&#41;
        &#123;
            for &#40;int i = 0; i * 1000 < Timeout && Running; i++&#41;
                InnerSpaceSession.FrameWaitSleep&#40;1000&#41;;
        &#125;

        public void Run&#40;&#41;
        &#123;
            if &#40;!Running&#41;
                LavishScript.ExecuteCommand&#40;String.Format&#40;"runscript &#123;0&#125;", Name&#41;&#41;;
        &#125;

        public static InnerSpaceScript Run&#40;string script&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;String.Format&#40;"runscript &#123;0&#125;", script&#41;&#41;;
            return new InnerSpaceScript&#40;script&#41;;
        &#125;

        public static void End&#40;string script&#41;
        &#123;
            LavishScript.ExecuteCommand&#40;String.Format&#40;"endscript &#123;0&#125;", script&#41;&#41;;
        &#125;

        public void End&#40;&#41;
        &#123;
            if &#40;Running&#41;
                LavishScript.ExecuteCommand&#40;String.Format&#40;"endscript &#123;0&#125;", Name&#41;&#41;;
        &#125;
    &#125;
&#125;
[/code]

Post Reply